Releases: openTCS/opentcs
Releases · openTCS/opentcs
Release 6.2
- New features and enhancements:
- Add support for pluggable transformation of data sent to / received from vehicles, e.g. for conversion between the coordinate system in the plant model and a vehicle-specific one.
- Allow assignment of externally-created recharging orders to vehicles with critical energy level.
- Update web API specification and implementation to version 1.9.0:
- Add missing required markers for request and response bodies.
- Include a vehicle's 'sufficiently recharged' and 'fully recharged' energy levels when requesting vehicle data.
- Bugs fixed:
- When receiving a position update from a vehicle, accept any position belonging to the movement commands sent to the vehicle, not just the next one. This is necessary to support cases in which a vehicle has completed more than one movement command during state/position updates.
- When aggregating
TCSObjectEvents for RMI clients, actually aggregate the oldest and youngest events properly instead of keeping only the youngest one. - Ask user for confirmation before overwriting files when using the Save Model As... menu item in the Model Editor application.
- Allow the position in
org.opentcs.data.model.Poseto benull.
- Changes affecting developers:
- Use
Poseto replace and deprecate the previously separate position and orientation angle members inVehicleandVehicleProcessModel. - Update JUnit to 5.11.2.
- Update Hamcrest to 3.0.
- Update Mockito to 5.14.2.
- Update AssertJ to 3.26.3.
- Update ApprovalTests to 24.8.0.
- Update Checkstyle to 10.18.2.
- Update Jackson to 2.18.0.
- Update SLF4J to 2.0.16.
- Update Gradle wrapper to 8.10.2.
- Update Gradle Dependency License Report plugin to 2.9.
- Use
Release 6.1.2
- Bugs fixed:
- Properly handle paths that are being traversed in reverse direction in the bounding box edge evaluator. For such paths, the bounding box at the path's source point is now correctly considered (and not the one at its destination point).
- Ensure the POMs of the published Maven artifacts have their dependencies properly declared. With the releases of openTCS 6.1 and openTCS 6.1.1, dependencies on openTCS artifacts were using wrongly spelled artifact IDs, making it impossible to include openTCS artifacts as dependencies in projects.
Release 6.1.1
- Bugs fixed:
- Correctly enable/disable controls in the Operations Desk application when it is connected to / disconnected from the kernel.
Release 6.1.0
- New features and enhancements:
- Ignore path locks and configured edge evaluators when checking for general routability of transport orders. As paths locks and the results of edge evaluators may change during operation of a plant, it does not seem reasonable to consider them when checking for general routability.
- Reduce the load on RMI clients by aggregating consecutive
TCSObjectEvents for the same object into a single event. - Reduce the load on the kernel induced by the Operations Desk and Kernel Control Center applications by moderately increasing the interval in which they fetch events form the kernel.
- Add a watchdog task to the kernel which periodically monitors the state of vehicles in the plant model and publishes a user notification in case a vehicle is considered stranded (e.g., in cases where a vehicle is idle but has been assigned a transport order and is therefore expected to do something).
- Add support for specifying a bounding box for a vehicle via the Model Editor application. A vehicle's bounding box, which, among other things, is defined by a length, width and height, replaces the vehicle's "length" property, which could previously be specified for vehicles.
- Add support for specifying a maximum vehicle bounding box for a point via the Model Editor application.
- Add an edge evaluator that prevents vehicles from being routed to/through points where there is not enough space available (according to the vehicle's bounding box and the maximum allowed bounding box at a point). For more information, please refer to the user's guide.
- Allow a vehicle's set of energy level thresholds to be modified during runtime via the Operations Desk application.
- Allow the user to actively connect/disconnect the Operations Desk application to/from a kernel. Add corresponding entries to the application's File menu, which make it possible to change between different kernels during runtime.
- Improve performance when repeatedly computing routes with the same set of resources to be avoided.
- Update web API specification and implementation to version 1.8.0:
- The endpoint
POST /plantModel/topologyUpdateRequestnow also accepts an optional list of path names allowing the routing topology to be updated selectively. - Add an endpoint
PUT /vehicles/:NAME/energyLevelThresholdSet, which allows a vehicle's set of energy level thresholds to be modified during runtime.
- The endpoint
- Bugs fixed:
- Correctly calculate the costs for new routes when rerouting transport orders for which resources to be avoided are defined.
- Use the correct XML schema for v0.0.5 plant model files.
- Correctly restore layer information when loading v0.0.4 or v0.0.5 plant model files.
- Fix handling of forced rerouting:
- Prevent the kernel executor thread from getting stuck in a loop when forcefully rerouting a vehicle that has reported an unexpected position while waiting for a peripheral job to be finished.
- Fix an issue where a vehicle would not get rerouted correctly when forcefully rerouting it after it has reported an unexpected position.
- Prevent a vehicle driver from receiving any further
MovementCommands when the vehicle reported an unexpected position while processing a transport order. A vehicle driver will continue to receiveMovementCommands after the vehicle has been forcefully rerouted. - Prevent vehicles from being forcefully rerouted when there are unfinished peripheral jobs (that have the completion required flag set to
true).
- Changes affecting developers:
- Deprecate
Point.isHaltingPosition(). With openTCS 6.0, the point typeREPORT_POSITIONwas removed, which makes this method redundant, as all remaining point types allow halting.
- Deprecate
Release 6.0.0
- Changes affecting developers:
- Update project to Java 21.
- Update slf4j to 2.0.13.
- Update Guice to 7.0.0.
- Use annotations
jakarta.annotation.Nullableandjakarta.annotation.Nonnullinstead ofjavax.annotation.Nullableandjavax.annotation.Nonnull. For the latter, use of thejavaxnamespace was never officially approved, so the former may be considered more official. - Remove code for reading configuration (interfaces) via cfg4j. Reading configuration (interfaces) via gestalt, which had already been made the default previously, is now the only integrated variant.
- Remove deprecated code.
- Other changes:
- Replace the configuration prefix 'plantoverviewapp' in the Model Editor and Operations Desk applications (which is reminiscent of the old Plant Overview application) with prefixes that are more suitable for the respective applications.
- Update web API specification and implementation to version 1.7.0:
- Remove support for the
REPORT_POSITIONpoint type, which was scheduled for removal with openTCS 6.0.
- Remove support for the
Important
Migration notes
- When a plant model that was created with an earlier version is intended to be used with openTCS 6.0, it is recommended to first load and save the plant model with the Model Editor of the latest openTCS 5 release, which is openTCS 5.17.1 at the time of this writing. Otherwise, loading such a plant model with openTCS 6 might fail.
- Integration projects need to update any use of slf4j providers to version 2.0.13, too, or the respective logging backend might not be used.
- Integration projects now need to use injection-related annotations in the
jakarta.injectnamespace, e.g.jakarta.inject.Injectorjakarta.inject.Provider.
Release 5.17.1
- Bugs fixed:
- Avoid
NullPointerExceptions when rerouting vehicles that process transport orders containing drive order steps that don't have a path.
- Avoid
Release 5.17
- Bugs fixed:
- Avoid
ObjectUnknownExceptionby cleaning orders related to order sequences only once. - Correctly claim resources for transport orders with multiple drive orders. This fixes an issue where allocating the first set of resources for the second drive order in a transport order would fail.
- Allow persistence of plant models (to a file and to the kernel) with paths that contain both vehicle envelopes and peripheral operations.
- Avoid
- Changes affecting developers:
- Update Gradle wrapper to 8.7.
Release 5.16
- New features and enhancements:
- Use more sensible defaults for newly created vehicles' recharge energy level threshold values.
- Add proper support for recalculating the length of "2-Bezier", "3-Bezier" and "Poly-Path" paths to the Model Editor.
- Add support for defining vehicle envelopes at points and paths to the Model Editor.
- Make vehicle resource management configurable. For more details, see the documentation of the
KernelApplicationConfiguration.vehicleResourceManagementTypeconfiguration entry. - When computing a route / costs of a route not related to a transport order, it is now possible to define a set of resources (i.e., points, paths or locations) that should be avoided by vehicles.
- Update web API specification and implementation to version 1.6.0:
- The endpoint
POST /vehicles/{NAME}/routeComputationQuerynow also accepts an optional list of names of resources to avoid.
- The endpoint
- Bugs fixed:
- When referencing paths via the
tcs:resourcesToAvoidproperty in transport orders, don't implicitly avoid their start and end points, as points can have multiple incoming and outgoing paths. - Don't create the same peripheral job a second time if the vehicle that triggered the job was rerouted before the job was completed.
- When referencing paths via the
- Changes affecting developers:
- Adjust the names of some methods in
VehicleProcessModelandVehicleProcessModelTOby removing the redundant "Vehicle" prefix.
- Adjust the names of some methods in
Release 5.15
- New features and enhancements:
- Improve performance of updates to the router's routing topology by allowing it to be updated selectively. (The routing topology can now be updated only for paths that have actually changed.)
- When computing a route for a transport order, it is now possible to define a set of resources (i.e., points, paths or locations) that should be avoided by vehicles processing the respective transport order. For this, a property with the key
tcs:resourcesToAvoidcan be set on a transport order to a comma-separated list of resource names.
Release 5.14
- New features and enhancements:
- The creation of ambiguous peripheral jobs (by kernel clients or via the web API) that have the
completionRequiredflag set totrueis now prevented. (In those cases it is unclear what should happen to the job'srelatedTransportOrder(if any) in case the job fails.) - Add a watchdog task to the kernel which periodically monitors the state of blocks in the plant model and publishes a user notification in case a block is occupied by more than one vehicle. (Such a situation is usually caused by manually moving vehicles around and leads to deadlock situations.)
- Update web API specification and implementation to version 1.5.0:
- When retrieving vehicle information via the web API, include the vehicle's orientation angle.
- The creation of ambiguous peripheral jobs (by kernel clients or via the web API) that have the
- Bugs fixed:
- Correctly read configuration entries in the
<KEY_1>=<VALUE_1>,...,<KEY_N>=<VALUE_N>format when using gestalt as the configuration provider.
- Correctly read configuration entries in the
- Changes affecting developers:
- Provide related
TransportOrderandDriveOrderobjects as part of everyMovementCommand. This way, vehicle drivers can easily look up a movement command's context without having to explicitly fetch the data via a kernel service call. - Update Mockito to 5.11.0.
- Update ApprovalTests to 23.0.0.
- Update Jackson to 2.17.0.
- Update Gradle license report plugin to 2.6.
- Provide related