4-DOF Robotik Kol Yapın

MATLAB ve Arduino kullanma

Kendi robotik sistemlerinizi kurmaya gelince, bugün mevcut olan pahalı olmayan donanım ve yazılım araçları sayesinde gelecek gerçekten şimdi. Bu proje makalesinde Raul, dört serbestlik derecesine (4-DOF) ve döner eklemlere sahip bir robotik kolu nasıl yaptığını açıklıyor. Robotik ile ilgilenen herkes için, bu düşük maliyetli donanım ve yazılım platformu, çalışmaya başlamanızı sağlar.

Bu makalede, ileri / ters kinematik ve uygulanan PID kontrol temellerini incelemek ve denemek amacıyla dört serbestlik derecesine (4 DOF) ve döner eklemlere (genellikle RRRR olarak adlandırılır) sahip bir robotik kolu uygulayan projemi tartışıyorum. robotik kollar. Kolun tabanındaki ilk eklem için iki fazlı kodlayıcıya sahip bir DC motor ve kalan üç bağlantı için dijital servo motorlar kullanır – uç efektör için ek bir servo motor dahil. DC motorun açısal konumu, bir PID kontrol döngüsü ile kontrol edilir. Kalan servo motorlar, açık döngü kontrol sinyalleri ile kontrol edilir, çünkü servo motorlar donanımda zaten kapalı döngü kontrollerine sahiptir.

Robotik kol, DC motorun açısını kontrol etmek için PID algoritmasını çalıştıran ve ayrıca servo motorları kontrol eden gömülü bir denetleyiciye sahiptir. Ek olarak, eklem açılarını değiştirmek için, seri port üzerinden komutları almak için bir iletişim arayüzü uygular.

İleri ve ters kinematik algoritmaları, Mathwork’ün MATLAB programlama dili kullanılarak gerçekleştirilir. Seri iletişim komut arabirimini kullanarak katıştırılmış denetleyiciye arabirim oluşturan bir yardımcı bilgisayarda çalıştırılırlar. MATLAB kodu ayrıca kullanıcının robotik kolu kontrol edebileceği ve ileri ve ters kinematik algoritmalarını çalıştırabileceği bir Grafik Kullanıcı Arayüzü (GUI) uygular. Robotik kolun 3D simülasyonu / görselleştirmesi, GUI’de gerçek zamanlı olarak görüntülenir.

Bu projenin amacı, robotik ile ilgilenen herkese ileri ve ters kinematik algoritmaları, PID kontrolü ve kontrolör / bilgisayar arabirimi ile kolay deneyime olanak tanıyan düşük maliyetli bir donanım ve yazılım platformu sağlamaktır.

Şekil 1  , robotik kolun ana bileşenlerini gösteren bir blok diyagramdır. Gömülü kontrolör, dört eklem motorunun her birine istenen açılarda komut vererek robotik kolun duruşunu belirler. Yardımcı bilgisayardan hedef açıları almak için çok basit bir ASCII dizi protokolüne sahip bir seri komut arayüzü uygular. Ayrıca DC motorun 1 numaralı bağlantı noktasındaki dönüş açısını kontrol etmek için bir PID kontrol döngüsü uygular.

ŞEKİL 1

Robotik kol blok şeması

Bunu yapmak için DC motora takılı iki fazlı kodlayıcıdan mevcut motor konumunu okur ve motoru hedef açıya sürmek için gerekli PID çıkış sinyalini hesaplar. Servo motorlar, yalnızca bir açık döngü kontrol şeması kullanılarak çok daha kolay bir şekilde ele alınır. Daha önce belirtildiği gibi ileri ve ters kinematik algoritmaları MATLAB’da yazılır ve eşlik eden bilgisayarda çalıştırılır. Her iki algoritma da dört eklemin her biri için bir dizi açı döndürür ve bunlar daha sonra seri iletişim arabirimi aracılığıyla gömülü denetleyiciye gönderilir. Yardımcı bilgisayar için, Windows 10 işletim sistemi yüklü normal bir kişisel bilgisayar kullanıyorum.

ELEKTRONİK DONANIM
Robotik kol için devre şeması Şekil 2’de gösterilmektedir  . Gömülü kontrolör için, yeni başlayanlar için çok sezgisel olan ve çok çeşitli sensör ve aktüatörlerle arayüz oluşturmayı kolaylaştıran bir Arduino UNO kartı kullanıyorum. Bununla birlikte, motor sürmek, seri iletişim kurmak veya harici kesintileri yönetmek gibi temel işlevleri yerine getirmek için düşük veya orta seviye sürücüler ve kitaplıklar hakkında endişelenmenize gerek yok.

ŞEKİL 2

Robotik kol için devre şeması

Örnek olay: Bağlantı 1’deki DC motora bağlı kodlayıcı tarafından oluşturulan tıklamaları anında tespit etmek için Arduino mikrodenetleyicinin (MCU) harici kesintilerini kullanıyorum. Hızlı tıklama algılama ve sayma, PID kontrol algoritması için çok önemlidir. Ayrıca, Arduino UNO kartı düşük maliyetlidir ve sıradan bir USB kablosu kullanılarak kolayca programlanabilir. Kablo aynı zamanda, sanal seri port olarak açılarak, eşlik eden bilgisayarda çalışan MATLAB kodu ile panele arayüz oluşturmak için de kullanılabilir.

Özellikle açısal pozisyona gömülü PID kontrolünü göstermek için robotik kolun tabanındaki ilk eklem için bir DC motor seçtim. Bir donanım ve yazılım uygulama örneği olarak dahil ederek, kavramı incelemenin bir aracı olarak hizmet eder; Umarım bu konsepte yeni olanlar için anlaşılması kolaydır. Ve bunu bir donanım ve yazılım uygulama örneği olarak dahil ederek, bu konsepte yeni olanlar için anlaşılması kolaydır. Diğer eklemler için, kodun geri kalanını daha basit tutmak için servo motorları seçtim. Muhtemelen, tüm servo motorlar DC motorlar ile değiştirilebilir, sadece bağlantı 1 için zaten çalışan donanım ve PID kontrol kodunu çoğaltarak. Sadece bir servo motoru değiştirerek başlamanızı ve iyi çalıştığında, bir sonrakine devam etmenizi öneririm. üzerinde.Yardımcı bilgisayardaki kinematik kodu, robotik kolun donanım uygulamasından tamamen bağımsız olduğu için değiştirilen motorlarla gayet iyi çalışmalıdır.

Bağlantı 1’deki DC motor, 6 VDC ile çalıştırıldığında 6 RPM’de dönen genel bir JGY370 DC motordur [1]. Tüm robotik kolu yatay olarak döndürmek için fazlasıyla yeterli olan 14 kg-cm’lik bir torka sahiptir ve ekli bir jenerik iki fazlı kodlayıcı ile birlikte gelir. Motor, bir STMicroelectronics L298, 2 kanallı H-köprü Sürücü Modülü tarafından çalıştırılır. Eklemlerin geri kalanında PID kontrollü DC motorları denemek istiyorsanız, öncelikle her bir bağlantı için gerekli torka sahip motorlara sahip olduğunuzdan emin olun. Bu önemlidir, çünkü ağırlıkları dikey bir düzlemde döndürmek için gereken tork genellikle onları yatay bir düzlemde döndürmekten daha büyük olmalıdır.

DC Motor 1’e bağlı iki fazlı kodlayıcı, devir başına 6,300 tıklama çözünürlüğe sahiptir (yani, her tam dönüşte 6,300 darbe sağlar). Teorik olarak bu, derece başına 17,5 tıklama çözünürlüğü verir, bu da robotik kolumuz için fazlasıyla yeterlidir. Farklı bir çözünürlüğe sahip bir kodlayıcı kullanıyorsanız ENC_TICKS_PER_REV , Arduino kodundaki ilgili sabiti değiştirmeyi unutmayın  , aksi takdirde tam olarak komut verilen açıyı alamazsınız. Kodlayıcınızın çözünürlüğünü bilmiyorsanız, motora belirli bir derece (örneğin, 360 derece veya daha fazla) komut vererek bunu ölçebilir, Arduino IDE’nin seri monitöründe işaretleri yazdırabilir ve ardından “kuralı kullanabilirsiniz. kodlayıcınız için devir başına tik sayısını elde etmek için üç ”.

EKLEMLER HAKKINDA DAHA FAZLA BİLGİ
2 ila 4 arasındaki bağlantılar ve uç efektör veya “kıskaç” için, JX Servo PDI-6221MG 20 kg-cm dijital servo motorlar kullanıyorum [2]. Dijital servo motorlar, tipik analog olanlara kıyasla daha küçük ölü bant genişliğine sahiptir. Bu, bağlantılar yatay olarak uzatıldığında ve servo motorlar, kolun ağırlığı ve yükü tarafından oluşturulan aşağı doğru dönme kuvvetlerine karşı tutarken titreşimi azaltmaya yardımcı olur. Maksimum tork performanslarını elde etmek için bu servo motorlar için izin verilen maksimum güç voltajı olan 6 VDC ile servolara güç veriyorum. Daha düşük torklu servo motorlar eklem 3, 4 ve kıskaç için kullanılabilir, ancak tüm eklemlerde aynı servoları kullanıyorum çünkü elimde olan buydu.

Güç kaynağı, tüm motorlar için gerekli akımı sağlayabilmelidir. 5 A’ya kadar sağlayabilen 6 VDC’ye ayarlanmış tezgah güç kaynağımı bağladım. Arduino UNO kartı, aynı zamanda iki fazlı kodlayıcıya da güç veren yardımcı bilgisayara bağlı USB kablosundan güç alıyor.

Son olarak, eşlik eden bilgisayar için MATLAB R2015a yüklü normal bir dizüstü bilgisayar kullanıyorum. MATLAB yazılımını çalıştırmak için önerilen minimum özelliklere sahip olması koşuluyla herhangi bir kişisel bilgisayar kullanılabilir.

Mekanik çerçeve için, mekanik uygulamayı kolaylaştırmak ve tüm çabaları sistemin elektronik ve kod parçaları üzerinde yoğunlaştırmak için hazır bir alüminyum robotik kol kiti [3] seçtim. Bu, yeni başlayanlar arasında çok popüler olan genel bir kittir. Birkaç saat içinde bir araya getirmek gerçekten çok kolay ve eksiksiz bir robotik kol yapısı için tüm parçalara sahip. Daha sağlam bir standa sahip olmak için robot kolunu vidalarla tutturduğum ahşap bir taban yaptım. Şekil 3  , tüm parçaları ile monte edilmiş robotik kolu göstermektedir.

ŞEKİL 3

Tamamen monte edilmiş robotik kol

Mafsalların her biri için doğru tork spesifikasyonlarına sahip motorlara sahip olmak önemlidir, aksi takdirde her bir bağlantının ağırlığı ve bunlara karşılık gelen yükler nedeniyle her bir eklemdeki dönme torkuna karşı koyamazlar. Robotik kol eklemleri için torku hesaplamak için ücretsiz çevrimiçi uygulamalar vardır [4]. Robotik kolun konfigürasyonu (kaç serbestlik derecesine sahip olduğu), bağlantı uzunlukları, bağlantı ağırlıkları, yükler vb. Gibi girdiler sağlamanız gerekir.

En kötü durum senaryosu için (dikeyden 90 derece ağırlık kaldırma), yani bağlantıları yatay olarak tamamen uzatılmış olarak her bir bağlantı için gerekli torku hesaplayacaklar. Hesaplamalarla uğraşmak istemiyorsanız, torkları deneme yanılma yoluyla ayarlamak, bağlantıları dikeyden 90 derece ve tam yükte motorları test etmek ve emin olmak için biraz fazla büyütmek mümkündür. yüklerle iyi başa çıkacaklar. Son efektör (kıskaç) için beşinci bir servo motor vardır. Ancak, robotik kol için bir serbestlik derecesi olarak sayılmaz, bu yüzden kinematik hakkında konuşurken bunu görmezden geleceğim.

KATIŞTIRILMIŞ DENETLEYİCİ
Gömülü denetleyici aygıt yazılımı, Arduino platformu için C / C ++ dilinde yazılmıştır. Servo motorları kontrol etmek ve seri iletişimi yapmak için Arduino platformunda varsayılan olarak bulunan “Servo” ve “Seri” kitaplıklarını kullanıyorum. Arduino için bir PID kontrol kitaplığı da mevcut olsa da, kendi PID kontrol rutinimi yazmayı seçtim. Bunu yaptım çünkü yeni olanlar için kodda “elle” nasıl uygulanacağını göstermek istedim. Ayrıca, PID’yi başka bir MCU platformunda denemek istemeniz durumunda daha taşınabilir. Gömülü kontrolör ayrıca açı okumalarını filtrelemek için düşük geçişli bir filtre ve daha sonra daha ayrıntılı olarak tartışılacak olan bir seri komut ayrıştırıcısı da uygular.

Gömülü denetleyici, bu amaç için tasarlanmış çok basit bir protokol biçiminde, eşlik eden bilgisayardan seri bağlantı noktası aracılığıyla eklemlerin her biri için açı komutları alır.  Şekil 4  , yukarıda bahsedilen protokolde DC Motor 1 için paketlenmiş bir açı verisi örneğini göstermektedir. Açı değeri, bazı sınırlandırma sembolleriyle birlikte paketlenmiştir. Bu sınırlandırma sembolleri, gömülü kontrolörün alınan çerçevelerdeki açı verilerini ayırt etmesine yardımcı olur.  Şekil 5 dört eklem için paketlenmiş açı verilerine bir örnektir. Gömülü kontrolör, seri verileri ayrıştırırken sınırlandırma sembollerini algılar ve hangi karakterlerin açılara ve hangi eklemler için karşılık geldiğini kolayca bilebilir. Bir Arduino kartı bir bilgisayara bağlandığında, işletim sistemi tarafından “sanal seri bağlantı noktası” olarak tanınır, bu nedenle MATLAB’den veri göndermek için sanal seri bağlantı noktasını kodda açıp verileri ASCII formatında göndermemiz yeterlidir.

ŞEKİL 5

Dört motorun tümü için paketlenmiş açı verileri
ŞEKİL 4

DC Motor 1 için paketlenmiş açı verisi örneği

Bu seri arayüz, eklemlerin temel açı kontrolünde hata ayıklarken de kullanışlı hale gelir. Sanal seri portu Arduino IDE’nin seri monitöründe veya başka herhangi bir terminal emülatör yazılımını (Putty veya Tera Term gibi) kullanarak manuel olarak açabilir ve Şekil 4 ve Şekil 5’te gösterilen formatta yazarak açı komut veri çerçevelerini gönderebiliriz. Aslında, robotik kolu yardımcı bilgisayara bağlamadan önce donanımın bu şekilde test edilmesi ve hatalarının ayıklanması şiddetle tavsiye edilir. Bu, kolu MATLAB kodu ile arayüzlendirmeden önce her eklemin doğru dönüşünün kontrol edilmesini sağlar.

PID KONTROL VE FİLTRELEME
Bir PID (orantılı-integral-türev) kontrolör, robotik [5] dahil olmak üzere birçok kontrol sisteminde yaygın olarak kullanılan bir kontrol döngüsü mekanizmasıdır. Bu kontrolör, istenen bir ayar noktası (bizim durumumuzda, bağlantı 1 için istenen bazı açı) ile gerçek ölçülen işlem değişkeni (gerçek ölçülen bağlantı 1 açısı) arasındaki fark olarak bir hata değeri hesaplar. Daha sonra bu hatayı, üç terimin toplamından oluşan bir çıkış sinyalini hesaplamak için kullanır: orantılı, integral ve türev (P, I ve D, dolayısıyla verilen ad). Daha sonra çıkış sinyali, hatayı sıfıra veya daha gerçekçi bir şekilde, sistemin başa çıkabileceği belirli bir hata toleransı dahilinde, bir düzeltme sinyali olarak çalıştırıcıya uygulanır. PID kontrolü, hatayı yinelemeli olarak ölçmek, hesaplamak ve aktüatöre çıkış sinyalini uygulamak için bir geri bildirim döngüsü kullanır.Bu kapalı döngü konfigürasyonu, bu tür bir kontrolü çok duyarlı, doğru ve harici sistem parametrelerinden bağımsız yapan şeydir. Şekil 6  , bağlantı 1’de DC motor ile kullanılan PID kontrolörünün grafiksel bir temsilidir.

ŞEKİL 6

DC Motor 1 için PID kontrol döngüsü

Ortamdaki bazı değişkenleri (konum veya hız gibi) okumak için bir sensör her kullanıldığında, bu okumada her zaman belirli bir miktarda gürültü (tipik olarak rastgele) olacaktır. Bu gürültü, ortamdaki harici karışıklıklar ve manyetik girişim de dahil olmak üzere sensörün hata toleransı gibi bazı faktörlerden kaynaklanmaktadır. Genel olarak, bu sensör gürültüsü, ilgili sinyalin veya verinin frekansı ile karşılaştırıldığında yüksek frekanslı bir sinyal olacaktır. PID denetleyicisinin performansını bozma eğilimindedir, çünkü denetleyici ilgili sinyali düzeltmeye çalışmak yerine yüksek frekanslı salınımlı gürültüye tepki vermeye çalışacaktır. Bu da sistemde salınımlara neden olacak ve aynı zamanda PID sabitlerini ayarlamayı zorlaştıracaktır.

Bazı sistemler gürültüye karşı diğerlerinden daha hassastır. Özel özelliklerine bağlıdır. Gürültüye karşı çok hassas olan sistemler için bir filtre, sensör verilerinde bulunan gürültü miktarını azaltmaya yardımcı olur ve böylece PID denetleyicisinin performansını artırır. Yüksek frekanslı gürültüyü düzeltmek ve PID algoritmasının motoru istenen açıya daha kolay sürmesine yardımcı olmak için gömülü denetleyiciye [6] düşük geçişli, hareketli ortalama bir filtre uyguladım. Bu tür bir filtre genellikle bir MCU’da sensör gürültü filtrelemesini uygulamanın en kolay yoludur. Çok popülerdir ve birçok sensör türüyle iyi çalışır.

Bir PID kontrol sistemi üç ayarlama sabitleri, K sahiptir s , K i  K d çıkış sinyali toplamına kazanç ya da (orantılı, integral ve türev) ile üç terimlerin her birinin katkısı kontrol. Bu üç sabiti uygun şekilde ayarlayarak, sistemin hataya tepkisini olabildiğince hızlı ve kararlı hale getiriyoruz. Arduino kodunda sağladığım PID sabitleri benim kurulumumla iyi çalışıyor, ancak önerilen donanımdan bir şekilde saparsanız sizinki kadar iyi çalışmayabilir.

Örneğin, robot kol yapınızın motor hızı, kodlayıcı çözünürlüğü, eklem sürtünmesi ve kütlesinde farklılıklar olabilir. Bu durumda, üç sabiti sıfırdan yeniden ayarlamanız gerekebilir. PID ile önceki deneyiminize bağlı olarak, kullanabileceğiniz bazı ayarlama yöntemleri vardır, bunlardan en kolayı – yinelemeli deneme ve yanılma – genellikle yeni başlayanlar için önerilir. (Ben her zaman kullanırım.) İnternette, aşina olmamanız durumunda nasıl kullanılacağını öğrenmek için birçok kaynak var.

MATLAB GUI TEMELLERİ
Şekil 7  , MATLAB’ın GUI Geliştirme Ortamını kullanarak robotik kol için yaptığım GUI’yi göstermektedir. Aşağıdaki paragraflarda, bir GUI’nin MATLAB’da nasıl çalıştığı ve istenen görevleri gerçekleştirmek için uygulama koduyla nasıl arayüz oluşturduğu hakkında bazı temel kavramları açıklayacağım. GUI’yi sıfırdan nasıl oluşturacağınızı açıklamayacağım, ancak nasıl yapılacağını öğrenmek istiyorsanız bazı çevrimiçi eğitimler var.

ŞEKİL 7

MATLAB Grafik Kullanıcı Arayüzü

Bir MATLAB GUI’de, veri girmek için kullanılan bileşenler – düğmeler, kaydırıcılar ve onay kutuları gibi – genellikle koddaki geri arama işlevlerine eklenir. Bu nedenle, bu bileşenlerden biriyle, örneğin bir düğmeyi tıklayarak veya bir kaydırıcıyı hareket ettirerek etkileşim kurduğunuzda, karşılık gelen geri arama işlevi çağrılır. Bu, bu geri çağırma işlevlerinin, bu denetimlerle etkileşimlere yanıt olarak çalıştırmak istediğiniz tüm kodu içermesi gerektiği anlamına gelir.

Sağlanan MATLAB kod dosyası “Robotic_Arm_GUI.m”, tüm GUI geri arama işlevlerini içerir. Örneğin “Motor 1 Açısı” kaydırıcısı hareket ettirildiğinde (Şekil 7)  slider_motor1_angle_Callback() fonksiyon çağrılır. İçerisinde aşağıdaki görevler gerçekleştirilir: Motor 1 için yeni açı değerini alın (hareket ettirilen kaydırıcı tarafından ayarlanır); ileri kinematiği hesaplayın ve ortaya çıkan yeni pozu çizin; GUI’deki “Motor 1 Angle” metin etiketini yeni açı değeriyle güncelleyin; ilgili koordinat kaydırıcılarında ve metin etiketlerinde son efektörün (kolun ucu) ortaya çıkan X, Y ve Z koordinatlarını da güncelleyin; ve son olarak, robotik kolu yeni poza taşımak için yeni açıları seri bağlantı noktası üzerinden yerleşik denetleyiciye gönderin. Aynısı diğer açılı kaydırıcılar için de geçerlidir.

Ayrıca, “X Koordinatı” kaydırıcısı hareket ettirildiğinde, geri çağırma işlevi  slider_coordx_Callback() aşağıdaki görevleri gerçekleştirmek için çağrılır: üç koordinat metin etiketinin (X, Y ve Z) tümünden değerleri okur ve bunları bir dizide saklar (bunlar ters kinematik çalıştırarak kolu hareket ettirmek için hedef koordinatlar); ardından, X koordinatının metin etiketindeki değiştirilen koordinat değerini günceller. “Ters Kinematik Çalıştır” düğmesine basıldığında  button_calc_invkin_Callback() fonksiyon çağrılır. Önceden saklanan hedef koordinatlarını okuyacak ve eklemlerin her biri için yeni açıları hesaplamak için ters kinematik algoritmasını çalıştıracak, GUI’de yeni pozu çizecek ve ardından açıları gömülü denetleyiciye gönderecektir. Aynısı Y ve Z koordinatları için de geçerlidir.

“Başlangıç ​​Konumuna Sıfırla” düğmesine basıldığında  button_reset_Callback() işlev çağrılır. Tüm açıları ve koordinatları başlangıç ​​değerlerine sıfırlar, robotik kolun GUI’deki pozunu günceller ve bu başlangıç ​​açılarını aynı zamanda gerçek robotik kolu da sıfırlamak için gömülü denetleyiciye gönderir.

MATLAB GUI kodunun ayrıca Robotic_Arm_GUI_OpeningFcn() GUI penceresi oluşturulduğunda bir kez çalışan bir “açma işlevi” vardır  . Ayrıca figure_gui_CloseRequestFcn() , GUI penceresi her kapatıldığında çalışan bir “kapatma işlevi” vardır  . Açma işlevinde, aşağıdaki görevler gerçekleştirilir: Arduino UNO ile ilişkili sanal seri bağlantı noktasını açın – MATLAB kodunu çalıştırmadan önce bunu kendiniz için değiştirmeyi unutmayın; robotik kol için tüm başlangıç ​​değerlerini ayarlayın (örneğin, açılar, koordinatlar, bağlantı parametreleri); ve robotik kolun GUI’deki ilk pozunu çizin. Kapatma işlevinde, gerçekleştirilen en önemli görev seri iletişim bağlantı noktasını kapatmaktır, çünkü açık bırakılırsa, uygulama bir sonraki çalışmasında bir hata atar ve ona erişmeye çalışır.

MATLAB HABERLEŞME VE PLOTTING
Sanal seri bağlantı noktası (yani, Arduino UNO’nun bilgisayara bağlı USB kablosu) aracılığıyla eşlik eden bilgisayardan gömülü denetleyiciye veri göndermek için, seri bağlantı noktası uygun şekilde yapılandırılmalı ve açık olmalıdır. MATLAB’daki mevcut seri bağlantı noktası işlevleriyle bunu yapmak kolaydır. (Kodda yukarıda bahsedilen “açma işlevi” ne bakın.) Bazen, seri iletişimlerde hata ayıklarken, MATLAB kodu seri bağlantı noktasını düzgün bir şekilde kapatmadan çökecektir. Böyle bir durumda, kodu tekrar çalıştırmadan önce açık bırakılan seri bağlantı noktasını kapatmak için MATLAB Komut Penceresine “enstrreset” yazabilirsiniz.

Seri bağlantı noktası açıldığında, gömülü denetleyiciye veri göndermek MATLAB’ın “fprintf” işlevini çağırmak kadar kolaydır. Örneğin,  fprintf(serial_port, strcat(‘2$’, num2str(round(angle2)), ‘&’)) servo motor 2 için açı veri çerçevesini gönderir. Son olarak, “kapatma fonksiyonunda”, MATLAB uygulaması tamamlanmadan önce seri port kapatılacaktır.

Run_Plot_Fwd_Kinematics(theta1, theta2, theta3, theta4) ( “Run_Plot_Fwd_Kinematics.m” dosyada bulunan) işlevi GUI robotik kol poz planlamakla sorumlu. Bu fonksiyon, robotik kolun yeni eklem açılarını parametre olarak alır ve Calc_Fwd_Kinematics(dh_params) fonksiyonun içini çağırır  . Bu fonksiyon ileri kinematiği hesaplar ve robotik kol bağlantılarının her birinin uçlarının X, Y ve Z koordinatlarını içeren bir matris döndürür. Bu koordinatlar, daha sonra, GUI’deki kolun grafiğini çizmek için arayan işlevi tarafından kullanılacaktır.

Basit olması için, MATLAB programlamasında yeni olanlar için kodu okunabilir tutmak için robotik kol bağlantılarının basit bir “tel grafik” çizimi kullanıyorum (süslü 3D şeyler yok!). Bu amaç için kullanılan “plot3d” işlevi temelde bağımsız değişken olarak X, Y ve Z koordinatlarının üç vektörünü alır (çizgi genişliği ve rengi gibi diğer bağımsız değişkenlerin yanı sıra) ve üç boyutlu çizgiler ve noktalar çizmenize izin verir. Kolun pozunu çizmek için robotik koldaki her bağlantının her iki ucunun X, Y ve Z koordinatlarını içeren ileri kinematik hesaplamasının döndürdüğü matrisin ilk üç satırını argüman olarak aktarıyorum. Poz her değiştiğinde, yeni koordinatları elde etmek için ileri kinematik yeniden hesaplanır ve grafik GUI’de yenilenir.

SIRADAKİ NE?
Şekil 8  robotik kol, gömülü kontrolör ve yardımcı bilgisayardan oluşan komple sistemi göstermektedir. Bu proje için proje dosyaları  Circuit Cellar’ın  makale kodunda ve dosya indirme web sayfasında mevcuttur. Bu proje dosyalarında, sistemi kurmak ve çalıştırmak için ayrıntılı talimatlar vardır.

ŞEKİL 8

Robotik kol, yerleşik kontrolör ve yardımcı bilgisayar

Malzeme temini için aşağıdaki bağlantıları kontrol edin.

[1] JGY370 DC motor
https://www.aliexpress.com/item/32885103266.html?spm=a2g0s.9042311.0.0.27424c4dNXYorf
[2] PDI-6221MG servo motor
https://www.aliexpress.com/item/32836917150.html?spm=a2g0s.9042311.0.0.27424c4d9OUi3n
[3] 6DOF robotic arm kit
https://www.aliexpress.com/item/32414997293.html
[4] https://www.societyofrobots.com/robot_arm_calculator.shtml
[5] http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
[6] https://dspguide.com/ch15.htm

PID controller
https://en.wikipedia.org/wiki/PID_controller

PID döngülerini ayarlamak için iyi stratejiler nelerdir?
https://robotics.stackexchange.com/questions/167/what-are-good-strategies-for-tuning-pid-loops

KILAVUZU Kullanarak Basit Bir Uygulama Oluşturun
https://www.mathworks.com/help/matlab/creating_guis/about-the-simple-guide-gui-example.html

yapmak

Bir cevap yazın

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