# Cobot executes planning once, then refuses any more planning executions

Hello. I'm working on a project that uses the Aubo i5. The code depends on MoveIt. I have a function that sets a Pose that's used as its goal, passes it to the MoveGroupCommander using the class's set_pose_target function, and plans a route for the end effector to this goal, and then executes the planning. This works perfectly in a simulation, but when trying to control an actual robot, it doesn't. When I call my function for the first time, the robot works perfectly. But if I call the same function again, nothing happens. A plan is made, but I then get a timeout. If I then restart all of my software, I can make another movement, but then need to restart all the software again. I don't need to restart the Aubo i5 itself, just the software on my laptop.

To launch my program, I need to execute the following command: "roslaunch aubo_i5_moveit_config moveit_planning_execution.launch sim:=false robot_ip:=192.168.1.10". This launches the control software for the robot. I then run "rosrun robotao move_group_subpub.py", which is my own code that does the planning and execution. This program listens to a topic on which and x, y, and z is published, which are the coordinates of the goal.

Here is the code for planning and execution: def go_to_pose_goal_input(self,x,y,z): # Copy class variables to local variables to make the web tutorials more clear. # In practice, you should use the class variables directly unless you have a good # reason not to. group = self.group

## BEGIN_SUB_TUTORIAL plan_to_pose
##
## Planning to a Pose Goal
## ^^^^^^^^^^^^^^^^^^^^^^^
## We can plan a motion for this group to a desired pose for the
## end-effector:
orientation = tf.transformations.quaternion_from_euler(pi, 0.0, -pi/2)
pose_goal = geometry_msgs.msg.Pose()
pose_goal.orientation.x = orientation[0]
pose_goal.orientation.y = orientation[1]
pose_goal.orientation.z = orientation[2]
pose_goal.orientation.w = orientation[3]
#pose_goal.orientation.w = 1.0
pose_goal.position.x = x
pose_goal.position.y = y
pose_goal.position.z = z
group.set_pose_target(pose_goal)

## Now, we call the planner to compute the plan and execute it.
plan = group.go(wait=True)
# Calling stop() ensures that there is no residual movement
group.stop()
# It is always good to clear your targets after planning with poses.
# Note: there is no equivalent function for clear_joint_value_targets()
group.clear_pose_targets()

## END_SUB_TUTORIAL

# For testing:
# Note that since this section of code will not be included in the tutorials
# we use the class variable rather than the copied state variable
current_pose = self.group.get_current_pose().pose
return all_close(pose_goal, current_pose, 0.01)


group refers to a moveit_commander.MoveGroupCommander object.

Below is part of the output from moveit_planning_execution.launch. Things prefaced by dashes are commands that I put in in-between. Multiple newlines represent that a small amount of time (some seconds) passed in between outputs. I will post an attachment once I've gotten more karma (currently at 1, new account, stupid spam protection)

 You can start planning now!

[ INFO] [1572254135.576545228]: Loading robot model 'aubo_i5 ...
edit retag close merge delete

The errors referring to action goals seem to indicate that the aubo driver is not handling the FollowJointTrajectory action goals properly.