# group.execute always returns: Controller is taking too long to execute trajectory?

Hi guys,

I am using moveit to control a gazebo manipulator based on https://github.com/kleinma/ma1400_sim . However I changed the controller interface from position_controllers/JointPositioController to position_controllers/JointGroupPositionController (as recommended in https://answers.ros.org/question/3066... )

However, all my trajectories I execute fail on a timeout:

In moto_ros_interface.cpp the Robot status is set to not in motion at the end of the trajSubCB callback. Is this what moveit determines the succes of the trajectory on? I looked at moveits source code but got a bit confused on how the succes of a trajectory is determined.

// Set RobotStatus to not moving

robotStatus_.in_motion.val = 0;

robotStatusPub_.publish(robotStatus_);

If I set the executing duration monitoring to false (see link below) the group.execute simply does not return since as far as moveit thinks the Trajectory is never finished.

edit retag close merge delete

Is this what moveit determines the succes of the trajectory on?

No. Please don't take what you see in moto_ros_interface.cpp as indicative of typical setups. It's a rather hack-ish implementation made by "just a user", like you and I.

That node mixes MotoROS driver internals with ROS concepts.

( 2018-10-29 02:54:27 -0600 )edit

Sort by » oldest newest most voted

If all you did was change the controller loaded, then that's probably the cause.

The package you use requires a very specific setup of controllers and topics and uses those to (somewhat) simulate how MotoROS would work with a real robot. If you change the controller it's very likely some topics are now missing and that is what is causing the rest of the setup not to work.

If you don't need that, I would not bother with it and just use a regular gazebo_ros_control configuration. From your other question (#q306964) I have the impression that you're only really after kinematic visualisation / trajectory play-out. If that is the case then using Gazebo for this does not make much sense to me: it's a huge CPU hog and you're not using any of it then.

In moto_ros_interface.cpp the Robot status is set to not in motion at the end of the trajSubCB callback. Is this what moveit determines the succes of the trajectory on? I looked at moveits source code but got a bit confused on how the succes of a trajectory is determined.

As I wrote in my comment: please don't consider moto_ros_interface.cpp as an example or how things should be done. It's a bit of a hack to get MotoROS-like behaviour out of a regular Gazebo+gazebo_ros_control setup. If you can clarify what you really want to do then perhaps we can see how that could be accomplished.

more