ROS 控制机器人Unable to connect to move_group action server 'move_group' within allotted time (5s)

用moveit 控制机器人 遇到这个错误

img

#!/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


相当于是连接超时了。https://blog.csdn.net/m0_51786202/article/details/121430671?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask

时间不对

请求超时了,将请求时间设置大一点,或者直接注释掉就可以了

服务连接超时了,检查一下服务端是否正常运行,如果正常,建议增大最大请求时间

连接超时,检查一下是否网络的状态还有数据的发送请求是否出错

解决办法 : sudo apt-get install ros-indigo-moveit*

楼上办法可行