从加速度计和陀螺仪 (IMU) 获取轨迹
Getting a trajectory from accelerometer and gyroscope (IMU)
我很清楚 this question 的存在,但我会有所不同。我也知道这种方法可能存在重大错误,但我也想从理论上了解配置。
我有一些基本的问题,我自己很难清楚地回答。有很多关于加速度计和陀螺仪的资料,但我仍然没有找到对一些基本属性的解释"from first principles"。
所以我有一个包含加速度计和陀螺仪的平板传感器。还有一个我现在跳过的磁力计。
- 加速度计在每个时间t,根据固定的坐标系,将m/s^2中的临时加速度向量a = (ax, ay, az)的信息提供给传感器。
- 陀螺仪在 deg/s 中给出了一个 3D 矢量,表示三个轴(Ox、Oy 和 Oz)的临时旋转速度。从这些信息中,可以得到一个旋转矩阵,它对应于坐标系的无穷小旋转(根据前一时刻)。 Here 是如何获得表示 R 的四元数的一些解释。
所以我们知道可以考虑加速度是位置的二阶导数来计算无穷小运动。
假设您的传感器附在您的手或腿上。第一时刻我们可以认为它在3Dspace中的点为(0,0,0),初始坐标系也依附在这个物理点上。所以对于第一个时间步,我们将有
r(1) = 0.5a(0)dt^2
其中r为无穷小运动矢量,a(0)为加速度矢量。
在接下来的每一步中我们都会用到计算
r(t+1) = 0.5a(t)dt^2 + v(t)dt + r(t)
其中 v(t) 是将以某种方式估计的速度向量,例如 (r(t) -r(t-1)) / dt.
此外,在每次无限小的运动之后,我们都必须考虑来自陀螺仪的数据。我们将使用旋转矩阵来旋转向量 r(t+1).
这样一来,可能误差很大,我会根据初始坐标系得到一些轨迹。
我的查询是:
- 这个算法我基本上是正确的吗?如果不是,我哪里错了?
- 我非常感谢一些资源,其中包含一个未跳过首要原则的工作示例。
- 我应该如何继续使用卡尔曼滤波器来获得更好的轨迹?我究竟以什么方式将所有 IMU 数据(加速度计、陀螺仪和磁力计)传递给卡尔曼滤波器?
您的概念框架是正确的,但方程式需要一些改进。加速度是在平台架上测得的,可以很快旋转,所以不宜在平台架上集成加速度,旋转位置变化。相反,加速度被转换成一个相对缓慢的旋转框架,并在那里完成速度变化和位置变化的积分。通常是 locally-level 框架(例如 North-East-Down 或 Wander Aziumuth)或 Earth-centered 框架(ECEF 或 ECI)。重力和科里奥利力必须包含在加速度中。
可以在许多参考文献中找到从第一原理推导出来的内容,我最喜欢的一篇是 Titterton 和 Weston 的 Strapdown Inertial Navigation Technology。 locally-level和Earth-fixed坐标系中惯性导航方程的推导在第3章给出。
正如您在问题中所认识到的那样 - 初始速度是一个未知的积分常数。如果没有对初始速度的一些估计,整合惯性数据产生的轨迹可能会大错特错。
我很清楚 this question 的存在,但我会有所不同。我也知道这种方法可能存在重大错误,但我也想从理论上了解配置。
我有一些基本的问题,我自己很难清楚地回答。有很多关于加速度计和陀螺仪的资料,但我仍然没有找到对一些基本属性的解释"from first principles"。
所以我有一个包含加速度计和陀螺仪的平板传感器。还有一个我现在跳过的磁力计。
- 加速度计在每个时间t,根据固定的坐标系,将m/s^2中的临时加速度向量a = (ax, ay, az)的信息提供给传感器。
- 陀螺仪在 deg/s 中给出了一个 3D 矢量,表示三个轴(Ox、Oy 和 Oz)的临时旋转速度。从这些信息中,可以得到一个旋转矩阵,它对应于坐标系的无穷小旋转(根据前一时刻)。 Here 是如何获得表示 R 的四元数的一些解释。
所以我们知道可以考虑加速度是位置的二阶导数来计算无穷小运动。
假设您的传感器附在您的手或腿上。第一时刻我们可以认为它在3Dspace中的点为(0,0,0),初始坐标系也依附在这个物理点上。所以对于第一个时间步,我们将有
r(1) = 0.5a(0)dt^2
其中r为无穷小运动矢量,a(0)为加速度矢量。
在接下来的每一步中我们都会用到计算
r(t+1) = 0.5a(t)dt^2 + v(t)dt + r(t)
其中 v(t) 是将以某种方式估计的速度向量,例如 (r(t) -r(t-1)) / dt.
此外,在每次无限小的运动之后,我们都必须考虑来自陀螺仪的数据。我们将使用旋转矩阵来旋转向量 r(t+1).
这样一来,可能误差很大,我会根据初始坐标系得到一些轨迹。
我的查询是:
- 这个算法我基本上是正确的吗?如果不是,我哪里错了?
- 我非常感谢一些资源,其中包含一个未跳过首要原则的工作示例。
- 我应该如何继续使用卡尔曼滤波器来获得更好的轨迹?我究竟以什么方式将所有 IMU 数据(加速度计、陀螺仪和磁力计)传递给卡尔曼滤波器?
您的概念框架是正确的,但方程式需要一些改进。加速度是在平台架上测得的,可以很快旋转,所以不宜在平台架上集成加速度,旋转位置变化。相反,加速度被转换成一个相对缓慢的旋转框架,并在那里完成速度变化和位置变化的积分。通常是 locally-level 框架(例如 North-East-Down 或 Wander Aziumuth)或 Earth-centered 框架(ECEF 或 ECI)。重力和科里奥利力必须包含在加速度中。
可以在许多参考文献中找到从第一原理推导出来的内容,我最喜欢的一篇是 Titterton 和 Weston 的 Strapdown Inertial Navigation Technology。 locally-level和Earth-fixed坐标系中惯性导航方程的推导在第3章给出。
正如您在问题中所认识到的那样 - 初始速度是一个未知的积分常数。如果没有对初始速度的一些估计,整合惯性数据产生的轨迹可能会大错特错。