• No results found

Open Motion Planning Library

4.5 Conclusie & Recommendations

5.3.2 Open Motion Planning Library

In de robotica moeten vaker path planning problemen worden opgelost. Niet alleen bij bewegende robots is dit een uitdaging maar ook bij het bewegen van robotische armen moet er eerst een valide pad geproduceerd worden. Voor robot armen is er een vrij uitgebreide package genaamdMoveIt![14]. Onder water gebruikt dit de library Open Motion Planning Library (OMPL)[76], dit is een library ontwikkeld door de Rice University. De focus ligt op een zeer flexibele opzet, het systeem zelf is niet

Figuur 5.3: De API overview uit de OMPL documentatie.

toegespitst voor het probleem wat opgelost wordt en de library heeft dus geen onderscheid tussen het plannen van bijvoorbeeeld het pad van een auto of een robot arm. Verder heeft deze library een groot aantal planners beschikbaar voor gebruik, veel planners in de literatuur zijn hierin geïmplementeerd zodat de performance van deze vergeleken kan worden met de performance van andere planners op dezelfde problemen.

Opzet

De library maakt sterk gebruik van object oriented programming, de gehele library is opgedeeld in verschillende duidelijk gescheiden onderdelen met elk hun individuele functionaliteit. In de documen- tatie is een diagram te vinden wat de opzet verduidelijkt, zie figuur 5.3. De relevant onderdelen zullen elk kort besproken worden.

SpaceInformation Centraal in OMPL staat deSpaceInformation, dit object zorgt voor een world- description waarin vervolgens geplanned kan worden. Dit houdt in dat er een bepaalde State Space opgegeven is waarin de State uitgedrukt is. Hierbij valt bijvoorbeeld te denken aan positie en orientatie van het voertuig, maar ook aan de joint posities van een robot arm. Vervolgens moeten er functies opgegeven worden waarmee er gekeken wordt of een bepaalde state valide is. Bij een robot arm zou de arm bij verschillende joint posities zichzelf kunnen raken, wat een invalid state is. In het geval van een voertuig zou een invalid state een positie kunnen zijn waar het voertuig in een muur zou staan, of zeer waarschijnlijk in botsing zou zijn met iets. Naast het checken van de state kan er ook een motion validator opgegeven worden waarmee een motion van een State naar een andere State gecontroleerd kan worden, standaard wordt hiervoor de beweging gediscretiseerd en de State Validator gebruikt.

StateSpace DeStateSpaceis een bepaalde ruimte waarin de States uitgedrukt zijn. Het eerder gegeven voorbeeld van de de State Space waren de joints van een robot arm of de positie en orientatie van een voertuig. Wat de State Space echter ook doet is de afstand tussen twee States uitdrukken. Aangezien de afstand (of een willekeurige andere metric) vaak geminimaliseert moet worden in het planningsprocess is het belangrijk dat deze afstand een correcte waarde teruggeeft. Stel we nemen het voorbeeld van het voertuig, als dit een omnidirectioneel platform betreft dan zou de euclidische afstand gebruikt kunnen worden. Indien dit voertuig echter alleen vooruit kan en bochten (vooruit) kan maken met een bepaalde radius, dan is de afstand niet meer bepaald door de euclidische afstand maar is deze gegeven door de Dubins curves. OMPL biedt naast de SE(2), SE(3),Rnook de Dubins statespace en Reeds-Shepp statespace aan. Verder kunnen state spaces makkelijk gecombineerd worden om een grotere n dimensionale statespace te maken met eigenschappen van de statespaces die gecombineerd worden.

ControlSpace Naast dat er in het geometrische domein gezocht kan worden is het ook mogelijk om te zoeken in de Control Space. In het geval van de robot arm zouden dit bijvoorbeeld joint velocities kunnen zijn, in het geval van het voertuig de voorwaartse snelheid en stuurhoek. In dit geval is er een StatePropagator functie nodig welke gegeven een control input en input state uitrekend wat de resulterende state zal zijn. Dit kan handig zijn om problemen met differential constraints op te lossen waarbij er niet gemakkelijk een geometrische beschrijving te vinden is. OMPL voorziet hier ook in het gebruik van externe systemen om de integration van de differentiaalvergelijkingen uit te voeren. Indien er gebruik wordt gemaakt van de ControlSpace zal ook het pad van het Control type worden, en moet er ook een planner gebruikt worden die specifiek gemaakt is om op basis van control input te werken. De statespace kan uiteraard nog wel steeds een geometrische representatie zijn van de wereld.

SimpleSetup DeSimpleSetupcombineerd de Space Information, een Planner en de Problem definition. Deze zorgt er in feitte voor dat er een oplossing gemaakt kan worden gegeven een startpositie en eindpositie. Ook faciliteerd deze het wissen van de problem definition zonder dat de gehele planner opnieuw gedefinieerd moet worden, wat handig is voor planners die in staat zijn meerdere queries achter elkaar op te lossen. In feitte is dit de ‘glue’ tussen de verschillende onderdelen.

Planner De planner is het systeem wat probeert een set states te vinden waarmee het probleem opgelost wordt voor een zo laag mogelijke set kosten. De geometrische planners zijn ruwweg te ondscheiden in twee groepen. De Multi-query planners zijn in staat om meerdere queries op te lossen na elkaar, terwijl de Single-query planners zich richten op het oplossen van slechts een query. Voor het zoeken in de control space zijn speciale Control-based planners.