Robotics StackExchange | Archived questions

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

However, sometimes trying to execute an action fails and I get the following log

This is a log of an execution that gets preempted

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

Answers