Mündəricat:
- Təchizat
- Addım 1: Hər şeyi Quraşdırma
- Addım 2: Nəzarətçinin necə işlədiyini anlayın
- Addım 3: ROS-MATLAB İnterfeysinin yaradılması
- Addım 4: IP ünvanını əldə edin
- Addım 5: Nəzarətçi üçün GUI yaradın
- Addım 6: GUI Düzenlenebilir Düymələrin Proqramlaşdırılması
- Addım 7: GUI Push Düymələrinin Proqramlaşdırılması
- Addım 8: ROS PC -də Şəbəkə Konfiqurasiyasını (Linux) qurmaq
- Addım 9: Nəzarətçini işə salın
Video: Matlab əsaslı ROS Robotik Nəzarətçi: 9 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Uşaqlıqdan bəri həmişə Dəmir Adam olmağı xəyal edirdim və indi də edirəm. Dəmir Adam, gerçəkdən mümkün olan və sadəcə bir gün Dəmir Adam olmağı arzuladığım personajlardan biridir, çünki insanlar mənə gülsələr də və ya bunun mümkün olmadığını söyləsələr də, "birisi bunu etməyənə qədər bu mümkün deyil" -Arnold Schwarzenegger.
ROS, kompleks robototexnika sistemlərinin inkişafı üçün istifadə olunan yeni bir çərçivədir. Tətbiqləri bunlardır: Avtomatlaşdırılmış Quraşdırma Sistemi, Teleoperasiya, Protez Silahlar və Sənaye sektorunun Ağır Maşınları.
Tədqiqatçılar və mühəndislər prototipləri inkişaf etdirmək üçün ROS -dan istifadə edir, fərqli satıcılar isə məhsullarını yaratmaq üçün istifadə edirlər. Topal bir adam tərəfindən idarə olunmasını çətinləşdirən kompleks bir quruluşa malikdir. ROS ilə interfeys bağlantısı yaratmaq üçün MATLAB -dan istifadə etmək, tədqiqatçılara, mühəndislərə və satıcılara daha möhkəm həllər inkişaf etdirməkdə kömək edə biləcək yeni bir yanaşmadır.
Beləliklə, bu təlimat, Matlab əsaslı bir ROS Robot Nəzarətçisinin necə ediləcəyi ilə əlaqədardır, bu, orada və bir neçə ROS təlimatçısı arasında çox az sayda dərslərdən biri olacaq. Bu layihənin məqsədi, şəbəkənizə qoşulmuş hər hansı bir ROS robotunu idarə edə biləcək bir nəzarətçi dizayn etməkdir. Beləliklə, başlayaq!
video tənzimləmə krediti: Ammar Akher, [email protected] ünvanında
Təchizat
Layihə üçün aşağıdakı komponentlər tələb olunur:
(1) ROS PC/Robot
(2) yönləndirici
(3) MATLAB ilə kompüter (versiya: 2014 və ya daha yuxarı)
Addım 1: Hər şeyi Quraşdırma
Bu təlimat üçün, linux kompüterim və ros-kinetikim üçün Ubuntu 16.04 istifadə edirəm, buna görə qarışıqlığın qarşısını almaq üçün ros kinetik və ubuntu 16.04 istifadə etməyi məsləhət görürəm, çünki ros-kinetik üçün ən yaxşı dəstəyə malikdir. Ros kinetic -in necə qurulacağına dair daha çox məlumat üçün https://wiki.ros.org/kinetic/Installation/Ubuntu ünvanına daxil olun. MATLAB üçün ya lisenziya alırsınız, ya da buradan cığır versiyasını yükləyə bilərsiniz.
Addım 2: Nəzarətçinin necə işlədiyini anlayın
Bir kompüter MATLAB -da robot nəzarətçisini idarə edir. Nəzarətçi IP ünvanını və ros pc/robot portunu götürür.
Nəzarətçi ilə ros pc/robot arasında ünsiyyət qurmaq üçün ros mövzusu istifadə olunur, bu da nəzarətçi tərəfindən giriş olaraq qəbul edilir. Modem bir LAN (yerli şəbəkə) yaratmaq üçün tələb olunur və şəbəkəsinə qoşulmuş bütün cihazlara Ip ünvanlarını təyin edir. Buna görə ros pc/robot və nəzarətçi işləyən kompüter eyni şəbəkəyə (yəni modemin şəbəkəsinə) bağlanmalıdır. İndi "necə işlədiyini" bildiyiniz üçün "necə qurulduğuna" keçək …
Addım 3: ROS-MATLAB İnterfeysinin yaradılması
ROS-MATLABInterface, tədqiqatçılar və tələbələr üçün robot alqoritmlərini MATLAB-da prototip etmək və ROS-a uyğun robotlar üzərində sınamaq üçün faydalı bir interfeysdir. bir ROS effektiv robot və ya Gazebo və V-REP kimi robot simulyatorlarında.
Robototexnika alət qutusunu MATLAB-a quraşdırmaq üçün, sadəcə alətlər çubuğundakı Əlavələr seçiminə keçin və əlavə kəşfiyyatçısında robot alətlər qutusunu axtarın. Robot alətlər qutusundan istifadə edərək ROS qovşağı kimi bir mövzunu dərc edə və ya ona abunə ola bilərik və onu ROS ustası edə bilərik. MATLAB-ROS interfeysi, layihələriniz üçün tələb edə biləcəyiniz ROS funksiyalarının çoxuna malikdir.
Addım 4: IP ünvanını əldə edin
Nəzarətçinin işləməsi üçün ROS robotunuzun/kompüterinizin və MATLAB -da nəzarətçi işləyən kompüterin IP ünvanını bilməyiniz vacibdir.
Kompüterinizin ipini almaq üçün:
Windows -da:
Əmr əmrini açın və ipconfig əmrini yazın və IPv4 ünvanını qeyd edin
Linux üçün:
İfconfig əmrini yazın və giriş ünvanını qeyd edin. İndi ip ünvanınız var, GUI qurmağın vaxtı gəldi …
Addım 5: Nəzarətçi üçün GUI yaradın
GUI yaratmaq üçün MATLAB -ı açın və əmr pəncərəsinə bələdçi yazın. Bu, GUI -ni yaradacağımız bələdçi tətbiqini açacaq. GUI -nizi dizayn etmək üçün MATLAB -da tətbiq dizaynerindən də istifadə edə bilərsiniz.
Ümumilikdə 9 düymə yaradacağıq (şəkildə göstərildiyi kimi):
6 düymə: irəli, geriyə, sola, sağa, robota qoşulun, ayırın
3 Düzenlenebilir düymələr: Ros pc ip, port və Mövzu adı.
Düzenlenebilir düymələr, ROS pc-in ipini, portunu və mövzu adını giriş olaraq götürəcək düymələrdir. Mövzu adı, MATLAB nəzarətçisinin və ROS robotunun/kompüterinin ünsiyyət qurduğu şeydir. Düzəliş edilə bilən düymədə sətri düzəltmək üçün düyməni sağ vurun >> Müfəttiş xassələri >> Stringə gedin və düymənin mətnini redaktə edin.
GUI tamamlandıqdan sonra düymələri proqramlaşdıra bilərsiniz. Əsl əyləncənin başladığı yer budur …
Addım 6: GUI Düzenlenebilir Düymələrin Proqramlaşdırılması
GUI.fig faylı olaraq saxlanılır, lakin kod/geri çağırma funksiyaları.m formatında saxlanılır.m faylı bütün düymələrinizin kodunu ehtiva edir. Düymələrinizə geri çağırma funksiyaları əlavə etmək üçün düyməni sağ basın> > Geri çağırışlara baxın >> geri zəng. Bu, xüsusi düymənin təyin olunduğu yerə GUI üçün.m faylını açacaq.
Kodlaşdıracağımız ilk geri zəng, ROS IP -nin düzəliş edilə bilən düyməsidir. Edit1_Callback funksiyası altında aşağıdakı kodu yazın:
edit1_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar)
qlobal ros_master_ip
ros_master_ip = alın (hObject, 'String')
Burada funksiya edit1_Callback olaraq təyin olunur ki, bu da ilk redaktə edilə bilən düyməyə istinad edir. Bu düzəliş edilə bilən düyməyə ROS şəbəkəsindən bir IP ünvanı daxil etdiyimiz zaman, IP ünvanını ros_master_ip adlı qlobal dəyişən bir simli olaraq saxlayacaq.
Sonra _OpeningFcn (hObject, eventdata, handles, varargin) altında aşağıdakıları təyin edin (şəklə bax):
qlobal ros_master_ip
qlobal ros_master_port
qlobal teleop_topik_adı
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/giriş/teleop';
Yalnız qlobal olaraq ros-pc ip (ros_master_ip), port (ros_master_port) və Teleop Mövzu adını sərt kodlaşdırmısınız. Düzəltmək mümkün olan düymələri boş buraxsanız, əlaqələndirdiyiniz zaman bu əvvəlcədən təyin edilmiş dəyərlər istifadə ediləcəkdir.
Kodlaşdıracağımız növbəti geri çağırış Liman tərəfindən düzəldilə bilən düymə üçündür.
Edit2_Callback funksiyası altında aşağıdakı kodu yazın:
edit2_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar)
qlobal ros_master_port
ros_master_port = alın (hObject, 'String')
Burada funksiya, redaktə edilə bilən ikinci düyməyə istinad edən edit2_Callback olaraq təyin olunur. Bu düzəliş edilə bilən düymədə ROS şəbəkəsindən buradakı ros pc/robot portuna daxil olduğumuzda, portu ros_master_port adlı qlobal bir dəyişəndə bir simli olaraq saxlayacaq.
Eynilə, kodlaşdıracağımız növbəti geri çağırma Mövzu adı redaktə edilə bilən düyməsidir.
Edit3_Callback funksiyası altında aşağıdakı kodu yazın:
edit3_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar)
qlobal teleop_topik_adı
teleop_topic_name = alın (hObject, 'String')
Ros_master_port -a bənzər, bu da qlobal dəyişəndə simli olaraq saxlanılır.
Sonra düymələr üçün geri çağırma funksiyalarına baxacağıq …
Addım 7: GUI Push Düymələrinin Proqramlaşdırılması
Daha əvvəl yaratdığımız düymələr, robotu idarəedicidən köçürmək, bağlamaq və ayırmaq üçün istifadə edəcəyimiz düymələrdir. Düymənin geri çağırılması aşağıdakı kimi müəyyən edilir:
məs. pushbutton6_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar)
Diqqət: düymələrinizi yaratmağınızdan asılı olaraq nömrələnəcək. Buna görə də.m faylımdakı pushbutton6 funksiyası Forward üçün ola bilər.m faylınızda isə geriyə ola bilər, bunu unutmayın. Düymənizin hansı funksiyasını yerinə yetirdiyini bilmək üçün sadəcə sağa vurun >> Geri çağırışlara baxın >> geri çağırışlar və bu düymə üçün funksiyanı açacaq, amma bu təlimat üçün bunun mənimki ilə eyni olduğunu düşünürəm.
Robota Bağlan düyməsi üçün:
Pushbutton6_Callback funksiyası altında (hObject, hadisə məlumatları, tutacaqlar):
pushbutton6_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar) qlobal ros_master_ip
qlobal ros_master_port
qlobal teleop_topik_adı
qlobal robot
qlobal velmsg
ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)
setenv ('ROS_MASTER_URI', ros_master_uri)
rozinit
robot = rospublisher (teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage (robot);
Bu geri çağırma, ros_master_ip və portu birləşdirərək ROS_MASTER_URI dəyişənini təyin edəcək. Sonra rosinit əmri əlaqəni işə salacaq. Bağlandıqdan sonra, əmr sürətini göndərmək üçün istifadə ediləcək geometry_msgs/Twist nəşriyyatı yaradacaq. Mövzu adı, redaktə qutusunda verdiyimiz addır. Bağlantı uğurlu olduqdan sonra İleri, Geri, Sol, Sağ düymələrini işlədə biləcəyik.
İrəli, Geri çəkmə düymələrinə geri zənglər əlavə etməzdən əvvəl xətti və bucaq sürətlərinin sürətini işə salmalıyıq.
Buna görə aşağıda _OpeningFcn (hObject, hadisə məlumatları, tutacaqlar, varargin) aşağıdakıları müəyyənləşdirir (şəklə bax):
qlobal sol_spinVelocity qlobal sağ_spinVelocity
qlobal irəli sürət
qlobal geri sürət
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
geriyə sürət = -3;
Qeyd: bütün sürətlər rad/s -dədir
İndi qlobal dəyişənlər təyin olunduqdan sonra hərəkət düymələrini proqramlaşdıraq.
İrəli düyməsi üçün:
pushbutton4_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar) qlobal velmsg
qlobal robot
qlobal teleop_topik_adı
qlobal irəli sürət
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
göndər (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', doğru);
Eyni şəkildə Geri düyməsi üçün:
pushbutton5_Callback funksiyası (hObject, hadisə məlumatları, tutacaqlar)
qlobal velmsg
qlobal robot
qlobal geri sürət
qlobal teleop_topik_adı
velmsg. Angular. Z = 0;
velmsg. Linear. X = geriyə sürət;
göndər (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', doğru);
Eynilə Sol düyməsi üçün: funksiya pushbutton3_Callback (hObject, hadisə məlumatları, tutacaqlar)
qlobal velmsgglobal robot qlobal left_spinVelocity
qlobal teleop_topik_adı
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
göndər (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', doğru);
Eyni şəkildə sağ düymə üçün:
qlobal velmsgglobal robot
qlobal right_spinVelocity
qlobal teleop_topik_adı
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
göndər (robot, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', doğru);
Bütün geri çağırma funksiyaları əlavə edildikdən və fayllar saxlanıldıqdan sonra nəzarətçimizi sınaya bilərik.
Addım 8: ROS PC -də Şəbəkə Konfiqurasiyasını (Linux) qurmaq
İdarəçini şəbəkə konfiqurasiyasının qurulmasını tələb edəcək bir ros pc (Linux) üzərində sınaqdan keçirəcəyik. Əgər nəzarətçini linux pc -də də işləyirsinizsə, orada da şəbəkə konfiqurasiyasını qurmalı olacaqsınız.
Şəbəkə Konfiqurasiyası:
Terminal pəncərənizi açın və gedit.bashrc yazın
Fayl açıldıqdan sonra aşağıdakıları əlavə edin:
#Robot Maşın Konfiqurasiyası
ixrac ROS_MASTER_URI = https:// localhost: 11311
ROS master qovşağının #IP ünvanı
ixrac et ROS_HOSTNAME =
ixrac ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
echo "ROS_MASTER_URI:" $ ROS_MASTER_URI
Dinamik IP təyin etməsi səbəbindən hər dəfə bu addımı atmalısınız.
Addım 9: Nəzarətçini işə salın
Nəzarətçimizi Gazebodakı Tısbağa botunda sınayacağıq.
Gazebo qurmaq üçün https://gazebosim.org/tutorials?tut=install_ubuntu&cat=install ünvanına baxın.
Turtle botu qurmaq üçün https://yainnoware.blogspot.com/2018/09/install-turtlebot-on-ros-kinetic-ubuntu.html ünvanına baxın.
MATLAB -da.fig və.m fayllarınızı saxladığınız qovluğu açın və Run düyməsini basın (şəkildə göstərildiyi kimi). Bağlanmağa basmadan əvvəl, tısbağa bot simulyatorunuzun işlədiyinə əmin olun.
TurtleBot simulyasiyanızı sınamaq üçün:
Terminalı Ros PC -də açın və yazın: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Bu, PC -də Turtlebot simulyasiyasını açacaq. TurtleBotun mövzu adı, tətbiqdə artıq təmin etdiyimiz/cmd_vel_mux/input/teleop. Ros pc Ip ünvanını, liman və mövzu adını redaktə edilə bilən düymələrə yazın və Robotla əlaqə düyməsini basın. Tısbağa botunuz İrəli, Geri və s. Basdıqda hərəkətə başlamalıdır.
Xətti və açısal sürətlərə baxmaq üçün:
Yeni bir terminal açın və əmri yazın: $ rostopic echo/cmd_vel_mux/input/teleop
Və orada, öz Matlab əsaslı ROS Robot Nəzarətçiniz var. Təlimatlarımı bəyənmisinizsə, lütfən, İlk dəfə Müəllif Yarışmasında səs verin və mümkün qədər çox insanla paylaşın. Çox sağ ol.
Tövsiyə:
LoRa Əsaslı Uzaqdan Nəzarətçi - Böyük Məsafələrdən Alətlərə Nəzarət: 8 Addım
LoRa Əsaslı Uzaqdan Nəzarətçi | Cihazları böyük məsafələrdən idarə edin: Hey, nə var, uşaqlar! Akarsh burada CETech-dən. Bu layihədə LEDlər, mühərriklər kimi müxtəlif alətləri idarə etmək üçün istifadə edilə bilən və ya gündəlik həyatımızdan danışsaq ev tətbiqetməmizi idarə edə biləcəyimiz bir uzaqdan idarəetmə cihazı yaradacağıq
Mikro nəzarətçi əsaslı Metronom: 5 addım
Mikro nəzarətçi əsaslı Metronom: Metronom, musiqiçilərin mahnılarda səsləri izləmək və yeni bir alət öyrənən yeni başlayanlar arasında zaman hissini inkişaf etdirmək üçün istifadə etdiyi bir zaman cihazıdır. Musiqidə çox vacib olan ritm hissini qorumağa kömək edir
Arduino əsaslı təmassız infraqırmızı termometr - Arduino İstifadə edən İQ Əsaslı Termometr: 4 Addım
Arduino əsaslı təmassız infraqırmızı termometr | Arduino İstifadə edən İK Əsaslı Termometr: Salam uşaqlar bu təlimatlarda arduino istifadə edərək təmasda olmayan bir Termometr hazırlayacağıq. Bəzən mayenin/bərkin temperaturu çox yüksək və ya aşağıya enir, sonra onunla əlaqə qurmaq və oxumaq çətindir. o səhnədə temperatur
MATLAB tərəfindən idarə olunan mikro nəzarətçi (Arduino MKR1000): 4 addım
MATLAB Nəzarətli Mikrokontrolör (Arduino MKR1000): Layihəmizin məqsədi MATLAB və Arduino MKR1000 -dən ən yaxşı şəkildə istifadə etmək idi. Məqsədimiz, arduinonun müəyyən xüsusiyyətlərinin müəyyən bir girişə əsaslanaraq müəyyən bir çıxışı yerinə yetirməsinə imkan verən bir skript yaratmaq idi. Çox istifadə etdik
Mikro nəzarətçi əsaslı ağıllı batareya şarj cihazı: 9 addım (şəkillərlə birlikdə)
Mikro nəzarətçi əsaslı ağıllı batareya şarj cihazı: Görəcəyiniz dövrə, avtomatik kəsilmiş ATMEGA8A əsaslı bir ağıllı batareya şarj cihazıdır. Müxtəlif şarj vəziyyətlərində fərqli parametrlər LCD vasitəsilə göstərilir. tamamladım … inşa etdim