Working principles

OCTAS® is a framework, written in C++, that allows composing simulations from plugins. These plugins are usually written in C++ as well, and can be distributed as compiled software.

Almost any aspect of a simulation can be added or modified through plugins, and consequently, almost any functionality within OCTAS® comes in the form of plugins. These plugins are joined by a core framework (the heart of OCTAS®), which is a very lightweight software designed to manage the cooperation of these plugins.

Why the plugin-based architecture?

OCTAS® is based on the idea that complex simulations must be composed from many parts, that these parts should play a dedicated role, and that they should be designed by experts in their respective field. These parts can then be used and re-used in many different use cases. The plugin-based architecture allows just this, by providing some very specific advantages:

For simulation users

Adding plugins usually is as simple as copying a file into a folder. You don’t need to recompile the simulation to add new features, and you don’t need to worry how to compile external dependencies of these plugins.

Plugins (at least as implemented in OCTAS®) interoperate on very fast, low-level binary interfaces. This means more efficient simulations and less communication overhead.

Your simulation use case may be unique. But chances are that many ingredients are already out there. By providing simulation models als compact, independent plugins, OCTAS® supports reusable, modular components.

With clearly defined interfaces between models and plugins, you can exchange them easily based on your requirements. Starting with a simple model, then upgrading to a more accurate one is typically just a minor configuration—no need to change simulations or whole scenario definitions.

For simulation developers

A plugin may consist of nothing more but a very sharply defined model or functionality. All else, such as building an environment, handling interfaces, or providing a GUI, is done by OCTAS®, or the ecosystem of plugins.

Plugins can be developed and distributed independently by anyone, anywhere, on a wide range of very different systems. OCTAS® assures that these plugins work together along clearly defined interfaces. Pick the platform, IDE, and compiler that work best for you.

Instead of writing a laser scanner simulation for the automotive domain, why not simply write a laser scanner simulation—and let users integrate it into any simulation?

Plugins can be shared as open source or closed source, so developers can decide their policy and licensing individually. The base framework has no copyleft and few restrictions.

Naturally, we encourage free and open source software. But we also realize that development of advanced simulations is costly; that some use-cases such as safety-critical systems, require guarantees, certification, or permanent support; and that many pioneering ideas come from small or medium companies. That’s why OCTAS® actively supports the commercial development and distribution of plugins.

This modularity introduces flexibility, but also complexity. Therefore, OCTAS® is a very universal framework, but not necessarily the best solution for every use-case. If you have a simulation tool or toolchain for a specific purpose that fits your current and foreseeable requirements, switching to OCTAS® may provide little added value. If, in turn, your requirements change dynamically, if you need to be prepared to integrate new models or support new domains, OCTAS® is designed for you.

Defining simulations in XML

The following snippet shows an XML file (with some excluded parts for brevity) that defines a world including a lunar surface, a rover, and a time-of-flight camera. Steppers represent simulation models—for scattering moon rocks, calculating vehicle kinematics, rendering images, and simulating the time-of-flight camera.

Building models in Blender

The open-source 3D modeling and animation software Blender is a natural complementary tool for working with OCTAS®. Through a Blender plugin, 3D models can be designed and equipped with many relevant properties for use with OCTAS®. The overall setup can be exported to files that can be directly included in OCTAS® projects. The plugin also offers tools for debugging models based on typical issues.

Of course, other tools can be used as well, since OCTAS® relies on established file formats and open definitions.