-
Notifications
You must be signed in to change notification settings - Fork 135
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
[ros2] Support for dynamic joint limits in MotionRequests + other features #144
base: ros2
Are you sure you want to change the base?
Changes from all commits
08f72ef
670d4a2
374cd3b
7fe1740
419f787
81735e6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
# Motion planning request to the hybrid planning architecture | ||
string planning_group | ||
trajectory_msgs/JointTrajectory trajectory | ||
moveit_msgs/MotionSequenceRequest motion_sequence | ||
Comment on lines
+3
to
4
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same comment about MotionSequenceRequest containing a JointTrajectory already, if you dig deep enough. |
||
--- | ||
# Result of the hybrid planning | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,6 +51,16 @@ float64 allowed_planning_time | |
float64 max_velocity_scaling_factor | ||
float64 max_acceleration_scaling_factor | ||
|
||
# New joint limits to use when running time-parameterization and smoothing. | ||
# Note, this does not replace the values in the robot model. | ||
# Set the 'has_limits' field to true for velocity, acceleration, and/or jerk | ||
# in order for that limit to be applied. Position limits are not supported. | ||
JointLimits[] joint_limits | ||
|
||
# If true, smoothing will be skipped when applying a smoothing adapter during | ||
# trajectory processing (if it is defined as a request adapter). | ||
bool skip_smoothing | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This makes me thing that a separate post processing config would make sense by now, there are already so many related fields. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmm, say TOTG and Ruckig are configured to do smoothing by default in Maybe it should be a vector of strings containing the plugins to skip, like this:
So to skip those two plugins, you would have: ["default_planner_request_adapters/AddTimeOptimalParameterization" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure we'd want to skip a time-parameterization adapter like TOTG. I think this is only relevant for smoothing (which occurs after the time-parameterization step) in which case I think ruckig is the only one currently. In any case though, if multiple smoothing adapters do exist down the road, then it's not too hard to use the "skip_smoothing" field when the adapter is called like I have done on my fork here for Ruckig https://github.com/mechwiz/moveit2/blob/mwiz/hp_fixes/moveit_ros/planning/planning_request_adapter_plugins/src/add_ruckig_traj_smoothing.cpp#L68 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. bumping this again. |
||
|
||
# Maximum cartesian speed for the given link. | ||
# If max_cartesian_speed <= 0 the trajectory is not modified. | ||
# These fields require the following planning request adapter: default_planner_request_adapters/LimitMaxCartesianLinkSpeed | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# A list of joint limits to modify | ||
JointLimits[] limits | ||
--- | ||
bool success |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really follow why this should be needed, but why not add a reference trajectory here? https://github.com/ros-planning/moveit_msgs/blob/master/msg/MotionPlanRequest.msg#L25
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, the moveit_msgs/MotionSequenceRequest contains a JointTrajectory if you dig deep enough.
MotionSequenceRequest-> MotionSequenceItem[] -> MotionPlanRequest-> GenericTrajectory[]-> JointTrajectory[]
I guess this new field is probably not needed :(
What do you think @henningkayser? Is it too hard to dig all the way down to JointTrajectory in the current message type?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm cool with either approach. I guess using what currently exists (even if you do need to dig down somewhat deep) makes the most sense so I can make that change
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm reconsidering this. I think having a dedicated "trajectory" field is more intuitive to the user to assign than having to dig deep in the motionplanrequest. This is for three reasons:
planning_group
so wouldn't be a big stretch to add the accompanying trajectory on the same level if applicable.All this said, if you think using the reference-trajectory field is best, I can run with that and make the necessary changes.