[multibody] Add CurvilinearJoint (#22196) #22350
Open
+1,584
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a
Joint
and correspondingMobilizer
which model a single-DoF joint along a path composed of circular arcs and line segments within a plane, implementing part of #22196Mobilizer is implemented as a thin wrapper around
PiecewiseConstantCurvatureTrajectory
. If the trajectory is a closed loop, theJoint
can be flagged as periodic, in which case the mobilized frame can "wrap" around back to the beginning of the trajectory. In this case, the generalized coordinateq
models the total distance traveled, with an intermediate functionCurvilinearMobilizer::calc_s
remapping to the trajectory's domain withdrake::math::wrap_to
.The PR is longer than the recommended range of 500-1000 lines. We did not elect to split the PR into two due to the coupled nature of unit testing
Joint
s andMobilizer
s.Some small touchups to
PiecewiseConstantCurvatureTrajectory
were included.This change is