Skip to content

使用velodyne雷达和自己的imu出现的轨迹漂移问题 #34

@guanjinglu

Description

@guanjinglu

在将项目修改为velodyne格式的雷达数据后,出现了轨迹乱飞的现象。原因是原项目/livox/imu的重力加速度是1,在接受IMU数据时代码中手动乘以了一个10,如下所示(//1127下面),而velodyne和绝大部分imu是有重力值的,因此这里存在了一个重力加速度,把10去掉就可以了,修改后的代码如下:

   void imuCB(const sensor_msgs::msg::Imu::SharedPtr msg)
    {
        std::lock_guard<std::mutex> lock(m_state_data.imu_mutex);
        double timestamp = Utils::getSec(msg->header);
        if (timestamp < m_state_data.last_imu_time)
        {
            RCLCPP_WARN(this->get_logger(), "IMU Message is out of order");
            std::deque<IMUData>().swap(m_state_data.imu_buffer);
        }
        // 1127
        // m_state_data.imu_buffer.emplace_back(V3D(msg->linear_acceleration.x, msg->linear_acceleration.y, msg->linear_acceleration.z) * 10.0,
        m_state_data.imu_buffer.emplace_back(V3D(msg->linear_acceleration.x, msg->linear_acceleration.y, msg->linear_acceleration.z),
                                             V3D(msg->angular_velocity.x, msg->angular_velocity.y, msg->angular_velocity.z),
                                             timestamp);
        m_state_data.last_imu_time = timestamp;
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions