Disclaimer: this section is outdated, so some code might not run. See the Tutorials page for more up to date code.

CRAM Software and Architecture Overview

For an overview of software of CRAM v0.2 take a look here.


CRAM code is distributed over multiple Git repositories that can be mostly found under the https://github.com/cram2/cram.

Below is a diagram showing the relations of different repositories, their usage and for some the descriptions of single packages. The diagram only shows the packages necessary for running CRAM in the simulation mode. In addition to those, there are packages for using it on physical systems, packages for logging the execution, interfaces to controllers, interfaces to robot vision systems, and many more packages that are specific for a certain application and are not described here for the sake of simplisity and brevity.

Roslisp is included in the official ROS distribution and, together with roslisp_common, they are hosted by the ROS Github organization.

KnowRob is an external system that CRAM uses for managing knowledge. Its source code is also hosted on GitHub.

CRAM is to 90% written in Common Lisp and is packaged using ASDF and ROS. Some of the reasons why Common Lisp was chosen as the language for CRAM are listed here. More on packaging etc. you can read here.


CRAM is designed in such a way that one can incrementally load packages for acquiring more complex functionality implementing the same interfaces. ….the rest is todo…