• No results found

De voorspelling van de beweging van het voertuig kan gemaakt worden door middel van de encoders op de wielen en de stuur rotatie. Deze encoder informatie kan gecombineerd worden met een model van het voertuig om uit te rekenen wat de beweging is.

4.3.1

Sensoren

Ook GÖTTINGmaakt gebruik van wielencoders om een schatting te maken van de positie van het voertuig. Hiervoor zijn aan de voorwielen encoders gemonteerd, dit zijn standaard rotary encoders met

base_link base_link_joint xyz: 0 0 0 rpy: 0 -0 0 chassis_link chassis_link_to_swivel xyz: -2.824 0 0.35 rpy: 0 -0 0 front_left_wheel xyz: 0 0.755 0.35 rpy: 0 -0 0 front_right_wheel xyz: 0 -0.755 0.35 rpy: 0 -0 0 imu_joint xyz: -4.6956 0 2.39 rpy: 0 0 3.14159 lidar_front_base xyz: 0.8057 0 1.3858 rpy: -3.14159 -0 0 lidar_left_base xyz: -4.724 1.493 2.3452 rpy: 1.13367e-05 1.5708 1.57081 lidar_rear_base xyz: -4.572 0 0.43 rpy: 0 -0 -3.14159 lidar_right_base xyz: -4.724 -1.493 2.3452 rpy: -1.13367e-05 1.5708 -1.57081 rear_swivel_above rear_steer xyz: 0 0 0 rpy: 0 -0 0 rear_swivel_below rear_axle_tilt xyz: 0 0 0 rpy: 0 -0 0 rear_axle rear_left_wheel xyz: 0 0.45225 0 rpy: 0 -0 0 rear_right_wheel xyz: 0 -0.45225 0 rpy: 0 -0 0 rear_left_wheel_link rear_right_wheel_link

front_left_wheel_link front_right_wheel_link imu_link_ideal

imu_offset xyz: 0 0 0 rpy: -3.14159 -0 -0 imu_link lidar_front_ideal_laser_mount lidar_front_real xyz: 0 0 0 rpy: 0 -0.380482 0.0174533 lidar_front_laser_mount lidar_front_laser_joint xyz: 0.0531 0 0 rpy: 0 -0 0 lidar_front_laser lidar_left_ideal_laser_mount lidar_left_real xyz: 0 0 0 rpy: 0 -0.0575959 0.0174533 lidar_left_laser_mount lidar_left_laser_joint xyz: 0.0531 0 0 rpy: 0 -0 0 lidar_left_laser lidar_rear_ideal_laser_mount lidar_rear_real xyz: 0 0 0 rpy: 0 -0 0 lidar_rear_laser_mount lidar_rear_laser_joint xyz: 0.0531 0 0 rpy: 0 -0 0 lidar_rear_laser lidar_right_ideal_laser_mount lidar_right_real xyz: 0 0 0 rpy: 0 -0.0750492 -0.0436332 lidar_right_laser_mount lidar_right_laser_joint xyz: 0.0531 0 0 rpy: 0 -0 0 lidar_right_laser

Figuur 4.1: The representation of the INNOVADOfrom the URDF format.

een A en B kanaal met phaseshift. Deze encoders zitten direct verbonden aan de stuurcomputer van GÖTTING. De stuurhoek wordt direct gemeten door een absolute encoder. Een IMU is ook beschikbaar.

Encoders

Initieel was het plan om deze encoders ook aanBODASte verbinden zodat de ruwe sensor waarden ook beschikbaar zouden zijn voor de ontwikkeling van het nieuwe localisatie systeem. Deze aanpak bleek echter geen success, eerst raakte de CAN bus overbelast. Dit had niet moeten optreden, want de bus had theoretisch nog veel bandbreedte beschikbaar, de driver van de CAN hardware kon er echter niet mee omgaan. Dit is opgelost door het zend interval te verlagen, hierna bleek dat het encoder signaal pulsde miste; af en toe draaide het wiel de verkeerde kant of op klopte de afgelegde weg niet.

Omdat de noodzaak voor encoder waarden ondertussen hoog was is er gekozen om de stuurcomputer van GÖTTINGuit te lezen via het netwerk. Echter; bij het verbinden van de stuurcomputer met het netwerk was deze niet meer in staat om goed te navigeren. Vermoedelijk kwam dit omdat de stuurcom- puter teveel tijd kwijt was aan het afhandelen van TCP pakketjes die niet voor hem bedoeld waren, dit is opgelost door deze direct aan CHARLIE’s tweede netwerk poort te verbinden. Vervolgens kan er via

telnetverbonden worden met de stuurcomputer, over deze verbinding zijn vervolgens de log-regels beschikbaar zoals deze normaliter naar de USB stick worden geschreven. Een uitgebreidere uitleg hiervan is te vinden in appendix C.

Deze logregels bevatten twee kolommen, ‘Summe Weg Links’ en ‘Summe weg Rechts’ (let op het hoofdletter verschil). Naast deze entries is er per wiel nog een constante in GÖTTINGwelke bepaald hoeveel pulsjes er in een meter afgelegde weg zitten. Met behulp van deze constante kan de ‘summe weg’ omgerekend worden naar de afgelegde weg, en met behulp van de afgelegde weg terug naar de wielrotatie.

Figuur 4.2: Foto van IMU sensor kastje. Sensor links, rechts printplaat met RS232 chip en voltage regulator.

Stuurhoek

Naast deze voorwielencoders is ook de hoek van het stuurwiel beschikbaar, zowel de gewenste hoek als de huidige hoek. Het actueren van de hydrauliek klep om de stuurhoek te manipuleren wordt gedaan door een regelaar inBODAS. Deze regelaar is echter niet optimaal wat tot effect heeft dat de huidige stuurhoek achterloopt op de gewenste stuurhoek. Daarnaast oscilleert de stuurkolom vaak rond de gewenste hoek, ook bij recht rijden of stilstand.

IMU

Achterop het voertuig is een Inertial Measurement Unit (IMU) geplaatst met daarin naast een accelero- meter, gyroscoop ook een kompas. Deze IMU heeft een ingebouwd filter om deze metingen te fuseren maar het blijkt dat dit filter een continue rotatie rond een as berekend, wat uiteraard niet klopt. Verder zijn metingen van het kompas niet altijd even goed, dit lijkt afhankelijk van de richting van het voertuig en heeft mogelijk te maken met de grote hoeveelheid metaal in de buurt van de sensor.

4.3.2

ROS-ification

In order to work with the previously described. . .1 Om gebruik te kunnen maken van de hiervoor beschreven sensoren is het noodzakelijk om hun metingen in ROS beschikbaar te hebben.

In sectie C.4.2 wordt degoetting_loggerbeschreven, deze verbind viatelnetmet de stuurcomputer om de logregels te verkrijgen. Om deze waarden in ROS te importeren is een node geschreven in PYTHON

welke verbind naar de TCP server van degoetting_logger. De regel wordt vervolgens geparsed en de verkregen waarden wordt teruggerekend naar de ‘joint state’. Deze joint states worden vervolgens gepublished als een ROS topic van het typesensor_msgs/JointState.

De IMU communiceerd via een seriele poort op 3.3 V, deze sensor is gemonteerd op de antenne balk van de INNOVADO, de vereiste kabellengte is meer dan 5 m. Deze kabels liggen naast de kabels voor hydrauliek kleppen en overige storingsbronnen. Om betrouwbare communicatie te faciliteren is gekozen om gebruik te maken van een RS232 poort, voordeel hiervan is dat deze aan de PC kant direct te verbinden is. Conversie van de 3.3 V serial port naar RS232 vind plaats in het kastje waarin de IMU gemonteerd is. Hier vind ook conversie van 12 V naar 3.3 V voor de sensor plaats, dit zorgt er voor dat ook met spanningsval in de kabel de sensor nog werkt. Een foto van het sensorkastje is te zien in Figure 4.2. Het uitlezen van de data geschied vervolgens via de seriele poort, een ROS node is beschikbaar om de seriele communicatie te parsen en te verwerken tot ROS messages op de juiste topics.

4.3.3

Implementatie

Om vervolgens de prediction met de wielencoders te bewerkstelligen is gebruik gemaakt van de

robot_localizationpackage. Een uitgebreide discussie hiervan is te vinden in section D.1, om herhaling te voorkomen zal deze theoretische beschouwing en analyse hier niet volledig herhaald worden.

De joint states worden omgezet naar odometry messages door nodes. De odometry messages worden vervolgens gecombineerd door eenekf_localization_nodeuitrobot_localization. De data van de IMU wordt eerst verwerkt door eenimu_filter_nodeuit deimu_filter_madgwickpackage, dit is een populair fusion algoritme [56] om de orientatie te verkrijgen uit IMU data. Omdat de stuurhoek van het Vrielink prototype erg oscilleert, ook als het voertuig rechtuit rijd, is het (momenteel) beter om deze niet mee te nemen in de state estimation.