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 05:30] – [Commercial Products] 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 =====
 +
 +Arduino-compatible, hobbyist IMU products from sparkfun, adafruit, polulu.
  
 === MPU9250 === === MPU9250 ===
Line 168: Line 232:
 chip: TDK Invensense MPU9250 \\ chip: TDK Invensense MPU9250 \\
 date: 2018 \\ date: 2018 \\
-status:  +datasheethttps://invensense.tdk.com/wp-content/uploads/2024/03/DS-000189-ICM-20948-v1.6.pdf \\  
-  supposedly replaces MPU9250, but registers are different, therefore different driver required \\ +status: supposedly replaces MPU9250, but registers are different, therefore different driver required \\ 
-  users complain that the DMP is not finished +comment: users complain that the DMP is not finishedDMP output is not available in current libraries 
-  * DMP output is not available in current libraries +
 videos: videos:
   * https://invensense.tdk.com/wp-content/uploads/2018/10/AN-000146-v2.0-TDK_Migration_MPU_9250toICM-20948.pdf   * https://invensense.tdk.com/wp-content/uploads/2018/10/AN-000146-v2.0-TDK_Migration_MPU_9250toICM-20948.pdf
Line 177: 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 ===
 board: Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout, BNO055 \\ board: Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout, BNO055 \\
 chip: Bosch Sensortec BNO055 \\ chip: Bosch Sensortec BNO055 \\
-date: 2015 \\+date: 2014 \\
 status: "Not recommended for new designs...You could use BHI260AP...", (but that has no magnetometer). \\ status: "Not recommended for new designs...You could use BHI260AP...", (but that has no magnetometer). \\
 +datasheet: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bno055-ds000.pdf \\
 components: components:
   * Atmel SAM20D processor   * Atmel SAM20D processor
Line 193: Line 258:
       * modes: IMU, compass, M4G, NDOF       * modes: IMU, compass, M4G, NDOF
 libraries: libraries:
-  * +  * https://www.arduinolibraries.info/libraries/adafruit-bno055
 videos: videos:
   * https://www.adafruit.com/product/2472   * https://www.adafruit.com/product/2472
   * video demo, no heading mentioned, euler and quat, quat more accurate, too slow for vehicle   * video demo, no heading mentioned, euler and quat, quat more accurate, too slow for vehicle
   * https://www.youtube.com/watch?v=EsgKAawwT9A&t=731s   * https://www.youtube.com/watch?v=EsgKAawwT9A&t=731s
 +
 +=== LIS3MDL ===
 +board: Polulu #2862 MinIMU-9 v6 Gyro, Accelerometer, and Compass (LSM6DSO and LIS3MDL Carrier)
 +chips:  ST LSM6DSO + LIS3MDL, two ST chips combined onto one Polulu board
 +datasheets: 
 +  * https://www.st.com/resource/en/datasheet/lsm6dso.pdf
 +  * https://www.st.com/resource/en/datasheet/lis3mdl.pdf
 +
 +=== UM7-LT ===
 +board: made by Redshift Labs, sold by Polulu
 +chip: UM7
 +description: 
 +  * AHRS, includes microcontroller running a Kalman Filter
 +  * expensive 160 USD
 +  * Redshift Labs appears to be out of business
  
  
projects/robots/inertial_navigation_system.1714123858.txt.gz · Last modified: 2024/04/26 05:30 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