OpenDS is a driving simulator primarily intended for research. The software is written entirely in Java and is based on the jMonkeyEngine framework, a scene graph based game engine which is mainly used for rendering and physics computation. On the appropriate hardware, it can run even advanced city scenarios with high frame rates.
No programming knowledge is needed to run the example tracks included with the release or the additional driving tasks available from white|c. However, if you are comfortable writing Java code, you can join the developer team and contribute your own extensions.
OpenDS is based on jMonkeyEngine (jME), a high performance scene graph based graphics API. This open-source framework has been implemented in Java and has built up a reputation in game development. Its default renderer, the Lightweight Java Game Library (LWJGL), enables full OpenGL 2 through OpenGL 4 support. In version 3.0, the jME framework uses jBullet, a Java port of the Bullet Physics library, in use by top industry developers. Wrapping Bullet Physics library into jME3 objects assures easy interaction and future updates can include support for native bullet, including GPU acceleration. jBullet is a multi-threaded physics engine which allows mesh-accurate collision shapes and enables the experience of forces such as acceleration, friction, torque, gravity and centrifugal forces during simulation. The support of common model formats allows the simulator to load any 3D environment. Further features of jME’s renderer are support of different lighting options (per-pixel lighting, multi-pass lighting, Phong lighting, tangent shading, and reflection), texturing (multi-texturing through shaders), and the capability to model special effects such as smoke, fire, rain, snow etc. Supported post processing and 2D filter effects are reflective water, shadow mapping, high dynamic range rendering, screen space ambient occlusion, light scattering, fog, and depth of field blur. Nifty GUI integration enables an easy-to-use toolkit for designing platform independent graphical user interfaces within the rendering frame, which is used for menus and message boxes during simulation. Concerning the use with OpenDS, jME’s GUI node (speedometer and revmeter panels), multiple view ports (rear-view mirror), and basic audio support for playing positional and directional sounds, are rather useful.
OpenDS consists of three major components: the driving task editor, the simulator, and the drive analyzer. With the graphical driving task editor, which is not to be confused with a map editor, the user can load an empty map model and place further objects; e.g., driving car, road signs, traffic lights, and vehicles. Moreover, car properties and events, which will be triggered in the simulator at run time, can be specified. After finishing a driving task, it can be stored in XML format in order to provide the data for the simulation component, in which the given map model will be rendered and attached to the physics engine for realistic simulation. Currently, the main features of the extensible simulator implementation are different capabilities to control traffic lights (pre-defined cycles, red/green on approach, interactive external control), simulation of road traffic and different weather conditions, and a realistic engine and transmission model, which can be used to compute the fuel consumption from the current pedal state considering the power needed to overcome rolling resistance, air resistance, inertia, and potential energy, as well as the engine’s inner friction. Furthermore, events which have been defined in the driving task can be triggered under the given conditions; e.g., set the driving car’s position, let objects appear/disappear, move vehicles, perform reaction measurements, play a sound file, etc. The reaction data recorded in this way can be visualized for example as a bar chart with the integrated Jasper Report module and exported to text or PDF format.
The third major component of OpenDS is the drive analyzer, which is able to visualize the car data recorded during a drive several times per second; e.g., position, direction, speed, and pedal states. It enables the examiner to recreate the exact simulation environment from an earlier drive in order to analyze the car’s state in every position. Furthermore, the car’s driven route can be compared to a pre-defined normative track in order to compute the deviation, which can be considered as a measure of driving performance.
In order to facilitate a realistic simulation, OpenDS not only provides an interface for game controllers, but also a CAN-interface for connecting to real cars, which enables the simulator to request car properties – like steering angle and pedal states – and to provide the in-car devices with simulation values. To increase the driving experience, OpenDS supports multiple screen outputs, which can be used for 180 degree projection.