Controller handle reports status PREEMPTED and Utilization rate for 'channel_1' (using port number '6511') is 128.1% (desired commands are too aggressive and should be reduced)
I am able to save the trajectory plan in a pickle file and load it as follows;
with open(file_path, 'rb') as file_open:
plan = pickle.load(file_open)[1] # <class 'moveit_msgs.msg._RobotTrajectory.RobotTrajectory'>
(Note: saving the trajectory to yaml/json does not seem to be working https://stackoverflow.com/questions/73541770/save-and-load-trajectory-generated-with-moveit)
This is how I load and execute the trajectory; (http://docs.ros.org/en/jade/api/moveit_commander/html/move__group_8py_source.html#l00485)
cur_arm.execute(plan, wait=True) # cur_arm is a MoveGroupCommander -- and plan is a Robot Trajectory
cur_arm.stop()
So I am able to: - Save the trajectory into a pickle file - Load and execute the trajectory
This is a log of an execution that works
- [ INFO] [1670847072.740441861]: Execution request received
- [ INFO] [1670847075.091974443]: Controller '/yumi/egm/leftarmvel_controller' successfully
- [ INFO] [1670847075.092193136]: Completed trajectory execution with status - [ INFO] [1670847075.092402565]: Execution completed:
- [ INFO] [1670847075.093634253]: Received event 'stop'
However, sometimes trying to execute an action fails and I get the following log
This is a log of an execution that gets preempted
- [ INFO] [1670847078.340055199]: Execution request received
- [ INFO] [1670847079.222370307]: Controller '/yumi/egm/leftarmvel_controller' successfully finished
- [ WARN] [1670847079.222634214]: Controller handle /yumi/egm/leftarmvel_controller reports status PREEMPTED
- [ INFO] [1670847079.222748379]: Completed trajectory execution with status PREEMPTED ...
- [ INFO] [1670847079.222950616]: Execution completed: PREEMPTED
- [ INFO] [1670847079.224686718]: Received event 'stop'
- [ WARN] [1670847079.233854460]: Utilization rate for 'channel_1' (using port number '6511') is 128.1% (desired commands are too aggressive and should be reduced)
Can someone please direct to why this problem is occurring and how to fix it?
Asked by ramyun on 2022-12-12 08:00:05 UTC
Comments
EGM is a real-time interface, which requires either very good tuning in case you want the IRC5 controller to perform interpolation of sparse trajectories/setpoints, or you have to make absolutely sure your trajectories take dynamics limits into account.
One thing to check would be to make sure you execute your stored trajectory from exactly the same starting position as when you recorded it.
Without making changes to the settings, you cannot expect to be able to execute just any trajectory from any position. Replaying a trajectory will not cause MoveIt to replan. So start point of your recording must correspond to current state of your robot.
Asked by gvdhoorn on 2022-12-12 09:21:09 UTC
Thank you for your comment, I do compare the two states (current and starting) every time I execute. I always get a difference similar to this one: [1.930791790338837e-06, 1.8642127632695349e-06, 0.0, 0.0, 1.930791790338837e-06, 0.0, 0.0, 0.0]
I have accepted any value below 10e-2 as an acceptable one. But this test does not cause/prevent an action to be fully executed or preempted Regardless of this test I keep getting the warning.
Asked by ramyun on 2022-12-12 11:16:43 UTC