User Tools

Site Tools


CRAM: Cognitive Robot Abstract Machine

CRAM (Cognitive Robot Abstract Machine) is a software toolbox for the design, the implementation, and the deployment of cognition-enabled autonomous robots performing everyday manipulation activities. CRAM equips autonomous robots with lightweight reasoning mechanisms that can infer control decisions rather than requiring the decisions to be preprogrammed. This way CRAM-programmed autonomous robots are much more flexible, reliable, and general than control programs that lack such cognitive capabilities. CRAM does not require the whole domain to be stated explicitly in an abstract knowledge base. Rather, it grounds symbolic expressions in the knowledge representation into the perception and actuation routines and into the essential data structures of the control programs.

The CRAM kernel consists of the CPL plan language and the KnowRob knowledge processing system. Both are tightly coupled to the perception and actuation components. CRAM is realized in a highly modular way and can be extended with plug-ins providing additional cognitive capabilities.

CPL Extension Modules

  • Designators are symbolic descriptions of entities such as objects (e.g. mugs, plates, …), locations and parameterizations of actions. Designators unify symbolic and grounded concepts of the high level control program and the parameterization of the lower level components, which is necessary to efficiently reason about the execution of plans.
  • Process Modules encapsulate lower-level control processes that can be activated, deactivated and parameterized by the high-level control program. They resolve symbolic properties of designators and generate the parameterization of the low-level control routines, by taking into account the current belief state.
  • Recording of an extensive Execution trace, including the belief state at any point in time and the internal state of the control program.
  • Reasoning components include a bridge between CPL and KnowRob by incorporating the foreign language interface of SWI-Prolog into Common Lisp, a reasoning component based on the RETE algorithm and a library of predicates that allow for reasoning about plan execution, based on the execution trace.

KnowRob Extension Modules

KnowRob is a pragmatic knowledge processing system for autonomous robots that provides grounded knowledge processing and reasoning services. It is implemented in a highly modular way, allowing to load additional modules only when needed. The documentation of KnowRob and its extension modules can be found here and here. For more information on the concepts behind the system, have a look at the KnowRob page. The extension modules that are currently available in ROS include:

  • ias_knowledge_base - the KnowRob base ontology
  • comp_ros - read information from ROS into the system (currently: object poses)
  • comp_spatial - compute qualitative spatial relations on demand
  • comp_temporal - compute temporal relations for time points and time spans
  • ias_semantic_map - the semantic environment map of the IAS kitchen
  • mod_vis - visualization modules for entities in the knowledge base

CRAM is available as several ROS packages and stacks through the tum-ros-pkg repository. CPL and the CPL extensions have been packaged into the ROS stack cram_pl. KnowRob has been packaged into the ROS stack knowrob.


This project received support as part of the PR2 Beta Program by Willow Garage.


Journal Articles and Book Chapters

Towards Performing Everyday Manipulation Activities (Michael Beetz, Dominik Jain, Lorenz Mösenlechner, Moritz Tenorth), In Robotics and Autonomous Systems, Elsevier, volume 58, 2010. [bib] [pdf]

Conference Papers

CRAM -- A Cognitive Robot Abstract Machine for Everyday Manipulation in Human Environments (Michael Beetz, Lorenz Mösenlechner, Moritz Tenorth), In IEEE/RSJ International Conference on Intelligent Robots and Systems, 2010. [bib] [pdf]
Powered by bibtexbrowser
Export as PDF or BIB

research/cram.txt · Last modified: 2011/08/18 14:57 by tenorth