Inertialsensor - IMU: Unterschied zwischen den Versionen
(→IMU modules) |
|||
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=Zusammenfassung= | =Zusammenfassung= | ||
− | + | ||
− | File: | + | [[File: Imu_assembly.png | 400px]] |
− | + | ||
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können: | Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können: | ||
*feststellen, ob der Ardumower umgekippt ist (Neigungswinkel) | *feststellen, ob der Ardumower umgekippt ist (Neigungswinkel) | ||
*regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen | *regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen | ||
+ | [[File: slope1.png | 400px]] | ||
= Beschleunigungssensor = | = Beschleunigungssensor = | ||
Zeile 13: | Zeile 13: | ||
Zur Bestimmung der Raumwinkeländerungen beinhaltet die IMU ein Gyromodul. | Zur Bestimmung der Raumwinkeländerungen beinhaltet die IMU ein Gyromodul. | ||
− | + | [[File: Ardumower_pitch_roll_yaw.png|400px]] | |
− | File: Ardumower_pitch_roll_yaw.png | + | |
− | + | ||
=Gyro= | =Gyro= | ||
Ein Gyro mißt die Rotationsgeschwindigkeit (Winkelgrad/Sekunde) um alle 3 Roboterachsen (Roll, Pitch, Yaw). Das ermöglicht die Kurskorrektur wenn der Roboter durch z.B. nässebedingten Schlupf der Räder außer Kurs gerät. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass). | Ein Gyro mißt die Rotationsgeschwindigkeit (Winkelgrad/Sekunde) um alle 3 Roboterachsen (Roll, Pitch, Yaw). Das ermöglicht die Kurskorrektur wenn der Roboter durch z.B. nässebedingten Schlupf der Räder außer Kurs gerät. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass). | ||
− | + | Vergleich Messfehler verschiedener Gyro-ICs: | |
noise dps/sqrt(Hz) | noise dps/sqrt(Hz) | ||
Zeile 39: | Zeile 37: | ||
We use a complementary filter to fusion all sensor values. | We use a complementary filter to fusion all sensor values. | ||
+ | |||
+ | [[File: Ardumower_sensor_fusion.png | 600px]] | ||
+ | |||
+ | =IMU module= | ||
<gallery> | <gallery> | ||
− | File: | + | File: Gy80.jpg | GY-80 module |
+ | File: GY80-Schematic.jpg | GY-80 schematics | ||
</gallery> | </gallery> | ||
− | |||
− | |||
GY-80 | GY-80 | ||
Zeile 53: | Zeile 54: | ||
=Assembly= | =Assembly= | ||
− | This photo shows how the IMU module is placed in the driving position (the | + | This photo shows how the IMU module is placed in the driving position (the red arrow shows the driving position). Ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors). |
− | + | [[File: Imu_assembly.png | 400px]] | |
− | File: | + | |
− | + | ||
=Calibration abstract= | =Calibration abstract= | ||
Zeile 67: | Zeile 66: | ||
The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will lie on a sphere. | The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will lie on a sphere. | ||
− | + | [[File: Compass_sphere.png |400px]] | |
− | File: Compass_sphere.png | + | |
− | + | ||
If you add a magnetic material (e.g. metal) near the compass, the measured values from the origin (0,0,0) of the sensor suddenly point in one direction only - Why? | If you add a magnetic material (e.g. metal) near the compass, the measured values from the origin (0,0,0) of the sensor suddenly point in one direction only - Why? | ||
Zeile 86: | Zeile 83: | ||
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor. | The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor. | ||
− | |||
=Kalibrierung= | =Kalibrierung= | ||
Zeile 100: | Zeile 96: | ||
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody. | Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody. | ||
− | + | [[File: Gy80_acc_calibration.png|500px]] | |
− | File: Gy80_acc_calibration.png | + | |
− | + | ||
==Compass sensor== | ==Compass sensor== | ||
− | This calibration can be performed | + | This calibration can only be performed inside of the robot (IMU in its final position). Start the compass calibration: |
*Via serial console "IMU com calibration start/stop" OR | *Via serial console "IMU com calibration start/stop" OR | ||
Zeile 112: | Zeile 106: | ||
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore): | Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore): | ||
− | + | [[File: Gy80_com_calibration.png|500px]] | |
− | File: Gy80_com_calibration.png | + | |
− | + | ||
==Calibration quality test== | ==Calibration quality test== | ||
− | + | For a quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on "Commands->Auto rotate" until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click "Manual->Right" until it drives the desired radius). Finally, choose 'Plot->IMU' to see the calibration result. | |
− | + | ||
− | For | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed. | For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed. | ||
− | + | [[File: Ardumower_imu_plotting.jpg|300px]] | |
− | + | ||
− | File: Ardumower_imu_plotting.jpg | + | |
− | + | ||
= Videos = | = Videos = |
Aktuelle Version vom 11. Mai 2017, 11:20 Uhr
Inhaltsverzeichnis
Zusammenfassung
Ein Modul namens IMU (Intertia Measurement Unit) ist das Herzstück eines Trägheitsnavigationssystems, mit dem wir folgendes erreichen können:
- feststellen, ob der Ardumower umgekippt ist (Neigungswinkel)
- regeln einer exakten Geradeausfahrt z.B: für das Mähen in parallelen Bahnen
Beschleunigungssensor
Dieser Sensor mißt die translatorischen und rotatorischen Beschleunigungswerte des Ardumower bezüglich der 3 Raumachsen (x/y/z). Die Auswertung dieser Signale ermöglicht dem Ardumower die Berechnung der räumlichen Bewegung und der Veränderung der räumlichen Position. Zur Bestimmung der Raumwinkeländerungen beinhaltet die IMU ein Gyromodul.
Gyro
Ein Gyro mißt die Rotationsgeschwindigkeit (Winkelgrad/Sekunde) um alle 3 Roboterachsen (Roll, Pitch, Yaw). Das ermöglicht die Kurskorrektur wenn der Roboter durch z.B. nässebedingten Schlupf der Räder außer Kurs gerät. When integrating (adding) gyro values over time, the actual course (yaw) can be calculated. However, because each sensor reading has a small error, the course will 'drift' over time. This needs to be corrected via an absolute heading sensor (compass).
Vergleich Messfehler verschiedener Gyro-ICs:
noise dps/sqrt(Hz) L3G4200D 0.03 BMG160/BNO055 0.014 MPU9150 0.005
Compass
Fährt der Roboter auf nassem Gras, wird man feststellen, dass er nicht genau geradeaus fährt, sondern in Richtung des Rades tendiert, an dem Schlupf auftritt. Unter Auswertung eines Kompasssignals kann dieses Problem gelöst werden und der Robbi wird wieder geradeausfahren.
Ein Kompass hat jedoch 2 Probleme:
- If tilting the robot, the compass measurements (x,y,z) relate to the tilted robot. So, you need to correct them using knowing the tilt angles. This requires the use of the accerlation sensor (x,y).
- The compass measurements are influenced by motors. So you may need to switch of the motor to get an accurate measurement.
Sensor fusion
To eliminate the issues of all sensor, they are merged to compute the course (degree) and pitch/roll angles.
We use a complementary filter to fusion all sensor values.
IMU module
GY-80
- Acceleration sensor: ADXL345B
- Compass sensor: HMC5883L
- Gyro: L3G4200D
- Pressure sensor: BMP085 (not used here)
Assembly
This photo shows how the IMU module is placed in the driving position (the red arrow shows the driving position). Ensure a minimum distance of 30cm from all motors. This minimum distance seems to be needed to ensure the compass is not disturbed by dynamically disturbing sources (like motors).
Calibration abstract
This one-time calibration ensures that:
- All 3 axes measurements of the acceleration sensor are weighted equally. This calibration can even be performed externally to the robot.
- Cables, metal, etc. which are located in the robot near the IMU module have no effect on the compass data.
Why is it needed? The origin of a 3D compass point is 0,0,0 (x,y,z) and points to the north pole. If the 3D compass is rotated around all of its axes i.e. all values of x, y and z are measured then these points will lie on a sphere.
If you add a magnetic material (e.g. metal) near the compass, the measured values from the origin (0,0,0) of the sensor suddenly point in one direction only - Why? There are two types of disturbances of the magnetic field which change / move the values:
- Hard ircon (e.g. magnets): the sphere moves
- Soft ircon (e.g. metal): the sphere deforms (becomes an Ellipsoid)
Example measurements
The goal of the calibration is that the measurements are centered again on a sphere around the origin of the sensor.
Kalibrierung
Acceleration sensor
This calibration can be performed outside of the robot. Place each of the 6 module sides exactly upright, do not move and choose 'next side calibration':
- Via serial console "IMU acc calibration next side" OR
- Via pfodApp "Settings->IMU->acc calibration next side"
Do not move the module during the measurement of each side! During measurement you will hear a short beep tone.
Repeat this step for all 6 sides. After all 6 sides are calibrated, you will hear a short melody.
Compass sensor
This calibration can only be performed inside of the robot (IMU in its final position). Start the compass calibration:
- Via serial console "IMU com calibration start/stop" OR
- Via pfodApp "Settings->IMU->com calibration start/stop"
Hold each of the 6 module sides to North direction and tilt the module until minimum and maximum of the axis does not change anymore (until no tone is outputted anymore):
Calibration quality test
For a quality test, you can plot the calibration results (Yaw, Pitch, Roll) via pfodApp. Place the robot on a flat ground and let it rotate (pfodApp: click on "Commands->Auto rotate" until robot rotates). Alternatively, you can let the robot drive a circle (pfodApp: click "Manual->Right" until it drives the desired radius). Finally, choose 'Plot->IMU' to see the calibration result.
For the yaw plot, the curve should be a straight line when the robot is rotating with a constant speed.
Videos