Hvordan bygger du en ROS-robot?
For at systemet kan fungere godt, og for at du kan følge, hvad enheden vil gøre i visse situationer, har du brug for standarddefinitioner for hver del. I ROS er disse komponenter noder, tjenester og emner. Kort sagt opretter du en node til hvert større behov. For eksempel er bevægelse en node, vision er en anden node, og planlægning er en tredje node. Knudepunkterne indeholder tjenester, der kan sende information til andre knudepunkter, og tjenester kan også håndtere anmodninger og svar. Et emne kan sende værdier til mange andre noder. At komme ind på disse vilkår, og hvordan du skal bruge dem, er den første nøgle til at mestre ROS2-udvikling.
Efterlign navigation med skildpadde
Når du starter i ROS, vil du sandsynligvis købe en robot, der går eller ruller rundt i dit hus. For at gøre dette skal robotten have et overblik over det område, hvor den navigerer. For at gøre dette kan du bruge et kortlignende program til at teste din robots opførsel. Designerne bag Turtlebot er kommet med en applikation, kaldet turtlesim, der kan gøre dette for dig. Som med alle andre dele af ROS2 kan du starte disse værktøjer med en underkommando fra kommandolinjen. Derefter har du aktiviteter til forskellige funktioner. Den første del er at starte vinduet, hvor du kan se simuleringen, og dette kaldes en node.
$ ros2 run turtlesim turtlesimnodeEt vindue vises med en skildpadde i midten. For at kontrollere skildpadden med dit tastatur skal du køre en anden kommando, der forbliver åben og fortsætte med at trykke på bestemte taster. Dette er en anden knude, der kommunikerer med den første.
$ ros2 run turtlesim turtleteleopkeyNu kan du flytte skildpadden rundt og se, hvordan den bevæger sig. Du kan også få fejl, såsom at ramme væggen. Disse fejl vises i terminalen, hvor skildpadden kører. Dette er den enkleste brug af simuleringsmodulet. Du kan også køre givne figurer, der er en firkant og tilføje flere skildpadder. For at tilføje flere skildpadder kan du bruge kommandoen rqt.
Definer tjenester med rqt
Rqt-programmet leverer tjenester til simuleringen. Q står for Qt, som er til håndtering af grænsefladen. I dette eksempel gyder du en ny skildpadde.
$ rqtRqt-grænsefladen er en lang liste over tjenester til den simulering, du kører. For at oprette en ny skildpadde skal du vælge rullemenuen 'spawn', give skildpadden et nyt navn og klikke på 'call'.'Du vil straks se en ny skildpadde ved siden af den første. Hvis du klikker på rullemenuen 'spawn', vil du også se en ny gruppe poster, der er relateret til den nyligt gyte skildpadde.
Du kan også kortlægge kommandoer for at køre den nye skildpadde. Kommandoen til at gøre det er som følger:
$ ros2 run turtlesim turtleteleopkey -ros-args-map turtle1 / cmdvel: = turtle2 / cmdvelIndstil navnet 'skildpadde2' efter dit tidligere valg.
Avanceret visning med Rviz
Brug rviz til mere avanceret og 3D-visning. Denne pakke simulerer alle noder i dit design.
$ ros2 kør rviz2 rviz2I den grafiske grænseflade har du tre paneler med udsigten i midten. Du kan oprette miljøer ved hjælp af panelet 'Skærme'. Du kan tilføje vægge, vindstyrker og andre fysiske egenskaber. Det er også her, du tilføjer dine robotter.
Vær opmærksom på, at inden du kommer til dette punkt, skal du forstå, hvordan du bruger URDF-formatet. URDF-formatet definerer en robot, så du kan indstille krop, arme, ben og frem for alt kollisionszoner. Kollisionszonerne er der, så simuleringen kan afgøre, om robotten er kollideret.
At lære om at oprette en robot i URDF-format er et stort projekt, så brug en eksisterende open source-kode til at eksperimentere med emulatorerne.
Simuler fysik med havepavillon
I Gazebo kan du simulere fysikken i miljøet omkring din robot. Gazebo er et komplementprogram, der fungerer godt sammen med rviz. Med Gazebo kan du se, hvad der faktisk sker; med rviz holder du styr på, hvad robotten registrerer. Når din software registrerer en mur, der ikke er der, viser Gazebo tom, og rviz viser, hvor i din kode væggen blev oprettet.
Konklusion
Simulering af din robot og dens miljøer er nødvendig for at finde fejl og give nødvendige forbedringer i driften af din robot, før du lægger den ud i naturen. Dette er en kedelig proces, der fortsætter længe efter du begynder at teste bot, i både kontrollerede miljøer og i det virkelige liv. Med tilstrækkelig viden om infrastrukturen i din robots interne systemer kan du forstå, hvad du har gjort rigtigt og forkert. Lær hurtigt at forstå alle de fejl, du finder, da de kan gøre dit system mere robust i det lange løb.