ROS提供了一个odometry消息,它告诉我以下参考xy平面。
ROS提供以下额外的C ++库
Quaternion API: http://docs.ros.org/jade/api/tf/html/c++/classtf_1_1Quaternion.html
Vector 3 API:http://docs.ros.org/jade/api/tf/html/c++/classtf_1_1Vector3.html
我有一个不雅的巨型if语句,它使用机器人面对的象限以及x和y组件的方向。我宁愿学习如何利用四元数。
答案 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