İçindekiler:
- Gereçler
- Adım 1: Her Şeyin Kurulumunu Alma
- Adım 2: Denetleyicinin Nasıl Çalıştığını Anlama
- Adım 3: Bir ROS-MATLAB Arayüzü Oluşturma
- Adım 4: IP Adresini Alma
- Adım 5: Denetleyici için bir GUI oluşturun
- Adım 6: GUI Düzenlenebilir Düğmelerini Programlama
- Adım 7: GUI Basmalı Düğmelerini Programlama
- Adım 8: ROS PC'de Ağ Yapılandırmasını Ayarlama(Linux)
- 9. Adım: Denetleyiciyi Çalıştırın
Video: Matlab Tabanlı ROS Robotik Denetleyici: 9 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Çocukluğumdan beri hep Iron Man olmayı hayal ettim ve hala da öyle. Iron Man, gerçekçi olarak mümkün olan ve insanlar bana gülseler veya "sadece birileri yapana kadar imkansız" diye bunun imkansız olduğunu söyleseler bile, bir gün Iron Man olmayı arzu ettiğimi söyleyen karakterlerden biri. -Arnold Schwarzenegger.
ROS, karmaşık robotik sistemleri geliştirmek için kullanılan gelişmekte olan bir çerçevedir. Uygulamaları şunları içerir: Otomatik Montaj Sistemi, Teleoperasyon, Protez Kollar ve Sanayi sektörünün Ağır Makinaları.
Araştırmacılar ve mühendisler, prototipleri geliştirmek için ROS'tan yararlanırken, farklı satıcılar ürünlerini oluşturmak için kullanıyor. Topal bir adam tarafından yönetilmesini zorlaştıran karmaşık bir mimariye sahip. ROS ile arayüz bağlantısı oluşturmak için MATLAB'ı kullanmak, araştırmacılara, mühendislere ve satıcılara daha sağlam çözümler geliştirmede yardımcı olabilecek yeni bir yaklaşımdır.
Bu talimat, Matlab tabanlı bir ROS Robotik Denetleyicinin nasıl yapılacağı hakkındadır, bu, bu konuda çok az öğreticiden biri ve birkaç ROS talimatı arasında olacaktır. Bu projenin amacı, ağınıza bağlı herhangi bir ROS robotunu kontrol edebilen bir kontrolör tasarlamaktır. O halde başlayalım!
video düzenleme kredisi: Ammar Akher, [email protected] adresinde
Gereçler
Proje için aşağıdaki bileşenler gereklidir:
(1) ROS PC/Robot
(2) Yönlendirici
(3) MATLAB'lı PC (sürüm: 2014 veya üzeri)
Adım 1: Her Şeyin Kurulumunu Alma
Bu talimat için, linux bilgisayarım ve ros-kinetic için Ubuntu 16.04 kullanıyorum, bu yüzden karışıklığı önlemek için ros-kinetic için en iyi desteğe sahip olduğundan ros kinetic ve ubuntu 16.04 kullanmanızı öneririm. ros kinetic'in nasıl kurulacağı hakkında daha fazla bilgi için https://wiki.ros.org/kinetic/Installation/Ubuntu adresine gidin. MATLAB için buradan bir lisans satın alabilir veya bir deneme sürümünü indirebilirsiniz.
Adım 2: Denetleyicinin Nasıl Çalıştığını Anlama
MATLAB üzerinde bir bilgisayar robotik denetleyiciyi çalıştırır. Kontrolör, ros pc/robot'un IP adresini ve portunu alır.
Denetleyici ve denetleyici tarafından girdi olarak alınan ros pc/robot arasında iletişim kurmak için bir ros-konu kullanılır. Modem, bir LAN (yerel alan ağı) oluşturmak için gereklidir ve ağına bağlı tüm cihazlara IP adreslerini atayan şeydir. Bu nedenle, ros pc/robot ve denetleyiciyi çalıştıran pc'nin her ikisinin de aynı ağa (yani modemin ağına) bağlı olması gerekir. Artık "nasıl çalıştığını" bildiğinize göre, gelelim "nasıl yapıldığına"…
Adım 3: Bir ROS-MATLAB Arayüzü Oluşturma
ROS-MATLABInterface, araştırmacılar ve öğrenciler için robot algoritmalarını MATLAB'da prototiplemek ve ROS uyumlu robotlar üzerinde test etmek için kullanışlı bir arayüzdür. Bu arayüz, matlab'daki robotik sistem araç kutusu tarafından oluşturulabilir ve algoritmamızı prototipleyebilir ve üzerinde test edebiliriz. ROS özellikli bir robot veya Gazebo ve V-REP gibi robot simülatörlerinde.
MATLAB'ınıza robotik sistem araç kutusunu kurmak için, araç çubuğundaki Eklenti seçeneğine gidin ve eklenti gezgininde robotik araç kutusunu arayın. Robotik araç kutusunu kullanarak, bir ROS düğümü gibi bir konuyu yayınlayabilir veya abone olabiliriz ve onu bir ROS yöneticisi yapabiliriz. MATLAB-ROS arayüzü, projeleriniz için ihtiyaç duyabileceğiniz ROS işlevlerinin çoğuna sahiptir.
Adım 4: IP Adresini Alma
Kontrolörün çalışması için, ROS robotunuzun/PC'nizin ip adresini ve MATLAB üzerinde kontrolörü çalıştıran bilgisayarın ip adresini bilmeniz zorunludur.
Bilgisayarınızın ipini almak için:
Windows'ta:
Komut istemini açın ve ipconfig komutunu yazın ve IPv4 adresini not edin
Linux için:
ifconfig komutunu yazın ve inet adresini not edin. Artık ip adresine sahip olduğunuza göre, GUI'yi oluşturmanın zamanı geldi…
Adım 5: Denetleyici için bir GUI oluşturun
GUI'yi oluşturmak için MATLAB'ı açın ve komut penceresine kılavuz yazın. Bu, GUI'mizi oluşturacağımız rehber uygulamasını açacaktır. GUI'nizi tasarlamak için MATLAB'daki uygulama tasarımcısını da kullanabilirsiniz.
Toplamda 9 adet buton oluşturacağız (şekilde görüldüğü gibi):
6 basma düğmesi: İleri, Geri, Sol, Sağ, Robota Bağlan, Bağlantıyı Kes
3 Düzenlenebilir düğmeler: Ros pc ip, port ve Konu adı.
Düzenlenebilir butonlar, ROS pc'nin ipini, portunu ve Konu adını girdi olarak alacak olan butonlardır. Konu adı, MATLAB denetleyicisi ve ROS robotu/pc'nin iletişim kurduğu şeydir. Düzenlenebilir düğmedeki dizeyi düzenlemek için, düğmeye sağ tıklayın >> Denetçi özellikleri >> Dize'ye gidin ve düğmenin metnini düzenleyin.
GUI'niz tamamlandığında düğmeleri programlayabilirsiniz. İşte asıl eğlence burada başlıyor…
Adım 6: GUI Düzenlenebilir Düğmelerini Programlama
GUI bir.fig dosyası olarak kaydedilir, ancak kod/geri arama işlevleri.m biçiminde kaydedilir..m dosyası tüm düğmelerinizin kodunu içerir. Düğmelerinize geri arama işlevleri eklemek için düğmeyi sağ tıklayın > >Geri aramaları görüntüle >>geri arama. Bu, GUI'niz için.m dosyasını o özel düğmenin tanımlandığı yere açacaktır.
Kodlayacağımız ilk geri arama, ROS IP düzenlenebilir düğmesi içindir. edit1_Callback işlevinin altına aşağıdaki kodu yazın:
function edit1_Callback(hObject, eventdata, tanıtıcılar)
küresel ros_master_ip
ros_master_ip = get(hObject, 'Dize')
Burada işlev, ilk düzenlenebilir düğmeye atıfta bulunan edit1_Callback olarak tanımlanır. Bu düzenlenebilir düğmeye ROS ağından bir IP adresi girdiğimizde, IP adresini ros_master_ip adlı global bir değişkende bir dize olarak saklayacaktır.
Ardından, _OpeningFcn(hObject, eventdata, handles, varargin) altında aşağıdakileri tanımlayın (şekle bakın):
küresel ros_master_ip
küresel ros_master_port
global teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
ros-pc ip (ros_master_ip), port (ros_master_port) ve Teleop Topic adını global olarak sabit kodladınız. Bunun yaptığı şey, düzenlenebilir düğmeleri boş bırakırsanız, bağlandığınızda bu önceden tanımlanmış değerler kullanılacaktır.
Kodlayacağımız bir sonraki geri arama, Port düzenlenebilir düğmesi içindir.
edit2_Callback işlevinin altına aşağıdaki kodu yazın:
function edit2_Callback(hObject, eventdata, tanıtıcılar)
küresel ros_master_port
ros_master_port = get(hObject, 'Dize')
Burada işlev, ikinci düzenlenebilir düğmeye atıfta bulunan edit2_Callback olarak tanımlanır. Bu düzenlenebilir butonda ROS ağından ros pc/robot'un portunu buraya girdiğimizde, portu ros_master_port adlı global bir değişkende bir dizge olarak saklayacaktır.
Benzer şekilde, kodlayacağımız bir sonraki geri arama, Konu adı düzenlenebilir düğmesi içindir.
edit3_Callback işlevinin altına aşağıdaki kodu yazın:
function edit3_Callback(hObject, eventdata, tanıtıcılar)
global teleop_topic_name
teleop_topic_name = get(hObject, 'Dize')
ros_master_port'a benzer şekilde, bu da global bir değişkende dizge olarak saklanır.
Daha sonra butonlar için geri arama işlevlerine bakacağız…
Adım 7: GUI Basmalı Düğmelerini Programlama
Daha önce oluşturduğumuz butonlar, robotu hareket ettirmek, bağlamak ve kontrolörden ayırmak için kullanacağımız düğmelerdir. Basmalı düğme geri aramaları aşağıdaki gibi tanımlanır:
Örneğin. işlev pushbutton6_Callback(hObject, eventdata, tanıtıcılar)
Not: Basma düğmelerinizi oluşturduğunuz sıraya bağlı olarak, buna göre numaralandırılırlar. Bu nedenle,.m dosyamdaki pushbutton6 işlevi İleri için olabilirken,.m dosyanızda Geriye yönelik olabilir, bu yüzden bunu aklınızda bulundurun. Basma düğmeniz için tam olarak hangi işlevin olduğunu bilmek için, >>Geri aramaları görüntüle >>geri aramaları sağ tıklayın ve bu düğmeniz için işlevi açacaktır, ancak bu talimat için benimkiyle aynı olduğunu varsayıyorum.
Robota bağlan düğmesi için:
pushbutton6_Callback(hObject, eventdata, tanıtıcılar) işlevinin altında:
işlev pushbutton6_Callback(hObject, eventdata, tanıtıcılar) global ros_master_ip
küresel ros_master_port
global teleop_topic_name
küresel robot
küresel velmsg
ros_master_uri = strcat('https://', ros_master_ip, ':', ros_master_port)
setenv('ROS_MASTER_URI', ros_master_uri)
rosinit
robot = rospublisher(teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage(robot);
Bu geri arama, ros_master_ip ve bağlantı noktasını birleştirerek ROS_MASTER_URI değişkenini ayarlayacaktır. Ardından rosinit komutu bağlantıyı başlatacaktır. Bağlandıktan sonra, komut hızını göndermek için kullanılacak olan bir geometri_msgs/Twist yayıncısı oluşturacaktır. Konu adı, düzenleme kutusuna verdiğimiz isimdir. Bağlantı başarılı olduktan sonra İleri, Geri, Sol, Sağ butonlarını çalıştırabileceğiz.
İleri, Geri basma düğmelerine geri aramalar eklemeden önce, doğrusal ve açısal hız hızlarını başlatmamız gerekir.
Bu nedenle, _OpeningFcn(hObject, eventdata, handles, varargin) altında aşağıdakileri tanımlayın (şekle bakın):
global left_spinVelocity global right_spinVelocity
küresel ileriHız
küresel geri hız
left_spinVelocity = 2;
right_spinVelocity = -2;
ileriHız = 3;
geriye doğruHız = -3;
Not: tüm hızlar rad/s cinsindendir
Artık global değişkenler tanımlandığına göre, hareket butonlarını programlayalım.
İleri düğmesi için:
function pushbutton4_Callback(hObject, eventdata, tanıtıcılar) global velmsg
küresel robot
global teleop_topic_name
küresel ileriHız
velmsg. Angular. Z = 0;
velmsg. Linear. X = ileriVelocity;
gönder(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'Latching', true);
Benzer şekilde Geri basma düğmesi için:
işlev pushbutton5_Callback(hObject, eventdata, tanıtıcılar)
küresel velmsg
küresel robot
küresel geri hız
global teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = geriye doğruVelocity;
gönder(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'Latching', true);
Benzer şekilde Sol basma düğmesi için: function pushbutton3_Callback(hObject, eventdata, tanıtıcılar)
global velmsgglobal robot global left_spinVelocity
global teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
gönder(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'Latching', true);
Benzer şekilde Sağ buton için:
küresel velmsggglobal robot
global right_spinVelocity
global teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
gönder(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'Latching', true);
Tüm geri arama işlevleri eklendikten ve dosyalar kaydedildikten sonra denetleyicimizi test edebiliriz.
Adım 8: ROS PC'de Ağ Yapılandırmasını Ayarlama(Linux)
Kontrol cihazını bir ros pc'de (Linux) test edeceğiz, bu da ağ konfigürasyonunun ayarlanmasını gerektirecektir. Kontrol cihazını bir linux pc'de de çalıştırıyorsanız, ağ konfigürasyonunu orada da kurmanız gerekecektir.
Ağ Yapılandırması:
Terminal pencerenizi açın ve gedit.bashrc yazın
Dosya açıldıktan sonra aşağıdakileri ekleyin:
#Robot Makine Yapılandırması
dışa aktar ROS_MASTER_URI=https://localhost:11311
#ROS ana düğümünün IP adresi
ROS_HOSTNAME'i dışa aktar=
ROS_IP'yi dışa aktar=
echo "ROS_HOSTNAME: " $ROS_HOSTNAME
echo "ROS_IP:"$ROS_IP
echo "ROS_MASTER_URI:"$ROS_MASTER_URI
Dinamik IP ataması nedeniyle her seferinde bu adımı izlemeniz gerekir.
9. Adım: Denetleyiciyi Çalıştırın
Kontrolörümüzü Gazebo'da bir Kaplumbağa botu üzerinde test edeceğiz.
Gazebo'yu kurmak için lütfen https://gazebosim.org/tutorials?tut=install_ubuntu&cat=install adresine bakın.
Turtle bot'u yüklemek için lütfen https://yainnoware.blogspot.com/2018/09/install-turtlebot-on-ros-kinetic-ubuntu.html adresine bakın.
MATLAB'de.fig ve.m dosyalarınızı kaydettiğiniz klasörü açın ve Çalıştır'a basın (resimde gösterildiği gibi). Bu, PC'deki denetleyiciyi açacaktır. Bağlan'a basmadan önce kaplumbağa bot simülatörünüzün çalıştığından emin olun.
TurtleBot simülasyonunuzu test etmek için:
Ros PC'de Terminal'i açın ve şunu yazın: $ roslaunch kaplumbağabot_gazebo kaplumbağabot_world.launch. Bu, o bilgisayarda bir Turtlebot simülasyonu açacaktır. TurtleBot'un konu adı /cmd_vel_mux/input/teleop şeklindedir ve daha önce uygulama içerisinde vermiş olduğumuz, düzenlenebilir butonlara ros pc Ip adresini, port ve konu adını yazıp Robota Bağlan butonuna basınız. İleri, Geri vb. tuşlarına bastığınızda kaplumbağa botunuz hareket etmeye başlamalıdır.
Doğrusal ve açısal hızları görüntülemek için:
Yeni bir terminal açın ve şu komutu yazın: $ rostopic echo /cmd_vel_mux/input/teleop
Ve işte karşınızda, kendi Matlab tabanlı ROS Robotik Denetleyiciniz. Eğitilebilirliğimi beğendiyseniz, lütfen İlk Kez Yazar Yarışmasında oy verin ve mümkün olduğunca çok insanla paylaşın. Teşekkürler.
Önerilen:
3D Baskılı Robotik Köpek (Yeni Başlayanlar için Robotik ve 3D Baskı): 5 Adım
3D Baskılı Robotik Köpek (Yeni Başlayanlar için Robotik ve 3D Baskı): Robotik ve 3D Baskı yeni şeyler, ama onları kullanabiliriz! Bir okul ödevi fikrine ihtiyacınız varsa veya sadece yapacak eğlenceli bir proje arıyorsanız, bu proje iyi bir başlangıç projesidir
Arduino Tabanlı Temassız Kızılötesi Termometre - Arduino Kullanan IR Tabanlı Termometre: 4 Adım
Arduino Tabanlı Temassız Kızılötesi Termometre | Arduino Kullanan IR Tabanlı Termometre: Merhaba arkadaşlar, bu talimatta arduino kullanarak temassız bir Termometre yapacağız. Bazen sıvının/katının sıcaklığı çok yüksek veya çok düşük olduğundan, onunla temas kurmak ve okumak zordur. o sahnede sıcaklık
ROS MoveIt Robotik Kol Bölüm 2: Robot Kontrol Cihazı: 6 Adım
ROS MoveIt Robotik Kol Bölüm 2: Robot Kontrolörü: https://github.com/AIWintermuteAI/ros-moveit-arm.gitMakalenin önceki bölümünde robotik kolumuz için URDF ve XACRO dosyaları oluşturduk ve kontrol etmek için RVIZ'i başlattık. simüle ortamda robotik kol. Bu sefer gerçek
ROS MoveIt Robotik Kol: 4 Adım
ROS MoveIt Robotik Kol: Bu, ROS(Robotic Operating System) ve MoveIt ile kontrol edilen robotik kol yapımı hakkında bir yazı dizisi olacak. Robotik ile ilgileniyorsanız ROS, daha iyi robotları daha hızlı oluşturmanıza yardımcı olacak harika bir çerçevedir. Yeniden kullanmanıza olanak tanır
PIC Mikrodenetleyici Tabanlı Robotik Kol: 6 Adım (Resimli)
PIC Mikrodenetleyici Tabanlı Robotik Kol: Otomobil imalat endüstrilerinin montaj hattından uzaydaki telecerrahi robotlarına kadar Robotik Kollar her yerde bulunabilir. Bu robotların mekanizmaları, benzer işlevler için programlanabilen bir insana benzer ve artan