loader-logo

OpenTCS

OVERVIEW

An open-source desktop application to auto the vehicle transport system for an industry campus. This application can be used to give instructions to vehicles to move from one position to another and perform some tasks like load and unload cargo etc. This application consists of three modules as Kernel, Kernel Control Center and Plant overview.

The Kernel is the heart of the application, the module is basically a server that runs several threads for different operations like checking the path, vehicle position, execute transport order, etc.

Kernel Control Center for controlling and monitoring the kernel, e.g. providing a detailed view of vehicles/their associated drivers.

Plant overview for modeling and visualizing the plant model.

Problem Statements

  1. The Plant overview uses an XML file for plotting the campus map. This file consists of several parameters like the model, station points, charging, etc.
    • Our client’s requirement was to use the database instead of the XML file and hence map the schema accordingly.
    • ORM tools like Hibernate were used to map each database entity according to their relationship like one-to-many etc as the mapping structure was a bit complex.
    • The current application after our customization can use the database to load the model as well XML of the model if not present in the database.
  2. Display data coming from Rest calls.
    • The client provided us a dummy Rest server which continuously sends vehicle parameters like fuel, tire pressure, rpm, etc.
    • This data was required to be displayed in the Kernel Control Center for monitoring also in every span of 5 sec this data should get refreshed.
    • We used jersey client for capturing the data coming through the Rest server and edited the Kernel Control Center accordingly to display it.
    • Swing framework is used as a GUI framework to build the Kernel Control Center which led to using the Timers to refresh the data in every span of 5 sec.
    • While data is captured, simultaneously data gets stored in the database as well.
  3. Routing and dispatching.
    • As the data that is coming from Rest calls will tell the application about the vehicle’s current condition, the client asked us to create a fleet check system.
    • For this, we needed to extract data in the strategies part of the Kernel and build our own strategy to check the vehicle condition.
    • The strategies were used by Kernel to run several threads.
    • This led to the creation of a custom thread that checks the vehicle condition regularly by extracting data from the database.
    • Those vehicles which do not full-fill the criteria defined in this custom thread will not be given the next transport order.
    • In the Plant overview, the vehicle will automatically be shown to get some error for the ease of troubleshooting.
  4. User Management System.
    • The application was ideal for any kind of user.The client’s requirement was to create a user management system.
    • On the basis of roles, the functionalities of the application were needed to be accessible.
    • This was the most challenging thing as the whole application was built on swing framework we needed to create the user management from scratch.
    • We created the user management separately and then integrate it with Plant overview and Kernel Control Center.
    • While integration we provided functionalities to get enable or disable on the basis of roles.
    • Integration was done in a way that user management and application module run separately without affecting any functionality of each other.
    • Plant overview and Kernel control center’s internal binding was built on the Guice module(Google’s framework based on DI) similar to the spring framework.
    • The user management was bonded with the application accordingly.
5 Points


Leave a Reply

Your email address will not be published. Required fields are marked *


Top