-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Warning: Group 0 - Time difference between endTrajData (...) and startTrajData (...) is 0 or less.
#255
Comments
@ted-miller: would it not make sense to refuse to execute a trajectory which has this problem? We iterate over all trajectory points when processing the incoming goal, and this seems like it falls in the "malformed input trajectory" category. |
In this case, I don't see a problem with that trajectory. It just seems the last point is duplicated. If there were any positional difference in the last two points, then yeah this would be problem. So maybe only reject the trajectory if there's no difference, but there is a difference in position? |
I had a chance to investigate this today and I think I know what's happening. ROS JointTrajectory messages store durations with nanosecond precision, but MotoROS2 converts them to use millisecond precision. Sometimes the output from motion planning and time parameterization includes trajectory points that are separated by less than a millisecond, and that situation causes this check to fail because when cast to millisecond precision the points have the same timestamp. Here's a trajectory I logged that shows the issue:
In this case the input trajectory was valid (timestamps monotonically increasing) and can be executed by my mock hardware interface, so I think MotoROS2 should be able to ingest it without failing. It probably isn't possible for the robot to actually perform the precise requested motion since the jerk is too high, so maybe the solution is to do some sort of filtering. |
Thanks @schornakj.
I would indeed suggest we implement a filter of sorts, as it's not just the jerk: the resolution (in time) of the trajectory you show is just too high. Edit: could you say something about what sort of planner and/or time parameterisation you're using there? Getting to an acceleration of |
This is using Tesseract. The motion plan is generated using TrajOpt and parameterized by TOTG. I think part of the issue is it's not accounting for the robot's jerk limits. I'm still investigating if that's because I have my robot's description and planner configuration misconfigured or if it's just not taking in that limit to begin with. |
This could also have to do with a TOTG bug that has been fixed in MoveIt1&2, where TOTG returns velocities/accelerations above the limits. |
Following up after digging into this more -- this is all upstream of MotoROS2 in the motion planning and time parameterization part of my system, so it's not related to anything that would need to be fixed in this repo. Briefly, there are two different problems I had to address:
|
Just happened to notice it while working on something:
this could be a problem with the 'input' trajectory (ie: the submitted goal), but I haven't checked yet.
Trajectory generated by MoveIt.
The text was updated successfully, but these errors were encountered: