Releases: openTCS/opentcs
Releases · openTCS/opentcs
Release list
Release 7.3
- New features and enhancements:
- Improve performance when computing routing graphs.
- Add support for parallelization in the context of computing routing graphs.
- Improve Kernel Control Center start-up times with large plant models.
- Execute the kernel heartbeat logger with a fixed delay instead of a fixed rate to avoid accumulating task executions in case other tasks hog the kernel executor.
- Bugs fixed:
- Allow to properly change the name of an already named transport order destination's location via the Java API.
- Ensure that orders for automatic recharging do not try to send vehicles to locked locations.
- Skip to lower-priority parking positions if those with a higher priority are available but not reachable for the respective vehicle.
- Update a point figure in the Model Editor when its y-coordinate is changed via the properties panel. (Previously, only changes to the x-coordinate triggered an update.)
- Avoid an exception when loading a plant model with polygonal paths that do not have any control points.
- In the Operations Desk application's "send to location" dialog, ensure that the list of destination operations for the currently selected location does not contain
NOPmultiple times. - When processing position updates from vehicles, allow any point on the vehicle's route, explicitly including the initial position.
- In the Model Editor application, allow setting a point's orientation angle to
NaNwhen it previously had a numeric value.
- Changes affecting developers:
- Update Gradle wrapper to 8.14.4.
- Update JUnit to 6.0.3.
- Update AssertJ to 3.27.7.
- Update Mockito to 5.23.0.
- Update ApprovalTests to 29.0.0.
- Update Jackson to 2.21.3.
- Update Javalin to 7.2.2.
- Update OpenAPI generator to 7.20.0.
- Update Swagger UI to 5.32.0.
- Update Spotless to 8.3.0.
- Update SLF4J to 2.0.18.
Release 7.2.1
- Bugs fixed:
- Allow any type of transport order to be added to order sequences that contain the any type (i.e. "*") in their set of allowed order types.
Release 7.2
- New features and enhancements:
- Allow order sequences to contain multiple types of transport orders. Instead of a single type, order sequences now define a set of order types. Additionally, transport orders whose type is included in this set of order types can be added to the order sequence.
- Use new injectable component
PositionDeviationPolicyto provide the allowed deviation for a vehicle at a point. This way, we can e.g. respect VDA5050 deviation properties for position resolution, too. - When resolving coordinates to a logical position, ensure that the closest of the matching points in the plant model is picked.
- Add support for customizable window icons. For more information, please refer to the developer's guide.
- Update web API specification and implementation to version 1.14.0:
- Extend the request body of the
POST /orderSequences/{NAME}endpoint so that it also excepts a list of order types. - Extend the response bodies where order sequences are returned to also include the list of order types.
- Extend the request body of the
- Bugs fixed:
- Avoid
NullPointerExceptionwhen trying to assign a vehicle to a reserved transport orders that has been removed in the meantime. - Actually add given properties to newly-created plant models' visual layouts.
- Ensure failed transport orders in order sequences are skipped correctly.
- Respect integration level for all updates of a vehicle's logical position.
- When resolving coordinates to logical positions, properly treat orientation angles to be in degrees, not in radians.
- Avoid
- Changes affecting developers:
- Update JUnit to 6.0.2.
- Update Mockito to 5.21.0.
- Update ApprovalTests to 26.4.0.
- Update Gestalt to 0.37.0.
Release 7.1
- New features and enhancements:
- Allow to be less strict with unexpected positions: Require manual rerouting after a vehicle driver has reported an unexpected position only if the configuration demands it.
- Changes affecting developers:
- Update JUnit to 6.0.1.
- Update ApprovalTests to 25.10.0.
- Update OpenAPI generator to 7.17.0.
- Update Swagger UI to 5.30.3.
- Update Spotless to 8.1.0.
- Update Gradle Dependency License Report plugin to 3.0.1.
- Update Gradle Lombok Plugin to 9.1.0.
- Update Lombok to 1.18.42.
Release 7.0.1
- Bugs fixed:
- Allow loading of plant models with file version 7.0.0 in the Model Editor with vehicles that have no envelope key defined.
Release 7.0
- Breaking changes:
- Remove deprecated code from interfaces and data structures in the Java API.
- Make data structures in
org.opentcs.access.toindependent of the primary object data structures inorg.opentcs.data. - Remove support for reading openTCS plant model file versions 0.0.4 and 0.0.5. Trying to load plant models in version 0.0.4 or 0.0.5 files with openTCS 7 will fail. (Note that plant model files are always written using the respective openTCS distribution's latest version of the file format. To ensure a plant model stored in a version 0.0.4 or 0.0.5 file can still be used with openTCS 7.0, it is recommended to first load and save the plant model with the Model Editor of the latest openTCS 6 release, which is openTCS 6.7.0 at the time of this writing.)
Release 6.7
- New features and enhancements:
- Add new version 7.0.0 of the XML Schema definition for the openTCS plant model.
- Add a watchdog task to the kernel which periodically monitors the state of transport orders. This watchdog task publishes a user notification in case a transport order is considered idle (i.e., a transport order that has been waiting for a configurable amount of time to be processed by a vehicle) or in case the order's deadline has expired and the order is not yet in a final state.
- Add support for determining a vehicle's (logical) position based on the vehicle's reported precise position. Vehicle drivers can now request this via
VehicleProcessModel.positionMappingRequested(Pose). - Update web API specification and implementation to version 1.13.0:
- Eliminate admin web API and move its endpoints to
GET /kernel/versionandDELETE /kernelin the service web API. - Extend the
GET /transportOrdersandGET /transportOrders/{NAME}endpoints to include the complete transport order information in the response. - Fix the
/sse::/events/transportOrdersSSE event, documenting the route in a drive order to actually be nullable.
- Eliminate admin web API and move its endpoints to
- Changes affecting developers:
- Consistently use enums for members in web API data structures instead of a mix of strings and enums.
- Make object retrieval via
TCSObjectServicesafer and more convenient. - Update ApprovalTests to 25.7.0.
- Update AssertJ to 3.27.6.
- Update JUnit to 6.0.0.
- Update Mockito to 5.20.0.
- Update Spotless to 8.0.0.
- Update Gradle wrapper to 8.14.3.
- Update OpenAPI generator to 7.16.0.
- Update Swagger UI to 5.29.3.
- Update JAXB XML binding runtime to 4.0.6.
- Update ModelMapper to 3.2.5.
Release 6.6
- New features and enhancements:
- Optionally show vehicle envelopes for currently allocated and upcoming resources in the Operations Desk.
- Consider
orderpool.sweepAgewhen cleaning up order sequences, too. - Add support for mapping coordinates from the plant model's coordinate system to the coordinate system of a vehicle and vice versa (when sending/receiving them to/from a vehicle). For more information, please refer to the user's guide.
- Add support for sending
VehicleCommAdapterMessages via the Operations Desk.
- Bugs fixed:
- Properly check a new plant model for duplicate element names before accepting it.
- Don't allow transport orders to be created with a peripheral reservation token set to the empty string.
- Changes affecting developers:
- Mark layout coordinates of points and locations for removal with the next major version as they are apparently not really used in practice. The model coordinates of points and locations should be used instead.
- Deprecate
Scheduler.Client.allocationFailed(Set)as it is not used anywhere. - Deprecate
Scheduler.Client.allocationSuccessful(Set)in favor of the newly introducedScheduler.Client.onAllocation(Set). - Update Jackson to 2.20.0.
- Update Semver4J to 6.0.0.
- Update Asciidoctor Gradle plugins to 4.0.5.
- Update OpenAPI generator to 7.15.0.
- Update Swagger UI to 5.28.0.
- Update ApprovalTests to 25.0.23.
- Update AssertJ to 3.27.4.
- Update JUnit to 5.13.4.
- Update Mockito to 5.19.0.
- Update Spotless to 7.2.1.
openTCS 6.5
- New features and enhancements:
- Reduce the time it takes to persist large plant models into the kernel.
- Avoid re-setting the same processing vehicle of an order sequence, which triggers an entry in the log and one in the sequence's object history.
And if in some way the same processing vehicle is indeed set again, at least don't add an object history entry. - Add example vehicle envelopes to the demo model.
- Update web API specification and implementation to version 1.12.0:
- Extend the endpoint
POST /vehicles/{NAME}/routeComputationQueryby an optional parameter which specifies the maximum number of routes to compute for one destination point. - Add an endpoint
POST /vehicles/{NAME}/commAdapter/message, which allows sending messages to the communication adapter that is attached to a vehicle. - The
GET /eventsendpoint now returns status messages of transport orders and vehicles that contain the same information as the transport orders and vehicles returned via theGET /transportOrdersandGET /vehiclesendpoints. - Add support for Server-Sent Events (SSE) to the web API.
As an alternative to theGET /eventsendpoint, clients can use theGET /sseendpoint to subscribe to events that are sent by the kernel. - Use Javalin instead of Spark as the framework for the web API implementation.
The maximum size of request bodies can now be configured via theservicewebapi.maxRequestBodySizeconfiguration entry.
- Extend the endpoint
- Bugs fixed:
- Properly allow updates of a vehicle's acceptable order types via the
PUT /vehicles/{NAME}/acceptableOrderTypesweb API endpoint. - Avoid
NullPointerExceptionwhen trying to save transport order definitions in the continuous load panel.
- Properly allow updates of a vehicle's acceptable order types via the
- Changes affecting developers:
- Deprecate
VehicleCommAdapter.processMessage(Object),VehicleCommAdapter.execute(AdapterCommand)and related code in favor ofVehicleCommAdapter.processMessage(VehicleCommAdapterMessage), which provides a generic one-way communication channel to the comm adapter. - Deprecate
ObjectHistory.Entry.supplementand introduceObjectHistory.Entry.supplements, which allows storing multiple supplements in a list of strings. - Deprecate
ModelTransitionEvent.modelContentChanged, which hasn't properly reflected model content changes for a very long time. - Provide
DriveOrderwith a name, which helps with identifying and comparingDriveOrderinstances.
For this, introduce a new constructorDriveOrder(String, Destination)and deprecateDriveOrder(Destination). - Remove dependencies to the base API data structures in the web API data structures to ensure that they are not directly impacted by changes in the base API.
- Update JUnit to 5.13.1.
- Update ApprovalTests to 24.22.0.
- Update AssertJ to 3.27.3.
- Update Mockito to 5.18.0.
- Update Jackson to 2.19.1.
- Update SLF4J to 2.0.17.
- Update Spotless to 7.0.4.
- Update Checkstyle to 10.25.0.
- Update Gradle wrapper to 8.14.2.
- Update Semver4J to 5.8.0.
- Update JTS Topology Suite to 1.20.0.
- Update Asciidoctor Gradle plugins to 4.0.4.
- Update JAXB XML binding runtime to 4.0.5.
- Update OpenAPI generator to 7.13.0 and Swagger UI to 5.25.2.
- Update Gestalt to 0.36.0.
- Deprecate
openTCS 6.4
- New features and enhancements:
- Properly handle the interaction of order sequences and the dispensable flag of transport orders. A transport order whose dispensable flag is set and which is also part of an order sequence will be skipped/aborted when another transport order was added to the sequence. Additionally, when a vehicle is processing the last transport order of a complete order sequence and that transport order is also dispensable, the vehicle is considered available for another transport order / order sequence.
- Update web API specification and implementation to version 1.11.0:
- Include a transport order's key-value properties in responses when requesting transport order data.
- Bugs fixed:
- Avoid
NullPointerExceptionwhen trying to edit the symbol of locations or location types.
- Avoid
- Changes affecting developers:
- Allow the router to provide multiple (alternative) routes instead of just a single one. This allows the components that use the router to decide for themselves which route to choose. (A routing algorithm that actually provides multiple routes has not yet been implemented, i.e. the router will continue to provide only one route for the time being.)
- Deprecate
Vehicle.getNextPosition()andVehicle.withNextPosition()which are effectively no longer used. - Update Gestalt to 0.35.2.