Wiki » History » Version 16

« Previous - Version 16/25 (diff) - Next » - Current version
J. Wienke, 01/05/2011 08:54 PM


Prerequisites

Dependencies

  • Boost >= 1.38 (for hardy available in the gar-installer, 1.34.1 untested)
  • Boost.UUID (header-only, officially included in Boost since 1.42, headers from this version can be used with all older versions of boost, gar-installer package available)
  • CMake (tested with 2.8)
  • optional
    • Doxygen for API generation
    • Lcov for code coverage analysis
    • cppcheck for static code analysis

Supported Operating Systems and Compilers

  • Linux (GCC 4.x)
  • Windows (MS Visual Studio 9 2008)

Other combination may be possible but are currently untested.

Contents

  • Logging Adapter - Logging interface with support for different backends
  • Math - Various base data structures and methods for common mathematical calculation in robotics
  • Miscellaneous - Various small helpers and utilities that do not fit in any other category
  • Subprocess - A python-inspired, platform-independent way to launch other processes
  • Threading - Different helpers for managing threaded applications, includes a task abstraction, synchronized data structures and thread pools
  • CMake - A collection of modules for using CMake, including find-modules for different 3rd-party libraries and applications

Logging Adapter

Several different logging systems exist with different advantages and dependencies. E.g. log4cxx heavily relies on APR which is a huge dependency to build i.e. for embedded systems like Nao. To decouple libraries from concrete logging implementations and their dependencies, RSC contains a flexible adaption layer that can utilize different logging mechanisms through one interface. If e.g. log4cxx is available, a client using the RSC logging system can use log4cxx through the provided interfaces. If no versatile logging system is available, RSC falls back on a simple console logging mechanism without any dependencies. Hence, client code does not need to be recompiled for changing the logging system.

Currently the linker call decides which logging mechanisms are available by linking their adapter shared libraries to the client. A plugin system is planned to remove the necessity of calling the linker.

Subprocess

A high-level interface for starting executables and automatically terminating them based on the RAII-pattern. The operating system is abstracted.

Threading

Support classes for threading tasks like synchronized queues, a task abstraction, or a thread pools for dispatching asynchronous events with ordering guarantees.

Misc

Collection of various utility classes including:
  • Registry: Key-value based registry for system components.
  • UUID: Simplified wrapper for boost::uuid.
  • Various utility functions for string manipulation or boost::shared_ptr handling.

CMake Support Library

RSC contains different CMake scripts and macros which are generally useful. These include:
  • Find macros for various software packages like spread, BoostUUID, Eigen2, Log4cxx
  • EnableConverageReport: Support for html code coverage reports on GCC using gcov and lcov.
  • CheckInitMethod: Checks which compiler-specific method can be used to execute before the main method begins. This is e.g. useful to install extensions
  • InstallFilesRecursive: A macro to install files while preserving their folder structure. The normal install macro of CMake copies all given files into a flat list at the target location.
  • ParseArguments: Helper to parse arguments to CMake macros and functions with UPPERCASE keywords to separate lists.

All CMake files are installed to $prefix/share/cmake/Modules and available in the repository at source:/trunk/rsc/cmake.