What is it?

Introduction

RobCoGen is a code generator, a program whose output is source code (currently C++ and Octave (Matlab) files). RobCoGen is a command line tool, written basically in Java.

The generated source code implements efficiently common kinematics and dynamics algorithms for a specific articulated robot. The code can be used in your custom application, wherever kinematics/dynamics computations are needed.

The main input of RobCoGen is a text file describing the structure of an articulated robot, such as a manipulator or a humanoid. The output is robot specific code, optimized, suitable for both simulations and hard real time control.

RobCoGen is not a rigid body dynamics simulator. However, it generates a fast implementation of the forward dynamics algorithm for your robot, which is a fundamental component of a simulator.

RobCoGen is not a controller. However, it generates code for various matrices (coordinate transforms, Jacobians, inertia matrix) which are commonly used in model based controllers.

Motivation

To simulate and control our robots we want efficient code, possibly in different programming languages. For hard real time control we also need predictable execution time. Rigid body dynamics algorithms are text book knowledge, but are not trivial to implement by hand; coordinate transforms are conceptually simple but confusing to deal with. RobCoGen was designed to address all these issues, and to relieve the roboticist from some manual coding which is hard, time consuming, error prone.

Existing tools based on symbolic simplification have few possible drawbacks, including: not so easy to use, no support for multiple programming language, only commercially available, generate hard-to-understand code. On the other hand, general purpose dynamics engines are less efficient when compared to a code generation approach. They are more flexible as they would work with a robot model that is created at runtime (i.e. a data structure), but doing so is rarely an actual requirement of the application.