Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I was able to figure out what the system was looking for after a lot of thrashing. Man I wish all the ROS documentation wasn't quite so scattered because it makes it amazingly frustrating to figure out what is going on.

The error listed above (Controller is taking too long to execute trajectory) is kind of a red herring in that it's being reported by the trajectory_execution_manager. It seems like that's the node that's important in all of this but it really has nothing to do with it other than timing the operation out. It's buried down in a lot of abstraction and if there was something that builds the relationships in documentation I couldn't put it together. I think it's all layered behind some Action and Goal handles that I never could really resolve across all the packages. Regardless, I ended up spending more time upping my ROS logging fu using rqt_console and basically searching through packages for output strings.

That lead me to the joint_trajectory_action node and I was able to determine after code inspection that it was using theconstraints/goal_threshold parameter to window the end position of the controller. Setting this param in the parameter server to a value that fit our robot allowed it to finish properly.

Now that type of parameter is not all that unusual for a motion control system and I was looking for something like that early on but unfortunately there isn't any Wiki page for the ROS-i industrial_robot_client that discusses the joint_trajectory_action node that I found. The parameters described at the ROS Wiki only relate to the PR2 apparently, but at the time I didn't make that connection. My recollection was that all of the industrial_robot_client code was ported over from ROS code that originated from the PR2. But I'm not going to try to find that which gave me that impression again.

So in the end it appears that there are 2 things that the system (the ROS-i moveit package format anyway) uses to determine that the trajectory is done or not. A total trajectory time, and a window for the end position of the joints.