使用rosbag和dynamixel在ros中获取位置和移动机器人关节

Getting position and moving robot joint in ros using rosbag and dynamixel

我正在尝试使用 dynamixel_workbench 包来控制我的机器人的运动。 我的 ROS 版本 noetic 和我的电机是 dynamixel Ax12 我 运行 dynamixel_workbench_controllers.launch 文件,当我移动机器人手臂时我可以看到每个关节的位置(在 joint_states话题) 我用 rosbag 记录了这个主题,当我播放包文件时,我可以看到它已经记录了位置(使用 rostopic echo /dynamixel_workbench/joint_states)但是手臂没有相应地移动。我的意思是包文件已正确录制和播放,但似乎不适用于电机。

有人可以帮我吗?带文件包的电机怎么移动?

您正在录制的主题是包的 Publisher,而不是 Subscriber。这意味着您正在记录的是来自节点的反馈,说明它当前在 对命令的响应 中的位置,您可以在 the package page 上看到。该移动实际上是响应 Service 调用而完成的。不幸的是,没有任何方法可以通过 rosbag 直接记录服务。您能做的最好的事情就是编写一个订阅主题并将该消息转换为服务调用的快速节点。这将有效地让你控制机器人,记录命令,并通过重复的动作回放它们(仍然通过你写的节点)。