Mündəricat:
- Addım 1: Tutucu əlavə edin
- Addım 2: Kolun qurulması
- Addım 3: MoveIt RobotCommander İnterfeysi
- Addım 4: Robot Nəzarətçisi üçün Arduino Kodu
- Addım 5: (İsteğe bağlı) IKfast Plug-inin yaradılması
- Addım 6: Rampa Testi
Video: ROS MoveIt Robotik Kol Part 2: Robot Controller: 6 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
github.com/AIWintermuteAI/ros-moveit-arm.git
Məqalənin əvvəlki hissəsində robot qolumuz üçün URDF və XACRO faylları yaratdıq və robot qolumuzu simulyasiya edilmiş bir mühitdə idarə etmək üçün RVIZ -i işə saldıq.
Bu dəfə əsl robot qolu ilə edəcəyik! Tutucunu əlavə edəcəyik, bir robot nəzarətçi yazacağıq və (isteğe bağlı) IKfast tərs kinematik həlli quracağıq.
Geronimo!
Addım 1: Tutucu əlavə edin
Tutucu əlavə etmək əvvəlcə bir az qarışıq idi, buna görə əvvəlki məqalədə bu hissəni atladım. Nəticədə o qədər də çətin olmadığı ortaya çıxdı.
Tutucu bağlantılar və birləşmələr əlavə etmək üçün URDF faylınızı dəyişdirməlisiniz.
Robotum üçün dəyişdirilmiş URDF faylı bu addıma əlavə edilmişdir. Əsasən qol hissəsi ilə eyni məntiqə uyğundur, sadəcə üç yeni keçid (claw_base, claw_r və claw_l) və üç yeni birləşmə əlavə etdim (birgə5 sabit, və birgə6, birgə7 inqilabi birləşmələrdir).
URDF faylınızı dəyişdirdikdən sonra MoveIt quraşdırma köməkçisini istifadə edərək MoveIt tərəfindən yaradılan paketi və xacro faylını da yeniləməlisiniz.
Aşağıdakı əmrlə quraşdırma köməkçisini işə salın
roslaunch moveit_setup_assistant setup_assistant.launch
Mövcud MoveIt Konfiqurasiyasını redaktə edin və MoveIt paketiniz olan qovluğu seçin.
Yeni planlama qrupu tutucusu (tutucu üçün bağlantıları və birləşmələri olan) və son effektoru əlavə edin. Ayarlarım aşağıdakı ekran görüntülərindədir. Tutucu üçün kinematik həlli seçmədiyinizə diqqət yetirin, bu lazım deyil. Paketi yaradın və faylların üzərinə yazın.
Qaç
pişik etmək
catkin iş sahənizdə əmr verin.
Yaxşı, indi tutacaqlı bir qolumuz var!
Addım 2: Kolun qurulması
Kol 3D modelinin Juergenlessner tərəfindən hazırlanmasından əvvəl də qeyd etdiyim kimi, inanılmaz bir iş üçün təşəkkür edirik. Əlaqəni izləsəniz, ətraflı montaj təlimatları tapa bilərsiniz.
Nəzarət sistemini dəyişdirməli oldum. Servoları idarə etmək üçün Sensor qalxanlı Arduino Uno istifadə edirəm. Sensor qalxanı, naqillərin sadələşdirilməsinə çox kömək edir və servolara xarici gücün verilməsini də asanlaşdırır. Sensor Shield-ə aşağı salınma modulu (6V) vasitəsilə bağlanan 12V 6A güc adapterindən istifadə edirəm.
Servolar haqqında bir qeyd. Taobaodan alınan MG 996 HR servolarından istifadə edirəm, amma keyfiyyəti həqiqətən pisdir. Bu, şübhəsiz ki, ucuz bir Çin nokautudur. Dirsək eklemi üçün kifayət qədər tork təmin etmədi və hətta ağır yük altında bir dəfə dumana başladı. Dirsək eklemi servosunu daha keyfiyyətli bir istehsalçının MG 946 HR ilə əvəz etməli oldum.
Uzun sözün qısası - keyfiyyətli servolar alın. Servolarınızdan sehrli tüstü çıxırsa, daha yaxşı servolardan istifadə edin. 6V çox təhlükəsiz bir gərginlikdir, artırmayın. Torku artırmaz, ancaq servolara zərər verə bilər.
Servo üçün naqillər aşağıdakı kimidir:
baza 2
çiyin 2 4 çiyin1 3
dirsək 6
tutucu 8
bilək 11
Arduino eskizini dəyişdirməyi də unutmadığınız müddətcə dəyişdirməkdən çekinmeyin.
Avadanlıqları bitirdikdən sonra daha böyük şəklə baxaq!
Addım 3: MoveIt RobotCommander İnterfeysi
Yaxşı, indi nə? Niyə MoveIt və ROS -a ehtiyacınız var? Yalnız Arduino kodu ilə qolu idarə edə bilməzsinizmi?
Bəli sən bacararsan.
Tamam, indi robotun getməsini təmin etmək üçün GUI və ya Python/C ++ kodundan istifadə etməyə necə? Arduino bunu edə bilərmi?
Növ. Bunun üçün bir robot pozası (3D məkanında tərcümə və fırlanma koordinatları) alacaq tərs kinematik həlli yazmalı və servolar üçün ortaq açılı mesajlara çevirməlisiniz.
Bunu özünüz edə bilsəniz də, çox böyük bir işdir. Beləliklə, MoveIt və ROS, IK (tərs kinematik) həll edən üçün sizin üçün bütün ağır trigonometrik qaldırmaları yerinə yetirmək üçün gözəl bir interfeys təmin edir.
Qısa cavab: Bəli, bir pozadan digərinə keçmək üçün sərt kodlu Arduino eskizini yerinə yetirəcək sadə bir robot qolu edə bilərsiniz. Ancaq robotunuzu daha ağıllı etmək və kompüterin görmə qabiliyyətini əlavə etmək istəyirsinizsə, MoveIt və ROS getmək üçün bir yoldur.
MoveIt çərçivəsinin necə işlədiyini izah edən çox sadələşdirilmiş bir diaqram hazırladım. Bizim vəziyyətimizdə daha da asanlaşacaq, çünki servolarımızdan geribildirim yoxdur və robot nəzarətçiyə servo açıları vermək üçün /joint_states mövzusundan istifadə edəcəyik. Bizdə yalnız robot nəzarətçi olan bir komponent yoxdur.
Nə gözləyirik? Gəlin bəzi robot nəzarətçiləri yazaq, beləliklə robotumuz… daha çox idarə oluna bilər.
Addım 4: Robot Nəzarətçisi üçün Arduino Kodu
Bizim vəziyyətimizdə rosserial ilə bir ROS qovşağı işlədən Arduino Uno robot nəzarətçi olacaq. Arduino eskiz kodu bu addıma əlavə olunur və GitHub -da da mövcuddur.
Arduino Uno -da işləyən ROS nodu əsasən MoveIt işləyən kompüterdə nəşr olunan /JointState mövzusuna abunə olur və sonra serialın birləşmə açılarını radyanlardan dərəcələrə çevirir və standart Servo.h kitabxanasından istifadə edərək servolara ötürür.
Bu həll sənaye robotları ilə necə edildiyi deyil, bir az qəribədir. İdeal olaraq /FollowJointState mövzusunda hərəkət traektoriyasını dərc etməli və sonra /JointState mövzusunda rəy almalısınız. Ancaq qolumuzda hobbi servoları rəy verə bilmir, buna görə FakeRobotController node tərəfindən nəşr olunan /JointState mövzusuna birbaşa abunə olacağıq. Əsasən, servolara keçdiyimiz bütün açıların ideal şəkildə yerinə yetirildiyini güman edəcəyik.
Rosserialın necə işlədiyinə dair daha çox məlumat üçün aşağıdakı dərslərə müraciət edə bilərsiniz
wiki.ros.org/rosserial_arduino/Tutorials
Eskizi Arduino Uno -ya yüklədikdən sonra onu seriyalı kabel ilə ROS qurğunuzu işlədən kompüterə bağlamalısınız.
Bütün sistemi işə salmaq üçün aşağıdakı əmrləri yerinə yetirin
roslaunch my_arm_xacro demo.launch rviz_tutorial: = doğru
sudo chmod -R 777 /dev /ttyUSB0
rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200
İndi robot qolunu bir vəziyyətə gətirmək üçün RVIZ -də interaktiv markerlərdən istifadə edə bilərsiniz və sonra vəziyyətə keçmək üçün Plan və İcra düyməsini basın.
Sehrli!
İndi rampa testimiz üçün Python kodu yazmağa hazırıq. Yaxşı, demək olar ki…
Addım 5: (İsteğe bağlı) IKfast Plug-inin yaradılması
Varsayılan olaraq MoveIt, 6 DOF -dan az silahla işləməyən KDL kinematik həlli istifadə etməyi təklif edir. Bu təlimatı yaxından təqib etsəniz, RVIZ -dəki qol modelinin qol konfiqurasiyası tərəfindən dəstəklənməli olan bəzi pozalara gedə bilməyəcəyini görəcəksiniz.
Tövsiyə olunan həll, OpenRave istifadə edərək xüsusi kinematik həll edən yaratmaqdır. Bu o qədər də çətin deyil, ancaq onu qurmalısınız və mənbədən asılılıqları və ya istədiyiniz docker konteynerini istifadə etməlisiniz.
Prosedur bu dərslikdə çox yaxşı sənədləşdirilmişdir. Ubuntu 16.04 və ROS Kinetic işləyən VM üzərində işlədiyi təsdiqlənir.
Çözücü yaratmaq üçün aşağıdakı əmrdən istifadə etdim
openrave.py -verilənlər bazası inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
və sonra qaçdı
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Tərcümə3D.0_1_2_f3.cpp
MoveIt IKfast plagini yaratmaq üçün.
Bütün prosedur bir az vaxt aparır, amma təlimatı yaxından təqib etsəniz çox da çətin deyil. Bu hissə ilə bağlı suallarınız varsa, şərhlərdə və ya PM -də mənimlə əlaqə saxlayın.
Addım 6: Rampa Testi
İndi ROS MoveIt Python API istifadə edərək icra edəcəyimiz ramp testini sınamağa hazırıq.
Python kodu bu addıma əlavə olunur və github deposunda da mövcuddur. Bir rampanız yoxdursa və ya başqa bir sınaqdan keçmək istəyirsinizsə, koddakı robotun pozalarını dəyişdirməlisiniz. Bunun üçün ilk icra
rostopik echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/geribildirim
artıq RVIZ və MoveIt işləyərkən terminalda. Sonra interaktiv markerləri olan robotu istədiyiniz yerə aparın. Mövqe və oriyentasiya dəyərləri terminalda göstəriləcək. Onları Python koduna kopyalayın.
Rampa testini yerinə yetirmək üçün
rosrun my_arm_xacro pick/pick_2.py
RVIZ və rosserial node ilə artıq işləyir.
Məqalənin üçüncü hissəsini izləyin, burada obyektlərin aşkarlanması üçün stereo kameradan istifadə edəcəyəm və sadə obyektlər üçün seçim və yerləşdirmə xətti icra edəcəyəm!
Tövsiyə:
Arduino Robotik Kol: 12 addım
Arduino Robotik Kol: Bu təlimat, Cənubi Florida Universitetindəki Makecourse layihəsinin tələbini yerinə yetirmək üçün yaradılmışdır. Bu layihəni toplamaq üçün lazım olan əsas komponentlərdir
Matlab əsaslı ROS Robotik Nəzarətçi: 9 addım
Matlab əsaslı ROS Robotik Nəzarətçisi: Uşaqlığımdan bəri həmişə Dəmir Adam olmağı xəyal etmişəm və indi də edirəm. Dəmir Adam gerçəkdən mümkün olan və bir gün Dəmir Adam olmağı arzuladığım adamlardan biridir, hətta insanlar mənə gülsələr də və ya mümkün olmadığını desələr də
Popsicle Stick Robotik Kol: 17 Addım (Şəkillərlə birlikdə)
Popsicle Stick Robotik Kol: Popsicle çubuqları, Arduino və bir neçə servo istifadə edərək tutucu ilə sadə bir robot qolu necə qurulacağı
Zio Modulları ilə Robotik Qol Part 3: 4 Addım
Zio Modulları ilə Robotik Qol Part 3: Bu blog yazısı Zio Robotics Seriyasının bir hissəsidir. Giriş Əvvəlki blogumuzda, Zio modullarından istifadə edərək Robotik Qolun necə idarə olunacağına dair 1 və 2 -ci hissələri dərc etmişdik. 1 -ci hissə əsasən Robotik Qolun pəncəsini avtomatik idarə etməyə yönəlib
ROS MoveIt Robotik Qol: 4 addım
ROS MoveIt Robotik Kol: Bu, ROS (Robotik Əməliyyat Sistemi) və MoveIt ilə idarə olunan bir robot qolu hazırlamaqla bağlı bir sıra məqalələr olacaq. Robototexnika ilə məşğul olsanız, ROS daha yaxşı robotları daha sürətli qurmağa kömək edəcək əla bir çərçivədir. Yenidən istifadə etməyə imkan verir