【发布时间】:2021-11-15 21:13:44
【问题描述】:
我有 IMU 传感器,可以为我提供方向、角度和线性加速度等原始数据。我正在使用 ROS 并做一些 Gazebo UUV 模拟。此外,我想从原始 IMU 数据中获得线速度。如果我随着时间的推移进行积分,则会累积误差,并且在机器人转弯时会不准确。 所以如果我使用
acceleration_x = (msg->linear_acceleration.x + 9.81 * sin(pitch)) * cos(pitch);
acceleration_y = (msg->linear_acceleration.y - 9.81 * sin(roll)) * cos(roll);
所以集成线性加速度是很糟糕的,
Velocity_x= Velocity_old_x+acceleration_x*dt;
因为在没有考虑传感器任何可能旋转的情况下对加速度进行积分,这意味着如果传感器完全旋转,结果可能会很糟糕。 所以我需要一些 ROS 包来考虑所有这些转换并给我最准确的线速度估计。有什么帮助吗?谢谢
【问题讨论】:
-
好的。但那是一个完整的设备。在这个阶段我不需要额外的设备。我已经有 IMU,它提供 x,y,z 线性 (x,y,z) 、角速度(x,y,z) 和线性加速度 (x,y,z) 的方向。需要算法进行正确的变换和滤波以获得真实的线速度
-
这是什么类型的设备(机械臂、车辆、直升机、飞机等?)
-
它的 UUV,水下机器人。但目前仅在 Gazebo 模拟中。但会在现实中拥有它。所以我已经在机器人上安装了一个传感器单元。只需要算法或更好的一整包即可使用 IMU 数据获得线速度
-
你读到最后的链接了吗?有用于单个 IMU 的算法的描述。
标签: c++ ros velocity robotics imu