openTCS version 2.2
===================
1. Introduction:
================
openTCS (short for "open Transportation Control System") is a free base for
controlling vehicles in an Automated Guided Vehicle System (AGVS). (It should
generally be possible to control any track-guided vehicle with it, but AGVS are
the main target.) It is being maintained at the Fraunhofer Institute for
Material Flow and Logistics in Dortmund, Germany.
The software runs on the Java platform (JDK 1.7 or later). All libraries
required for compiling and/or using it are included in the distribution.
openTCS itself is not a complete product you can use "out-of-the-box" to control
an AGVS with. It is an implementation of the basic data structures and
algorithms (routing, dispatching, scheduling) needed for running an AGVS with
more than one vehicle; it tries to be as generic as possible to allow
interoperation with track-guided vehicles of practically any vendor. Thus it is
usually necessary to at least write 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.
The openTCS source code is licensed under the terms of the MIT License. A copy
of the license is included in the distribution. (See the file LICENSE.txt.)
Please note that openTCS is distributed without any warranty - without even the
implied warranty of merchantibility or fitness for a particular purpose. Please
refer to the license for details.
We are grateful to any developers that have contributed to openTCS. Section 7
contains a list of all contributors.
To download the latest version and/or read news about openTCS, please see its
web site at http://www.opentcs.org/.
2. System requirements:
=======================
The openTCS source code is written in Java. To compile it, you need a Java
Development Kit (JDK) 1.7 or later. To run the resulting binaries, you need a
Java Runtime Environment (JRE) 1.7 or later. All other required libraries are
included in the openTCS distribution.
The openTCS build process is automated based on Apache Ant. To build openTCS,
you need Apache Ant 1.8 or later. (For more information about Ant please see
http://ant.apache.org/.) The whole build process is programmed in the Ant build
script - see the file 'build.xml' in the main directory.
These are the main build targets you need to know to get started:
- buildall:
Compiles everything to a runnable state, i.e. after running this target you
can use the included shell scripts/batch files to start all system components.
- buildapidocs:
Generates the API documentation in build/apidocs/.
- deployall:
Build and packages all system components for production use in deploy/.
- runtests:
Builds everything and runs all JUnit tests (located in tests/). Test results
can be found in reports/junit/.
- cleanall:
Cleans up everything produced by the other targets.
3. NetBeans project:
====================
The openTCS project team mainly uses NetBeans for development. The NetBeans
project data is included in every openTCS release, so if you happen to use
NetBeans, too, all you have to do is load the openTCS project in it. (Currently,
NetBeans 7.1 is being used, so you need that or a newer version.)
After loading the project in NetBeans, you can run e.g. the 'buildall' target in
the 'build.xml' file to build the whole system.
4. Getting started:
===================
To get started with openTCS, please refer to the introductory documentation that
should be included in the distribution.
To start developing with openTCS, the file openTCS-Base.jar should be included
in your class path. Please refer to the JavaDoc API documentation that should
also be included in the distribution, especially:
- The interface documentation of org.opentcs.kernel.Kernel describes the main
interface of the openTCS kernel that accepts calls from clients.
- The class documentation of org.opentcs.remote.rmi.DynamicRemoteKernelProxy
describes how to get an instance of org.opentcs.kernel.Kernel from a separate
JVM/process.
- The package documentation of org.opentcs.data.order describes how to create
transport orders programmatically via the kernel interface.
- The package documentation of org.opentcs.drivers describes the basic steps
needed to create your own vehicle driver.
5. Limitations:
===============
openTCS has some known limitations that we hope we can address in the future.
Here's a (probably incomplete) list:
- The complete API of the kernel with all features is currently only available
via RMI/the org.opentcs.kernel.Kernel interface. This limits clients that need
or want to use all of these features to the Java platform (and RMI).
- Parts of the documentation and the graphical frontend are currently available
in German only.
- There is practically no code for deadlock avoidance for concurrently scheduled
vehicles, i.e. it's possible that two or more vehicle moving in the same area
run into a deadlock, which then needs to be resolved manually. This can be
avoided by taking it into account when designing the layout of the vehicles'
tracks.
6. Support:
===========
Please note that, while we are happy to be able to release openTCS to the public
as free software and would like to see it used and improved continuously, the
development team cannot provide unlimited free support for it. Supporting,
fixing bugs and improving the software requires funding, and we depend on
providing commercial openTCS-related services for that.
If you have technical/support questions, you can send them via e-mail to
info@opentcs.org. The developers involved will try to respond when possible.
7. Contributors:
================
We are grateful for anyone helping us to improve openTCS by contributing code or
documentation. So far, the developers involved were (in alphabetical order by
last name):
- Hubert Buechter
- Iryna Felko
- Heinz Huber
- Olaf Krause
- Sebastian Naumann
- Philipp Seifert
- Andreas Trautmann
- Stefan Walter
- Youssef Zaki
If you have contributed to openTCS and we have missed you on this list, please
accept our apologies and send us an e-mail (to info@opentcs.org).