如何确定ROS机器人是向前还是向后?

时间:2017-10-17 23:16:37

标签: ros quaternions

ROS提供了一个odometry消息,它告诉我以下参考xy平面。

  • 机器人速度的x分量(米/秒)。
  • 机器人速度的y分量(米/秒)。
  • 机器人的角度方向表示为四元数(z和w以弧度表示)

ROS提供以下额外的C ++库

我有一个不雅的巨型if语句,它使用机器人面对的象限以及x和y组件的方向。我宁愿学习如何利用四元数。

1 个答案:

答案 0 :(得分:0)

我认为不需要在这里使用四元数。问题似乎更简单。

来自nav_msgs/Odometry:“此消息中的扭曲应在child_frame_id”给出的坐标系中指定。

因此扭曲表示速度(线性和角度),相对于child_frame_id。在大多数机器人设置中,child_frame_id将是固定到机器人的坐标系,例如“base_link”。因此,扭曲的速度是相对于固定在机器人上的框架给出的 - 你可以简单地检查twist.linear中的矢量是否指向正半平面,如:

if (odom_msg.twist.linear.x >= 0.0 && odom_msg.twist.linear.y >= 0.0)
    // robot going forward