我目前正在尝试用python编写一个可执行程序,它运行以下ROS命令:rostopic echo dvrk/PSM1/position_cartesian_current
然而,尽管我阅读了ROS教程,但我不确定如何进行这项工作。在名为arm.py
的文件中,已存在以下订阅服务器和定义:
rospy.Subscriber(self.__full_ros_namespace + '/position_cartesian_current', PoseStamped, self.__position_cartesian_current_cb)
def __position_cartesian_current_cb(self, data):
self.__position_cartesian_current = posemath.fromMsg(data.pose)
我应该在新的自动python脚本中重用这个订阅服务器和定义吗?在获得当前笛卡尔位置后,机器人随后将被移动到另一个位置,目前可以使用终端中的ROS命令来完成,但是,目标是编写一个python脚本来自动执行这些命令。任何帮助将不胜感激!在
^{pr2}$
根据}消息中包含的this doc
Pose
和{PoseStamped
消息,因此要获得Pose
值,请尝试:您要做的是编写一个pythonros节点来订阅主题并实现您的逻辑。在
您可以按照this guide操作。在
其主要思想是订阅position主题,在回调函数中获取相关数据,并在同一个回调中发布通常由命令行执行的命令。在
要重现一个简单的
rostopic echo
,您只需打印在回调中接收到的值。在这不是Python自动化脚本,而是一个Python ROS程序,可以作为ROS节点执行(使用rosrun)。这样做的目的与通过ROS内置终端命令发布手动消息是一样的。每当在“/position_cartesian_current”主题发布消息时,此程序将执行回调。在
如果您不想在不同的终端上执行一堆命令,那么ROS提供了创建启动文件(roslaunch)的功能,它将您的执行管道减少到一个roslaunch命令。这在ROS社区中大量用于自动化流程。在
相关问题 更多 >
编程相关推荐