imu_x_fusion里imu对应的重力对齐的世界系说明

imu_x_fusion里imu对应的重力对齐的世界系说明 

imu_x_fusion/include/sensor/imu.hpp at master · cggos/imu_x_fusion · GitHub

imu.hpp里这段估计初始的Rwb的代码我可以解释下,首先imu静止的时候,xyz三轴的指所形成的向量,就是正好垂直朝上的向量,和重力方向相反的,这个时候世界系的z轴确定了,只是x轴方向该怎么定,代码里怎么处理的呢,先定义了一个(1,0,0)的向量,这个(1,0,0)单看是没有意义的,但是结合IMU坐标系看有意义,那就是IMU坐标系x轴方向向量。 Eigen::Vector3d x_axis = Eigen::Vector3d::UnitX() - z_axis * z_axis.transpose() * Eigen::Vector3d::UnitX(); 那么这句代码就是算出 IMU坐标系x轴方向单位向量在和世界系z轴垂直的平面上的投影,得到世界系的x轴,所以为什么说IMU的世界系的x轴方向由IMU坐标系的x轴决定了。

    // Compute rotation
    // ref: https://github.com/rpng/open_vins/blob/master/ov_core/src/init/InertialInitializer.cpp

    // Three axises of the ENU frame in the IMU frame.
    // z-axis
    const Eigen::Vector3d &z_axis = mean_acc.normalized();

    // x-axis
    Eigen::Vector3d x_axis = Eigen::Vector3d::UnitX() - z_axis * z_axis.transpose() * Eigen::Vector3d::UnitX();
    x_axis.normalize();

    // y-axis
    Eigen::Vector3d y_axis = z_axis.cross(x_axis);
    y_axis.normalize();

    Eigen::Matrix3d Rbw;
    Rbw.block<3, 1>(0, 0) = x_axis;
    Rbw.block<3, 1>(0, 1) = y_axis;
    Rbw.block<3, 1>(0, 2) = z_axis;

    Rwb = Rbw.transpose();

    std::cout << "初始的Rwb:\n" << Rwb << std::endl;

下面这两句算x轴的代码配合 https://www.cnblogs.com/shizyxya/p/16412407.html 看就非常清晰了!!!和我理解的一样

    // x-axis
    Eigen::Vector3d x_axis = Eigen::Vector3d::UnitX() - z_axis * z_axis.transpose() * Eigen::Vector3d::UnitX();
    x_axis.normalize();

Eigen::Vector3d y_axis = z_axis.cross(x_axis);
这行代码使用了 Eigen 库来计算两个三维向量 z_axis 和 x_axis 的叉积(cross product)。  
叉积的结果是一个垂直于这两个向量的向量。在三维空间中,如果 z_axis 和 x_axis 是已知的,叉积结果 y_axis 将会是与这两个向量都垂直的向量。  

在三维空间中,两个向量的叉积可以用右手法则来确定结果向量的方向。具体步骤如下:

用右手的四个手指指向第一个向量的方向。  
然后将手指弯曲,转向第二个向量的方向。  
你的大拇指会指向叉积向量的方向,这个向量垂直于你所用的两个向量。  

因此,叉积的结果向量的方向是根据这两个向量的相对方向确定的。记住,叉积的结果向量的方向是垂直于这两个向量的,并且其朝向取决于你使用右手法则的方式。

既然这么得到的Y符合右手系,那这样最后得到的重力对齐坐标系,是可以当作一种ENU系来用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值