Arduino Robot Kol Projesi: Hafızalı Robot Kol

Arduino robot kol projesi servo motorlar ile kontrol edilen hafızalı bir robot kol projesidir. Bu projede prototip bir robot kol yaparak bu robot kolu arduino ile kontrol edeceğiz. Robot kol arduino yazılımı ve gereken tüm bilgiler makalede bulunmaktadır. Bu proje hakkında sormak istediğiniz tüm soruları yorumlar kısmından bizlere sorabilirsiniz. En kısa sürede tüm soruların cevaplanacağından emin olabilirsiniz.

Bu projede yapacağımız robot kolun özelliklerinden bahsedecek olursak:

  • Tüm şase parçaları 3 boyutlu yazıcılar ile üretilmektedir.
  • Bu projede robot kol anlık olarak kontrol edilebileceği gibi konum kayıt etme özelliği ile kayıt edilen noktaları otomatik bir şekilde tekrar edebilir. Hafızalı arduino robot kol projesi özelliğine sahiptir.
  • Maksimum 50-100 gr taşıma özelliğine sahiptir.
  • Bu projede robot kolu potansiyometre ile kontrol edeceğiz. Birçok farklı yöntem ile robot kolu kontrol edebiliriz. Kızılötesi kumanda, joystick(Bir nevi potansiyometre ile aynı işlevde), bluetooth gibi yöntemlerle de bu uygulamadaki robot kol kontrol edilebilir. Eğer bu robot kolun farklı yöntemler kullanılarak kontrol edilmesini istiyorsanız, istediğiniz yöntemi yorumlar kısmında belirtebilirsiniz. Talebin artması halinde istenilen haberleşme yöntemi kullanılarak tekrar makale yazabiliriz.
  • Projenin ana parçaları:
    1. Arduino.
    2. 3 boyutlu yazıcıdan üretilmiş parçalar.
    3. 3 direnç, 3 potansiyometre ve 3 buton.
    4. SG90 servo motorlar.
    5. Besleme voltajı(Adaptör veya piller)

Robot kol yapım aşaması 4 ana kısımdan oluşacaktır.

  1. Şasenin montajı.
  2. Elektronik bağlantılar.
  3. Arduino kodunun yazılması.
  4. Robot kol testleri(Videolu)

Arduino Robot Kol Projesi Malzeme Listesi

  1. 16 adet 3 boyutlu yazıcı ile üretilmiş plastik parça. Eğer 3 boyutlu yazıcıya sahipseniz bu parçaları kolaylıkla üretebilirsiniz. Eğer bir 3 boyutlu yazıcı sahibi değilseniz bu parçaları temin etmeniz gerekmektedir. Robot kol çizimlerine bu link üzerinden ulaşabilirsiniz. https://www.thingiverse.com/thing:1015238
  2. 4 adet SG90 servo motor. 0-180 derece açıya sahip, elektronik projelerde en fazla kullanılan, en uygun fiyatlı servo motorlar. Taşıma torku 1 kg.
  3. Arduino unu geliştirme kartı. Biz burada yaygın kullanılması nedeni ile arduino uno kartı kullanmayı tercih ettik. Eğer elinizde diğer kartlardan varsa bu arduino kartlarını da kullanabilirsiniz.
  4. 5 volt 1,5 – 2 amper civarı güç kaynağı. Eski telefon adaptörleri bu iş için kullanılabilir ancak akım değerinin 1.5-2 amper civarında olması gerekmektedir. 
  5. Breadboard veya delikli plaket. Delikli plaket(pertinaks) lehim ile devrenin daha sağlam ve gürültüsüz olmasını sağlar.
  6. 15 adet erkek-erkek jumper kablo fazlasıyla yeterli.
  7. 3 adet 10k değerinde direnç.
  8. 3 adet buton.
  9. 3 adet 10k potansiyometre.
  10. 8 adet M4 fiberli somun.
  11. 2 adet M3 fiberli somun.
  12. 6 adet M3 somun
  13. 8 adet M3X20 cıvata.
  14. 7 adet M4X20 cıvata
  15. 1 adet M4X30 cıvata
  16. 1 adet 4mm çapında 28mm uzunluğunda boru.

Not-1: Fiberli somun normal somundan farklı olarak içerisinde plastik bulunan somunlardır. Robot kolda bulunan hareketli eksenlerde zamanla somunların yerinden çıkmasını önleme amacı ile fiberli somun kullanımı tercih edilmiştir. Fiberli somun kullanılmadığı taktirde robot kol hareket ettikten 5-10 dakika sonra normal somunlar yerlerinden düşmektedir. Eksenlerin tam kilitlenmemesi için de somunları tam sıkmak mümkün değildir. Fibirli somun kullanımı en uygun seçenektir.

Not-2:Eğer malzeme listesinde olan 4mm çapında 28mm uzunluğunda boru bulma imkanınız yoksa 4mm çap değerine yakın her malzeme bu amaç için kullanılabilir. Bizim uygulamamızda kullandığımız boru maksimum 3mm çapında lolipop sapı. Ahşap şiş çöpü de fazlasıyla iş görür. Burada istediğiniz malzemeyi kullanabilirsiniz. Sorunsuz çalışmaktadır. 

Robot Kol Şase Montajı

Robot kol şase montajında SG90 servo motorlar ve şase parçaları birlikte montajlanacaktır. Aşağıda bulunan görsellerde robot kolun montaj aşamaları bulunmaktadır. Paylaştığımız görsellere bakarak robot kolun parçalarını kolayca toplayabilirsiniz. Burada oldukça dikkat etmememiz gereken durumlar vardır.

3D Yazıcı Baskı Kalitesi Durumu

Daha önce de dediğimiz gibi parçalar 3D yazıcı kullanılarak üretilmektedir. 3D yazıcılar çıktılarda çapak bırakabilmektedir. Bu sebeple robot kol plastik parçalarının vida giren deliklerinde çapak olabilir. İki parça birleştirildiğinde eğer rahatça hareket etmiyorsa uygun matkap ucu kullanarak bu delikleri genişletmeniz gerekir. Aksi durumda servo motorların gücü yetmeyip robot kol düzgün çalışmaz. Robot kolun tüm eklemleri kendi ağırlığı ile dahi hareket etmelidir. Mümkün olduğu kadar sürtünmeyi önlememiz gerekmektedir. 

Delikleri genişletmek için kullanılan matkap uçları 3mm ve 4mm matkap uçlarıdır. Vida delikleri için uygun matkap uçları ile çok az genişletme yapılabilir. Burada diğer dikkat edilmesi gereken durum ise normalden fazla genişletme yapılmamalıdır. Aksi taktirde robot kol stabil çalışmaz. İçinde vida rahatça hareket edebilecek şekilde çok az genişletme yapılır.

Cıvata ve Somun Sıkılık Miktarı

Montajda kullanılan cıvata ve somunlar da ne çok fazla gevşek ne de çok fazla sıkı olmalıdır. En ideal şekilde cıvatalar sıkılmalıdır. Cıvatalar eğer fazla sıkılırsa robot kol hareket edemez. Çünkü motorların gücü bu kuvvet karşısında yetersiz kalır. Aynı şekilde çok gevşek bırakılırsa da robot kol stabil çalışmaz.

Hareketli olmayan cıvata ve somunlar ideal şekilde sıkıştırılabilir. Hareketli olmayan noktalar iyi sıkılmalıdır. 

Robot Kol Hareket Alanının Kısıtlanması

Montaj sırasında bizleri en fazla yoran sıkıntı burası oluyor. Ama bir taraftan da çok kolay bir şey. Sg90 servo motorlara motorun yanında gelen uygun aparatları takıyoruz. Bu aparatları takarken istediğimiz konumda takma imkanımız var ancak bu durum robot kolda fiziksel olarak hareket alanı kısıtlamasına neden olabilir.  

Örneğin bu durum montaj esnasında dikkate alınmazsa tüm işimiz bittikten sonra robot kolun kıskaç kısmını yere yakınlaştıramayabiliriz çünkü servo motora taktığımız aparatı, hareketi kısıtlamış durumda takmış oluruz. Servo derecesi 180 dereceye gelir ve artık ileriye gidemez. Ama robot kol fiziksel durumu incelendiği zaman ileriye gitme imkanı bulunmaktadır. Servo aparatlarının yanlış kullanımına başka örneklerde verilebilir.

Peki bu durumun çözümü nedir? Öncelikle montaj sırasında robot kolun fiziksel hareketleri düşünülerek servo motor montajı yapılmalıdır. Örneğin motor montajlarından birisinde fiziksel olarak robot kola baktığımız zaman servo motorun 20-100 derecede hareket edeceğini gözlemliyoruz. Bu durumda motoru 20 dereceye alıp montajlama işlemini gerçekleştiriyoruz. Aynı şekilde 100 dereceye alınıp da montaj işlemi yapılabilir. 

En alt kısımda bulunan motor 0-180 derece arasında dönebilmektedir. Bu motor doğrudan montajlanabilir. Herhangi bir kontrole ihtiyaç duymaz. Geriye kalan motorlar ise buna kıskaç motoru da dahil, motora takılan beyaz aparat pozisyonu uygun olacak şekilde robot kola monte edilmelidir. 

Kullanılan SG90 servo motorları el ile döndürmeyi tavsiye etmiyoruz. Bu durum motorların arıza yapmasına ve tamamen kullanılmaz hale gelmesine neden olabilir. Aşağıda paylaştığımız kodu ve devreyi kullanarak motorlara farklı açılar verip olması gereken doğru açıları yakalayabilirsiniz. Bizler de burayı anlatırken biraz zorlandık. Anlatması gerçekten zor ama uygulaması çok kolay.

Tek amacımız çalışma alanını kısıtlamamak. Bunun için de motorları montaj ederken doğru açılarda ve doğru şekilde ucundaki aparatı takmamız gerekiyor. Bu durum ile ilgili dilediğiniz soruyu yorum kısmından sorabilirsiniz. 

Sg90 Servo Motor Hareket Ettirme Devre Şeması

SG90 Servo motor robot kol montajı.
SG90 Servo motor robot kol montajı.

Sg90 Servo Motor Hareket Ettirme Kodu

#include <Servo.h>
Servo servo;

void setup() 
{
   servo.attach(8);
}

void loop() 
{
  servo.write(90);
  //90 derece açısı değiştirilerek 0-180
  //derece arasında hareket sağlanır.
  //0-180 SG90 servo motorların dönebileceği
  //açı aralığı.
}

Robot Kol Montaj Adımları

Elektronik Bağlantılar Devre Şeması

Elektronik bağlantılarda yapacağımız işin özeti:

  • 4 adet servo motorun devreye alınması.
  • 3 adet potansiyometre bağlantısı.
  • 3 adet pull down direnç bağlantısı.
  • 3 adet buton bağlantısı.
  • Güç bağlantısı.

Not: Robot kol elektronik bağlantıları breadboard üzerine kurulabilir. Breadboard devresi üzerine kurulan devre stabil çalışmayabilir. Daha stabil ve gürültüsüz devre için delikli plaket üzerine kurmak tavsiye edilmektedir. Aşağı da bulunan devreyi bizler de delikli plaket üzerine kurarak kullandık.

Robot Kol Elektronik Devre Şeması:

Robot Kol Arduino Kodları

Devre şemasını da tamamladığımıza göre artık programlama aşamasına geçebiliriz. Programlamaya başlamadan önce aşağıda bulunan görsel ile servo motor isimlendirilmesini yapalım. Fiziksel olarak yazacağımız programı desteklemezsek çalışır bir program elde etmemiz mümkün olmayacaktır.

Arduino robot kol programı başlangıç
Arduino robot kol programı başlangıç.

Bu kısmın önemli olması nedeni ile görselde incelediklerimizi tekrar edelim. Yine görselde olduğu gibi robot kol şasesine arkadan bakıyoruz:

  • Servo1:Sağ sol hareketi sağlayan en alttaki motor.
  • Servo2: İleri geri hareketi sağlayan sağdaki motor.
  • Servo3: Yukarı aşağı hareketi sağlayan soldaki motor.
  • Servo4: Kıskaç açıp kapatmaya yarayan kıskaç motoru.

Başka bir isimlendirme yapmamıza gerek yoktur. Programın daha anlaşılır olması adına önce algoritmasını çıkartalım. Bu arduino robot kol programı ne yapacak? Nasıl yapacak? Özet niteliğinde başlayalım sonrasında kodun açıklama kısımlarında ek bilgiler ile devam edelim.

Robot Kol Nasıl Kontrol Edilecek?

Servo1 yani sağa ve sola dönmeyi sağlayan servo motor potansiyometre 1 ile kontrol edilecek. Servo2 yani ileri geri hareketi sağlayan servo motor potansiyometre 2 ile kontrol edilecek. Servo3 yani aşağı yukarı hareketi sağlayan servo motor potansiyometre 3 ile kontrol edilecek.

Buton1 bizim kıskaç açma ve kapatma butonumuz. Bu buton servo4′ ü iki açı arasında çevirecek. Özetle buton1′ e basınca kıskaç açılacak, tekrar basınca kıskaç kapanacak.

Buton2 ise konum kayıt etme işlemini gerçekleştirecek. Robot kol her farklı konuma geldiği zaman buton 2′ ye basıldığında tüm motorların konumları matrislere kayıt edilecek. Kayıt işlemini üstlenen buton.

Buton3 ise kayıt edilen konumların tekrarını başlatan buton olacak. Özetle buton3 basıldığında buton2 ile kayıt edilmiş olan tüm noktalar tekrarlanmaya başlayacak.

Arduino Robot Kol Kodları

//Servo motor kütüphanasi
#include <Servo.h>

//Servo motor isim atamaları
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

//Potansiyometre okunan değerler.
//Bu değerlere göre manuel hareket sağlanacak.
int pot1deger;
int pot2deger;
int pot3deger;

//Kullanılan 3 buton pin atamaları
int buton1=5;
int buton2=6;
int buton3=7;

//Anlık olarak servo motorların konum
//atamalarının yapıldığı değişkenler.
int servo1konum;
int servo2konum;
int servo3konum;
int servo4konum;

//Robot kolun yumuşak adımlar ile hareket etmesini
//sağlamak içi oluşturulan timer da kullanılan değişkenler.
unsigned long currentmillis;
unsigned long previousmillis;

//Servo motorların kaç mili saniyede 1 adım atacağını
//belirleyen değişken. 30 değeri artırılırsa hareketler 
//daha yavavaş, düşürülürse daha hızlı olur.
int AdimSure=30;

//Kıskaç ve oto kontrol için bool değişkenler
boolean KiskacButonDurum=true;
boolean otokontrol=false;

//Bizim servo motorumuzdaki kıskaç açık ve kıskaç kapalı 
//açı aralıkları. Bu değerler sizlerin toplamış olduğu robot
//kolda farklı olacaktır. Bu değerleri sizlerin ayarlaması
//gerekmektedir.
int kiskackapali=30;
int kiskacacik=160;

//Konum kayıt ederken bir sonraki matrise atlamak için 
//kullanılan değişken k
int k=0;

//Servo motorların konumlarının kayıt edileceği matrisler
//Daha fazla kayıt yapılmak isteniyorsa matrisler uzatılmalıdır.
int servo1kayitkonumu[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} ;
int servo2kayitkonumu[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} ;
int servo3kayitkonumu[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} ;
int servo4kayitkonumu[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} ;


void setup() 
{
  //Seri haberleşme başlatıyoruz.
  Serial.begin(9600);

  //Servo motor data pin seçimleri
  servo1.attach(8);
  servo2.attach(9);
  servo3.attach(10);
  servo4.attach(11);

  //Servo motor başlangıç dereceleri. Bu değerler de sizler de farklılık gösterecektir.
  //Bu durumu şase montaj kısmında ayrıntılı anlattık. Montaj ederken alınan değerler 
  //ile başlangıç değerleri ayarlanabilir. 
  servo1.write(90);
  servo2.write(20);
  servo3.write(180);
  servo4.write(160);
  
}

void loop() 
{
  //Burada arduino işlemcisine mili saniye türünden bir sayı saydırtmaya başlıyoruz.
  //Kullandığımız servo motorların açılarını 1 derece hareket ettirmek için bu değeri
  //kullanacağız. Bu sayma işlemi sayesinde robot kol yumuşak hareketler ile hareket edecek.
  //Bu saydırma işlemini yapmazsak robot kol çok ani hareketler ile çalışacaktır.
  //Robot kol potansiyometre hareketine göre geriden gelebilir ancak bu işlem anlık 
  //hızlanmaların önüne geçer.
  currentmillis=millis();
///////////////////////////////////////////////////////////////////////////////////////////

////////////////////Kıskaç Açma ve Kapatma İşlemi//////////////////////////////////////////

//Bu bölümde yapılan işlem sadece robot kol kıskacını açıp kapatmaya yarar.
//Butona basınca kıskaç açılır. Tekrar basınca kıskaç kapanır.
   if (digitalRead(buton1) == HIGH && KiskacButonDurum== true)
   {
    servo4.write(kiskackapali);
    KiskacButonDurum = false;
    if (digitalRead(buton1) == HIGH)
    {
      while (1)
      {
        if (digitalRead(buton1) == LOW)
        {
          break;
        }
      }
    }  
   }

  else if (digitalRead(buton1) == HIGH && KiskacButonDurum== false)
   {
    servo4.write(kiskacacik);
    KiskacButonDurum = true;
    if (digitalRead(buton1) == HIGH)
    {
      while (1)
      {
        if (digitalRead(buton1) == LOW)
        {
          break;
        }
      }
    }  
    }
////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////Pot Değerine Göre Manuel Hareket//////////////////////////////////////

//Arduino üzerindeki işlemci ADC' si 10 bit çözünürlüğe sahiptir.
//Yani biz pot üzerinden 0-1023 arasında bir değer okuyabiliyoruz.
//Burada map fonksiyonunu kullanarak bu 0-1023 arasındaki değeri servo motorlar için
//kullanabiledeğimiz aralıklara çeviriyoruz. Potansiyometre üzerinde okuduğumuz
//çevrilmiş değer ne olursa servo motor da o kunuma gidecektir.
  pot1deger=map(analogRead(A0),0,1023,10,170);
  pot2deger=map(analogRead(A1),0,1023,20,100);
  pot3deger=map(analogRead(A2),0,1023,180,100);

//Ani hareketleri önlemek için burada millisden yararlanmaya başladık.
//Özetle belirli sürelerde servo motorlarımız birer derece hareket edecek.
//servo1, servo2 ve servo3 için kodlama yapıldı.
  if(pot1deger>servo1.read() && currentmillis-previousmillis>AdimSure)
  {
    servo1konum=servo1.read();
    servo1konum++;
    servo1.write(servo1konum);
    previousmillis=currentmillis;
  }

    else if(pot1deger<servo1.read() && currentmillis-previousmillis>AdimSure)
  {
    servo1konum=servo1.read();
    servo1konum--;
    servo1.write(servo1konum);
    previousmillis=currentmillis;
  }



  if(pot2deger>servo2.read() && currentmillis-previousmillis>AdimSure)
  {
    servo2konum=servo2.read();
    servo2konum++;
    servo2.write(servo2konum);
    previousmillis=currentmillis;
  }

    else if(pot2deger<servo2.read() && currentmillis-previousmillis>AdimSure)
  {
    servo2konum=servo2.read();
    servo2konum--;
    servo2.write(servo2konum);
    previousmillis=currentmillis;
  }


  if(pot3deger>servo3.read() && currentmillis-previousmillis>AdimSure)
  {
    servo3konum=servo3.read();
    servo3konum++;
    servo3.write(servo3konum);
    previousmillis=currentmillis;
  }

    else if(pot3deger<servo3.read() && currentmillis-previousmillis>AdimSure)
  {
    servo3konum=servo3.read();
    servo3konum--;
    servo3.write(servo3konum);
    previousmillis=currentmillis;
  }

//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////Konum Kayıt İşlemi/////////////////////////////////////

//Burada buton2' ye her basıldığında tanımlanmış olan matrislere servo motor konumları kayıt edilir.
//Otomatik harekette bu bu kayıtları kullanarak robot kol hareket eder.
  if(digitalRead(buton2)==HIGH)
  {
      if(digitalRead(buton2)==HIGH)
      {
        while(1)
        {
          if(digitalRead(buton2)==LOW)
          {
            break ;
          }
        }  
      }
      servo1kayitkonumu[k]=servo1.read();
      servo2kayitkonumu[k]=servo2.read();
      servo3kayitkonumu[k]=servo3.read();
      servo4kayitkonumu[k]=servo4.read();
      Serial.println(servo1kayitkonumu[k]);
      Serial.println(servo2kayitkonumu[k]);
      Serial.println(servo3kayitkonumu[k]);
      Serial.println(servo4kayitkonumu[k]);
      k++ ;   
   }
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////Kayıt Edilen Konumları Başlatma/////////////////////////////

//Buton3 basıldığında kayıt edilen konumlar tekrarlanmaya başlar.

 if(digitalRead(buton3)==HIGH)
  {
      otokontrol=true;
      if(digitalRead(buton3)==HIGH)
      {
        while(1)
        {
          if(digitalRead(buton3)==LOW)
          {
            break ;
          }
        }  
      }  
   }
////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////Fonksiyon Çağırma/////////////////////////////////////////////

//Otomatik hareketi başlatan if ifadesi ve fonksiyon çağırma işlemi.
//fonksiyon çağrıldıktan sonra kayıt edilen konumlar bir bir döndürülür.

if(otokontrol==true)
{
  for(int i=0;i<k;i++)
  {
    servokontrol(servo1kayitkonumu[i],servo2kayitkonumu[i],servo3kayitkonumu[i],servo4kayitkonumu[i]) ;
    delay(1000) ;
  }
}
}

//////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////Kayıt Edilen Noktaları Tekrarlayan Fonksiyon/////////////////////

void servokontrol(int konum1, int konum2,int konum3, int konum4) 
{
    servo1konum=servo1.read() ;
    servo2konum=servo2.read() ;
    servo3konum=servo3.read() ;
    servo4konum=servo4.read() ;
    
  while( (servo1konum!=konum1) || (servo2konum!=konum2) || (servo3konum!=konum3) || (servo4konum!=konum4) )
  {
    currentmillis = millis();
 
    if ((currentmillis - previousmillis >= AdimSure))
    {
      
      if (servo1konum > konum1)
      {
        servo1konum--;
        servo1.write(servo1konum);
      }
      else if (servo1konum < konum1)
      {
        servo1konum++;
        servo1.write(servo1konum);
      }
      if (servo2konum > konum2)
      {
        servo2konum--;
        servo2.write(servo2konum);
      }
      else if (servo2konum < konum2)
      {
        servo2konum++;
        servo2.write(servo2konum);
      }
      if (servo3konum > konum3)
      {
        servo3konum--;
        servo3.write(servo3konum);
      }
      else if (servo3konum < konum3)
      {
        servo3konum++;
        servo3.write(servo3konum);
      }
      if (servo4konum > konum4)
      {
        servo4konum-=10;
        servo4.write(servo4konum);
      }
      else if (servo4konum < konum4)
      {
        servo4konum+=10 ;
        servo4.write(servo4konum);
      }
      
previousmillis=currentmillis ;    
  }  
  }
}

Robot Kol Test Aşaması

Çok Önemli Not: Buraya kadar tüm montaj, devre şeması ve yazılım adımlarını bitirmiş olduk. Bundan sonra test aşamasına geçebiliriz. Aşağıda paylaştığımız videoda da görüldüğü üzere manuel hareketler rahatlıkla yapılabilmektedir. Konum kayıt etme özelliğinden faydalanılarak otomatik kullanım yapılmak istenildiğinde dikkat edilmesi gereken basit bir durum bulunmaktadır.

Bir örnekle bu durumu açıklayacak olursak. Robot kolun bir kutuyu otomatik olarak almasını sağlamak istiyor olabiliriz. Bu durumda konum kayıt etme özelliğinden faydalanırken robot kolun aynı zamanda geri dönme hareketinin de kayıt edilmesi gerekmektedir. Aksi durumda robot kol son kayıt edilen konum ile ilk kayıt edilen konum arasında çemberimsi bir hareket yapmaktadır.

Bu durum her seferinde problem yaratmayabilir ancak robot kolun geri hareketini de sağlamak birçok durumda daha verimli olacaktır.

Robot Kol Test Videosu

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir