robocup-software icon indicating copy to clipboard operation
robocup-software copied to clipboard

Fix curvature issues with Bezier path and re-enable curvature limiting

Open kylestach opened this issue 5 years ago • 1 comments

Description

Currently, our path smoothing code places Bezier waypoints at the endpoints when you have zero initial/final velocity. This creates numerical conditioning issues, which make curvature infinite near the endpoints in these case.

In general, we should switch to a path smoothing algorithm that explicitly considers curvature (or some related measure). For example, it should be pretty simple to use Hermite curves and place "velocity" (d/ds) values such that the sum of squared "acceleration" (d^2/ds^2) at curve endpoints is minimized.

This is currently reflected in BezierPathTest.cpp, in the DISABLED tests.

Requirements

  • DISABLED tests from the Bezier path test are re-enabled and passing.
  • In velocity profiling code, curvature limiting is re-enabled (VelocityProfiling.cpp)

kylestach avatar Jun 29 '20 01:06 kylestach

Fixed in comp 2021 (#1709)

kylestach avatar Jul 06 '21 01:07 kylestach