机器人发送cmd_vel话题,转化为机器人的转速
知识点一:原文链接:https://blog.csdn.net/SimileciWH/article/details/84976255
在使用ROS导航时,move_base发布的时 /cmd_vel 话题,但是为了驱动小车,可能我们的车的底盘并不支持ros系统,因此需要通过串口通信交换数据,因此我们必须自己订阅 /cmd_vel 的话题,然后将线速度和角速度转化成小车车轮的的线速度或者转速度进行控制。
两轮小车的模型,是可以认为是一个刚体的,因为小车每一个部分之间在运动过程中不会出现位移,因此,每一个部分之间的线速度是相同的,而角速度需要转化。
代码分析:
self.left_vel = self.dx - self.dr * self.wheel_dist / 2
self.right_vel = self.dx + self.dr * self.wheel_dist / 2
代码片段:
def calculate_pub(self):
self.left_vel = self.dx - self.dr * self.wheel_dist / 2
self.right_vel = self.dx + self.dr * self.wheel_dist / 2
rospy.loginfo("the left_vel = %f, right_vel = %f" % (self.left_vel, self.right_vel))
return self.left_vel, self.right_vel
知识点二:
使用例子:
1、新建一个节点不断发送/cmd_vel控制机器人运动的节点
2、在CMakeLists.txt加入
add_executable(cmdveltest src/cmdveltest.cpp)
target_link_libraries(cmdveltest ${catkin_LIBRARIES})
3、编写 src/cmdveltest.cpp
4、编译