用moveit 控制机器人 遇到这个错误
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy, sys
import moveit_commander
from moveit_commander import MoveGroupCommander
from geometry_msgs.msg import Pose
from copy import deepcopy
class MoveItCartesianDemo:
def __init__(self):
moveit_commander.roscpp_initialize(sys.argv)
rospy.init_node('moveit_cartesian_demo', anonymous=True)
arm = MoveGroupCommander('manipulator')
arm.allow_replanning(True)
arm.set_pose_reference_frame('iiwa_link_0')
arm.set_goal_position_tolerance(0.001)
arm.set_goal_orientation_tolerance(0.001)
arm.set_max_acceleration_scaling_factor(0.5)
arm.set_max_velocity_scaling_factor(0.5)
end_effector_link = arm.get_end_effector_link()
start_pose = arm.get_current_pose(end_effector_link).pose
waypoints = []
waypoints.append(start_pose)
wpose = deepcopy(start_pose)
wpose.position.z -= 0.2
waypoints.append(deepcopy(wpose))
wpose.position.x += 0.1
waypoints.append(deepcopy(wpose))
wpose.position.y += 0.075
waypoints.append(deepcopy(wpose))
wpose.position.y -= 0.075
waypoints.append(deepcopy(wpose))
wpose.position.x -= 0.1
waypoints.append(deepcopy(wpose))
wpose.position.x += 0.05
wpose.position.y += 0.075
waypoints.append(deepcopy(wpose))
wpose.position.y -= 0.15
waypoints.append(deepcopy(wpose))
wpose.position.x -= 0.05
wpose.position.y += 0.075
waypoints.append(deepcopy(wpose))
wpose.position.x -= 0.03
wpose.position.y -= 0.075
waypoints.append(deepcopy(wpose))
fraction = 0.0
maxtries = 100
attempts = 0
arm.set_start_state_to_current_state()
while fraction < 1.0 and attempts < maxtries:
(plan, fraction) = arm.compute_cartesian_path(
waypoints,
0.01,
0.0,
True)
attempts += 1
if attempts % 10 == 0:
rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
if fraction == 1.0:
rospy.loginfo("Path computed successfully. Moving the arm.")
arm.execute(plan)
rospy.loginfo("Path execution complete.")
else:
rospy.loginfo(
"Path planning failed with only " + str(fraction) + " success after " + str(maxtries) + " attempts.")
rospy.sleep(1)
moveit_commander.roscpp_shutdown()
moveit_commander.os._exit(0)
if __name__ == "__main__":
try:
MoveItCartesianDemo()
except rospy.ROSInterruptException:
pass
时间不对
请求超时了,将请求时间设置大一点,或者直接注释掉就可以了
服务连接超时了,检查一下服务端是否正常运行,如果正常,建议增大最大请求时间
连接超时,检查一下是否网络的状态还有数据的发送请求是否出错
解决办法 : sudo apt-get install ros-indigo-moveit*
楼上办法可行