Releases: SleipnirGroup/Choreo
Choreo v2025.0.0-beta-2
This update fixes a critical issue with ChoreoLib Java, leading to trajectories unable to load.
It also removes a useless item that was being written to files but was unused, and should not have been in the v2025.0.0 spec.
FYI: Documentation improvement is underway and is visible in the below changelog, but the published documentation is not tied to releases.
What's Changed
- [docs] Upgrade to Doxygen Awesome 2.3.4 by @calcmogul in #809
- Run wpiformat on all files by @calcmogul in #810
- Fix typos by @spacey-sooty in #805
- [choreolib] Fix issue with using reader twice in Java project file by @shueja in #815
- Fix typos by @calcmogul in #814
- Remove forcesAvailable item accidentally included in beta1 by @shueja in #817
- [docs] Fix nav bar and update ChoreoLib usage docs by @calcmogul in #813
- Change version to 2025.0.0-beta-2 by @shueja in #818
Full Changelog: v2025.0.0-beta-1...v2025.0.0-beta-2
Choreo v2025.0.0-beta-1
Choreo 2025
The SleipnirGroup team of developers is ready to release the open beta of Choreo for the 2025 season.
Thank you to all the teams that used Choreo in 2024 and shared your needs, struggles, and suggestions for improvement. Our work for 2025 has focused on many issues and enhancements.
General
Math Expressions with Variable and Unit Support:
This feature addresses a few struggles in 2024 Choreo:
- Default units (SI, radians) being inflexible, unintuitive, and forcing the user to convert by hand.
- No good way to define field constants or waypoint locations that are shared among all trajectories.
- No good way to define robot configuration in terms of other constants (i.e. bumper size and module placement in terms of frame size.
To improve user experience, we have replaced almost every number input in the application with mathematical expression inputs, powered by mathJS. MathJS has full dimensional analysis awareness, allowing inputs to be specified in whichever unit you like, and rejecting inputs that are not dimensionally correct. Choreo will also save the expression as you typed it, instead of evaluating and discarding it at the moment of submission.
Furthermore, Choreo allows you to define a project-wide set of variables that can be substituted into any appropriate expression in the project. Variables can be defined as single numbers with a variety of dimensions, but Choreo also has aggregate variables to organize the x, y, and heading components of an important pose.
The expression and variable features open up a wide range of capabilities, similar to parametric sketches in a CAD program. We’re excited to see how teams use these new tools.
Robot Config
Support for non-centered/non-rectangular modules
Choreo 2024 asked for a wheelbase, track width, bumper length, and bumper width. This described many robots, but especially in 2024, many robots had intakes that made the bumpers not centered at the center of rotation, or they had module placement that was not centered or even rectangular. Choreo 2025 makes robot configuration more flexible, permitting and honoring these configurations.
NOTE: due to path mirroring, Choreo 2025 still only supports module and bumper dimensions that are symmetric across the robot x-axis (the front-back line, meaning left-right mirror symmetry). In robot configuration, users only edit the left side of the robot dimensions.
The user interface design for robot configuration is an area of planned improvement.
Generation
Command-Line Generation
Choreo now ships with a command-line tool that takes in a .chor file and one or more associated .traj, and generates the .traj files, modifying them in-place. Further details will be described in the docs.
Fix Inability to Cancel Generation
This issue was inherent to the architecture of Choreo, but through the architecture changes related to command-line generation, we were able to make generation individually cancelable at any point.
(Proper) Continuous Heading Support
Choreo 2025 modifies the internal logic of the solver to handle robot rotation as a unit vector instead of an angle number. This allows Choreo to take the fastest rotational movement, even if it would previously wrap -pi to pi. Therefore, heading initial guesses are not as important to manually tweak.
Waypoints
Heading Initial Guess
Choreo 2025 removes the ability to set the heading initial guess on translation and empty waypoints. Due to the above improvements to the solver, and other logic implemented to automatically calculate heading initial guesses, the feature was unnecessary, counterproductive, and cluttered the UI.
Remove Initial Guess Points
Choreo 2025 removes the (non-constrainable) initial guess point waypoint type and subsumes its functionality into the Empty Waypoint, whose location can be constrained using Keep-In or Keep-Out Zones. The Empty Waypoint can be the endpoint of a path, but not the start point.
Individual Sample Override
Instead of a default sample override being applied to an entire path, with the same number of samples for each waypoint, Choreo 2025 has a checkbox on each waypoint to specify an individual override between that waypoint and the next.
Constraints
Interactive Constraint Overlay
The user interface for adding and editing constraints has been revised. Previously, a click target for adding a constraint was at every waypoint and the midpoint of every segment. Now, click one waypoint, then click the other, without the UI clutter.
When a constraint is selected, the field highlights the range it applies to. For constraints with additional field points/lines to modify (currently Point At and Keep In/Out Zones), the field will also display draggable field objects tied to the constraint.
The display also shows when hovering over the constraint in the sidebar.
Keep-In Zones/Field Border Constraint
Choreo 2025 adds a new type of constraint, which is a zone (currently rectangle or circle) that the robot must stay entirely inside, including the bumpers, for the duration of the constraint scope. For the first beta, a Keep-In Rectangle the size of the field will be part of new paths. If and when arbitrary (convex) polygons are supported as Keep-In zones, functionality will be added to add a polygon that better fits the field border.
Obstacles (Keep-Out Zones) as Constraints
Obstacles have been changed to be part of the constraints system and renamed to Keep-Out zones for consistency. While the solver still struggles in some obstacle setups, the ability to apply the constraint to only a section of the path makes the problem more feasible.
Toggleable Constraints
Choreo 2025 adds a checkbox to each constraint that allows the constraint to be disabled without being deleted. This can be useful for comparing the effects of individual constraints.
Generation Pre-checks/Feedback
Choreo 2025 expands the additional checks on the trajectory, performed before starting the solver, which are intended to identify conflicting constraints and other causes of infeasibility. New checks include:
- Verifying that Pose waypoints under Point-At constraints are compliant
- Verifying that 0 Max Angular Velocity constraints do not conflict with Pose waypoints with differing headings
- More to come!
Path Splitting
Splitting Paths
Splitting paths was previously done through a project-wide switch that made every Stop Point constraint be a path splitting point. In 2025, the Stop Point constraint is entirely separate from splitting. Every waypoint except for path endpoints has a checkbox which can be used to mark a waypoint as a split point. NOTE: Choreo does not enforce stopping at split points, but for most usage, adding a Stop Point constraint is still advised.
Artifacts
The releases now have many more artifacts than last year.
We support Windows arm64 and x86_64, MacOS aarch64 and x86_64, and Linux x86_64.
Users should normally be downloading the -setup installers for Windows, the .dmg for MacOS, and the AppImage, .deb for Debian and Ubuntu, or .rpm for Fedora.
For each platform, there is a separate executable for command-line generation. We hope to find a way to put the command-line functionality into the main Choreo app.
Finally, we have standalone executables. These are generated for potential bundling with WPILib 2025 and are not the recommended way of installing Choreo.
Choreolib
ChoreoLib 2025 Beta is compatible with WPILib 2024.
Python
ChoreoLib 2025 officially supports Python at PyPI (sleipnirgroup-choreolib). This is new for 2025.
C++/Java
For C++ and Java, the vendordep link is specific ...
Choreo v2025.0.0-alpha-3
[ci] Fix release executable upload (#798)
Choreo v2024.2.3
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.
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.
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.
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 double
s. 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
andmoduleForcesY
, 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
- Update supported systems table in docs by @calcmogul in #417
- [build] Replace deprecated eslint plugin by @spacey-sooty in #420
- Add Git and version numbers to build requirements by @calcmogul in #425
- Feature: Path Gradient by @Awesomeplayer165 in #419
- Fix app name in task manager by @bruingineer in #430
- Upgrade TrajoptLib to require lower minimum CMake version by @calcmogul in #431
- Unselect sidebar and navbar items with escape key by @calcmogul in #429
- Make control interval count heuristic account for max velocity constraint by @bruingineer in #426
- Add PointAt constraint by @bruingineer in #427
- Feature: Add Open File Shortcut by @Awesomeplayer165 in #435
- Codebase: Refactor from VisibilityPanel to ViewOptionsPanel by @Awesomeplayer165 in #437
- Update TrajoptLib to fix Sleipnir memory leak by @calcmogul in #440
- Condense Actions .yml scripts by @calcmogul in #441
- Docs: View Options Panel by @Awesomeplayer165 in #436
- Bugfix: Angular Velocity Gradient by @Awesomeplayer165 in #433
- Document Path Gradient API by @Awesomeplayer165 in #434
- Solver status feedback by @shueja in #439
- Make selected waypoint always draw above others by @shueja in #444
- Feature: add modal fade out effect by @Awesomeplayer165 in #449
- Add list of keyboard shortcuts to document settings by @shueja in #447
- Feature: Context Menu by @Awesomeplayer165 in #448
- Upgrade TrajoptLib to use larger solver tolerance by @calcmogul in #451
- Fix error when converting undefined waypoint id to index by @shueja in #452
- Upgrade Node dependencies by @calcmogul in #454
- Fix ChoreoSwerveCommand C++ constructor copy warnings by @spacey-sooty in #457
- Clear undo history after opening file by @shueja in #463
- Max angular velocity constraint by @bruingineer in #462
- Fix comma typos in ChoreoLib example by @calcmogul in #465
- Don't apply max velocity constraint to end point by @bruingineer in #466
- Apply angle modulus to initial guess dtheta by @bruingineer in #467
- remove duplicate initial guess waypoint constraint check by @bruingineer in #471
- Use Temurin JDK to build ChoreoLib by @calcmogul in #474
- Use ubuntu-22.04 instead of ubuntu-latest by @calcmogul in #473
- Upgrade to spotless 6.25.0 by @calcmogul in #475
- Upgrade to Tauri 1.6.5 by @calcmogul in #477
- Upgrade to Tauri 1.6.6 by @calcmogul in #481
- Remove ChoreoTrajectoryState::AsArray() by @calcmogul in #482
- Sort and auto-approve apt packages by @calcmogul in #483
- Upgrade to prettier 3.3.2 by @calcmogul in #486
- Fix ChoreoTrajectoryState constructor docs typo by @calcmogul in #485
- Fix ChoreoTrajectoryState member docs typo by @calcmogul in #488
- Move copy and open directory buttons in menu to stable position. by @shueja in #490
- Add waypoint number to config panel by @shueja in #445
- Upgrade TrajoptLib to expose swerve ...
Choreo v2024.2.2
This release brings several bug fixes and automatic reopening of the last opened file.
We now ship a native Windows ARM binary in addition to Windows x86_64. The native binary should be more performant for Windows ARM systems, since it avoids emulation.
IMPORTANT As of this version, opening a Choreo file will no longer automatically re-export all trajectories. This was causing trouble for teams using version control systems, especially due to another bug fixed in this version. You can still export all the trajectories at once from the app menu.
- Fixes a visual issue with the stale-trajectory indicators in the path selector always showing all trajectories stale after opening the file.
- Fixes an issue where trajectory files would have their event markers cleared out when being exported.
- This bug happened when loading a .chor file with stale trajectories, which loaded the markers without their corresponding timestamp on the trajectory, then automatically exported all the trajectories, skipping the "broken" markers.
- While we have disabled the automatic export as mentioned above, we have also updated the .chor file version to
v0.3.1
to preserve the markers' timestamp on the trajectory, regardless of whether the trajectory is stale or not.
- Fixes an issue that would cause an additional
}
to end up at the end of the .chor file, making it unloadable.
ChoreoLib
ChoreoLib now has ChoreoTrajectory.getFlippedInitialPose()
and getFlippedFinalPose()
for cleaner usage of these positions depending on alliance.
.traj Spec Changes
No changes.
We intend to include this section in future releases to avoid unnanounced compatibility breakage with non-SleipnirGroup consumers of .traj files (PathPlanner, LabVIEW/Python unofficial Choreo libraries, etc).
Full Changelog
- Build for Windows aarch64 by @calcmogul in #380
- Add more supported platforms to docs by @calcmogul in #382
- Refactor ChoreoLib CI build by @calcmogul in #383
- Fix all trajectories being stale on first load of a file by @shueja in #384
- Update TrajoptLib to change its crate type by @calcmogul in #387
- Document event markers by @shueja in #386
- Merge adjacent elses and ifs by @calcmogul in #388
- Upgrade TrajoptLib to get CasADi 3.6.5 by @calcmogul in #389
- Add getFlippedInitialPose() and getFlippedFinalPose() to ChoreoTrajectory by @penguin212 in #393
- Feature/open last project on startup by @Awesomeplayer165 in #395
- Standardise UUID import by @spacey-sooty in #398
- Pin wpiformat to 2024.33 by @calcmogul in #399
- Allow markers with missing targets to be deserialized by @shueja in #397
- Fix event llisteners not set up before opening last file by @Awesomeplayer165 in #405
- Remove unused import by @calcmogul in #406
- Upgrade TrajoptLib to speed up problem setup by @calcmogul in #407
- Regenerate Cargo.lock by @calcmogul in #408
- Remove export-all-traj when opening files by @shueja in #410
- Fix clippy warnings by @calcmogul in #409
- Add new schema to save generated target of event marker by @shueja in #404
- Update version numbers to 2024.2.2 by @shueja in #411
- Change artifact path of aarch64 windows installer by @shueja in #413
- Fix v0.3.1 doc schema json version still being 0.3 by @shueja in #412
- Bugfix/open last file error handling by @Awesomeplayer165 in #414
- Fix issues causing multiple autosaves on generation by @shueja in #415
- Use actions/download-artifact in release instead by @calcmogul in #416
New Contributors
- @penguin212 made their first contribution in #393
- @spacey-sooty made their first contribution in #398
Full Changelog: v2024.2.1...v2024.2.2
Choreo v2024.2.1
This release fixes macOS arm64 code signing issues. Otherwise, it is identical to 2024.2.0.
Choreo v2024.2.0
Choreo v2024.2.0
Please use v2024.2.1 instead, due to a macOS arm64 binary fix.
Documentation for the new features is not yet available on the Choreo docs. The below release notes should be enough to get started.
This release brings major performance improvements, bugfixes, event marker support (for PathPlannerLib interoperability only, not ChoreoLib yet) and a few user experience features. We also now ship a Linux AppImage version of Choreo.
As usual, it is always prudent to make a backup of your Choreo file before upgrading to a new version.
Introducing Sleipnir
We have replaced the numerical optimizer used to generate the trajectories. The new Sleipnir optimizer has been developed by members of Team 2363 with trajectory optimization in mind. You should immediately see up to 10x improvement in generation times, especially on longer paths. Sleipnir also does not have the issue where simple paths are infeasible for no apparent reason.
Initial Guess Bugfix
We fixed an issue relating to initial guess points and their order when sent to the solver. This is part of the issue with obstacles. Obstacles remain in beta for this update, but given Sleipnir and this fix, we suggest giving them another try.
Event Markers
We are finally introducing event marker support for teams that use the PathPlannerLib interoperability to follow Choreo paths. Here are a few important reminders about this integration:
- For the PathPlanner GUI to pick up Choreo paths for the auto builder, the Choreo .chor file MUST be saved in project root (adjacent to build.gradle), and trajectories must already be generated. PathPlanner GUI will then show a folder of paths labeled "Choreo Paths". This part is not new, but bears repeating.
- As of this writing, PathPlanner GUI does not show the event markers when previewing a Choreo path.
- To make an AutoBuilder routine using Choreo paths, you must select "New Choreo Auto".
On to the event markers...
Event markers in Choreo are placed based on time offset before/after a specified waypoint. Add a marker by selecting the event marker on the navbar and clicking on the targeted waypoint. The target can be changed similarly to a constraint.
When the trajectory is (re)generated, the marker will appear at the proper timestamp and be exported to the .traj file.
Changes to the time offset will reflect in the .traj file immediately, relative to the timestamp of the targeted waypoint as of the last generation.
You can see the waypoints as they were in the last generation by turning on the "Samples" view layer and turning off "Waypoints".
Changes to the targeted waypoint will not reflect until trajectory regeneration.
Changes to the marker name are not part of the trajectory, so will not trigger updates to the .traj file.
The options for binding commands to markers mirror PathPlanner's functionality. Named commands use the same registry of names that PathPlanner markers use. However, there is currently no autofill menu with the existing command names. Changes to the command reflect immediately in the .traj.
There are a few reasons why event markers might not export. These will be shown with a ! next to the marker in the sidebar.
- There is a stop point (including the path endpoints) between the targeted waypoint and the marker's actual timestamp.
- The marker targets a waypoint that has been deleted. You need to select another waypoint in the marker config panel.
- The path had been modified between the last generation and adding the marker, so Choreo can't give the marker a proper timestamp. Regenerate the path.
Quality of Life Features
-
The icon for a path in the path selector now changes to a ! when the path has been modified without being regenerated.
-
A new shortcut and button have been added to zoom the field view to fit the current path. You can access this through Ctrl/Command-0 or the button just above the view layer menu.
-
A range slider to show only a particular range of waypoints is now accessible by turning on the "Focus" view layer.
-
The move to Sleipnir has addressed some of the issues with cancellation not having any effect.
ChoreoLib
- For Java, added
ChoreoTrajectory.getSamples()
to allow users to work with the time-ordered list of samples directly. - Fixed C++ GetTrajectoryGroup() file matching.
Choreo v2024.1.3
This release fixes several bugs identified with v2024.1.2 features, along with several other bugs.
New Features
Path Duplication:
This new button in the path selector duplicates the currently selected path and selects the new path.
Waypoint Copy/Paste:
Your system's default copy-paste keybinds will copy the currently selected waypoint (if a waypoint is selected), and paste it in the same path or a different path. The pasted waypoint will be inserted after the selected waypoint in the destination path.
Experimental Switches:
This new panel in Document Settings allows users to enable features that are not currently stable enough to be enabled by default.
Currently, this panel just includes obstacles. Further work is planned to improve obstacle stability, but for now, here are a few tips for avoiding some of the issues with obstacles:
- Try to use obstacles larger than the robot bumper shape.
- Use Initial Guess Points to keep the gray waypoint-to-waypoint line from intersecting an obstacle or getting close enough that the robot moving along it would hit the obstacle. Choreo can make the trajectory hug the obstacle more tightly than the initial guess, but the solver has more trouble expanding the initial guess away from the obstacle to make the final trajectory compliant.
- Consider using shorter paths when using obstacles. Choreo currently applies a set of internal constraints for every sample in the path for every obstacle.
What's Changed
- Clone split sections of trajectory before editing their timestamps by @shueja in #276
- Remove save file location during file open by @shueja in #280
- Fix single-generation toasts that imply multiple trajs by @shueja in #278
- Fix robot config getting wiped on import to spec v0.2.1 by @shueja in #275
- openFromContents throws w/ descriptive error if schema validation fails by @shueja in #279
- Fix split trajectories not including the end stop point by @shueja in #277
- Fix misaligned centerline and notes on 2024 image by @shueja in #281
- Update Field Width Constant by @GalexY727 in #291
- Don't save uuid when saving constraint by @shueja in #288
- Use miklast high-quality field render, retrace field svg by @shueja in #284
- Add copy-pasting of waypoints within and between paths by @shueja in #285
- Obstacles beta switch by @Lewis-Seiden in #292
- Added duplication of paths by @shueja in #286
- Playback slider wpt positions properly skip guess pts. by @shueja in #296
- Change version to 2024.1.3-pre1 by @shueja in #299
New Contributors
- @GalexY727 made their first contribution in #291
Full Changelog: v2024.1.2-b...v2024.1.3
Choreo v2024.1.3-pre2
This pre-release fixes one bug and reverts one feature from v2024.1.3-pre2. Generating trajectories should actually be possible now.
What's Changed
- Bugfix/undo path duplicate by @shueja in #300
- Revert trajoptlib better initial guess by @shueja in #301
- Change version numbers to 2024.1.3-pre2 by @shueja in #307
Full Changelog: v2024.1.3-pre1...v2024.1.3-pre2
Choreo v2024.1.3-pre1
This is a prerelease. Issues identified with the changes made here may be fixed for v2024.1.3.
This release fixes several bugs identified with v2024.1.2 features, along with several other bugs.
New Features
Path Duplication:
This new button in the path selector duplicates the currently selected path and selects the new path.
Waypoint Copy/Paste:
Your system's default copy-paste keybinds will copy the currently selected waypoint (if a waypoint is selected), and paste it in the same path or a different path. The pasted waypoint will be inserted after the selected waypoint in the destination path.
Experimental Switches:
This new panel in Document Settings allows users to enable features that are not currently stable enough to be enabled by default.
Currently, this panel just includes obstacles. Further work is planned to improve obstacle stability, but for now, here are a few tips for avoiding some of the issues with obstacles:
- Try to use obstacles larger than the robot bumper shape.
- Use Initial Guess Points to keep the gray waypoint-to-waypoint line from intersecting an obstacle or getting close enough that the robot moving along it would hit the obstacle. Choreo can make the trajectory hug the obstacle more tightly than the initial guess, but the solver has more trouble expanding the initial guess away from the obstacle to make the final trajectory compliant.
- Consider using shorter paths when using obstacles. Choreo currently applies a set of internal constraints for every sample in the path for every obstacle.
What's Changed
- Clone split sections of trajectory before editing their timestamps by @shueja in #276
- Remove save file location during file open by @shueja in #280
- Fix single-generation toasts that imply multiple trajs by @shueja in #278
- Fix robot config getting wiped on import to spec v0.2.1 by @shueja in #275
- openFromContents throws w/ descriptive error if schema validation fails by @shueja in #279
- Fix split trajectories not including the end stop point by @shueja in #277
- Fix misaligned centerline and notes on 2024 image by @shueja in #281
- TrajoptLib velocity and acceleration initial guesses by @Lewis-Seiden in #289
- Update Field Width Constant by @GalexY727 in #291
- Don't save uuid when saving constraint by @shueja in #288
- Use miklast high-quality field render, retrace field svg by @shueja in #284
- Add copy-pasting of waypoints within and between paths by @shueja in #285
- Obstacles beta switch by @Lewis-Seiden in #292
- Added duplication of paths by @shueja in #286
- Playback slider wpt positions properly skip guess pts. by @shueja in #296
- Change version to 2024.1.3-pre1 by @shueja in #299
New Contributors
- @GalexY727 made their first contribution in #291
Full Changelog: v2024.1.2-b...v2024.1.3-pre1