Hey,I am running in to the same problem as Patrick was. I currently use ros_controller hardware controllers to communicate with the moveit side. The error I get is after I try to send a trajectory it fails:[ INFO] [1396539042.134775576]: Ready to take MoveGroup commands for group arm.[ INFO] [1396539042.134906929]: Looking around: no[ INFO] [1396539042.134953729]: Replanning: no[ INFO] [1396539114.846604287]: Combined planning and execution request received for MoveGroup action. Forwarding to planning and execution pipeline.[ WARN] [1396539114.846806676]: Execution of motions should always start at the robot's current state. Ignoring the state supplied as start state in the motion planning request[ INFO] [1396539114.846870269]: Planning attempt 1 of at most 1[ INFO] [1396539114.857525271]: No planner specified. Using default.[ INFO] [1396539114.857824327]: LBKPIECE1: Attempting to use default projection.[ INFO] [1396539114.861084064]: LBKPIECE1: Starting with 1 states[ INFO] [1396539115.027256042]: LBKPIECE1: Created 26 (13 start + 13 goal) states in 23 cells (12 start (12 on boundary) + 11 goal (11 on boundary))[ INFO] [1396539115.027331717]: Solution found in 0.169262 seconds[ INFO] [1396539115.031389858]: Path simplification took 0.003965 seconds[ERROR] [1396539116.919760884]: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 1.867523 seconds). Stopping trajectory.[ INFO] [1396539116.919829619]: MoveitSimpleControllerManager: Cancelling execution for atlasarm/arm_controller[ INFO] [1396539117.136201842]: ABORTED: Timeout reachedIs this a problem with Moveit, or my ros_controller hardware controllers. I tried taking Ioans advice and updating the multiplcative parameters in tracjectory_execution_manager.cpp, but I saw three vlaues at the top of file and didnt know which one to use , so I increased all three of them.static const ros::Duration DEFAULT_CONTROLLER_INFORMATION_VALIDITY_AGE(3.0);static const double DEFAULT_CONTROLLER_GOAL_DURATION_MARGIN = 3.5; // allow 0.5s more than the expected execution time before triggering a trajectory cancel (applied after scaling)static const double DEFAULT_CONTROLLER_GOAL_DURATION_SCALING = 3.1; // allow the execution of a trajectory to take more time than expected (scaled by a value > 1)Still the error occurred. Any help to solving this would be greatly appreciated .
Hey Adolfo,The trajectory duration time based on tome from start was
If trajectory execution is not finishing on time, it could be either a very small goal time tolerance (which you seem to have addressed), or unrealistic joint limits (larger max velocities and/or accelerations than what your robot can achieve). Have you checked that the latter make sense?. In the same vein, how long is the total trajectory duration sent to the controllers?. Since you are using ros_control, you can check this by inspecting the controller goal topic:
time_from_start:
secs: 1
nsecs: 796378092
On RViz side I got this
[ERROR] [1396882317.129955727]: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 2.476016 seconds). Stopping trajectory.
Should both times be the same?
I do not think this is the case, because when I use fake_joint_controllers I am able to plan&execute just fine.
It could also be that your robot has bad control and cannot track the desired trajectory.
On a side note I have attached a text file that shows a trajectory that I saw through the /goal ros topic, if you see anything that looks out of the ordinary please advice.
I am working with RVIZ, and not the actual hardware. However I have the capability of sending the position,velocity, and acceleration to my hardware, but I am still learning what commands the hardware requires in order to actually move the arm based on those three values the trajectory way point gives me. I only wanted to know why moveit was giving me the error because I wasnt sure if there was a problem with the trajectory that was created, or if my configuration information is invalid, or something else.As for the joint limits in example.txt I am able to confirm that the values being sent are within bounds of what I set in my urdf.
is the only way then to confirm whether the trajectory is going to work is be testing it on the actual hardware?
Well I figured out my problem about why the moveit trajectory kept failing to execute. I feel pretty dumb, but basically I forgot to load up the joint_state_controller from "ros_controller" meta package in my code. Once this was done the arm was able atleast execute the trajectory. Now the problem seems to be that I have some joints going out of bounds. Hopefully I should be able to fix that on my own. But again Adolfo thanks for the help I am really learning alot about ros_control and moveit!