本人在应用胡春旭《ROS机器人开发实践》的10.9.2工作空间规划的moveit_ik_demo.py代码时发现如下问题:
Traceback (most recent call last):
File "/home/ros-noetic/moveit_test/src/marm_planning/scripts/moveit_ik_demo.py", line 87, in <module>
MoveItIkDemo()
File "/home/ros-noetic/moveit_test/src/marm_planning/scripts/moveit_ik_demo.py", line 65, in __init__
arm.execute(traj)
File "/opt/ros/noetic/lib/python3/dist-packages/moveit_commander/move_group.py", line 671, in execute
return self._g.execute(conversions.msg_to_string(plan_msg))
File "/opt/ros/noetic/lib/python3/dist-packages/moveit_commander/conversions.py", line 53, in msg_to_string
msg.serialize(buf)
AttributeError: 'tuple' object has no attribute 'serialize'
问题出在:
# 规划运动路径
traj = arm.plan()
# 按照规划的运动路径控制机械臂运动
arm.execute(traj)
rospy.sleep(1)
traj为元组,
def execute(self, plan_msg, wait=True):
"""Execute a previously planned path"""
if wait:
return self._g.execute(conversions.msg_to_string(plan_msg))
else:
return self._g.async_execute(conversions.msg_to_string(plan_msg))
def msg_to_string(msg):
buf = StringIO()
msg.serialize(buf)
return buf.getvalue()
所以爆出如下错误:
AttributeError: 'tuple' object has no attribute 'serialize'
请问,哪位高人告知这该如何解决?使得代码正确可靠运行。