Skip to content

Releases: openTCS/opentcs

Release 7.2.1

03 Feb 09:50

Choose a tag to compare

  • 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

02 Feb 14:27

Choose a tag to compare

  • 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 PositionDeviationPolicy to 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.
  • Bugs fixed:
    • Avoid NullPointerException when 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.
  • 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

09 Dec 16:30

Choose a tag to compare

  • 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

29 Oct 13:30

Choose a tag to compare

  • 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

28 Oct 10:50

Choose a tag to compare

  • Breaking changes:
    • Remove deprecated code from interfaces and data structures in the Java API.
    • Make data structures in org.opentcs.access.to independent of the primary object data structures in org.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

22 Oct 15:09

Choose a tag to compare

  • 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/version and DELETE /kernel in the service web API.
    • Extend the GET /transportOrders and GET /transportOrders/{NAME} endpoints to include the complete transport order information in the response.
    • Fix the /sse::/events/transportOrders SSE event, documenting the route in a drive order to actually be nullable.
  • 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 TCSObjectService safer 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

05 Sep 12:44

Choose a tag to compare

  • New features and enhancements:
    • Optionally show vehicle envelopes for currently allocated and upcoming resources in the Operations Desk.
    • Consider orderpool.sweepAge when 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 introduced Scheduler.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

08 Aug 09:19

Choose a tag to compare

  • 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}/routeComputationQuery by 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 /events endpoint now returns status messages of transport orders and vehicles that contain the same information as the transport orders and vehicles returned via the GET /transportOrders and GET /vehicles endpoints.
      • Add support for Server-Sent Events (SSE) to the web API.
        As an alternative to the GET /events endpoint, clients can use the GET /sse endpoint 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 the servicewebapi.maxRequestBodySize configuration entry.
  • Bugs fixed:
    • Properly allow updates of a vehicle's acceptable order types via the PUT /vehicles/{NAME}/acceptableOrderTypes web API endpoint.
    • Avoid NullPointerException when trying to save transport order definitions in the continuous load panel.
  • Changes affecting developers:
    • Deprecate VehicleCommAdapter.processMessage(Object), VehicleCommAdapter.execute(AdapterCommand) and related code in favor of VehicleCommAdapter.processMessage(VehicleCommAdapterMessage), which provides a generic one-way communication channel to the comm adapter.
    • Deprecate ObjectHistory.Entry.supplement and introduce ObjectHistory.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 DriveOrder with a name, which helps with identifying and comparing DriveOrder instances.
      For this, introduce a new constructor DriveOrder(String, Destination) and deprecate DriveOrder(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.

openTCS 6.4

10 Mar 08:38

Choose a tag to compare

  • 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 NullPointerException when trying to edit the symbol of locations or location types.
  • 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() and Vehicle.withNextPosition() which are effectively no longer used.
    • Update Gestalt to 0.35.2.

Release 6.3

04 Feb 14:49

Choose a tag to compare

  • New features and enhancements:
    • Add support for transport order type priorities. For vehicle elements, every transport order type (that a vehicle is allowed to process) can now be assigned a priority.
    • Add a new key BY_ORDER_TYPE_PRIORITY that can be configured for the kernel configuration entries defaultdispatcher.orderCandidatePriorities and defaultdispatcher.vehicleCandidatePriorities. With this key configured, the priorities of a vehicle's acceptable order types are considered when assigning transport order to it.
    • Improve the integration of envelopes in combination with blocks. If blocks are involved when allocating resources, consider the envelopes of all resources in these blocks.
    • Add a creation time and finished time property to order sequences.
    • Allow automatic creation of parking and recharge orders to be delayed. The delay is configurable via the defaultdispatcher.parkIdleVehiclesDelay and defaultdispatcher.rechargeIdleVehiclesDelay kernel configuration entries.
    • Improve performance for updating transport orders, order sequences and peripheral jobs in the respective Ops Desk tables.
    • Update web API specification and implementation to version 1.10.0:
      • Add an endpoint PUT /vehicles/{NAME}/acceptableOrderTypes, which allows a vehicle's set of acceptable order types to be modified during runtime. This endpoint replaces PUT /vehicles/{NAME}/allowedOrderTypes, which is now deprecated.
      • Extend the endpoints for retrieving order sequences to include an order sequence's creation time and finished time.
      • Extend the endpoints for retrieving vehicles to include timestamps for changes to a vehicle's state and processing state.
  • Bugs fixed:
    • Avoid a NullPointerException when trying to park a vehicle whose current position is not known.
    • Ensure vehicles can process newly assigned transport orders after a peripheral job (created in the context of a previous transport order) has failed. Previously, failed peripheral jobs with the AFTER_ALLOCATION execution trigger could prevent vehicles from properly processing transport orders in some situations.
    • When loading v0.0.4 plant model files, points of type REPORT_POSITION will now be automatically converted to points of type HALT_POSITION, as support for REPORT_POSITIONs has been removed with openTCS 6.0.
    • When loading v0.0.4 plant model files, peripheral operations with the BEFORE_MOVEMENT execution trigger will now be automatically converted to peripheral operations with the AFTER_ALLOCATION execution trigger, as support for the BEFORE_MOVEMENT execution trigger has been removed with openTCS 6.0.
    • When saving a plant model via the Model Editor application with a new name, correctly set that name in the new plant model file.
    • Prevent vehicles whose transport order was withdrawn from being rerouted. This ensures that vehicles can finish their movement commands correctly in such cases.
    • Properly consider the GroupMapper implementation that is configured via dependency injection in the EXPLICIT_PROPERTIES edge evaluator.
    • Avoid ConcurrentModificationExceptions in the Operations Desk that could occur particularly in situations where vehicle updates are received at high frequency.
  • Changes affecting developers:
    • Deprecate methods in the Router interface that are technically outside its scope.
    • Deprecate Router.getCost(Vehicle, Point, Point, Set<TCSResourceReference<?>>) as Router.getRoute(Vehicle, Point, Point, Set<TCSResourceReference<?>>) already provides a way to retrieve the costs of a route.
    • Instead of having the total costs of a route only in Route itself, extend Route.Step to also contain the costs for a single step.