以下说法存在问题,待校正。。。一,坐标系LOAM系列中,IMU的坐标系与载体的坐标系一致,均为x在前、y在左、z在上的右手坐标系。
二、IMU重力消除IMU安装坐标系方向与载体坐标系方向一致。 获得IMU的角度是IMU的当前姿势与载波坐标系对齐的过程,并且旋转顺序是x 滚-y ) pitch-z ) yaw; 备选地,载体坐标系与IMU坐标系对齐的过程,即旋转顺序为zyaw-y ) Pitch-x ) roll )。 如果旋转有正负,我想是第二个。
重力加速度在当前的IMU坐标系中表示为[xIG,yIG,zIG],有[ 0,0,g]=Rz * Ry * Rx * [xIG,yIG,zIG],其中Rx、Ry、Rz分别来自IMU 解开yIG,zIG],依次旋转zyawy ) pitchx ) roll ),得到[xIG,yIG,zig]=[-g*sig]
floataccx=IMU in-linear _ acceleration.y-sin roll ) cos ) pitch ) * 9.81; floataccy=IMU in-linear _ acceleration.z-cos roll ) cos pitch ) ) * 9.81; floataccz=IMU in-linear _ acceleration.xsin pitch ) * 9.81; 至于为什么要使用accX 接收IMU y方向的加速度、用accY接收IMU z方向的加速度、用accZ 接收IMU x方向的加速度,我个人认为是不需要的外观设计操作。 因为迷茫太大了。
三、在IMU坐标系下加速度转换为载体坐标系floatx1=cosroll ) accx-sin roll ) * accY; 浮动y1=sin roll ) accxcos roll ) * accY; 浮动Z1=accz; 浮点x2=x1; 浮动y2=cos pitch ) y1-sin pitch ) ) Z1; floatZ2=sinpitch ) y1cos pitch ) Z1; accx=cosyaw ) x2sin yaw ) Z2; accY=y2; accz=-sinyaw ) x2cos yaw ) z2; 接下来,因为要将IMU坐标系中的加速度值变换为世界坐标系或载体坐标系,所以按照xroll-y ) pitch-z ) yaw )的顺序进行旋转变换即可。 但是,经过前面步骤的外观设计操作,根据代码的字义,该步骤的变换按照zyawx ) rolly ) pitch )的顺序旋转,但实际上x y ) rolly ) pitchz ) yaw !
floataccx=IMU in-linear _ acceleration.y
floataccy=IMU in-linear _ acceleration.z
floataccz=IMU in-linear _ acceleration.x
看着的我迷路了。 我的道行不够好,不知道为什么要这样操作。
[1] .参照loam中imu重力消除加速度的数学推导
[2] .在loam中关于坐标变换与IMU的融合
[3].LeGO-LOAM