Skip to content

Choreo v2024.2.3

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 19 Jun 06:36
· 269 commits to main since this release
bb79db0

Choreo 2024.2.3

A Note on Support/Future Plans

This will be the last major feature update compatible with existing Choreo robot projects, but future bugfix updates to this version may occur if necessary. Please continue to report issues with 2024.2.3 on our bug tracker, but note that Choreo development will be shifting to features for 2025.

New Features in 2024.2.3

Solver Tolerance Relaxation: A change to the success conditions for generation has been made that relaxes the tolerance for feasibility/optimality, which was multiple orders of magnitude stricter than is sensible for the FRC usecase.

By relaxing this tolerance, we allow the optimizer to end earlier, and succeed in more conditions, without human-noticeable impact to the path.

Path Gradients: To present more information about the generated path, the trajectory line now has several options for a gradient along its length, mapped to various properties of the trajectory. See docs for details.
image

Solver Progress Animation: Choreo will now show intermediate states of the optimizer during generation. This is intended to give more visibility into what the optimizer is doing for a particular problem, and how it iteratively refines the initial guess in general.

Recording.2024-06-18.233111.mp4

Max Velocity Constraint Path Detail Fix: The Maximum Velocity constraint previously caused generation issues when set too low, because Choreo did not provide enough path detail for the slower section. This constraint has now been incorporated into the path detail counter to fix this issue.

Constraints

Point-At Constraint: This new constraint on segments or waypoints constrains the robot heading to face the given point, within the specified tolerance. Note that this constraint requires all waypoints in its range to be heading-unconstrained (i.e. translation waypoints), and works best when the robot enters the range already close to the desired angle. Additionally, rotating the initial-guess heading box of the translation waypoints towards the desired angle helps with optimization. This constraint is a feature we will continue refining for 2025, to require less manual work.

image

Maximum Angular Velocity Magnitude Constraint has been added.

Zero Velocity/Zero Angular Velocity constraints have been removed, and projects will be automatically upgraded to replace them with Max Velocity/Max Angular Velocity set to 0. The Stop Point constraint remains, and still has special behavior regarding trajectory splitting. A Max Velocity = 0 and Max Angular Velocity = 0 on a waypoint will not be considered a split point. NOTE: Maximum Velocity = 0 on a segment is now possible, but will be infeasible.

Quality-of-Life

New Keyboard Shortcuts: Ctrl/Cmd-O for File Open, and Escape to unselect the current top bar and sidebar selections.
Keyboard Shortcuts Doc Panel: A list of all the shortcuts and gestures such as pan/zoom/etc is now in Document Settings -> Controls.
Right-Click Waypoint Add Menu: Right-clicking on the field now brings up a waypoint type selector. Clicking a type adds that waypoint where you right-clicked. This does not modify your navbar selection, and works when a waypoint type is not selected in the navbar.
image

Waypoint Number on Waypoint Config Panel: The waypoint config panel is now marked with the currently selected waypoint number.
Selected Waypoint Draws on Top: In areas where several waypoints are closely positioned, the selected one will now draw on top, so it can be clicked and dragged.
Heading Wraparound Bug Fix: A bug that could cause the robot to take the "long way" when heading wrapping has been fixed.

ChoreoLib

(C++/Java) Removed ChoreoTrajectoryState::AsArray()/ChoreoTrajectoryState.asArray() due to the increased complexity of the ChoreoTrajectoryState structure.

(C++/Java) Exposed module force vectors from TrajoptLib: ChoreoTrajectoryState has two new fields moduleForcesX and moduleForcesY, each an array of four doubles. These arrays represent the X and Y components of the module force vectors in Newtons, in field-space. Forces appear in the following order: [FL, FR, BL, BR]. These are not used in the provided ChoreoLib path follower, but are now available for teams to incorporate in custom followers, especially to take advantage of torque control on drive motors.

.traj Spec Changes

  • Added moduleForcesX and moduleForcesY, two arrays of four doubles, to the trajectory state. See the ChoreoLib section above for the significance of these. These additions should not break parsing except in libraries which error on JSON fields which do not match to object fields.

What's Changed

New Contributors

Full Changelog: v2024.2.2...v2024.2.3