wiki:WikiStart/Mentoring/ESASOCIS

What is Rock ?

Rock is a software framework for the development of robotic systems. The underlying component model is based on the Orocos RTT (Real Time Toolkit). Rock provides all the tools required to set up and run high-performance and reliable robotic systems for wide variety of applications in research and industry. It contains a rich collection of ready to use drivers and modules for use in your own system, and can easily be extended by adding new components. The framework was developed to specifically address the following issues in existing solutions:

  • sustainable systems. The architecture and the tools in Rock are designed with long-living systems in mind. In practice, it means that for us, error detection, reporting and handling is key in any robotic architecture.
  • scalability. Provide the tools to be able to manage big systems with a minimum fuss. But we don’t require you to learn about these (complex) tools right away: as soon as you use rock’s component development tool, oroGen, you have the guarantee that your components can be integrated from simple scenarios using hardcoded C++ behaviours, to Ruby scripts up to the complete system monitoring tools.
  • reusable codebase. Even though we think that the rock toolchain is one of the best out there, some other people might feel differently. And they might be right. That’s why, in rock, most of the functionality – from control to data display through data processing – is implemented in a way that is totally independent from rock’s integration framework. That’s right: just pick our drivers, localization algorithms and control loops and integrate them in your integration framework. You don’t have to do anything on our side, as the code is completely independent from the integration parts.

Why Rock in space ?

Rock is very suited for space for multiple reasons:

  • thanks to the use of the RTT, it is possible to deploy a Rock system as a multi-binary with very minimal memory / CPU footprint. Develop on high-end machines, deploy on low-end ones.
  • RTT itself is compatible with hard realtime constraints, and so is Rock.
  • Rock orients itself towards robustness and monitoring of the system. This is a critical constraint in space, as one has to achieve true autonomy there: the system's safety should not be dependent on the presence of an operator.

ESA Summer Of Code project ideas

This is a list of project ideas for student applicants. For each idea, a difficulty estimate is given between SIMPLE, MEDIUM and HARD.

  • Porting Rock to RTEMS (http://rtems.org) [MEDIUM]. RTEMS is a real-time operating system that is widely used at ESA. In this project, the student would work towards making sure that a Rock system can be deployed on a RTEMS system. The tasks (in order) would be:
    • adding RTEMS support to the RTT [SIMPLE]. The RTT has an abstraction layer for each OS it runs on. This task would be writing the necessary glue code for RTEMS.
    • cross-compilation environment for Rock [MEDIUM]. Deploying on RTEMS is best done through cross-compilation. Some effort/information already exists to achieve this for Rock and the RTT, but the process is not streamlined. This task requires a pretty good understanding of build systems (such as CMake).
    • Test of Rock/RTEMS on a SPARC (architecture of the Leon* processors)
      • Develop and compile a dummy component/task in rock for RTEMS
      • Test the component/task in a RTEMS emulator for ix86 http://wiki.rtems.org/wiki/index.php/Emulator
      • Compile the component/taks for SPARC using the developped cross-compilation environment.
      • If ESA provides us with the necessary hardware and/or license for simulator, test the component/task in a Target FPGA with the Leon Processor.

  • Generic telemetry component [MEDIUM]. The space environment has one constraint: bandwidth. To avoid wasting this bandwidth with unnecessary information, one could design and write a generic, configurable, component that takes other component outputs, reformats them and encodes/decodes them in an efficient way. The student will have to understand the basics of the type system used in Rock. A good basis for this telemetry module already exists in the form of the logger component.
  • Lua support in Rock [HARD]. Rock is using RTT and RTT allows hard-realtime Lua scripting in its components. Unfortunately, this support requires code in the RTT type system that can't be autogenerated. The student, in this project, would implement Lua support for Rock proper, i.e. using the Rock underlying type system. It would entail:
    • writing Lua bindings for the type system library Typelib
    • using these bindings in the existing Lua scripting implementation
Last modified 8 years ago Last modified on 07/15/11 14:07:33