Giter Club home page Giter Club logo

opentcs's Introduction

openTCS

Contributor Covenant

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 21, with the recommended Java distribution being the one provided by the Adoptium project. 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.

opentcs's People

Contributors

fymste avatar gamze1806 avatar guningbo avatar lennyslounge avatar martingr avatar sebo001 avatar swltr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opentcs's Issues

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
  • ...

Rename root project name or change this git repo name.

In settings.gradle:1 we have:

rootProject.name = 'openTCS'

if we clone this repo to local dir, we use

git clone https://github.com/openTCS/opentcs.git

which will create a dir opentcs in local dir. Well, we will have this issue when compile with gradle embedded in idea 2023.1

gradle java.lang.IllegalStateException: Module entity with name: opentcs should be available

I found the solution here: https://youtrack.jetbrains.com/issue/IDEA-317606/

I rename this folder from opentcs to openTCS and problem solved!

I think you can do one of the following steps:

  1. Add comment to readme file to tell user clone to a folder named openTCS
  2. change this repo name to openTCS
  3. change rootProject.name to openTCS

thanks 😉

5.16 add envelop and peripheraloperation to a path , upload failed

Affected version

5.16.0

Steps to reproduce

1 add peripheral operation to path0;
2 add envelop to path0;
3 upload model to kernel

Actual behaviour

kernel failed to save model
...

Additional information

[20240521-10:40:27-925] WARNING kernelExecutor o.o.common.LoggingScheduledThreadPoolExecutor.afterExecute(): Unhandled exception in executed task
java.lang.IllegalStateException: Exception saving model
at org.opentcs.kernel.persistence.XMLFileModelPersister.saveModel(XMLFileModelPersister.java:88)
at org.opentcs.kernel.services.StandardPlantModelService.savePlantModel(StandardPlantModelService.java:144)
at org.opentcs.kernel.services.StandardPlantModelService.createPlantModel(StandardPlantModelService.java:182)
at org.opentcs.kernel.extensions.rmi.StandardRemotePlantModelService.lambda$createPlantModel$1(StandardRemotePlantModelService.java:174)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Exception marshalling data
at org.opentcs.util.persistence.v004.V004PlantModelTO.toXml(V004PlantModelTO.java:171)
at org.opentcs.util.persistence.ModelParser.writeModel(ModelParser.java:81)
at org.opentcs.kernel.persistence.XMLFileModelPersister.saveModel(XMLFileModelPersister.java:85)
... 9 more
Caused by: javax.xml.bind.MarshalException

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 #5

Has an error after regularly rerouting when define some points.

Affected version

5.11.0

...

Steps to reproduce

How can the incorrect behaviour be reproduced?

  1. define some report points.
  2. create one trnaport order that its route will pass these report points.
  3. regularly reroute this vehicle after this vehicle has passed the first report point.

Expected behaviour

What would be the correct/expected behaviour?

its will complete this transport order.

Actual behaviour

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

image

Additional information

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

  • Operating system and version: Windows 11
  • Java distribution version: Oracle Java Runtime Environment 13
  • is or not exists bug in DefaultVehicleController.discardSentFutureCommands? It seems that too many commands were removed from the futureCommands.

Load vehicle allowOrderType while kernel startup

Currently, the vehicle's allowOrderType can only be configured in the OperationDesk and cannot be set in the ModelEditor.
If the Kernel is restarted, the vehicle's allowOrderType will revert to '*', resulting in the dispatch not using the expected vehicle.

So, I hope to write the allowOrderType into the Map file, so that the Kernel can automatically read this value upon startup.

May I ask what considerations were behind the initial design?

Is there currently a way to achieve my goal?

Thank you.

Snipaste_2024-06-11_22-49-04

Snipaste_2024-06-11_22-50-36

Has an error after forced rerouting

Affected version

5.10.0

Steps to reproduce

How can the incorrect behaviour be reproduced?

  1. create an order.
  2. pause vehicle on Operations Desk.
  3. set new initial position on Kernel Control Center.
  4. forced rerouting on Operations Desk.

Expected behaviour

What would be the correct/expected behaviour?

The vehicle starts from the new initial position and continues to complete the order.

Actual behaviour

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

image

Additional information

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

  • Operating system and version: Windows 11
  • Java distribution version: Oracle Java Runtime Environment 13
  • ...

A new Web API Wanted

I hope to add a web api, which can set the location of the vehicle according to the vehicle name:
[POST] /vehicles/{NAME}

NAME(required): The name of the vehicle to be created.
newValue: The position name of the vehicle started.

The Web API function is the same as the Vehicle driver window in the open-TCSKernelControlCenter, whick can set the loopback options of vehicle position. However my java is so poor that i cannot make the API. Plz give me a hand.

A new Web

User story / use case

A description of the proposed functionality. What is the purpose of this proposal? What problems would it solve? Are there already ideas for a solution?

A

User story / use case

A description of the proposed functionality. What is the purpose of this proposal? What problems would it solve? Are there already ideas for a solution?

Published Events no longer have Type info even though it is in the documentation

Affected version

Name the affected version, i.e. "release x.y.z" or "revision ".
5.7.0
...

Steps to reproduce

How can the incorrect behaviour be reproduced?

  1. Use the API to listen to the Events
  2. Type element is missing from all types (TransportOrder, Vehicle and PeripheralJob)
  3. ...

Expected behaviour

What would be the correct/expected behaviour?

Type element should be provided as per the API documentation

Actual behaviour

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

Type element is not in the returned json

Additional information

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

  • Operating system and version: e.g. Ubuntu Linux 20.04, Windows 10, ...
  • Java distribution version: e.g. Oracle Java Runtime Environment 13
    image

Allow changing plant model elements' layers after creating them

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

TranportOder status change failed error

Affected version

OpenTcs: release 5.10.0
Used adapter: Custumed NeNa adapter from here for connecting to ROS2 humble.

...

Steps to reproduce

How can the incorrect behaviour be reproduced?

  1. create orders which have two random transport points with load cargo and unload cargo operation
  2. repeat sending orders through WebAPI times.
  3. Sometimes, it occurred the problem that, the status of the operation stayed at "TRAVELLING" even when the vehicle finished its action.

Expected behaviour

Q1: For the problem, failed to change the status of operations, which part of the program should I check,? (Kenerl, OperationsDesk or Adapter ...)

Q2: where will the status of operations be changed in the program when the vehicle begins and finishes the operation process?

Q3: Does the behaviour to change the status of operations in the program use the "firePropertyChange" function?

...

Additional information

the screenshot of the problem:
problem_windows_shutcut_20240401

the code when the operations actually done:

    /* --------------- 3a: Handle load cargo feedback ---------------*/
    public void onExecuteLoadCargoFeedback(@Nonnull String feedback) {
        if (this.excutingOperation.equals(OperationConstants.LOAD_CARGO)){
            System.out.println("onOperationLoadCargoFeedback: " + feedback);
            if (feedback.startsWith("FINISH")) {
                System.out.println("onExecuteLoadCargoFeedback() -> Success");
                this.processModel.setVehicleLoadHandlingDevices(Collections.singletonList(new LoadHandlingDevice(LOAD_HANDLING_DEVICE_NAME, true)));
                onOperationExecutionFinished(); // Fake that the operation was successful.
            }
        }
    }

    /* --------------- 3b: Handle unload cargo feedback ---------------*/
    public void onExecuteUnloadCargoFeedback(@Nonnull String feedback) {
        if (this.excutingOperation.equals(OperationConstants.UNLOAD_CARGO)) {
            System.out.println("onOperationUnLoadCargoFeedback: " + feedback);
            if (feedback.startsWith("FINISH")) {
                System.out.println("onExecuteUnloadCargoFeedback() -> Success");
                this.processModel.setVehicleLoadHandlingDevices(Collections.singletonList(new LoadHandlingDevice(LOAD_HANDLING_DEVICE_NAME, false)));
                onOperationExecutionFinished(); // Fake that the operation was successful.
            }
        }
    }
  • Operating system and version: Windows 7,
  • Java distribution version: java 13.0.2 2020-01-14 (build 13.0.2+8)
  • ...

Any suggestions or hints, I'd appreciate it!

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

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
  • ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.