Bewegingsplanning voor robots? Eenvoudig? Is bewegingsplanning niet echt ingewikkeld!? Niet noodzakelijk. Als je ooit een gps hebt gebruikt, kun je gemakkelijk bewegingsplanning begrijpen met offline programmering.
Terug naar de basis?
Bewegingsplanning?
U denkt misschien: is het plannen van robotbewegingen geen erg geavanceerd onderwerp?
Nou ja, het kan behoorlijk geavanceerd zijn. Als u uw eigen bewegingsplanningsalgoritme wilt maken en alle programmering zelf wilt doen, kan het onderwerp snel complex en verwarrend worden. Maar u hoeft niet alle ingewikkelde wiskundige details te kennen om te begrijpen hoe u bewegingsplanning in uw robottoepassingen kunt gebruiken.
Als je ooit een gps hebt gebruikt of de aanwijzingen van een smartphone hebt gevolgd, zou je de basisprincipes van robotbewegingsplanning moeten kunnen begrijpen.
Wat is robotbewegingsplanning? (PS weet je al)
U kunt waarschijnlijk een goede inschatting maken van de functie van een “robotbewegingsplanner” door naar de naam zelf te kijken, toch? Een bewegingsplanner is een algoritme dat automatisch de route plant (ook wel traject, pad genoemd) die de robot zal afleggen om van punt A naar punt B te komen.
Tegenwoordig kent bijna iedereen bewegingsplanners, maar de meeste mensen realiseren zich niet dat ze dat zijn.
Enkele jaren geleden had ik een inventieve analogie moeten bedenken om te beschrijven wat een bewegingsplanner deed. Niet meer. In ieder geval het laatste decennium heeft bijna iedereen een smartphone met een gps en een kaartapp. Deze apps gebruiken hetzelfde type planningsalgoritmen als robotbewegingsplanners.
Je gebruikt elke dag een bewegingsplanner
Stel je voor dat je je smartphone ontgrendelt, de kaartapp opent en hem vraagt: “Hoe loop ik van mijn huis naar Belluccio’s pizzarestaurant?”
De smartphone heeft nu twee locaties:
- De startlocatie (uw huis).
- De eindlocatie (pizzarestaurant van Belluccio)
Tussen die twee locaties ligt een netwerk van onderling verbonden straten. Er zijn een bijna oneindig aantal verschillende routes die het zou kunnen kiezen om daartussen te reizen. De kaartapp gebruikt een planningsalgoritme om de beste route tussen de twee locaties uit te stippelen.
Maar hoe weet de app wat de “beste route” is?
Dat doet het niet! Misschien is de “beste” route wel de kortste. Misschien is het wel het snelste. Alleen jij weet wat “beste” betekent. Daarom geeft de app je waarschijnlijk verschillende opties voor routes en moet je ertussen kiezen. Mensen kunnen echter niet meer dan 3 of 4 opties tegelijk aan, dus uw app kiest waarschijnlijk de 3 kortste, snelste routes en vraagt u hiertussen te kiezen.
Robotbewegingsplanning gebruikt hetzelfde type algoritme om te beslissen welke route de robot het beste kan nemen. Het wordt het meest gebruikt in mobiele robotica waar het probleem sterk lijkt op ons voorbeeld van een GPS-kaart. Het wordt echter ook gebruikt bij industriële manipulatoren. In dit geval is het planningsprobleem iets complexer omdat paden in 3D-ruimte moeten worden gepland.
Waarom gebruiken we bewegingsplanning in industriële robotica?
De belangrijkste reden dat we bewegingsplanners gebruiken, is dat het het programmeerproces versnelt wanneer de robot zich in een complexe omgeving bevindt. In plaats van elke beweging zelf te plannen, kan de bewegingsplanner automatisch een of meer goede routes voor de robot creëren.
Merk op dat ik zei “wanneer de robot zich in een complexe omgeving bevindt.” Hiermee bedoel ik een omgeving waar veel obstakels zijn. Voor veel robottoepassingen is het pad tussen twee locaties in de werkruimte vrij van obstakels. Als dat het geval is, is een eenvoudige “Joint Move”-opdracht sneller en efficiënter. Wanneer er echter obstakels in de omgeving zijn, bestaat het gevaar dat de robot daarmee in botsing komt. Handmatig plannen is in dit geval minder efficiënt dan het gebruik van een bewegingsplanner.
Maar voordat u een bewegingsplanner gebruikt om botsingen te voorkomen, moet u ervoor zorgen dat er geen eenvoudigere manieren zijn om robotbotsingen te voorkomen door ons vorige artikel 5 eenvoudige manieren om robotbotsingen te voorkomen te lezen.
Hoe werkt een bewegingsplanner?
Er zijn een hele reeks verschillende bewegingsplanningsalgoritmen en elk werkt op een iets andere manier. Er zijn echter overeenkomsten tussen hen.
Hier zijn drie aspecten die alle bewegingsplanners gemeen hebben:
1. Configuratieruimte: waarom u slimmer bent dan uw telefoon
De configuratieruimte beschrijft alle locaties en oriëntaties die de robot zich mogelijk in de omgeving zou kunnen bevinden. Voordat het algoritme een route kan plannen, moet het weten wat alle mogelijke punten langs die route zijn.
Laten we teruggaan naar ons smartphone-gps-voorbeeld. De configuratieruimte zijn alle straten die in de hele wereld in kaart zijn gebracht (ja, het is mogelijk om een route uit te stippelen tussen jouw huis en het pizzarestaurant via een omweg door een buurland). De wereld is echter erg groot, dus het planningsalgoritme beperkt waarschijnlijk de configuratieruimte tot alle straten in een straal tussen de start- en eindlocatie.
Het is belangrijk dat uw configuratieruimte de omgeving nauwkeurig weergeeft. Dit is waarom:
Stel je voor dat je een kortere weg kent naar Belluccio’s pizzarestaurant, waarbij je over het hek in je achtertuin springt en door een steegje loopt. Het algoritme zal deze snelkoppeling nooit gebruiken, zelfs niet als het de beste route is, omdat de configuratieruimte de steeg of het pad over uw tuinhek niet omvat.
2. Vrije ruimte: waar kan de robot naartoe?
Er zullen enkele ruimtes in de werkruimte van de robot zijn die de robot niet kan verplaatsen, bijvoorbeeld omdat er obstakels in staan. Het algoritme verwijdert alle belemmerde locaties uit de configuratieruimte.
Dit laat het achter met de “vrije ruimte” die alle locaties bevat die echt beschikbaar zijn voor bewegingsplanning.
De configuratieruimte is vast. De vrije ruimte kan echter veranderen wanneer nieuwe objecten de omgeving binnenkomen en verlaten.
3. Planning: welk pad zal de robot nemen?
Ten slotte stippelt het algoritme voor bewegingsplanning de beste route uit binnen de vrije ruimte. Dit is waar de verschillende benaderingen van bewegingsplanning deel uitmaken.
Sommige algoritmen (bekend als combinatorische planningsalgoritmen) worden “compleet” genoemd, wat betekent dat ze altijd een oplossing zullen vinden als die bestaat of anders een storing zullen melden. Andere (bekend als op steekproeven gebaseerde planning) zijn efficiënter, maar kunnen in sommige situaties geen oplossingen vinden.
In industriële robotica is de efficiëntere optie eigenlijk beter, ook al mist het in sommige gevallen een oplossing. Het is handiger om snel antwoord te krijgen dan uren te moeten wachten tot het algoritme voor bewegingsplanning alle mogelijke routes heeft getest. Daarom hebben op steekproeven gebaseerde planningsalgoritmen zoals Probabilistic Roadmaps (PRM) vaak de voorkeur boven de alternatieven.
Robotbewegingsplanners gebruiken in uw toepassing
De eenvoudigste manier om bewegingsplanning in uw eigen robottoepassing op te nemen, is door de bewegingsplanner te gebruiken die is geïntegreerd in uw offline programmeersoftware. Dat wil zeggen, als uw software een bewegingsplanner beschikbaar heeft. De meeste niet.
Vóór dit jaar had RoboDK geen bewegingsplanner… maar nu is dat allemaal veranderd!