This release brings critical fixes to ChoreoLib in all three languages and usability improvements in the UI. We also now build the UI and CLI for Linux aarch64.
New Tips and Tricks
- Disable or delete the default field border Keep In Rect constraint on any paths that do not need it. Especially on simpler paths, it has been shown to significantly affect generation time. In this update, the constraint is disabled by default.
ChoreoLib Python
BREAKING: .chor files need to be saved in
[project root]/deploy/choreo
now. Docs here have been updated to match.
- Fixed a bug with
load_trajectory()
requiring absolute paths. After doing the above file move, use the trajectory name alone, such aschoreo.load_trajectory("testPath")
to load[project root]/deploy/choreo/testPath.traj
.
ChoreoLib C++
- Fixed several compilation errors, so the C++ library is usable now.
ChoreoLib Java
- Fixed behavior of
AutoFactory.trajectoryCmd(...)
. It is now a command that requires the drivetrain, so can be used in sequence withresetOdometry
as intended. - Fixed an issue with the
AutoTrajectory.done()
Trigger where it would sometimes not switch true at the end of the trajectory, especially when running the trajectory a second time.
Choreo GUI
- Fixed a bug where a zero-max-angular-velocity constraint between a pose and translation waypoint would fail in a way that required manual correction beyond undoing that setup.
- Fixed an issue with two identical waypoints in sequence, which would cause an error about "nonfinite cost or constraints". Both waypoints now constrain the same sample in the path. This situation is not recommended, but is intended to at least generate if the constraints are compatible.
- Fixed an issue with variables that depend on other variables. This would cause a UI crash if the dependency variable was deleted. Now it shows the depending variable as an invalid input.
- Variables in the variable panel are now visually sorted alphabetically, but still separated between standalone variables and pose variables.
- Fixed an issue with the icons in the path list, where trajectories would be incorrectly shown as out-of-date upon opening a project.
- Added a Generate All Outdated button above of the path list, next to the Add Path and Duplicate Path buttons.
- The Keep In Rect constraint for the field borders is disabled in new paths. For paths that do not get near the wall, the constraint is an unnecessary performance hit.
File Format
No breaking changes. However, the .chor variables section is now always saved in alphabetical order by variable name. Previously it was nondeterministic and changed almost every time a variable was modified. This change should reduce lines changed in source control diffs.
What's Changed
- Upgrade Rust and Node dependencies by @calcmogul in #1137
- [trajoptlib] Upgrade Sleipnir for faster autodiff and less memory usage by @calcmogul in #1136
- [trajoptlib] Upgrade Sleipnir for more efficient sparsity logging by @calcmogul in #1138
- [choreolib] Use getDeployDirectory() prefix in Python by @calcmogul in #1139
- [trajoptlib] Upgrade Sleipnir to shrink the C++20 patch by @calcmogul in #1140
- Update docs for fix to Python choreo directory by @shueja in #1141
- [trajoptlib] Upgrade to fmt 11.1.2 by @calcmogul in #1143
- Fix linear acceleration gradient color by @calcmogul in #1144
- [trajoptlib] Upgrade Sleipnir for second-order correction diagnostics by @calcmogul in #1145
- [choreolib] Fix JDK 21 Javadoc errors by @calcmogul in #1148
- [choreolib] Fix compilation error in Trajectory::GetTotalTime() by @calcmogul in #1149
- [choreo] Fix generation failure for zero angular velocity constraint between pose and translation waypoints by @bruingineer in #1150
- [choreolib] Set default year for sample flip by @calcmogul in #1156
- [choreolib] fix
trajectoryCmd
by @oh-yes-0-fps in #1160 - [choreolib] fixes an issue with rerun trajectories not triggering done correctly by @oh-yes-0-fps in #1163
- Expressions referencing missing variables now evaluate to undefined. by @shueja in #1165
- [ui] Add a "Generate All Outdated" button by @shueja in #1151
- Build for Linux aarch64 by @calcmogul in #1158
- Sort variables alphabetically by @shueja in #1154
- [ui] Update staleness indicator when deserializing paths by @shueja in #1152
- Move pose variable panel dropdown to right side to clarify purpose by @shueja in #1166
- [choreo] In-rect-off-by-default by @oh-yes-0-fps in #1168
- [choreo] Sorted-vars by @oh-yes-0-fps in #1167
- [trajoptlib] [choreolib] Fix bugs preventing 0 samples between waypoints by @shueja in #1171
- Update versions to v2025.0.2 by @shueja in #1170
- choreolib/py: Add PEP 561 marker by @auscompgeek in #1172
- choreolib/py: Avoid wpilib import at build time by @auscompgeek in #1173
- Fix artifact names of aarch64 artifacts by @shueja in #1176
New Contributors
- @auscompgeek made their first contribution in #1172
Full Changelog: v2025.0.1...v2025.0.2