INTRODUCTION Overview Download and Install Quick Start Documentation Publications NONFRAMEWORK CODE Driver Interfaces Drivers Libraries Utilities FRAMEWORK CODE Interfaces Components Libraries Utilities Full Software Listings DEVELOPER Tutorials Examples Dev Guide Dashboard PEOPLE Contributors Users Project Download Mailing lists
|
Orca Overview
We think that software reuse is key for continuing progress in robotic research and industry. Orca is our attempt at doing it. The project's goals are:
To be successful, we think that a framework with such objectives must be:
A combination of several design choices sets this project apart from other initiatives with similar objectives. Namely, Orca:
We can think of several scenarios which lead to different usage patterns:
The basic tools we use are cross-platform, so in principle Orca can be deployed as widely as CMake/Ice combination.
Slice interfaces can be compiled to C++, Java, Python, PHP, C#, Visual Basic, Ruby, and Objective C. All of these can be used to implement or use Orca interfaces.
We recognise that the usefulness of both the framework and any particular component increases with the variety and quality of the available components with which one can interact. We therefore maintain an online repository. Users are encouraged to contribute their own components and to point out omissions in components' documentation.
In addition to standard definitions of components and interfaces, Orca naming conventions also refer to robotic platforms. Read more...
Orca grew out of Orocos@KTH project. It has been on SourceForge.net since June 2004. Read more...
Source code size gives some idea about the project's activity. The stats above are generated using David A. Wheeler's SLOCCount. This figure also helps illustrate our main objective: writing useful robotics software. We are certainly not interested in a deep "foundation" (red) -- the infrastructure necessary to allow components to talk to each other. Virtually all communication functionality of Orca comes from Ice (gray). This was the main motivation for switching to Ice which is visible since v.2.0.0-rc1 at the end of 2005. We are interested in a large "superstructure" -- useful components. But we recognize several types of code here. Utilities (green) are used for visualization, logging, debugging, deployment, etc. These are usually fairly complicated and intimitely tied to the particular framework (Orca). Algorithm and driver implementations (blue) are what robotics is all about and, if done properly, can be independent of a particular framework. The communications-independent Hydro distribution contains this kind of code. The well-documented high-quality generally-useful code moves to Gearbox (light blue), which is intended to be used across multiple projects. Finally, the components themselves (orange) are the modular wrappers for algorithms and drivers, acting as conduits of data between different subsystems. Our objectives
For comparison, we show a similar analysis of the Player project. For the purposes of this figure, Player software since v.2.0.2 is classified as follows. Player "infrastructure" includes the contents of {libplayercore, client_libs, libplayertcp} and Player "components" includes the code in {server, utils}. The autogenerated bindings are excluded. |
Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)