• No results found

5.5 Conslusie & Recommendations

5.5.1 Path planner

DeStructuredPlannerzorgt er voor dat de paden geplanned worden met kennis van de omgeving, hierdoor worden de geplande paden een stuk logischer. In figuur 5.13 zijn enkele voorbeelden te zien. De delen van de paden zijn nu ook consistent, bijvoorbeeld de draai de kuil uit is nu hetzelfde bij verschillende goalposities. Omdat de stochastische aspecten uit de path planner geëlimineerd zijn zal een pad tussen dezelfde begin en eind states - bij afwezigheid van obstakels - altijd hetzelfde geplanned worden. Dit zorgt voor logisch en voorspelbaar gedrag, dit is wenselijk omdat het uiteraard niet de bedoeling is dat de paden af en toe door randomheid slingeren en suboptimaal zijn.

Waar de uiteindelijke route nu word gekozen op basis van kortste pad is dit met behulp van OMPL makkelijk aan te passen naar een generiekerCostObjective. Hierbij kan er bijvoorbeeld voorkeur gegeven worden aan het recht rijden in de kuil. Deze cost functie zal in de toekomst gebruikt moeten worden omdat de pathplanner betere paden kan laten creeëren. De path planner bepaald nu of hij ergens kan rijden door de waarde van op de costmap. Dit zorgt ervoor dat hij altijd een bepaalde afstand houdt tot obstakels, maar zal deze afstand nooit kleiner maken om het doel toch te bereiken. Het is wenselijk om enkel indien mogelijk afstand te houden tot de obstakels, maar als het noodzakelijk is ook vlak langs obstakels te rijden om het doel te bereiken. Dit zal in de toekomst met een costfunctie bereikt kunnen worden.

Deze costfunctie kan ook gebruikt worden om variatie aan te brengen in de routes, bijvoorbeeld door elke keer als over een bepaalde state gereden wordt de kosten van deze virtueel te verhogen. Door te

optimaliseren naar laagste costs zou zo het rijgedrag zo goed als mogelijk gelijk verdeeld worden over de mogelijke routes. Dit kan gebruikt worden om de spoorvorming die nu optreedt te voorkomen.

5.5.2

Path tracker

De gemaakte pure pursuit path tracker werkt goed, dit was op zich te verwachten want ook in het huidige systeem met GÖTTINGwordt eenzelfde tracker gebruikt. Een van de problemen die optreedt is dat de orientatie van het voertuig aan het eind van het pad afwijkend blijft als het pad eindigt met een bocht. Dit is te ondervangen door te garanderen dat er een recht stuk aan het einde van het segment zit. Het is wenselijk om op basis van de locatie in de kaart de maximale snelheid in te kunnen stellen. Momenteel is het snelheidsprofiel een trapezium met een bepaalde maximale snelheid en acceleratie. Voor het behalen van de gewenste cyclustijd en om te voldoen aan de normen is het echter wenselijk om in de no-go zone van het kuilgebied sneller te rijden dan in de stal.

5.5.3

Totaal

Het als proof of concept ontwikkelde systeem om tot een meer vrij bewegende INNOVADOte komen kan als redelijk succesvol worden gezien. De keuze om ondanks het niet-holonomische voertuig toch gebruik te maken van de ROSnavigationstack is een goede keuze gebleken omdat dit veel werk heeft bespaard. De keuze om de structuur in de omgeving met behulp van de structured planner te benutten tijdens het plannen van de paden is verstandig gebleken. De paden die door het systeem geproduceerd worden zijn logisch en dichtbij de gewenste eigenschappen. Naar verwachting zullen er nog verdere verbeteringen nodig zijn, onder ander het gebruik van een costfunctie bied voordelen.

De path tracker op basis van het ‘pure pursuit’ algoritme werkt goed, enkel aan het eind van de paden treedt soms een afwijking op. Dit is echter te ondervangen door aan het eind van elk pad een kort recht stukje te plaatsen. Enkele verbeteringen zijn wenselijk, maar de verwachting is dat deze path tracker adequaat blijft.

5.6

Executive Summary

The path planner system should compromise two separate components. These two components are the path planner and path tracker. The first should be able to plan a path through the world that is both kinematically feasible and clear of obstacles. The second component should be able to make the vehicle follow the route planned by the first component.

In ROS thenavigationstack provides a framework specifically created to facilitate the navigation of mobile robots. It provides functions to load costmaps and add obstacles detected to them. Besides this themove_basenode allows loading two planners: the global planner which should do the high level path planning and the local planning which should do local obstacle avoidance and output velocity commands. Several built-in path planners are available which can work as either global or local planners in the navigation stack. However, none of these were really suited for the non-holonomic behaviour of the vehicle. Because the planner is built using the ROS navigation stack, the obstacle avoidance is basically achieved with little work. The standard ROS navigation systems are used to add obstacles into the costmap. The planned route is continuously checked for feasibility, if found infeasible it is replanned.

The Open Motion Planning Library (OMPL) is a large project which provides a framework to solve a broad range path planning problems, both for robot arms and for moving objects. It has several path planners and state space definitions built in. The built-in planners all use a sampling based approach. This means that they pick random states in the statespace and attempt to find connections between the random samples, start and goal state. One of the built-in statespaces in OMPL is the the Reeds-Shepp statespace, which is a statespace that describes the paths as they would be followed by a car that can both forwards, backwards as well as steer left and right. The paths are always compromised of straight lines and arcs of constant radius.

During the sampling some poses can be discarded outright; they are in an occupied area according to the cost map. However, a very large part of the sampled states are valid states but still positioned very inefficiently (for example facing a concrete wall in a silage clamp). To overcome this the structured planner was created, which uses a predetermined grid with feasible states to calculate its routes through. The created structured planner works well and creates routes that are desirable in terms of consistency and simplicity. There are still improvements possible. For now an entire patch of states has the same steering angle. This could be improved such that the sharper turns are only made if strictly necessary to obtain a path. The proof of concept for the path finding system looks promising. The routes created by the system are close to the desired paths. Some improvements should still be made in order to create smoother paths, guarantee the orientation at the end of the path and reduce clearance as necessary. In order to follow this path an implementation of the ‘pure pursuit’ path tracking algorithm was made. This algorithm works by steering towards a tracking point which is located further along the path. The distance of the tracking point from the current position in called the lookahead distance and influences the precision at which the path is followed. At the reversing points and at the end of the paths the tracking point is projected beyond the last state to ensure the lookahead distance is maintained at the end of the path. The path tracker works very well and follows the paths precisely. One of the problems that still can ocur is a deviation in the rotation at the end of the path. This could be solved by having a very short straight path at the end. Currently the path tracker employs a trapezoidal velocity profile. This is likely to need some further work, for example go make the maximum speed position-dependent. The pathfinding system proof of concept has been quite successful. However, during the work it was discovered that path planning for non-holonomic vehicles is still a tough problem. The structured planner seems to provide a reasonable trade-off between providing structure by hand and allowing the vehicle to freely choose its path. Developments aimed at making vehicles autonomous are going fast and keeping track of developments is therefore recommended.

Lidar analyse

A.1

Introductie

Om beter inzicht te krijgen in de output van de SICK LIDAR scanners heeft er een korte veldtest plaatsgevonden. Met behulp van ROS is de data uit de scanners opgenomen terwijl met de INNOVADO

een rondje over het erf gereden is om een goed beeld te krijgen van data die met behulp van de scanners verkregen kan worden.