User Tools

Site Tools


projects:robots:inertial_navigation_system

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:robots:inertial_navigation_system [2024/04/26 15:41] jhagstrandprojects:robots:inertial_navigation_system [2024/04/29 04:51] (current) – [videos] jhagstrand
Line 1: Line 1:
 ====== Inertial Navigation System (INS) ====== ====== Inertial Navigation System (INS) ======
 +
 +spreadsheet of data:\\
 +https://docs.google.com/spreadsheets/d/1SMg0OuFvwoGWqhNJKjKyEFaudhpbxwleUFlkU9-4UDw/edit?usp=sharing
 +
  
 INS Intertial Navigation System - Sensors, processors, and software to estimate position. INS Intertial Navigation System - Sensors, processors, and software to estimate position.
Line 47: Line 51:
 velocity vs acceleration velocity vs acceleration
  
-linear velocity: meters per second +per Steppe School youtubes:
-linear accelerationmeters per second squared+
  
-angular velocity: radians per second +bias, aka offset, must be removed from each measurement 
-angular acceleration:+  * accelerometer 
 +    * measures linear acceleration, not velocity 
 +    * unit: mg, 1g = 9.8 m/s2, 1mg = 1 thousandth of a g 
 +    * has bias, but not so critical as gyroscope and magnetometer  
 +    * gravity is an acceleration of 1g or 1000mg.  This acceleration is always acting on the sensor. 
 +    * the upright and at-rest measurement should be x:0, y:0, z:1000. 
 +    * as the sensor is rotated the acceleration due to gravity is distributed among the x,y,z axes. 
 +  * gyroscope 
 +    * gyroscope measures angular velocity, not acceleration 
 +    * gyroscope unitdegrees per second 
 +    * at rest, gyroscope returns the bias 
 +    * by subtracting the bias from a readingd, the at rest measurement is x:0, y:0, z:1000 
 +    * calibration is done at rest for some seconds, the average of readings is the bias 
 +    * 20948 chip has "offset" registers that we can set with the 3 bias values, each divided by 4 
 +  * magnetometer 
 +    * no registers, so we must keep variables and do the subtraction from each measurement 
 +    * calibration is done during 3D rotation for some seconds 
 +    * ((max - min) / 2) should be zero, so the actual value during calibration is the bias 
 +    * in addition to the bias, we also have an adjustment for declination, to convert magnetic north to true north 
  
-rotation velocity: hertzcycles per second+localization = changing reference system from the body of the sensor to the earth 
 +  * sensor readings give data relative to the bodythe vehicle 
 +  * ahrs values give data relative to the earth
  
-movement relative to the earth's magetic field +units: 
-  +  * linear velocity: meters per second 
 +  * linear acceleration: meters per second squared 
 +  * angular velocity: degrees per second, radians per second 
 +  * angular acceleration:
 +  * rotation velocity: hertz, cycles per second 
 +  * 10**-6  one millionth, μ, micro 
 +  * 10**-3  one thousandth, m, milli
  
-o +accelerometer and gyroscope measure motion 
-Sensors +we know that the z-axis is pointing straight up, but the x and y-axes are relative to some random or arbitrary starting point 
 +by adding a magnetometer, we can fix the x axis relative to north-south, and the y-axis relative to east-west
  
-motion sensors +the magnetometer measures the strength of magnetic fields acting on the sensor 
- +the most significant magnetic field is that of the earth
-accelerometer +
- +
-gyroscope +
- +
-IMU - Inertial Measurement Unit - +
  
 +naming absurdities: 
 +  * IMU inertial measurement unit
 +    * does not measure inertia. It's components measure accleration, velocity, and magnetic field strenth.
 +    * is not a unit of measurement
 +  * 6-axis imu or 9-axis imu.  There are only three axes: x,y,z.
 +  * 6dof or 9dof.  A sensor does not have degrees of freedom.
  
  
Line 149: Line 180:
  
 Magnetometer calibration Magnetometer calibration
 +hold the sensor level and spin it horizontally
 +the graph of the results should be a perfect circle, and the radius of the circle is the strength of the magnetic field
 https://youtu.be/MinV5V1ioWg?si=Bh-e9aDgxxzKsm14 https://youtu.be/MinV5V1ioWg?si=Bh-e9aDgxxzKsm14
  
-Scott Lobdell, IMU+Scott Lobdell, on AHRS calculations, specifically the Madgwick Quaternion Update 
 +start with 9 measurements from the 3 sensors * 3 axes 
 +calibrate the magnetometer using a 3D bias to get corrected values of the 3 magnetometer measurements 
 +begin ahrs 
 +localize the acceleration vector from [x,y,z] to [north,east,down] 
 +convert the 9 measurements into a quaternion 
 +convert the quaternion into a 3x3 rotation matrix 
 +multiply the acceleration vector times the inverse of the rotation matrix, giving the localized acceleration vector 
 +remove the acceleration due to gravity [0,0,1] to [0,0,0] 
 +apply the declination offset
 https://youtu.be/T9jXoG0QYIA?si=HjldywVEFu-QSfJp https://youtu.be/T9jXoG0QYIA?si=HjldywVEFu-QSfJp
  
 +===== videos =====
  
 +Paul McWhorter: 9-axis IMUs with Arduino, youtube \\
 +Adafruit Bosch BNO055 \\
 +26 videos, in particular: \\ 
 +#10: Making a tilt-compensated compass \\
 +#21: Visualizing 3D rotations in VPython using Quaternions \\
 +
 +Scott Lobdell: How to implement an IMU \\
 +no specific chip or code \\
 +hand-drawn diagrams and verbal description of calibration and AHRS calculations
 +
 +MicWro Engr, Michael Wrona: Magnetometer Errors and Calibration \\
 +Adafruit Precision NXP 9-DOF Breakout Board - FXOS8700 + FXAS21002 \\
 +series of youtubes made while developing his custom "Hummingbird" flight controller
 +Magneto calibration software \\
 +[[Michael Wrona notes | notes]]
 +
 +Steppe School: STM32 and ICM20948 IMU part 1. accelerator and gyroscope
 +https://youtu.be/Oen3HqUbctM?si=SeUm8s62af9PdqDz
 +3 videos
  
 ===== Commercial Products ===== ===== Commercial Products =====
Line 178: Line 240:
 libraries: libraries:
   * https://github.com/adafruit/Adafruit_ICM20X   * https://github.com/adafruit/Adafruit_ICM20X
 +  * https://wolles-elektronikkiste.de/en/icm-20948-9-axis-sensor-part-i
  
 === BNO055 === === BNO055 ===
Line 215: Line 278:
   * expensive 160 USD   * expensive 160 USD
   * Redshift Labs appears to be out of business   * Redshift Labs appears to be out of business
 +
  
projects/robots/inertial_navigation_system.1714160509.txt.gz · Last modified: 2024/04/26 15:41 by jhagstrand

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki