# Robotplanning

Robotplanning is een domein binnen robotica dat onderzoekt hoe robots (al dan niet complexe) taken kunnen vervullen. Planning laat een robot toe om doelen te analyseren en de taken die nodig zijn om het betreffende doel te bereiken tot uitvoering te brengen.
De planner zal moeten rekening houden met het feit dat de informatie die toegankelijk is over de omgeving eventueel niet perfect is, en met restricties die zijn opgelegd door externe gebruikers.
Dit plannen kan plaatsvinden op vele verschillende niveaus. Dit kan gaan van het vermijden van obstakels in het bereiken van een locatie, tot het bouwen van een ontwerp in een soort blokkenwereld. We kunnen deze niveaus op de volgende manier categoriseren.

## Interpolatie

Interpolatie is een voorbeeld van planning op het laagste niveau. Wanneer een robot van punt A naar punt B beweegt, moeten er een reeks van toestanden bepaald worden die die robot van het ene punt naar het andere punt kunnen brengen. Deze punten kunnen bekomen worden door interpolatie tussen A en B. Het aantal punten kan zelf gekozen worden. Voor dit probleem is een grote verscheidenheid aan algoritmen beschikbaar. De keuze van algoritme hangt af van de aard van het probleem (Enkel posities, 1D-punten (voor elk scharnierpunt aparte punten) of punten van meerdere dimensies, ...). De interpolator moet ook aan harde real-time vereisten voldoen wil het voor de hoger-gelaagde planningsmodules van enig nut zijn.

## Bewegingsplanning

Dit niveau van plannen behandelt een hoger niveau dan de hierboven beschreven interpolatie. Een beweging van een punt A naar een punt B vormt ook hier de kern van het probleem. De punten echter, liggen veel verder uit elkaar, en obstakels, routes en dergelijke moeten door de bewegingsplanner bepaald worden om een ketting van routes te produceren die eenvoudig genoeg zijn om toe te vertrouwen aan de interpolator.

### Vermijden van obstakels

Er is een veelvoud van algoritmes beschikbaar die robots langs obstakels heen kunnen leiden. Men kan hierbij een onderscheid maken tussen reactieve en vooraf-plannende algoritmes. Daar waar er bij een reactief algoritme enkel een keuze gemaakt wordt voor de volgende stap, zal er bij een vooraf-plannend algoritme een pad ontwikkeld worden dat naar het doel leidt. Voordeel bij de eerste aanpak is dat het algoritme even goed zal werken in een veranderende, dynamische omgeving dan in een statische, aangezien er bij elke stap informatie vergaard wordt over de huidige toestand van de omgeving. De tweede aanpak laat toe om een snel en efficiënt pad naar de bestemming vast te leggen, maar kan wel falen als er zich opeens obstakels op dit pad bevinden. Hybride aanpakken zijn ook mogelijk, waar er bijvoorbeeld op een reactief algoritme overgegaan wordt wanneer er zich een obstakel op het pad blijkt te vinden.
Het virtual force field-algoritme is een voorbeeld van een algoritme waarmee obstakels vermeden kunnen worden

## Taakplanning

Taakplanning behandelt weerom planning op een hoger niveau. Taken op dit niveau zijn meestal minder tijdsgebonden en abstracter. De planner heeft de taak om dergelijke opdrachten om te zetten in een reeks acties die de voltooiing van de opgegeven taak tot gevolg hebben.

## Missieplanning

Deze planner beschrijft planning van het hoogste niveau. Hier moeten taken ontdekt worden die nodig zijn om een abstract omschreven "missie" te verwezenlijken. Dikwijls is samenwerking tussen meerdere robots vereist om een dergelijk doel te verwezenlijken. Coördinatie en synchronisatie zijn problemen waar planners op dit niveau met te maken hebben.