[DRAFT] New geomteric planner package for viapoint based spline generators#6083
[DRAFT] New geomteric planner package for viapoint based spline generators#6083sbadamikar-research wants to merge 6 commits intoros-navigation:mainfrom
Conversation
There was a problem hiding this comment.
I think there are some test suites for exercising the planners, can you add your new planners to these?
| @@ -0,0 +1,56 @@ | |||
| // Copyright (c) 2025 Nav2 Contributors | |||
There was a problem hiding this comment.
Update the copyright please
|
OK - before I give this a look over, can you update the description to point to the ticket & add some consequential documentation about what this does, what algorithms you chose to implement, trade offs, and use-case intentions? This is all kind of out of context for not just myself but future readers. This is alot of code to parse without context of understanding which you chose, why, why not others, performance, and use cases. This just needs to be hpp for |
|
@SteveMacenski Absolutely. This is just V(-1) to keep you in the loop if you'd like to have a look. There is a lot of work to be done on my end. I'll update you once I have something objectively reviewable. |
|
Thanks -- but in general I'm liking the starting point! My only high-level armchair suggestion is to see if there's alot of redundancy between these planner implementations. Maybe some utilities can be abstracted and/or making this into 1 planner that has run-time selection of which geometric algorithm to use. It looks from my last glance this morning you started on that path. If you create abstractions for i.e. the only custom part of the bezier plugin is: if you make a Then the plugin can hold a I'd also suggest adding in a straight-line and Dubins/Reed-Shepp/SE2 model for shits and giggles. OMPL gives you Dubins/Reed-Shepp/SE2 for free and we already have a dependency on it for Smac Planner (also with examples of how to work with those 3) so its an easy-add. Point Claude at the Analytic Expansion of Smac Planner and I'm sure it'll just do it for you. |
…rt of API The ComputePlanToPose action now incorporates a list of stamped poses as intermediate viapoints that are forwarded to the planner plugin. Signed-off-by: Sanchit B <researchbadamikar@gmail.com>
Signed-off-by: Sanchit B <researchbadamikar@gmail.com>
Pass non-empty viapoints vectors in planner unit tests to exercise the RCLCPP_WARN branch in createPlan() for planners that ignore viapoints (smac_2d, smac_hybrid, smac_lattice, theta_star, navfn). Signed-off-by: Sanchit B <researchbadamikar@gmail.com>
… InvalidViapoints end-to-end Add two new planner exception types, corresponding error codes in both ComputePathToPose and ComputePathThroughPoses actions, and catch blocks in PlannerServer for both action handlers.
extractYaw, makePose, poseDistance, validateStartGoal, isStateValid, and checkPathCollisions; used by all three planners.
Internal G1 clothoid solver using Gauss-Legendre Fresnel integrals and Newton-Raphson iteration; replaces external Clothoids library dependency. Supports 0+ viapoints; throws NoValidPathCouldBeFound on collision. Natural cubic spline parameterised by ROS timestamps; requires >= 1 viapoint (InsufficientViapoints) and valid non-zero monotonic stamps (InvalidViapoints); path sampled at costmap resolution. de Casteljau evaluation of arbitrary-degree Bezier curves; viapoints serve as control points; requires >= 1 viapoint (InsufficientViapoints); path sampled at costmap resolution.
fb453d0 to
7f47928
Compare
Basic Info
Description of contribution in a few bullet points
Description of documentation updates required from your changes
Description of how this change was tested
Future work that may be required in bullet points
For Maintainers:
backport-*.