Feature: New POLYLINE command in Pilz planner for space trajectory generation#3610
Conversation
due to derivatives discontinuouties normal composite fail to Pose IK
|
May you review this ? |
EzraBrooks
left a comment
There was a problem hiding this comment.
Just one comment otherwise LGTM.
moveit_setup_assistant/moveit_setup_framework/src/srdf_config.cpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
I'm not sure "free" is the right title. Suggesting some other names:
- variable blend -->
variableBlendFromWaypoints() - motion sequence -->
sequenceFromWaypoints(). This is my favorite.
A free space planner typically means something like A* that is free to take any route to the goal.
AndyZe
left a comment
There was a problem hiding this comment.
Your triangle example seems to violate this? Did something change:
The planner cannot generate trajectories that contain three or more consecutive colinear waypoints (e.g., straight lines)
the triangle example uses only triangle's vertices. what I meant there by "straight lines" is pure straight line. |
Right, FREE is not appropriate. |
|
I'm not active on here these days, but I saw this pop up on my feed. I wanted to point out that this feature seems to do the same thing as https://moveit.picknik.ai/main/doc/how_to_guides/pilz_industrial_motion_planner/pilz_industrial_motion_planner.html#sequence-of-multiple-segments -- so I would recommend 2 things for the author and reviewers:
Hope this helps more so than adds noise! |
@sea-bass I tested both methods using points sampled from the ellipse: with the number of points in the planned joint_trajectory with the same max_cartesian_speed. I got: # This is with LIN commands and Sequence
[INFO] [1763959333.823367295] [cartesian_planning]: TrajPoints 408
# This is with the new Command
[INFO] [1763960677.326358520] [commands_loader]: TrajPoints : 29But Why 200 ellipse waypoints to 29 joint trajectory points???
|
|
@sea-bass I have changed the name to If possible, I would like to rename it to |
moveit_planners/pilz_industrial_motion_planner/src/planning_context_loader_polyline.cpp
Show resolved
Hide resolved
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3610 +/- ##
==========================================
- Coverage 46.19% 46.12% -0.06%
==========================================
Files 720 726 +6
Lines 59181 59370 +189
Branches 7594 7614 +20
==========================================
+ Hits 27333 27381 +48
- Misses 31681 31822 +141
Partials 167 167 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Looks like you're failing CI - it would also be nice to get some code coverage here. a 0% covered diff makes me anxious! |
The failure is due to about code coverage (codecov) I really don't understand what it is!! |
edit algorithms loader to include the 4th POLYLINE COMMAND
|
Mr @EzraBrooks I have added two tests for max_cartesian_speed in 0120591 also, remove unrelated fix 👇 introduced in #3604 |
|
after I updated the branch, the CI / hamble failed due to something not related to pilz ?! |
|
@EzraBrooks |
|
what about @MatthijsBurgh's comment regarding |
|
@EzraBrooks |
Description
This pull request adds a new Pilz Industrial Planner command:
POLYLINE, which enables planning Cartesian polyline-space trajectories using waypoints.Added Classes
The workflow of these classes follows the same structure as the existing
CIRCandLINcommands.TrajectoryGeneratorPolylineMain class responsible for receiving the
MotionPlanRequestand setting up the polyline-space path.PathPolylineGeneratorHandles the generation of polyline paths using
KDL::Path_RoundedComposite.This class provides:
polylineFromWaypoints()– Adds and validates waypoints.computeBlendRadius()– Computes the maximum feasible rounding radius, scaled by thesmoothnessfactor.checkConsecutiveColinearWaypoints()– Detects and throws an error if three consecutive colinear points are found (handled insetPolylinePath()).Limitations
This is a limitation of
KDL::Path_RoundedComposite.When such a case is detected, an error is thrown and the plan is rejected.
Usage Example
An example of how to use the
POLYLINEcommand withMotionSequenceItem:Tests
triangles with different smoothness:
points generated from external parametric curve:
Checklist