The open Transportation Control System

Related tags

GUI opentcs
Overview

openTCS

openTCS (short for open Transportation Control System) is a free platform for controlling fleets of automated guided vehicles (AGVs) and mobile robots. It should generally be possible to control any automatic vehicle with communication capabilities with it, but AGVs are the main target.

openTCS is being maintained by the openTCS team at the Fraunhofer Institute for Material Flow and Logistics.

The software runs on the Java platform (version 13). All libraries required for compiling and/or using it are freely available, too.

openTCS itself is not a complete product you can use out-of-the-box to control AGVs with. Primarily, it is a framework/an implementation of the basic data structures and algorithms (routing, dispatching, scheduling) needed for running an AGV system with more than one vehicle. It tries to be as generic as possible to allow interoperation with vehicles of practically any vendor. Thus it is usually necessary to at least create and integrate a vehicle driver (called communication adapter in openTCS-speak) that translates between the abstract interface of the openTCS kernel and the communication protocol your vehicle understands. Depending on your needs, it might also be necessary to adapt algorithms or add project-specific strategies.

Getting started

To get started with openTCS, please refer to the user's guide, the developer's guide and the API documentation. These documents are included in the binary distribution and can also be read online on the openTCS homepage.

Licensing

Code

All of this software project's source code, including scripts and configuration files, is distributed under the MIT License.

Assets

Unless stated otherwise, all of this software project's documentation, resource bundles and media files are distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) license.

Contributing

You are very welcome to contribute to this project. Please see CONTRIBUTING.md for a few guidelines related to this.

Comments
  • Hi,OperationDesk run failed from eclipse in ubuntu,opentcs version is v5,2 ,jdk13

    Hi,OperationDesk run failed from eclipse in ubuntu,opentcs version is v5,2 ,jdk13

    Hi,

    I'm trying to compile and run this project via IntelliJ IDEA. I have JAVA platform 13 and Gradle 6.8.3 as my environment. It all seems good because I can build project without error. But when I run OperationDesk, only openTCS logo pops up and throw these bugs--

    com.google.inject.ProvisionException: Unable to provision, see the following errors:

    1. Error injecting constructor, java.lang.ExceptionInInitializerError at org.opentcs.guing.components.dockable.DockingManagerOperating.(Unknown Source) at org.opentcs.guing.components.dockable.DockableInjectionModule.configure(DockableInjectionModule.java:26) (via modules: com.google.inject.util.Modules$OverrideModule -> org.opentcs.guing.DefaultPlantOverviewInjectionModule -> org.opentcs.guing.components.ComponentsInjectionModule -> org.opentcs.guing.components.dockable.DockableInjectionModule) while locating org.opentcs.guing.components.dockable.DockingManagerOperating for the 1st parameter of org.opentcs.guing.application.ViewManagerOperating.(Unknown Source) at org.opentcs.guing.application.ApplicationInjectionModule.configure(ApplicationInjectionModule.java:61) (via modules: com.google.inject.util.Modules$OverrideModule -> org.opentcs.guing.DefaultPlantOverviewInjectionModule -> org.opentcs.guing.application.ApplicationInjectionModule) while locating org.opentcs.guing.application.ViewManagerOperating for the 5th parameter of org.opentcs.guing.application.OpenTCSView.(Unknown Source) at org.opentcs.guing.application.ApplicationInjectionModule.configure(ApplicationInjectionModule.java:69) (via modules: com.google.inject.util.Modules$OverrideModule -> org.opentcs.guing.DefaultPlantOverviewInjectionModule -> org.opentcs.guing.application.ApplicationInjectionModule) while locating org.opentcs.guing.application.OpenTCSView for the 3rd parameter of org.opentcs.guing.application.PlantOverviewStarter.(Unknown Source) while locating org.opentcs.guing.application.PlantOverviewStarter

    1 error at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:226) at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1053) at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086) at org.opentcs.guing.RunOperationsDesk.main(RunOperationsDesk.java:58) Caused by: java.lang.ExceptionInInitializerError at bibliothek.gui.dock.common.intern.EfficientControlFactory.createController(EfficientControlFactory.java:49) at bibliothek.gui.dock.common.CControl.init(CControl.java:482) at bibliothek.gui.dock.common.CControl.(CControl.java:460) at bibliothek.gui.dock.common.CControl.(CControl.java:444) at bibliothek.gui.dock.common.CControl.(CControl.java:389) at bibliothek.gui.dock.common.CControl.(CControl.java:366) at org.opentcs.guing.components.dockable.DockingManagerOperating.(DockingManagerOperating.java:120) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) at com.google.inject.internal.DefaultConstructionProxyFactory$ReflectiveProxy.newInstance(DefaultConstructionProxyFactory.java:126) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:168) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:42) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:65) Caused by: java.lang.ExceptionInInitializerError

    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:113)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:168)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39)
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:42)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:65)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:113)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:168)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39)
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:42)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:65)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:113)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
    ... 2 more
    

    Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 2 at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3720) at java.base/java.lang.String.substring(String.java:1909) at bibliothek.gui.DockUI.registerColors(DockUI.java:169) at bibliothek.gui.DockUI.(DockUI.java:133) at bibliothek.gui.DockUI.getDefaultDockUI(DockUI.java:120) at bibliothek.gui.DockController.(DockController.java:155) ... 43 more

    Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 2


    Could anyone help me here please~ much appericiate!!!

    Originally posted by @EmoryHe in https://github.com/openTCS/opentcs/discussions/5

    opened by leigetiwen 10
  • withdrawn an order from order sequence result error

    withdrawn an order from order sequence result error

    Affected version

    release 5.5.0 ...

    Steps to reproduce

    Step 1: Create an order sequence; Step 2: Add an order to the sequence; Step 3: After the order goes into "BEGING_PROCESSED" , withdrawn the order; And now, the order state is always in "BEGING_PROCESSED" state and cannot go into a "WITHDRAWN" state. After that, the vehicle can not process any new order.

    Expected behaviour

    What would be the correct/expected behaviour?

    ...

    Actual behaviour

    What behaviour can actually be observed instead of the correct behaviour?

    ...

    Additional information

    Other data that can help with fixing the defect, e.g. logs, screenshots etc.

    • Operating system and version: e.g. Ubuntu Linux 20.04, Windows 10, ...
    • Java distribution version: e.g. Oracle Java Runtime Environment 13
    • ...
    opened by sehb 2
  • there is some problem with bezier path

    there is some problem with bezier path

    Affected version

    release 5.5.0

    Steps to reproduce

    add a new bezier path in model editor

    Expected behaviour

    coordinate of control point consistent with coordinate system of Point

    Actual behaviour

    coordinate of control point is wrong , y axis in the opposite direction and value is not consistent with Point

    Additional information

    • Operating system and version: e.g. Ubuntu Linux 20.04, Windows 10, ...
    • Java distribution version: e.g. Oracle Java Runtime Environment 11
    • ...
    opened by vincentknw 1
  • Report points in model cause exception with resource scheduling

    Report points in model cause exception with resource scheduling

    Affected version

    Release 5.6, possibly earlier releases, too

    Steps to reproduce

    1. Create a model with at least one report point.
    2. Route a vehicle across the report point.

    Expected behaviour

    The vehicle traverses the report point normally.

    Actual behaviour

    An exception is thrown due to an inconsistency with resource scheduling:

    [20221025-08:09:25-339] WARNING kernelExecutor       o.o.common.LoggingScheduledThreadPoolExecutor.afterExecute(): Unhandled exception in executed task
    java.lang.IllegalArgumentException: Not the next claimed resources: [Path{name=Point-0019 --- Point-0017}, Point{name=Point-0017}]
    	at org.opentcs.util.Assertions.checkArgument(Assertions.java:50)
    	at org.opentcs.strategies.basic.scheduling.DefaultScheduler.allocate(DefaultScheduler.java:187)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.allocateForNextCommand(DefaultVehicleController.java:1031)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.checkForPendingCommands(DefaultVehicleController.java:938)
    	at org.opentcs.kernel.vehicles.PeripheralInteractor.startPostMovementInteractions(PeripheralInteractor.java:252)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.commandExecuted(DefaultVehicleController.java:909)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.handleProcessModelEvent(DefaultVehicleController.java:780)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.propertyChange(DefaultVehicleController.java:274)
    	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:341)
    	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333)
    	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:266)
    	at org.opentcs.drivers.vehicle.VehicleProcessModel.commandExecuted(VehicleProcessModel.java:464)
    	at org.opentcs.virtualvehicle.LoopbackCommunicationAdapter.finishVehicleSimulation(LoopbackCommunicationAdapter.java:406)
    	at org.opentcs.virtualvehicle.LoopbackCommunicationAdapter.movementSimulation(LoopbackCommunicationAdapter.java:367)
    	at org.opentcs.virtualvehicle.LoopbackCommunicationAdapter.lambda$movementSimulation$6(LoopbackCommunicationAdapter.java:351)
    	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    	at java.base/java.lang.Thread.run(Thread.java:830)
    
    [20221025-08:09:32-851] WARNING kernelExecutor       o.o.common.LoggingScheduledThreadPoolExecutor.afterExecute(): Unhandled exception in executed task
    java.lang.IllegalArgumentException: Not the next claimed resources: [Point{name=Point-0020}, Path{name=Point-0017 --- Point-0020}]
    	at org.opentcs.util.Assertions.checkArgument(Assertions.java:50)
    	at org.opentcs.strategies.basic.scheduling.DefaultScheduler.allocate(DefaultScheduler.java:187)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.allocateForNextCommand(DefaultVehicleController.java:1031)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.checkForPendingCommands(DefaultVehicleController.java:938)
    	at org.opentcs.kernel.vehicles.PeripheralInteractor.startPostMovementInteractions(PeripheralInteractor.java:252)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.commandExecuted(DefaultVehicleController.java:909)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.handleProcessModelEvent(DefaultVehicleController.java:780)
    	at org.opentcs.kernel.vehicles.DefaultVehicleController.propertyChange(DefaultVehicleController.java:274)
    	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:341)
    	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333)
    	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:266)
    	at org.opentcs.drivers.vehicle.VehicleProcessModel.commandExecuted(VehicleProcessModel.java:464)
    	at org.opentcs.virtualvehicle.LoopbackCommunicationAdapter.finishVehicleSimulation(LoopbackCommunicationAdapter.java:406)
    	at org.opentcs.virtualvehicle.LoopbackCommunicationAdapter.movementSimulation(LoopbackCommunicationAdapter.java:367)
    	at org.opentcs.virtualvehicle.LoopbackCommunicationAdapter.lambda$movementSimulation$6(LoopbackCommunicationAdapter.java:351)
    	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    	at java.base/java.lang.Thread.run(Thread.java:830)
    

    Additional information

    Originally reported by @jfaigan in #56

    opened by swltr 0
  • Path cut&paste bug

    Path cut&paste bug

    Affected version

    5.6

    Steps to reproduce

    new some point and path in two diffrent layer,cut elements in one layer and paste to the other layer

    Expected behaviour

    path and points succeesfully copy to the other layer

    Actual behaviour

    only points paste to the other layer ,paths failed, and some path disappeared when cut。

    Additional information

    BTW, is there any convenient way to change layers of some elements

    opened by vincentknw 2
Releases(RELEASE_5.7)
  • RELEASE_5.7(Dec 22, 2022)

    • Bugs fixed:
      • In the web API, set the content type for a reply to GET /vehicles/{NAME} to application/json as specified.
      • When creating peripheral jobs, copy all attributes of the respective peripheral operation, and set the related vehicle and transport order attributes, too.
    • Other changes:
      • Avoid redundant property updates from vehicle drivers.
      • Avoid using webfonts / Google Fonts API in Asciidoctor documentation.
      • Add support for working with peripheral jobs to the web API.
      • Split the kernel application's defaultdispatcher.rerouteTrigger configuration entry into two separate entries: defaultdispatcher.rerouteOnTopologyChanges and defaultdispatcher.rerouteOnDriveOrderFinished.
    Source code(tar.gz)
    Source code(zip)
    opentcs-5.7.0-bin.zip(48.51 MB)
  • RELEASE_5.6(Jul 23, 2022)

    • New features:
      • Add explicit support for pausing vehicles, which would previously be implemented using messages sent to the vehicle drivers without being interpreted by the kernel. Vehicles now have a proper paused state, and VehicleService (and the Operations Desk application with it) provides an explicit way to modify it for each individual vehicle.
      • Defer resource allocations for paused vehicles. This keeps vehicles that do not explicitly support pausing from receiving more movement commands, effectively stopping them after they have processed the commands received before pausing.
      • Reflect vehicles' paused states in the web API and provide an endpoint to modify them.
      • Reflect vehicles' paused states in the operations desk by shading paused vehicles.
    • Bugs fixed:
      • Fix a bug where adding peripheral operations to a (newly created) path would also affect other paths in a plant model.
      • Fix a bug with auto-attaching communication adapters to vehicles that have a preferred communication adapter configured. Only attach a preferred communication adapter to a vehicle, if the corresponding adapter factory can actually provide an adapter instance for it.
    • Other changes:
      • Update the demo model provided in the Model Editor application:
        • Add a new section to show the integration and use of peripheral devices. The demo model now contains a location that represents an exemplary fire door that vehicles have to interact with when traversing the new section.
        • Update the demo model to use the latest model format (v0.0.4).
      • Update Spark to 2.9.4.
      • Update Jackson to 2.13.3.
      • Update AssertJ to 3.23.1.
      • Update Mockito to 4.6.1.
    Source code(tar.gz)
    Source code(zip)
    opentcs-5.6.0-bin.zip(47.34 MB)
  • RELEASE_5.5(Apr 26, 2022)

    • New features:
      • Inform EdgeEvaluator implementations about beginning and end of routing graph creation to allow them to optimize computations, e.g. by caching data that does not change while building the graph.
    • Other changes:
      • Add documentation for peripheral devices and peripheral operations. Also enable the respective GUI components by default now that there is documentation.
      • In the Operations Desk application's dialog for creating peripheral jobs, offer locations attached to a peripheral driver only.
      • Replace old references to the Plant Overview application in the developer's and user's guides with references to the Model Editor and/or Operations Desk applications.
      • Remove the statistics kernel extension and plugin panel. They have been moved to the example integration project.
      • Update SLF4J to 1.7.36.
      • Update Guice to 5.1.0.
      • Update Jakarta XML Bind API to 2.3.3.
      • Update JAXB Runtime to 2.3.6.
      • Update Jackson to 2.13.2 (and its data-binding package to 2.13.2.2).
      • Update Sulky ULID to 8.3.0.
      • Update JGraphT to 1.5.1.
      • Update cfg4j to 4.4.1.
      • Update JSR305 to 3.0.2.
      • Update JUnit to 5.8.2.
      • Update AssertJ to 3.22.0.
      • Update Swagger UI to 3.52.5.
      • Update the Gradle wrapper to 6.9.2.
      • Update Stats Gradle Plugin to 0.2.2.
      • Update License Gradle Plugin to 0.14.0.
    Source code(tar.gz)
    Source code(zip)
    opentcs-5.5.0-bin.zip(47.15 MB)
  • RELEASE_5.4(Feb 25, 2022)

    • New features:
      • Enable vehicle drivers to inspect the whole transport order before accepting it, not just the respective sequence of destination operations.
      • Reflect the currently claimed and allocated resources in a vehicle's state.
      • Show the currently claimed and allocated resources for a selected vehicle in the properties panel in the Operations Desk application.
      • Show all properties of a path's peripheral operations in a table instead of listing only the location and operation names.
      • Update web API specification and implementation to version 1.1.0:
        • Add claimed and allocated resources to the vehicle state and vehicle status message specification.
        • Add the precise position to the vehicle state message specification.
        • When creating transport orders, allow clients to provide incomplete transport order names, i.e. have the kernel complete/generate the names.
        • Add an endpoint for explicitly triggering dispatcher runs.
    • Other changes:
      • Skip the user confirmation for exiting the Kernel Control Center application.
      • In the File menu, improve the names of the entries for uploading a model to the kernel and downloading it from the kernel.
      • Update Jackson to 2.13.0.
      • Update Spark to 2.9.3.
    Source code(tar.gz)
    Source code(zip)
    opentcs-5.4.0-bin.zip(45.18 MB)
  • RELEASE_5.3(Sep 28, 2021)

    • New features:
      • Properly specify and implement claim semantics in the Scheduler interface, allowing custom scheduling strategies to take vehicles' planned future resource allocations into account.
      • Introduce VehicleCommAdapter.canAcceptNextCommand(), which can be used to (statically or dynamically) influence the amount of movement commands a comm adapter receives from its VehicleController.
    • Bugs fixed:
      • Execute virtual vehicle simulation using the kernel executor to avoid potential deadlocks.
      • Restore single-step mode for virtual vehicles.
      • Fix immediate withdrawal of transport orders.
      • When the Kernel application is started, initialize its components (e.g. dispatcher, router, scheduler) using the kernel executor, especially to avoid scheduling issues with plant models that are loaded with application start up.
      • Fix the order sequence details panel which would not load due to some wrong paths to a resource bundle.
      • Fix an issue where the Operations Desk was not in sync with the Kernel when using very large models.
      • Fix an issue where cutting and pasting elements in the Model Editor would create multiple elements with the same name.
    • Other changes:
      • Switch to publishing artifacts via the Maven Central artifact repository. (Previously, artifacts used to be published to JCenter, an artifact repository that has been discontinued.)
      • Update the license information: All components, including the Model Editor and Operations Desk applications, are now licensed under the terms of the MIT license.
      • When a vehicle is waiting for resources to be allocated (e.g. because resources are occupied/blocked by another vehicle), allow it to be rerouted from its current position. (Previously, rerouting was done from the point for which the vehicle was waiting, which could lead to unnecessary waiting times.)
      • When a vehicle is rerouted while it is waiting for peripheral interactions to be finished, properly reroute the vehicle from the peripheral's position.
      • When loading plant models with the Model Editor and Operations Desk applications, show more fine-grained steps in the corresponding progress bars.
      • In the Operations Desk, sort transport orders and peripheral jobs in the respective tables in descending order according to their creation time.
      • Reduce the time it takes the Operations Desk to process vehicle updates.
      • Update Gradle wrapper to 6.8.3.
      • Update JUnit 4 to 4.13.2.
      • Update JUnit 5 to 5.7.2.
      • Update Hamcrest to 2.2.
    Source code(tar.gz)
    Source code(zip)
    opentcs-5.3.0-bin.zip(44.63 MB)
  • RELEASE_5.2(Jul 26, 2021)

  • RELEASE_5.1(Jul 26, 2021)

    • Bugs fixed:
      • Made names generated for transport orders to be (really) lexicographically sortable.
    • New features:
      • Add a QueryService to the kernel that can be used to execute generic/custom queries via registered QueryResponder instances.
      • Add support for creating plant models with multiple layers.
      • Add experimental support for peripheral devices, with device interactions triggered by vehicles travelling along paths. (Note that this is not really documented, yet, and that experimental means that developers using any parts of it are on their own, for now.)
      • Add a new version of the XML Schema definition for the openTCS plant model.
      • Allow the scheduler to be triggered explicitly via Scheduler.reschedule().
      • Show properties in model elements' tooltips.
    • Other changes:
      • Split the Plant Overview application in two separate applications: The Model Editor provides model creation and manipulation functionality, while the Operations Desk is used for interacting with a plant while it is in operation.
      • Split the Operations Desk's pause button into a pause and a resume button.
      • Remove support for groups. (Layers can now be used to group plant model components.)
      • Allow project-specific edge evaluators and routing group mappings to be used.
    Source code(tar.gz)
    Source code(zip)
    openTCS-5.1.0-bin.zip(44.62 MB)
  • RELEASE_5.0(Jul 26, 2021)

    • Remove deprecated code.
      • Remove the TCP host interface kernel extension.
      • Remove the kernel application's GUI.
    • TCSObject and its subclasses are now immutable and do no longer implement the Cloneable interface.
    • Remove the JDOM dependency.
    • In BasicCommunicationAdapter, use an injected ExecutorService (e.g. the kernel executor) instead of starting a separate thread for every vehicle driver instance.
    • Add a new and cleaned up version of the XML Schema definition for the openTCS plant model and add new bindings.
    • Update project to Java 13.
    • Update Mockito to 2.28.2.
    Source code(tar.gz)
    Source code(zip)
    openTCS-5.0.0-bin.zip(33.11 MB)
  • RELEASE_4.20(Jul 26, 2021)

    • Fixes:
      • Default Scheduler: Properly handle requests for same-direction blocks for some edge cases.
      • Default Scheduler: Really free all resources when taking a vehicle out of the driving course.
    • Other changes:
      • Plant Overview: Improve performance for vehicle state updates.
    Source code(tar.gz)
    Source code(zip)
    openTCS-4.20.0-bin.zip(28.64 MB)
Owner
openTCS
The open Transportation Control System
openTCS
Markdown editor control for JavaFX

An advanced markdown-editor control for JavaFX.

Daniel Gyoerffy 23 Dec 28, 2022
Control a VNC server from a Minecraft server today!

MakiDesktop ?? Controlling VNC through a Minecraft server How does it work Load jar plugin onto 1.17.1 Paper server It will connect to IP:PORT specifi

null 5 May 1, 2022
PostgreSQL is the world's most advanced open source database. Also, PostgreSQL is suitable for Event Sourcing. This repository provides a sample of event sourced system that uses PostgreSQL as event store.

Event Sourcing with PostgreSQL Introduction Example Domain Event Sourcing and CQRS 101 State-Oriented Persistence Event Sourcing CQRS Advantages of CQ

Evgeniy Khyst 146 Dec 20, 2022
Lobby System Template for a multiplayer java game, with chat and other features, using JavaFX and socket TCP (will be extended to UDP).

JavaFX-MultiplayerLobbySystem JavaFX lobby system for multiplayer games with chat, ready toggle and kick buttons, using socket TCP by default. Demo Cr

Michele Righi 7 May 8, 2022
Event-driven trigger + recording system for FFXIV

Triggevent Fully event driven trigger + overlay system for FFXIV. Makes triggers easier to develop and test. Allows triggers to have custom configurat

null 63 Dec 28, 2022
InstallRepos - Install GitHub Repository on any Operating System (Linux, MacOS or Windows).

Install Repos Install GitHub Repository on any Operating System (Linux, MacOS or Windows). Requires Java JRE 17.0.0.1 or later. Repository Includes: s

Tushar Chaurasia 2 Apr 21, 2022
A hotel management system desktop application, built with java SWT/Swing

A hotel management system desktop application, built with java SWT/Swing, with tabs to manage bookings, rooms, customers, payments, cancellations, hotel inventory orders, catering and a plan to visualize all the reservations for the month.

null 1 Jan 12, 2022
Automated door opening system w/GUIs programmed in Java and Arduino

The Automated Door Opening System is a major project created in both Java and Arduino for a first year Engineering course. This project is an iteration of my MATLAB version of this project.

Crasher1225 3 Jan 28, 2022
an open souece, lightWeight and beautiful GUI for VPN Usage

free, open source, lightweight and beutiful GUI for vpn usage , this Project is part of my #100DaysOfCode challenge in twitter : @My_Terminal Dependen

Mohammad Esmaeili 21 Nov 9, 2022
An open source application to make your own android applications without coding!

Stif An Open source project for building Android Application at a go both with and without coding. This project was inspired from Scratch and Sketchwa

Nethical org 5 Aug 28, 2021
Open API demo for CloudQuery

open-api-demo This project is an example for CloudQuery Community, which can assist community users in code development such as organizational structu

ToolsLab-BinTools 12 Jan 4, 2023
an android app to browse urls before open

link eye - kuesji koesnu - 8/8/2021 an android app to browse urls before open try to open a link, select link eye and choose always to start using

kuesji koesnu 25 Dec 31, 2022
Open Weather Map API wrapper for Java.

Java Open Weather API Wrapper Open Weather Map API wrapper for Java. This project allows you to seamlessly implement the Open Weather Map API into you

Will 2 Feb 6, 2022
This is an open source visualization for the C4 model for visualising software architecture.

c4viz: C4 Visualization This is an open source visualization for the C4 model for visualising software architecture. It expects input in the form of a

Peter Valdemar Mørch 40 Dec 6, 2022
WavesFX an open-source Waves wallet for Windows, macOS and Linux

WavesFX WavesFX is an open-source Waves wallet for Windows, macOS and Linux. Telegram Chat Releases can be found on the release list. How to build Wav

WavesFX 22 Apr 15, 2022
MaterialFX is an open source Java library which provides material design components for JavaFX

MaterialFX MaterialFX is an open source Java library which provides material design components for JavaFX Explore the wiki » Download Latest Demo · Re

Alessadro Parisi 744 Jan 3, 2023
Best Route Transportation with the Minimum Vehicles.

TransportRoute_Algorithm Best Route Transportation with the Minimum Vehicles. Problem Statement If someone has to deliver/export goods, his key priori

Keshaw Soni 2 Jun 15, 2022
Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based system

FRC 2022 Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based s

null 4 Oct 4, 2022
JGit An implementation of the Git version control system in pure Java.

JGit can be imported straight into Eclipse and built and tested from there. It can be built from the command line using Maven or Bazel. The CI builds use Maven and run on Jenkins.

Eclipse Foundation 1k Jul 5, 2021
Gitlet - A version control system for managing file versions, mirroring the features of Git

Gitlet - A version control system for managing file versions, mirroring the features of Git. Emphasized the serialization and manipulation of files to compress, access, and manage file content efficiently. Stressed the employment of appropriate data structures and file persistance.

null 1 Jan 4, 2022