【发布时间】:2019-06-19 10:27:34
【问题描述】:
我目前正在尝试在 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 脚本。任何帮助将不胜感激!
import rospy
from tf import transformations
from tf_conversions import posemath
from std_msgs.msg import String, Bool, Float32, Empty, Float64MultiArray
from geometry_msgs.msg import Pose, PoseStamped, Vector3, Quaternion, Wrench, WrenchStamped, TwistStamped
def callback(data):
rospy.loginfo(rospy.get_caller_id() + data.data)
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber(self.__full_ros_namespace + '/position_cartesian_current', PoseStamped, callback)
rospy.spin()
if __name__ == '__main__':
listener()
【问题讨论】:
-
您是在尝试创建新脚本还是会重复使用
arm.py?您能否提供完整的arm.py代码?如果你能创建一个minimal reproducible example 那就完美了。 -
我正在尝试创建一个新的 python 脚本来实现 arm.py 文件中的发布者/订阅者 - 所以目前如果我在终端中键入命令:rostopic echo dvrk/PSM1/position_cartesian_current,手臂的位置和方向连续显示。这个想法是,通过运行这个新的 python 文件,我应该能够最初获得手臂的当前位置,并使用 ROS 命令将手臂移动到所需的位置。
-
arm.py 文件可以通过这个链接找到:github.com/nortega1/dvrk-ros/blob/…
标签: python publish-subscribe ros