Mündəricat:

ROS MoveIt Robotik Kol Part 2: Robot Controller: 6 Addım
ROS MoveIt Robotik Kol Part 2: Robot Controller: 6 Addım

Video: ROS MoveIt Robotik Kol Part 2: Robot Controller: 6 Addım

Video: ROS MoveIt Robotik Kol Part 2: Robot Controller: 6 Addım
Video: Makeblock Untimate Robot Kit Part 2 : Robtic Arm Explaine, Software, Code App and Having Fun demo 2024, Noyabr
Anonim
Image
Image

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

Tutucunun əlavə edilməsi
Tutucunun əlavə edilməsi
Tutucunun əlavə edilməsi
Tutucunun əlavə edilməsi
Tutucunun əlavə edilməsi
Tutucunun əlavə edilməsi

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ı

Qol qurmaq
Qol qurmaq
Qol qurmaq
Qol qurmaq
Qol qurmaq
Qol qurmaq
Qol qurmaq
Qol qurmaq

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

MoveIt RobotCommander İnterfeysi
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

Robot nəzarətçi üçün Arduino kodu
Robot nəzarətçi üçün Arduino kodu
Robot nəzarətçi üçün Arduino kodu
Robot nəzarətçi üçün Arduino kodu
Robot nəzarətçi üçün Arduino kodu
Robot nəzarətçi üçü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

Rampa Testi!
Rampa Testi!
Rampa Testi!
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ə: