Indholdsfortegnelse:
- Trin 1: Tilføjelse af griberen
- Trin 2: Bygning af armen
- Trin 3: MoveIt RobotCommander -grænseflade
- Trin 4: Arduino -kode til robotcontroller
- Trin 5: (Valgfrit) Generering af IKfast Plug-in
- Trin 6: Rampetesten
![ROS MoveIt Robotic Arm Part 2: Robot Controller: 6 trin ROS MoveIt Robotic Arm Part 2: Robot Controller: 6 trin](https://i.howwhatproduce.com/images/006/image-15880-23-j.webp)
Video: ROS MoveIt Robotic Arm Part 2: Robot Controller: 6 trin
![Video: ROS MoveIt Robotic Arm Part 2: Robot Controller: 6 trin Video: ROS MoveIt Robotic Arm Part 2: Robot Controller: 6 trin](https://i.ytimg.com/vi/_flpwM8yyVM/hqdefault.jpg)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
![Image Image](https://i.howwhatproduce.com/images/006/image-15880-25-j.webp)
![](https://i.ytimg.com/vi/0G8KPfro2Hw/hqdefault.jpg)
github.com/AIWintermuteAI/ros-moveit-arm.git
I den forrige del af artiklen har vi oprettet URDF- og XACRO -filer til vores robotarm og lanceret RVIZ for at styre vores robotarm i simulerede omgivelser.
Denne gang gør vi det med den rigtige robotarm! Vi tilføjer griberen, skriver en robotcontroller og (valgfrit) genererer IKfast invers kinematics solver.
Geronimo!
Trin 1: Tilføjelse af griberen
![Tilføjelse af griberen Tilføjelse af griberen](https://i.howwhatproduce.com/images/006/image-15880-26-j.webp)
![Tilføjelse af griberen Tilføjelse af griberen](https://i.howwhatproduce.com/images/006/image-15880-27-j.webp)
![Tilføjelse af griberen Tilføjelse af griberen](https://i.howwhatproduce.com/images/006/image-15880-28-j.webp)
Tilføjelse af griber var lidt forvirrende i starten, så jeg sprang denne del over i den forrige artikel. Det viste sig ikke at være så svært alligevel.
Du skal ændre din URDF -fil for at tilføje griberlinks og led.
Den ændrede URDF -fil til min robot er vedhæftet dette trin. Grundlæggende følger det den samme logik som armdelen, jeg har lige tilføjet tre nye links (claw_base, claw_r og claw_l) og tre nye led (joint5 er fastgjort, og joint6, joint7 er revolute led).
Når du har ændret din URDF -fil, skal du også opdatere MoveIt -genererede pakke og xacro -fil ved hjælp af MoveIt -installationsassistent.
Start installationsassistent med følgende kommando
roslaunch moveit_setup_assistant setup_assistant.lancering
Klik på Rediger eksisterende MoveIt -konfiguration, og vælg mappen med din MoveIt -pakke.
Tilføj ny planlægningsgruppegriber (med links og samlinger til griberen) og også en endeeffektor. Mine indstillinger er i skærmbillederne herunder. Bemærk, at du ikke vælger kinematisk solver til griberen, det er ikke nødvendigt. Generer pakken, og overskriv filerne.
Løb
catkin -mærke
kommando i dit catkin -arbejdsområde.
Okay, nu har vi en arm med en griber!
Trin 2: Bygning af armen
![Bygning af armen Bygning af armen](https://i.howwhatproduce.com/images/006/image-15880-29-j.webp)
![Bygning af armen Bygning af armen](https://i.howwhatproduce.com/images/006/image-15880-30-j.webp)
![Bygning af armen Bygning af armen](https://i.howwhatproduce.com/images/006/image-15880-31-j.webp)
![Bygning af armen Bygning af armen](https://i.howwhatproduce.com/images/006/image-15880-32-j.webp)
Som jeg nævnte før armen 3D -modellen er lavet af Juergenlessner, tak for et fantastisk arbejde. Den detaljerede samlevejledning kan findes, hvis du følger linket.
Jeg var dog nødt til at ændre kontrolsystemet. Jeg bruger Arduino Uno med sensorskjold til styring af servoer. Sensorskærm hjælper meget med at forenkle ledningerne og gør det også let at levere den eksterne strøm til servoer. Jeg bruger 12V 6A strømadapter, der er kablet gennem trin-ned modul (6V) til Sensor Shield.
En note om servoer. Jeg bruger MG 996 HR servoer købt fra Taobao, men kvaliteten er virkelig dårlig. Det er bestemt en billig kinesisk knock-off. Den til albueleddet gav ikke nok drejningsmoment og begyndte endda at ryge en gang under tung belastning. Jeg måtte udskifte albueledservo med MG 946 HR fra en producent af bedre kvalitet.
Lang historie kort - køb kvalitetsservoer. Hvis der kommer magisk røg ud af dine servoer, skal du bruge bedre servoer. 6V er en meget sikker spænding, ikke øg den. Det øger ikke drejningsmomentet, men kan beskadige servoerne.
Kabelføring til servoer som følger:
base 2
skulder2 4 skulder1 3
albue 6
griber 8
håndled 11
Du er velkommen til at ændre det, så længe du også husker at ændre Arduino -skitsen.
Når du er færdig med hardware, lad os se på det større billede!
Trin 3: MoveIt RobotCommander -grænseflade
![MoveIt RobotCommander -grænseflade MoveIt RobotCommander -grænseflade](https://i.howwhatproduce.com/images/006/image-15880-33-j.webp)
Så hvad nu? Hvorfor har du alligevel brug for MoveIt og ROS? Kan du ikke bare styre armen direkte gennem Arduino -koden?
Ja du kan.
Okay, hvad med at bruge GUI eller Python/C ++ kode til at give robotpose at gå til? Kan Arduino gøre det?
På en måde. Til det skal du skrive en invers kinematisk solver, der vil tage en robotpose (oversættelses- og rotationskoordinater i 3D -rum) og konvertere den til fælles vinkelbeskeder for servoer.
På trods af at du kan gøre det selv, er det et helvede til en masse arbejde. Så MoveIt og ROS giver en god grænseflade til IK (invers kinematik) solver til at udføre alle de tunge trigonometriske løft for dig.
Kort svar: Ja, du kan lave en simpel robotarm, der udfører en hårdt kodet Arduino-skitse for at gå fra en pose til en anden. Men hvis du vil gøre din robot mere intelligent og tilføje computervision, er MoveIt og ROS vejen frem.
Jeg lavede et meget forenklet diagram, der forklarer, hvordan MoveIt -rammer fungerer. I vores tilfælde bliver det endnu enklere, da vi ikke har feedback fra vores servoer og bruger /joint_states emne til at give robotcontrolleren vinklerne til servoer. Vi mangler kun en komponent, som er robotcontrolleren.
Hvad venter vi på? Lad os skrive nogle robotcontrollere, så vores robot ville være … du ved, mere kontrollerbar.
Trin 4: Arduino -kode til robotcontroller
![Arduino -kode til robotcontroller Arduino -kode til robotcontroller](https://i.howwhatproduce.com/images/006/image-15880-34-j.webp)
![Arduino -kode til robotcontroller Arduino -kode til robotcontroller](https://i.howwhatproduce.com/images/006/image-15880-35-j.webp)
![Arduino -kode til robotcontroller Arduino -kode til robotcontroller](https://i.howwhatproduce.com/images/006/image-15880-36-j.webp)
I vores tilfælde vil Arduino Uno, der kører en ROS -node med rosserial, være robotcontroller. Arduino -skitsekoden er knyttet til dette trin og er også tilgængelig på GitHub.
ROS -noden, der kører på Arduino Uno, abonnerer grundlæggende på /JointState -emne, der er offentliggjort på computeren, der kører MoveIt og konverterer derefter ledvinklerne fra arrayet fra radianer til grader og sender dem til servoer ved hjælp af standard Servo.h -bibliotek.
Denne løsning er lidt hacky og ikke hvordan det gøres med industrielle robotter. Ideelt set skal du offentliggøre bevægelsesbanen om /FollowJointState -emne og derefter modtage feedback om /JointState -emne. Men i vores arm kan hobbyservoer ikke give feedbacken, så vi abonnerer bare direkte på /JointState -emne, udgivet af FakeRobotController -node. Grundlæggende antager vi, at uanset hvilke vinkler vi overførte til servoer, udføres ideelt.
For mere information om hvordan rosserialet fungerer, kan du se følgende selvstudier
wiki.ros.org/rosserial_arduino/Tutorials
Når du har uploadet skitsen til Arduino Uno, skal du forbinde den med det serielle kabel til computeren, der kører din ROS -installation.
For at få hele systemet frem skal du udføre følgende kommandoer
roslaunch my_arm_xacro demo.launch rviz_tutorial: = true
sudo chmod -R 777 /dev /ttyUSB0
rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200
Nu kan du bruge interaktive markører i RVIZ til at flytte robotarmen til en pose og derefter trykke på Plan og udfør, for at den faktisk kan flytte ind i positionen.
Magi!
Nu er vi klar til at skrive Python -kode til vores rampetest. Nå, næsten…
Trin 5: (Valgfrit) Generering af IKfast Plug-in
Som standard foreslår MoveIt at bruge KDL kinematisk solver, som ikke rigtig fungerer med mindre end 6 DOF -arme. Hvis du følger denne vejledning nøje, vil du bemærke, at armmodellen i RVIZ ikke kan gå til nogle stillinger, som bør understøttes af armkonfigurationen.
Den anbefalede løsning er at oprette brugerdefinerede kinematikløsninger ved hjælp af OpenRave. Det er ikke så svært, men du bliver nødt til at bygge det, og det er afhængigheder fra kilden eller bruge docker -containeren, alt efter hvad du foretrækker.
Proceduren er meget veldokumenteret i denne vejledning. Det er bekræftet at arbejde på VM, der kører Ubuntu 16.04 og ROS Kinetic.
Jeg brugte følgende kommando til at generere solver
openrave.py --database inversekinematik --robot = arm.xml --iktype = translation3d --iktests = 1000
og løb derefter
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
at generere MoveIt IKfast plug-in.
Hele proceduren er lidt tidskrævende, men ikke særlig vanskelig, hvis du følger vejledningen nøje. Hvis du har spørgsmål om denne del, bedes du kontakte mig i kommentarerne eller PM.
Trin 6: Rampetesten
![Rampetesten! Rampetesten!](https://i.howwhatproduce.com/images/006/image-15880-37-j.webp)
![Rampetesten! Rampetesten!](https://i.howwhatproduce.com/images/006/image-15880-38-j.webp)
Nu er vi klar til at prøve rampetesten, som vi vil udføre ved hjælp af ROS MoveIt Python API.
Python -koden er knyttet til dette trin og også tilgængelig på github -depot. Hvis du ikke har en rampe eller vil prøve en anden test, skal du ændre robotposerne i koden. For den første udførelse
rostopic echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback
i terminalen, når der allerede køres RVIZ og MoveIt. Flyt derefter robotten med interaktive markører til den ønskede position. Position og orienteringsværdier vises i terminalen. Bare kopier dem til Python -koden.
For at udføre rampetestkørslen
rosrun my_arm_xacro pick/pick_2.py
med RVIZ og rosserial node allerede kørende.
Hold øje med tredje del af artiklen, hvor jeg vil bruge stereokamera til genkendelse af objekter og udføre pick and place pipeline til enkle objekter!
Anbefalede:
Robotic Arm Game - Smartphone Controller: 6 trin
![Robotic Arm Game - Smartphone Controller: 6 trin Robotic Arm Game - Smartphone Controller: 6 trin](https://i.howwhatproduce.com/images/010/image-28794-j.webp)
Robotic Arm Game - Smartphone Controller: Hej! Her er et sjovt sommerspil: Robotarmen styret af Smartphone !! Som du kan se på videoen, kan du styre armen med nogle joysticks på din smartphone. Du kan også gemme et mønster, at robotten vil reproducere i en loop for at
Matlab-baseret ROS Robotic Controller: 9 trin
![Matlab-baseret ROS Robotic Controller: 9 trin Matlab-baseret ROS Robotic Controller: 9 trin](https://i.howwhatproduce.com/images/011/image-31405-j.webp)
Matlab-baseret ROS Robotic Controller: Lige siden jeg var barn har jeg altid drømt om at være Iron Man og gør det stadig. Iron Man er en af de karakterer, der er realistisk muligt og ganske enkelt håber jeg på at blive Iron Man en dag, selvom folk griner af mig eller siger, at det er umuligt
Popsicle Stick Robotic Arm: 17 trin (med billeder)
![Popsicle Stick Robotic Arm: 17 trin (med billeder) Popsicle Stick Robotic Arm: 17 trin (med billeder)](https://i.howwhatproduce.com/images/002/image-4567-18-j.webp)
Popsicle Stick Robotic Arm: Sådan bygger du en simpel robotarm med en griber ved hjælp af popsicle sticks, en Arduino og et par servoer
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 trin
![Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 trin Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 trin](https://i.howwhatproduce.com/images/004/image-10492-21-j.webp)
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM:
ROS MoveIt robotarm: 4 trin
![ROS MoveIt robotarm: 4 trin ROS MoveIt robotarm: 4 trin](https://i.howwhatproduce.com/images/006/image-15917-11-j.webp)
ROS MoveIt Robotic Arm: Dette bliver en serie artikler om at lave en robotarm styret med ROS (Robotic Operating System) og MoveIt. Hvis du er til robotik, er ROS en god ramme, der hjælper dig med at bygge bedre robotter hurtigere. Det giver dig mulighed for at genbruge