INHOUDSOPGAWE:
- Stap 1: Voeg die Gripper by
- Stap 2: Bou die arm
- Stap 3: MoveIt RobotCommander -koppelvlak
- Stap 4: Arduino -kode vir robotbeheerder
- Stap 5: (opsioneel) Genereer IKfast-inprop
- Stap 6: Die ramptoets
Video: ROS MoveIt Robotic Arm Deel 2: Robotbeheerder: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
github.com/AIWintermuteAI/ros-moveit-arm.git
In die vorige deel van die artikel het ons URDF- en XACRO -lêers vir ons robotarm geskep en RVIZ gelanseer om ons robotarm in 'n gesimuleerde omgewing te beheer.
Hierdie keer doen ons dit met die regte robotarm! Ons voeg die gryper by, skryf 'n robotbeheerder en (opsioneel) genereer IKfast inverse kinematiese oplosmiddel.
Geronimo!
Stap 1: Voeg die Gripper by
Die byvoeging van die gryper was aanvanklik 'n bietjie verwarrend, so ek het hierdie gedeelte in die vorige artikel oorgeslaan. Dit blyk toe nie so moeilik te wees nie.
U moet u URDF -lêer verander om grypskakels en verbindings by te voeg.
Die aangepaste URDF -lêer vir my robot is by hierdie stap aangeheg. Dit volg basies dieselfde logika as die armdeel; ek het pas drie nuwe skakels (klou_basis, klou_r en klou_l) en drie nuwe gewrigte (gewrig5 is vasgemaak, en gewrig6, gewrig7 is omskakelgewrigte) bygevoeg.
Nadat u u URDF -lêer gewysig het, moet u ook die MoveIt -gegenereerde pakket en xacro -lêer opdateer deur die MoveIt -opsetassistent te gebruik.
Begin die instellingsassistent met die volgende opdrag
roslaunch moveit_setup_assistant setup_assistant.launch
Klik op Wysig die bestaande MoveIt -konfigurasie en kies die gids met u MoveIt -pakket.
Voeg nuwe beplanningsgroepgrijper (met skakels en verbindings vir die grijper) by en ook 'n eindversterker. My instellings is in die skermkiekies hieronder. Let op dat u nie 'n kinematiese oplosmiddel vir die grijper kies nie; dit is nie nodig nie. Genereer die pakket en skryf die lêers oor.
Hardloop
katjie maak
opdrag in u catkin -werkruimte.
Goed, nou het ons 'n arm met 'n gryp!
Stap 2: Bou die arm
Soos ek al genoem het, is die 3D -model van die arm gemaak deur Juergenlessner, dankie vir die wonderlike werk. Die gedetailleerde monteerinstruksies kan gevind word as u die skakel volg.
Ek moes egter die beheerstelsel verander. Ek gebruik Arduino Uno met sensorskerm om servo's te beheer. Sensorskerm help baie met die vereenvoudiging van die bedrading en maak dit ook maklik om servo's van eksterne krag te voorsien. Ek gebruik 'n 12V 6A-kragadapter wat deur die afstapmodule (6V) bedraad is na Sensor Shield.
'N Nota oor servo's. Ek gebruik MG 996 HR -servo's wat by Taobao gekoop is, maar die kwaliteit is regtig sleg. Dit is beslis 'n goedkoop Chinese afslag. Die een vir die elmbooggewrig het nie genoeg wringkrag verskaf nie en het selfs een keer onder swaar vrag begin rook. Ek moes die elmbooggewrig servo vervang deur MG 946 HR van 'n vervaardiger van 'n beter gehalte.
Lang storie kort - koop kwaliteit servo's. As daar toorrook uit u servo's kom, gebruik beter servo's. 6V is 'n baie veilige spanning, moenie dit verhoog nie. Dit verhoog nie die wringkrag nie, maar kan die servo's beskadig.
Bedrading vir servo's soos volg:
basis 2
skouer2 4skouer1 3
elmboog 6
gryp 8
pols 11
Verander dit gerus solank u ook onthou om die Arduino -skets te verander.
Nadat u klaar is met hardeware, kyk ons na die groter prentjie!
Stap 3: MoveIt RobotCommander -koppelvlak
So, wat nou? Waarom het u in elk geval MoveIt en ROS nodig? Kan u nie net die arm direk deur die Arduino -kode beheer nie?
Ja jy kan.
Goed, hoe gaan dit nou met die gebruik van GUI- of Python/C ++ - kode om robotpose na te gaan? Kan Arduino dit doen?
Soortvan. Hiervoor moet u 'n inverse kinematiese oplosmiddel skryf wat 'n robot -houding (vertaling en rotasie -koördinate in 3D -ruimte) sal neem en dit omskakel in gesamentlike hoekboodskappe vir servo's.
Alhoewel u dit self kan doen, is dit baie werk om te doen. MoveIt en ROS bied dus 'n goeie koppelvlak vir IK (inverse kinematika) -oplosser om al die swaar trigonometriese hefwerk vir u te doen.
Kort antwoord: Ja, u kan 'n eenvoudige robotarm doen wat 'n hardgekodeerde Arduino-skets sal uitvoer om van die een pose na die ander te gaan. Maar as u u robot intelligenter wil maak en rekenaarvisie -funksies wil byvoeg, is MoveIt en ROS die regte pad.
Ek het 'n baie vereenvoudigde diagram gemaak wat verduidelik hoe MoveIt -raamwerk werk. In ons geval gaan dit nog eenvoudiger wees, aangesien ons geen terugvoer van ons servo's het nie en ons /joint_states -onderwerp gaan gebruik om die robotbeheerder die hoeke vir servo's te voorsien. Ons kort net een komponent, naamlik die robotbeheerder.
Waarvoor wag ons? Kom ons skryf 'n paar robotbeheerders, sodat ons robot sou wees … u weet, meer beheerbaar.
Stap 4: Arduino -kode vir robotbeheerder
In ons geval is Arduino Uno die bestuur van 'n ROS -knoop met rosserial. Die Arduino -sketskode is by hierdie stap aangeheg en ook beskikbaar op GitHub.
Die ROS -knoop wat op Arduino Uno werk, teken basies in op /JointState -onderwerp gepubliseer op die rekenaar met MoveIt en skakel dan die gesamentlike hoeke om van die skikking van radiale na grade en gee dit aan servo's deur gebruik te maak van die standaard Servo.h -biblioteek.
Hierdie oplossing is 'n bietjie hacky en nie hoe dit met industriële robotte gedoen word nie. Ideaal gesproke is dit veronderstel dat u die bewegingsbaan op /FollowJointState -onderwerp publiseer en dan die terugvoer oor /JointState -onderwerp ontvang. Maar in ons arm kan die stokperdjie -servo's nie die terugvoer gee nie, so ons sal net direk inteken op die /JointState -onderwerp, gepubliseer deur FakeRobotController -knoop. Eintlik gaan ons uit dat die hoeke wat ons aan servo's oorgedra het, ideaal uitgevoer word.
Raadpleeg die volgende tutoriale vir meer inligting oor hoe die rosserial werk
wiki.ros.org/rosserial_arduino/Tutorials
Nadat u die skets na Arduino Uno opgelaai het, moet u dit met die seriële kabel koppel aan die rekenaar waarop u ROS -installasie uitgevoer word.
Voer die volgende opdragte uit om die hele stelsel weer te gee
roslaunch my_arm_xacro demo.launch rviz_tutorial: = waar
sudo chmod -R 777 /dev /ttyUSB0
rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200
Nou kan u interaktiewe merkers in RVIZ gebruik om die robotarm na 'n houding te skuif en dan op Plan en uitvoer uit te voer sodat dit werklik in die posisie kan beweeg.
Towerkuns!
Nou is ons gereed om Python -kode vir ons haptoets te skryf. Wel, amper…
Stap 5: (opsioneel) Genereer IKfast-inprop
By verstek stel MoveIt voor dat u KDL kinematika -oplosmiddel gebruik, wat nie regtig met minder as 6 DOF -arms werk nie. As u hierdie tutoriaal noukeurig volg, sal u agterkom dat die armmodel in RVIZ nie kan gaan na 'n paar posisies wat deur die armkonfigurasie ondersteun moet word nie.
Die aanbevole oplossing is om pasgemaakte kinematiese oplossers te skep met behulp van OpenRave. Dit is nie so moeilik nie, maar u moet dit bou en dit hang af van die bron of gebruik die docker -houer, wat u ook al verkies.
Die prosedure is baie goed gedokumenteer in hierdie tutoriaal. Dit is bevestig dat dit werk op VM met Ubuntu 16.04 en ROS Kinetic.
Ek het die volgende opdrag gebruik om die oplossing op te wek
openrave.py -databasis inversekinematika --robot = arm.xml --iktype = translation3d --iktests = 1000
en toe gehardloop
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
om MoveIt IKfast-inprop te genereer.
Die hele proses is 'n bietjie tydrowend, maar nie baie moeilik as u die tutoriaal noukeurig volg nie. As u vrae het oor hierdie deel, kontak my asseblief in die kommentaar of PM.
Stap 6: Die ramptoets
Nou is ons gereed om die hellingtoets te probeer, wat ons sal uitvoer met behulp van ROS MoveIt Python API.
Die Python -kode is aan hierdie stap gekoppel en ook beskikbaar op die github -bewaarplek. As u nie 'n oprit het nie of 'n ander toets wil probeer, moet u die posisies van die robot in die kode verander. Vir die eerste uitvoering
rostopiese eggo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/terugvoer
in die terminale as u reeds RVIZ en MoveIt gebruik. Beweeg dan die robot met interaktiewe merkers na die gewenste posisie. Die posisie en oriëntasie waardes sal in die terminaal vertoon word. Kopieer dit net na die Python -kode.
Om die oprit toetsrit uit te voer
rosrun my_arm_xacro pick/pick_2.py
met RVIZ en rosserial node wat reeds loop.
Bly ingeskakel vir die derde deel van die artikel, waar ek 'n stereokamera sal gebruik vir die opsporing van voorwerpe en die kies en plaas pypleiding vir eenvoudige voorwerpe!
Aanbeveel:
N64-geïnspireerde robotbeheerder (Arduino + NRF24L01): 4 stappe
N64-geïnspireerde robotbeheerder (Arduino + NRF24L01): Sedert my eerste robotprojek gebruik ek spelbeheerders om opdragte en funksies uit te voer. Dit is beslis die invloed van my gamer -dae. Ek het al projekte gedoen met PS2, Xbox 360 -beheerders … maar daar was 'n tyd dat ek 'n paar koppelvlakprobleme gehad het
Deel 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: 16 stappe
Deel 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: Die fokus van hierdie Instructable is die STM32 Nucleo mikro-kontroleerder. Die motivering hiervoor om 'n monteerprojek uit kaal bene te kan skep. Dit sal ons help om dieper te verdiep en die MSP432 Launchpad-projek (die TI-RSLK) wat
Matlab-gebaseerde ROS Robotic Controller: 9 stappe
ROS-robotbeheerder in Matlab: Sedert ek 'n kind was, het ek nog altyd daarvan gedroom om Iron Man te wees en doen dit steeds. Iron Man is een van die karakters wat realisties moontlik is, en ek wil eenvoudig eendag Iron Man word, selfs al lag mense vir my of sê dit is onmoontlik
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 stappe
Xbox 360 ROBOTIESE ARM [ARDUINO]: AXIOM ARM:
ROS MoveIt Robotarm: 4 stappe
ROS MoveIt Robotic Arm: Dit gaan 'n reeks artikels wees oor die maak van 'n robotarm wat beheer word met ROS (Robotic Operating System) en MoveIt. As u van robotika hou, is ROS 'n wonderlike raamwerk wat u sal help om vinniger robotte te bou. Dit stel u in staat om weer te gebruik