Hur bygger du en ROS-robot?
För att systemet ska fungera bra och för att du ska kunna följa vad enheten kommer att göra i vissa situationer behöver du standarddefinitioner för varje del. I ROS är dessa komponenter noder, tjänster och ämnen. Kort sagt, du skapar en nod för varje större behov. Till exempel är rörelse en nod, vision är en annan nod och planering är en tredje nod. Noderna innehåller tjänster som kan skicka information till andra noder och tjänster kan också hantera förfrågningar och svar. Ett ämne kan sända värden till många andra noder. Att ta reda på dessa villkor och hur du ska använda dem är den första nyckeln till att bemästra ROS2-utvecklingen.
Efterlikna navigering med turtlesim
När du börjar i ROS kommer du förmodligen att köpa en robot som går eller rullar runt i ditt hus. För att göra detta måste roboten ha en vy över området där den navigerar. För att göra detta kan du använda en kartliknande applikation för att testa din robots beteende. Designarna bakom Turtlebot har kommit med en applikation, kallad turtlesim, som kan göra detta åt dig. Som med alla andra delar av ROS2 kan du starta dessa verktyg med ett underkommando från kommandoraden. Du har sedan aktiviteter för olika funktioner. Den första delen är att starta fönstret där du kan se simuleringen, och detta kallas en nod.
$ ros2 kör turtlesim turtlesimnodeEtt fönster visas med en sköldpadda i mitten. För att styra sköldpaddan med tangentbordet måste du köra ett andra kommando som förblir öppet och hålla kvar vissa tangenter. Detta är en andra nod som kommunicerar med den första.
$ ros2 run turtlesim turtleteleopkeyNu kan du flytta sköldpaddan och se hur den rör sig. Du kan också få fel, som att träffa väggen. Dessa fel dyker upp i terminalen där turtlesimnode körs. Detta är den enklaste användningen av simuleringsmodulen. Du kan också köra givna former, en kvadrat tillhandahålls och lägga till fler sköldpaddor. För att lägga till fler sköldpaddor kan du använda kommandot rqt.
Definiera tjänster med rqt
Programmet rqt tillhandahåller tjänster för simuleringen. Q står för Qt, vilket är för hantering av gränssnittet. I det här exemplet leker du en ny sköldpadda.
$ rqtRqt-gränssnittet är en lång lista med tjänster för den simulering du kör. För att skapa en ny sköldpadda väljer du rullgardinsmenyn "spawn", ger sköldpaddan ett nytt namn och klickar på "ring.'Du kommer omedelbart att se en ny sköldpadda bredvid den första. Om du klickar på rullgardinsmenyn "spawn" kommer du också att se ett nytt gäng poster relaterade till den nyligen skapade sköldpaddan.
Du kan också mappa om kommandon för att köra den nya sköldpaddan. Kommandot att göra detta är som följer:
$ ros2 run turtlesim turtleteleopkey -ros-args -karta turtle1 / cmdvel: = turtle2 / cmdvelStäll in namnet 'turtle2' enligt ditt tidigare val.
Avancerad visning med Rviz
För mer avancerad och 3D-visning, använd rviz. Detta paket simulerar alla noder i din design.
$ ros2 kör rviz2 rviz2I det grafiska gränssnittet har du tre paneler, med vyn i mitten. Du kan bygga miljöer med hjälp av panelen 'Skärmar'. Du kan lägga till väggar, vindkrafter och andra fysiska egenskaper. Det är också här du lägger till dina robotar.
Tänk på att innan du kommer till denna punkt måste du förstå hur du använder URDF-formatet. URDF-formatet definierar en robot, så att du kan ställa in kropp, armar, ben och framför allt kollisionszoner. Kollisionszonerna finns där så att simuleringen kan avgöra om roboten har kolliderat.
Att lära sig att skapa en robot i URDF-format är ett stort projekt, så använd en befintlig öppen källkod för att experimentera med emulatorerna.
Simulera fysik med lusthus
I lusthus kan du simulera fysiken i miljön som omger din robot. Gazebo är ett komplementprogram som fungerar bra tillsammans med rviz. Med Gazebo kan du se vad som faktiskt händer; med rviz håller du reda på vad roboten upptäcker. När din programvara upptäcker en vägg som inte finns, kommer Gazebo att visas tom och rviz visar var i din kod väggen skapades.
Slutsats
Det är nödvändigt att simulera din robot och dess miljöer för att hitta buggar och tillhandahålla nödvändiga förbättringar i din robots funktion innan du släpper ut den i naturen. Det här är en tråkig process som fortsätter långt efter att du har testat botten, både i kontrollerade miljöer och i verkligheten. Med adekvat kunskap om infrastrukturen i din robots interna system kan du förstå vad du har gjort rätt och fel. Lär dig snabbt att uppskatta alla fel du hittar eftersom de kan göra ditt system mer robust på lång sikt.