分类 算法与数学基础 下的文章



1、官网:

      https://geographiclib.sourceforge.io/C++/doc/index.html




2、Git

     https://github.com/geographiclib/geographiclib



3、Python版本安装方法

     pip3    install    geographiclib

 


4、Python应用举例

      from geographiclib.geodesic import Geodesic

   import math
   geod = Geodesic.WGS84  # define the WGS84 ellipsoid



Overview

  • 确定性误差(六面法 标定)
    • 开机后恒定的零偏误差(bias)
    • 比例因子误差(scale factor)
    • 轴偏及非正交误差(misalignment errors and non-orthogonality)
    • 非线性误差(non-linearity)
    • 温度误差(thermal noise)
    • 陀螺仪还包含加速度的变化引起的误差(g-dependent noise)
  • 随机性误差(Allan方差 标定)
    • 高斯白噪声(Noise Density)
    • 零偏不稳定性(Bias Instability or Random Walk)


IMU Stochastic Errors

  • a high frequency additive White Noise
  • a slower varying sensor Bias

continuous-time model:

Ref:

How To Get

the Datasheet of the IMU

  • White Noise Terms
    • Rate Noise Density (Angular Random Walk - ARW)
    • Acceleration Noise Density (Velocity Random Walk - VRW)
  • Bias Terms
    • In-Run Bias (Bias Stability)

the Allan standard deviation (AD)

  • "white noise" is at tau=1 (slope -1/2 in a log-log AD plot)
  • "random walk" is at tau=3 (slope +1/2 in a log-log AD plot)

Noise Samples (Continuous-time)

  • MPU6000 / MPU6050

    1
    2
    core_noise_acc: 0.003924    # [m/s^2/sqrt(Hz)] mpu6000 datasheet
    core_noise_gyr: 0.00008726 # [rad/s/sqrt(Hz)] mpu6000 datasheet

ADIS 16448

1
2
3
4
5
# avg-axis
gyr_n: 1.8582082627718251e-04
gyr_w: 7.2451532648461174e-05
acc_n: 1.9862287242243099e-03
acc_w: 1.2148497781522122e-03

MYNT-EYE-S1030 IMU

1
2
3
4
gyr_n: 0.00888232829671
gyr_w: 0.000379565782927
acc_n: 0.0268014618074
acc_w: 0.00262960861593

Performance Analysis Software

  • IMU-TK: Inertial Measurement Unit ToolKit
  • gaowenliang/imu_utils: A ROS package tool to analyze the IMU performance
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0"?>
    <launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
    <param name="imu_topic" type="string" value= "/camera/imu/data_raw"/>
    <param name="imu_name" type="string" value= "ZR300"/>
    <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
    <param name="max_time_min" type="int" value= "80"/>
    <param name="max_cluster" type="int" value= "100"/>
    </node>
    </launch>
  • rpng/kalibr_allan: IMU Allan standard deviation charts for use with Kalibr and inertial kalman filters
  • XinLiGH/GyroAllan: 陀螺仪随机误差的 Allan 方差分析
  • AllanTools: A python library for calculating Allan deviation and related time & frequency statistics.

Reference

惯性导航(Inertial Navigation System, INS)与组合导航系统是导航技术中的重要组成部分,广泛应用于各种移动平台的定位与导向。值得推荐的开源代码和工具主要包括RTIMULib、ROS Navigation Stack、MSCL、OpenIMU等。RTIMULib为一套集成了多种IMU算法的库,能够提供实时的方位信息。ROS Navigation Stack则提供了一整套用于机器人导航的框架和工具集。MSCL提供了与MicroStrAIn传感器进行通信的接口和工具。OpenIMU则提供了一套完整的解决方案,允许用户使用各种算法进行高精度定位。

下面,我们将重点介绍RTIMULib,并探讨其在惯性导航领域的应用。

一、RTIMULib

RTIMULib是一个用于读取IMU数据并进行传感器融合得到精确姿态的开源库。这个库非常适用于需要快速整合IMU的项目,因为它简化了复杂的传感器融合算法,并且容易集成到现有的项目中去。

  • 数据读取与融合

    RTIMULib支持多种IMU设备,可以从气压计、磁力计和加速度计等传感器中获取数据,并用其提供的算法进行数据融合,输出稳定且准确的姿态信息。它使用如卡尔曼滤波器等先进的算法来优化传感器数据的处理过程。

  • 系统集成与可扩展性

    RTIMULib设计了易于理解和使用的API接口,不仅可以轻松集成到各种设备中去,而且还可以根据不同的应用需求来调整和优化。库的结构清晰,便于扩展新的传感器模型或融合算法。

二、ROS NAVIGATION STACK

ROS(Robot Operating System)是一种用于机器人应用的开源元操作系统。其Navigation Stack提供了一个完整的导航系统,可以进行路径规划、障碍物避让和地图绘制等

  • 路径规划与执行

    ROS Navigation Stack内包括有costmap、planner等关键组件,它们用以处理环境的映射、路径的规划,以及动态环境下的路径执行。

  • 传感器融合与定位

    该导航栈使用AMCL(Adaptive Monte Carlo Localization)算法进行机器人在地图上的定位,并且可以集成来自各种传感器的数据,比如激光雷达、声呐传感器、IMU等,实现高精度的定位。

三、MSCL

MSCL(MicroStrain Communication Library)是MicroStrain传感器的官方API。它提供了一个与MicroStrain无线传感器节点通信的平台,使数据获取和传感器配置变得简单

  • 传感器通信

    MSCL提供了一组API,可以实现对MicroStrain无线传感器节点的控制和数据获取,极大地简化了与传感器的交互过程。

  • 数据处理

    除了基础的通信功能,MSCL还包含了数据处理功能,能够对传感器原始数据进行解析和转换,便于用户进行进一步的数据分析和应用。

四、OpenIMU

OpenIMU是一套完整的惯性导航和传感器融合解决方案。它提供了一整套开源算法和工具,让开发者能够轻松实现准确度高的惯性导航

  • 开源算法库

    OpenIMU提供了一系列预设的算法,这些算法基于多年导航领域的研究而开发,用户可以针对各种应用场景进行选择和调整。

  • 硬件兼容性

    OpenIMU设计了兼容多种硬件平台的能力,使得用户可以不受硬件限制地进行开发,提高了项目的灵活性和普及性。

以上是国内外一些值得推荐的惯导、组合导航开源代码和工具。这些工具和代码库涵盖了从数据采集、处理到路径规划、定位等多个方面,为研究人员和开发者提供了便利,有助于他们快速实现高效可靠的导航系统。开发者可以根据自身项目的需求,选择最适合的工具和代码进行开发。

相关问答FAQs:

Q: 有哪些在国内外比较受欢迎的惯导和组合导航开源代码和工具?
A: 在国内,有一些值得推荐的惯导和组合导航开源代码和工具,比如OMGtrack和科技有限公司的GNSS软件开发包。OMGtrack是一个模块化的惯导系统,适用于多种导航应用,并提供了滤波和数据录制功能。而科技有限公司的GNSS软件开发包是一套功能强大的组合导航和惯导软件,提供了较为完整的导航解算算法和工具。

在国外,有一些也很知名的惯导和组合导航开源代码和工具,比如Robot Localization和EKF-TFH的开源软件包。Robot Localization是一个ROS(Robot Operating System)软件包,提供了一种通用的方法来解决机器人本地化问题,包括惯导和组合导航。而EKF-TFH是一个基于扩展卡尔曼滤波器的组合导航算法,适用于各种移动机器人导航应用。

Q: 哪些国内外的惯导和组合导航开源代码适用于无人机导航?
A: 在无人机导航领域,有一些国内外的惯导和组合导航开源代码适用于无人机导航。比如在国内,航天科技集团公司的I.N.S.T.A.R.(惯性导航系统技术规范应用环境)适用于无人机导航,提供了惯性导航解算和误差补偿等功能。而在国外,PX4是一款流行的无人机导航开源软件,提供了惯性导航和组合导航的支持,可以在不同飞行控制器上进行使用。

Q: 在国内外是否有免费的惯导和组合导航开源代码和工具?
A: 是的,国内外都有一些免费的惯导和组合导航开源代码和工具供开发者使用。在国内,比如有一些开源的惯导系统,如Tinker-GNSS和GNSS-SINS。Tinker-GNSS是一个免费开源的GNSS定位和导航软件,提供了基于惯性测量单元的滤波算法和数据处理工具。而GNSS-SINS是一个免费开源的倾角测量和导航工具,适用于航空、航海和车辆导航等领域。

在国外,也有一些免费的惯导和组合导航开源代码和工具可供使用。比如Robot Operating System(ROS)是一个广泛使用的开源软件框架,提供了各种导航和机器人控制的功能模块,其中包括惯导和组合导航的支持。此外,一些开源的导航解算库如InertialNav和Navio提供了免费的惯导和组合导航算法实现和工具。


一、核心概念

    姿态(欧拉角、旋转矩阵(方向余弦矩阵)、四元数、旋转向量)表示的是一个相对量,即一定是一个坐标系相对另一个坐标系的姿态(角度或旋转)关系,如果只有一个坐标系或一个向量,则毫无意义!



二、位置的相对关系

      位置的相对关系<平移>对应的数学运算:+、-,加法、减法


三、姿态的相对关系

      姿态的相对关系<旋转>对应的数学运算:x、/,乘法、除法(矩阵的逆)


四、位置相等

      两个坐标系位置相等,则位置增量等于:0 ,即两个坐标系原点重合.


五:姿态相等

        两个坐标系姿态相等,即两个坐标系: X、Y、Z三个轴重合.

        1、四元数(单位四元数)

              Quaternion = [1 0 0 0]

              单位四元数对应着单位旋转矩阵!

        2、旋转矩阵(单位矩阵)

            R = [1 0 0 0 1 0 0 0 1]

            AxR=A, 相当于a*1=a