Add omni (SE2) analytic expansion to SmacPlannerLattice#5965
Add omni (SE2) analytic expansion to SmacPlannerLattice#5965SteveMacenski merged 6 commits intoros-navigation:mainfrom
Conversation
|
@ManMan88 can you please properly fill in the PR template? |
|
Anything else we should update to optimize for omni platforms? I think maybe this needs to be updated at least: & https://github.com/ManMan88/navigation2/blob/09d46dec9ae0ce662f7ea7fdbfcd78004e097b4d/nav2_smac_planner/src/analytic_expansion.cpp#L61-L62Seems to me like this may not be functional (?) |
Codecov Report❌ Patch coverage is
... and 13 files with indirect coverage changes 🚀 New features to boost your workflow:
|
|
Sorry about the missing faulty PR format, I'll change it to the correct format based on the template. |
mini-1235
left a comment
There was a problem hiding this comment.
Could you also attach some screenshots / videos to help us better understand how the results differ after your changes?
|
I'm going to let @mini-1235 do the first few reviews to catch the big stuff but I wanted to thank you for taking this one. This is a much more elegant method than I had in mind and works much better. I'd love for you to use some of those before/after in the docs.nav2.org migration guide to highlight this. This is a great contribution 💯 |
There was a problem hiding this comment.
I left a few comments on items that need to be reverted. Basically, the _motion_model is hardcoded to STATE_LATTICE, so it can never be OMNI. But otherwise the changes looks good to me!
Once this PR is merged, feel free to open a backport PR to jazzy
|
@ManMan88 any updates? I'd love to get this in! |
|
Sorry, I've been quite busy. |
|
@mini-1235 I agree with your comments. Should I also add a similar fix for the jazzy branch? |
Sure! Also, can you add to the migration guide on docs.nav2.org this addition for omni support? Pick one of your before and after pictures for a side-by-side illustration I think would be useful. Please sign off the commit with DCO. Check that failed job for how-to. Finally - any other additions for optimal OMNI support or does this button that up? |
I consulted opus 4.6, it found these issues:
So I'll apply a fix for these as well. |
|
This pull request is in conflict. Could you fix it @ManMan88? |
767594b to
94c721b
Compare
When lattice file specifies motion_model: omni, use SE2StateSpace for analytic expansion instead of Dubins/Reeds-Shepp curves. This produces straight-line paths for holonomic robots instead of arc-based paths with unnecessary rotations. Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]>
Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]>
Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]>
Set smoother to holonomic mode when lattice metadata indicates omni, avoiding incorrect Dubins boundary conditions on holonomic paths. Disable allow_reverse_expansion for omni robots with a warning, as the concept of reverse is meaningless for holonomic motion. Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]>
94c721b to
46cb204
Compare
|
I updated the docs in this PR: ros-navigation/docs.nav2.org#891 |
|
I'll take a look now. Can you also add in a bit of the missing test coverage for the omni case in configuration / parameters to cover the lines added? https://app.codecov.io/gh/ros-navigation/navigation2/pull/5965?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=checks&utm_campaign=pr+comments&utm_term=ros-navigation These seem relatively easy to add |
|
@ManMan88 can you just address the small testing gaps so we can merge this? :-) |
Signed-off-by: Ron Danon <[email protected]>
|
I'll try to fix it again tomorrow |
Signed-off-by: Ron Danon <[email protected]>
9d1c4e3 to
57e7e14
Compare
…on#5965) * Add omni analytic expansion support to SmacPlannerLattice When lattice file specifies motion_model: omni, use SE2StateSpace for analytic expansion instead of Dubins/Reeds-Shepp curves. This produces straight-line paths for holonomic robots instead of arc-based paths with unnecessary rotations. Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]> * Add OMNI to motion model guards in SmacPlannerLattice Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]> * Revert OMNI motion model guards that are unreachable Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]> * Fix smoother and reverse expansion for OMNI lattice robots Set smoother to holonomic mode when lattice metadata indicates omni, avoiding incorrect Dubins boundary conditions on holonomic paths. Disable allow_reverse_expansion for omni robots with a warning, as the concept of reverse is meaningless for holonomic motion. Fixes ros-navigation#2683 Related: ros-navigation#5231, ros-navigation#4262 Signed-off-by: Ron Danon <[email protected]> * Add OMNI test coverage for SmacPlannerLattice configure and reconfigure Signed-off-by: Ron Danon <[email protected]> * Fix OMNI test to directly exercise LatticeMotionTable::initMotionModel Signed-off-by: Ron Danon <[email protected]> --------- Signed-off-by: Ron Danon <[email protected]>
Basic Info
Description of contribution in a few bullet points
motion_model: "omni"from the lattice metadata to selectSE2StateSpaceinstead, which produces straight line paths with linear heading interpolationMotionModel::OMNIenum value with string conversion supportrefineAnalyticPath()for omni since SE2 paths don't depend on turning radiusDescription of documentation updates required from your changes
OMNImotion model enum value, maybe add a note in the SmacPlannerLattice configuration docsmotion_modelfield in the lattice primitives fileDescription of how this change was tested
test_omni_selects_se2_state_spaceandtest_non_omni_selects_reeds_sheppFuture work that may be required in bullet points
precomputeDistanceHeuristiclives innode_lattice.cppand analytic refinement is inline)