Download and Install
Quick Start

Driver Interfaces


Full Software Listings

Dev Guide

Users Logo
Mailing lists



Guide to Beginning Development

Reviewed for release 2.13.0.

Whether you have big development plans or just want to see what is envolved in using Orca, you have to start by writing a single component. You can add a new component to the Orca source tree which downloaded or checked out from SVN but it is inconvenient (mostly because it is large, seems complicated, and can be slow to recompile). You can follow these instructions to set up your own Orca-based project and create the first component.

Step 1. Create a separate project for yourself.

Read: Starting Your Own Orca Project

Make sure this generic project compiles. One component you already have: it's called somecomponent and it came with your Empty Project. (The source is in [EMPTY_PROJ_SRC]/src/components/somecomponent ). It's an excellent starting point in terms of the build system but does not currently contain good examples.

Step 2. Copy an existing component.

Read these instructions first which tell you how to add any new code to your project. Concentrate on the parts which talk about adding a new component.

Read: Adding Source Code to Orca

Which component to copy?

  • If you are developing something specific, then you probably want start with a component similar to what you have in mind. Try to find it in the Orca distribution. Ideally it would have interfaces similar to yours or a similar data flow. For example, if you are developing a server for a new robotic platform, then perhaps start with SegwayRmp component. (The source is in [ORCA_SRC]/src/components/segwayrmp ). On the other hand, if you writing a sensor server, take a look at Laser2d. (The source is in [ORCA_SRC]/src/components/laser2d )
  • If you just want to evaluate Orca, then you probably want to write a simple generic component. We maintain a component called Brick in the Orca source tree. We use it as a standard implementation to test IceGrid services but it's also a useful template to start playing with. It does not setup or connect to any interfaces. (The source is in [ORCA_SRC]/src/tests/brick ).
  • Another simple option is LaserMon. This is just a client for a single interface. (The source is in [ORCA_SRC]/src/components/lasermon ).
  • A step up is LaserFeatureExtractor. It subscribes for laser scans, extracts features by using a run-time defined algorithm library, and serves the features through a provided interface. This is a well-maintained, often-used, cleanly-coded component. (The source is in [ORCA_SRC]/src/components/laserfeatureextractor ).

Make sure the project compiles and the new component runs.

Step 3. Modify the component to suit your needs.

As you start looking at the source code for Orca component, keep in mind that most the non-Ice functions and classes are in one library: libOrcaIce. All functions and classes are in the same namespace "orcaice" and all are fairly well documented


Webmaster: Tobias Kaupp (tobasco at

Generated for Orca Robotics by  doxygen 1.4.5