RoboDK’s nieuwe PRM-bewegingsplanner

Met onze nieuwste functie – de RoboDK PRM-bewegingsplanner – kunt u met één druk op de knop AI-aangedreven robottrajecten creëren. Maar hoe werkt het?

We hebben niet altijd de luxe van een duidelijke, vrije werkruimte, toch? Dat geldt ook voor onze eigen persoonlijke werkruimtes (mijn bureau staat bijvoorbeeld vol met onnodige items). Het geldt ook voor de werkruimte van onze robot.

Soms is de werkruimte van de robot gewoon kleiner dan we hadden gepland. Soms staat er midden in de werkruimte een enorme pilaar waar we maar niet vanaf komen. Soms is er een stapel dozen die nergens anders kunnen worden opgeslagen.

Wanneer de kans bestaat dat uw robot ergens in de werkruimte tegenaan botst, is onze nieuwe bewegingsplanner er om uw leven gemakkelijker te maken.

Met een druk op de knop kan het een botsingsvrij pad creëren voor uw robotprogramma.

Dit artikel geeft een inleiding tot PRM-bewegingsplanning en legt uit wanneer u deze nieuwe functie moet gebruiken.

Wat betekent PRM?

De nieuwe RoboDK-bewegingsplanner gebruikt een algoritme genaamd “PRM”, wat staat voor “Probabilistic Roadmap”. Het is een veel voorkomend type bewegingsplanner, om redenen die we zo meteen zullen bespreken.

Er zijn een heleboel verschillende algoritmen voor bewegingsplanning beschikbaar voor robotica, variërend in complexiteit van vrij eenvoudig tot extreem uitgebreid. Als je helemaal niet bekend bent met bewegingsplanners, bekijk dan ons vorige artikel Back to Basics: Robot Motion Planning Made Easy

Dit is wat PRM betekent:

  • P = Probabilistisch — De punten in de “configuratieruimte” (dwz de set punten die de planner gebruikt om te weten waar de robot in zijn werkruimte kan bewegen) worden willekeurig gekozen door de planner. Deze willekeurige plaatsing wordt ‘probabilistisch’ genoemd. Het alternatief is een “uniforme” plaatsing, waarbij punten op regelmatige afstanden door de gehele werkruimte worden geplaatst.
  • RM = Routekaart — PRM-algoritmen werken door eerst een “routekaart” van de gehele robotwerkruimte te maken. Deze kaart is vergelijkbaar met de kaart die wordt gebruikt door de functie GPS-aanwijzingen op uw smartphone. Het kan enige tijd duren om deze kaart te genereren, maar als deze eenmaal is gegenereerd, hoeft u deze niet opnieuw te berekenen, zodat u de kaart veel sneller kunt “zoeken”.

Van deze twee termen kunnen we het volgende zeggen over een PRM-bewegingsplanner:

  1. Het zal altijd een levensvatbaar robottraject vinden (indien aanwezig).
  2. Het bewaart een roadmap van de configuratieruimte om de “query” -fase te versnellen.

Dit zijn twee redenen waarom PRM-planners populair zijn.

Hoe PRM werkt

In tegenstelling tot sommige bewegingsplanners, splitsen PRM-algoritmen hun werk op in 2 afzonderlijke fasen. Voordat u de planner in RoboDK gebruikt, moet u een aantal eigenschappen instellen.

Setup-fase

Er zijn 3 eigenschappen die u handmatig instelt voordat u de planner uitvoert.

Zo stelt u deze eigenschappen in RoboDK in (en wat ze betekenen):

  1. Aantal monsters — U kiest een aantal ‘samples’ die de planner tijdens de bouwfase rond de werkruimte van de robot plaatst. Minder monsters betekent een snellere bouwfase, maar een ruwer stappenplan.
  2. Randen per monster — Elke sample heeft een maximum aantal “randen”. Elke rand verbindt twee van de monsters met elkaar. Nogmaals, minder randen betekent een snellere bouwfase, maar een ruwer stappenplan.
  3. Robotstap (graden) — Wanneer het PRM-algoritme de constructiefase doorloopt, verplaatst het de robot telkens een klein stukje. Deze afstand wordt bepaald door de robotstap. Een grotere stap betekent een snellere bouwfase, maar de kans is groter dat de planner een mogelijke botsing niet opmerkt.

Vervolgens klikt u op “Update Map” om de bouwfase te starten.

Fase 1: Constructie (traag)

De eerste fase van de planning is het genereren van een roadmap. Dit kan lang duren (ongeveer 15-30 minuten voor 100 monsters met 25 randen per monster).

Zo werkt de bouwfase “onder de motorkap”:

  1. De planner plaatst een ‘monster’ op een willekeurige plek in de vrije ruimte ergens in de werkruimte van de robot.
  2. Het algoritme test vervolgens het pad tussen dit monster en de omringende monsters. Het beweegt de robot over het pad met de “robotstap” en controleert op botsingen. Als het pad vrij is, wordt het pad als een “rand” aan de routekaart toegevoegd.
  3. Wanneer de planner het maximale aantal randen voor dit monster bereikt, gaat het verder met het volgende monster.

Je kunt zien waarom deze fase lang duurt – het algoritme heeft veel voorbeelden om te testen. Gelukkig hoeft u, als de kaart eenmaal is gemaakt, deze niet opnieuw te berekenen (tenzij u nieuwe objecten aan de omgeving toevoegt).

Fase 2: Query (snel)

De queryfase is het onderdeel van bewegingsplanning dat u het vaakst zult gebruiken. Je geeft de planner twee targets (een starttarget en een eindtarget). De planner probeert vervolgens een botsingsvrij traject tussen hen te creëren met behulp van de opgeslagen routekaart.

Zo werkt deze fase “onder de motorkap”

  1. U selecteert twee doelen en vertelt de planner om ze te “koppelen”.
  2. Als een van de doelen nog niet aan de roadmap is toegevoegd, zal de planner deze toevoegen als een nieuw voorbeeld en een reeks randen maken tussen de nieuwe locatie en de bestaande monsters in de buurt.
  3. De planner gebruikt vervolgens zijn routekaart om het pad te vinden met de kortste afstand tussen de twee doelen.

Met een voldoende gedetailleerd stappenplan kun je hiermee met één druk op de knop binnen enkele seconden complexe, botsingsvrije robotbewegingen maken.

Wanneer moet ik de Bewegingsplanner gebruiken?

De standaardmanier om een ​​beweging in RoboDK te programmeren, is door de bewegingen zelf handmatig te plannen met behulp van Joint Moves, Linear Moves of Circular Moves. Dit is nog steeds de snelste manier om de robot te programmeren om tussen twee doelen te bewegen.

Deze standaardcommando’s werken echter alleen als er vrije ruimte is tussen de twee doelen. Als er objecten in de weg staan, kan het zijn dat u veel tijd moet besteden aan het creëren van tussenliggende doelen om botsingen te voorkomen.

De motion planner biedt een manier om dit proces te automatiseren. Het vindt automatisch de beste reeks bewegingen om de robot zonder botsingen tussen doelen te verplaatsen.

Maar er is een afweging. Je moet lang wachten tot de bouwfase is afgelopen voordat de planner paden voor je kan gaan zoeken.

Meestal is dit lange wachten geen probleem. Je hoeft het alleen maar in te stellen en te vergeten. Laat de bouwfase lopen terwijl je iets anders doet.

About admin

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *