Repository navigation
Wrap yaw error when checking Reeds-Shepp goal pose - #1422
huxiaoyi-ovo wants to merge 1 commit into
Conversation
53cea2b to
4d884aa
Compare
|
The Reeds-Shepp fix by huxiaoyi-ovo in this PR addresses the circular goal-heading boundary. The same raw-yaw comparison remains in these additional callsites on current master:
A separate local support patch and tests are inspectable here: The added regressions cover ±π boundaries, full-turn offsets and non-equivalent controls. On unchanged cdd0cc8, the full native suite reports 24 new regression failures and 169 passes; seventeen failures are in the uncovered callsites above. The separate support-branch patch applies the existing utils.angle.angle_mod consistently to all five heading checks and gives 193 passes with warnings treated as errors. This 193-pass result is for that separate local patch, not an executed copy of this PR author's patch. Reproduction from the support branch with Python 3.13.x: install requirements/requirements.txt, then run bash runtests.sh. The observed environment was Python 3.13.16 with the repository-pinned dependencies. The closed-loop terminal test first runs the native canonical controller, then reuses its measured trajectory to isolate the heading predicate. It does not establish arbitrary unwrapped reference-course behavior. Other CI platforms/versions were not run locally. |
|
Thanks for identifying the additional call sites and for sharing the independent regression tests. I verified the four remaining heading comparisons and opened #1457 to address them with the existing I kept this PR (#1422) limited to the Reeds-Shepp fix, so the two changes can be reviewed independently. The new patch passed the full Linux, macOS, and Windows Python 3.14 test suites on my fork (178 passed on each), as well as CodeQL. |
Summary
-pi/+piwraparound correctlyProblem
RRTStarReedsShepp.search_best_goal_node()currently checks the goal yaw with a direct subtraction:Angles are periodic, so poses near opposite sides of the
-pi/+pirepresentation boundary can be physically very close while their raw numeric difference is almost2*pi.For example,
pi - 0.005and-pi + 0.005differ by only0.01 radon the circle, which is within the planner's 1-degree goal threshold, but the current check sees a difference of about6.273 radand rejects the node.Fix
Compute the wrapped signed angle using
atan2(sin(diff), cos(diff))before applying the existing threshold.Tests
Added
test_goal_yaw_wraparound, which places the start and goal at the same position with headings straddling the-pi/+piboundary and verifies that the start node is accepted as satisfying the goal yaw threshold.