Met Gazebo simuleer je het gedrag van robots. Dat doe je op basis van een model van de robot en zijn omgeving. Daarin leg je behalve de vorm ook zaken als massa, draaipunten of zelfs windrichting vast. Verder gebruik je camera’s en sensoren, zoals laserscanners of GPS om data te simuleren. Dit gebruikt de robot om zijn omgeving te detecteren. Gazebo berekent het resultaat real-time, zodat de wereld van robots tot leven komt.  

Het zelf maken van een model is een behoorlijk karwei. Voor een correcte simulatie moet je niet alleen de vorm, maar ook allerlei fysieke eigenschappen vastleggen. Je moet hierbij denken aan gewicht, zwaartepunt of wrijving. Dit geldt nog sterker voor sensoren. Het ontwerpen hiervan via de GUI staat namelijk nog op de roadmap. Daarom maken we in dit artikel gebruik van voorbeelden, die Gazebo aanlevert. Niet alleen leer je dan snel hoe Gazebo functioneert, maar er is genoeg materiaal als basis voor je eigen robotwereld.

 

Installatie

Voor distributies als Ubuntu of Fedora installeer je Gazebo eenvoudig via de pakketmanager. Voor Fedora versie 25 en lager moet je ook het pakket freeimage installeren, want anders weigert Gazebo dienst. Bij Fedora 26 speelt dit probleem niet meer. Om een robot interactief te bewegen staat Player tot je beschikking. Installeer daartoe het pakket player (in sommige distro’s heet dit robot-player).

Qua hardware volstaan de huidige standaard pc’s. Om snel te kunnen werken met Gazebo heb je wel een videokaart met hardwareversnelling nodig.

 

GUI

Gazebo start standaard op met een grondvlak en een zon. Dit zie je terug in het centrale deel. Middels de tabbladen links modelleer je de robot en omgeving.

In het tabblad World stel je parameters in voor de simulatie. Zo staat bij Physics de waarde van de zwaartekrachtversnelling. Voor een simulatie van een drone geef je bij Wind de windsnelheid op. De fysieke eigenschappen van een robotmodel, zoals positie of gewicht, definieer je bij Models. Dubbelklik op een waarde om hem aan te passen.

Je voegt modellen toe via het tabblad Insert. Die verschijnen vervolgens in het centrale deel. Om het beeld te verschuiven, druk je de linkermuisknop in en beweeg je de muis. Om het beeld te roteren, houd je tevens de Shift-toets ingedrukt. Dat kan ook door de middelste muisknop ingedrukt te houden tijdens het bewegen met de muis. Door te scrollen, kun je in- en uitzoomen. Hetzelfde resultaat krijg je door de rechtermuisknop ingedrukt te houden, terwijl je de muis naar boven of beneden beweegt.

Gazebo start standaard in simulatiemodus. Dit wil zeggen dat Gazebo meteen aan het rekenen is. Om rustig je wereld op te bouwen zonder dat onverwacht modellen gaan bewegen, druk je op het knopje Pause onderaan.

 

Model

In het tabblad Insert staat de lijst van voorbeeldmodellen onder http://gazebosim.org/models/. Het duurt even voordat Gazebo alle informatie hiervan heeft opgehaald. Klik in de lijst op Pioneer 2DX, een kleine robot. Na enige ogenblikken verschijnt in het centrale deel een preview. Gazebo downloadt het model overigens meteen naar je home directory onder $HOME/.gazebo

Beweeg de muis naar het centrale deel en klik daar op de gewenste positie om de robot aan de omgeving toe te voegen. Om de positie op een later moment alsnog aan te passen, gebruik je de drie knoppen linksboven. Daarmee verplaats je de robot, roteer je hem of schaal je het model.

We zetten Gazebo meteen aan het werk. Selecteer de robot en klik vervolgens op het icoontje met de dubbele pijl. Bij de robot verschijnen drie gekleurde pijlen. Om de robot in de hoogte te verplaatsen, klik je op de blauwe pijl en sleep je de robot omhoog. Als je de muisknop nu loslaat en op Play onderaan drukt, valt de robot op de grond. Doe hetzelfde met de rotatieknop om de robot te laten schommelen of kantelen. Terwijl je de robot manipuleert, berekent Gazebo de resulterende bewegingen aan de hand van de parameters in het tabblad World. Klik op het icoontje met de pijl linksboven om weer in selectiemodus te komen en druk op Pause om het simuleren te stoppen.

 

World

Een aantal modellen met sensoren vormen samen een wereld. Ook daarvan levert Gazebo een aantal voorbeelden. Je vindt deze voorbeelden onder:

/usr/share/gazebo-<versie>/worlds/

 

Hierbij voer je bij <versie> het versienummer van Gazebo in (in ons geval 8).

We gebruiken het bestand pioneer2dx_laser_camera.world om een Pioneer 2DX robot te simuleren met tevens een camera en laserscanner aan boord. Het is verbazingwekkend dat je een dergelijk bestand niet vanuit de GUI kunt openen. Dat moet namelijk op de commandline. Sluit daarom Gazebo af en start het als volgt op:

gazebo -u worlds/pioneer2dx_laser_camera.world

 

Het volledige pad is niet nodig, omdat Gazebo zelf in de juiste directory zoekt. Door de optie -u start Gazebo meteen in de pauze-stand op.

Je hebt nu weliswaar een robot, maar nog geen omgeving. Voeg daarom via het tabblad Insert het model Starting Pen toe. Dit is een soort industriële omgeving. Klik rechtsboven op de knop met de kubus en vervolgens in het pop-up menu op het bovenste icoontje. Nu kijk je van bovenaf op de omgeving. Klik het menu weg en zoom zo nodig uit tot je een goed overzicht hebt.

Vul de omgeving aan met allerlei obstakels. Zoek in de lijst naar namen, die beginnen met “DRC Practice”. Hier vind je onder meer verschillende soorten modellen “Barrier” en “Yellow parking block”. DRC staat overigens voor DARPA Robotics Challenge.

 

Camerabeeld

Het is handig om te zien wat de robotcamera waarneemt. Ga daarvoor naar Window -> Topic Visualization. In een venster verschijnt dan een lijst van topics. Dat zijn resultaten van de simulatie, zoals de robotpositie, maar ook de waarden van sensors. Klik in de lijst op /gazebo/default/pioneer2dx/camera en vervolgens rechtsonder op Okay. Nu zie je op een schermpje het camerabeeld. Het eerste beeld verschijnt pas na het indrukken van Play.

 

Player

Middels Player communiceer je met de robot. Eerst moet je het achtergrondproces opstarten samen met een configuratiebestand. Daarin staat met welk model of sensor je verbinding wilt maken. Enkele voorbeelden voor de Pioneer 2DX vind je in:

/usr/share/gazebo-<version>/examples/player

 

Om het besturen van de robot te activeren, start je player als volgt op:

player /usr/share/gazebo-<version>/examples/player/position2d/position2d.cfg

 

Bij sommige distributies heet het commando robot-player.

Het is het prettigste om de robot te besturen met een joystick. Gebruik hiervoor het commando playerjoy (of robot-playerjoy). Deze zoekt standaard naar de joystick op /dev/js0. Op ons systeem is dat niet correct en gebruiken we het commando als volgt:

playerjoy -dev /dev/input/js0

 

Druk nu in Gazebo op Play. In het camerabeeld zie je de omgeving vanuit het standpunt van de robot. De blauwe lijnen in het centrale deel zijn de laserstralen van de scanner. Merk op dat die bij obstakels en muren weerkaatst worden. In simulaties van autonome robots gebruik je dit om obstakels automatisch te ontwijken. Nu bedienen we de robot handmatig door de joystick te bewegen. Bij een botsing tegen een obstakel loop je de kans dat de robot op zijn kant belandt. Klik dan op Edit -> Reset Model Poses om de robot weer in zijn uitgangspositie te zetten.

Voor besturing met de muis gebruik je het commando playerv (of robot-playerv). Een klein schermpje verschijnt. Klik hier in het menu Devices -> position2d:0 en vink daar de opties Subscribe, Command en Enable aan. Hiermee leg je verbinding met de robot om commando’s te geven. Klik op Play en beweeg de muis naar het rode cirkeltje in het midden van het schermpje. Op het moment dat een kader verschijnt, druk je de linkermuisknop in. Om de robot naar voren of achteren te laten rijden, beweeg je de muis naar links en rechts. Door naar boven of onderen te bewegen, draait de robot.

 

Tot slot

Gazebo maakt het simuleren van robots een stuk toegankelijker. Dankzij de aanwezige modellen ben je snel op weg, of je nu met een huisrobot, drone of terreinwagentje aan de slag wil. De grafische interface vertoont nog wel wat ruwe randjes en onvolkomenheden, maar die verbetert continu bij elke nieuwe release.

 

Links

Gazebo: gazebosim.org

Player: playerstage.sourceforge.net