Cobot executes planning once, then refuses any more planning executions

asked 2019-10-31 04:35:37 -0500

Amanoo gravatar image

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 ...
(more)
edit retag flag offensive close merge delete

Comments

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

I would ask the author of that driver to assist you.

gvdhoorn gravatar image gvdhoorn  ( 2019-10-31 08:59:29 -0500 )edit