Package Summary

A portable, dependency-free ROS client library in pure C


rosc is a dependency-free ROS client implementation in ANSI C which aims to support small embedded systems as well as any operating system. Its long-term goal is to become a hardened, efficient and highly portable implementation of the ROS middleware (including future evolutions of it), making it a good choice for use in industrial applications or product development.

rosc is based on a modular concept, enabling the developer to select or add the platform support he needs. A rosc node is assembled by the rosc core package which contains the basic communication structure, support packages for each platform (operating systems / bare-metal systems (AVR, ARM, XMOS etc.)) as well as communication packages for bare-metal systems which contain the handling functions for several communication interfaces.

Efficiency of rosc is driven and maintained by a bare-metal, low-memory reference scenario. For bare-metal systems each memory storage is allocated at compile time. This means that the user must define a maximum array length for messages with undefined arrays (as an example from a msg file: uint8t array[]). On systems with an operating system this is not necessary because the memory for the array will be allocated at runtime.

Essential features:

  • XMLRPC communication
    • HTTP/XML parser
    • XMLRPC message generator
  • Port interface handling (services, topics, XMLRPC)
  • ROS message (msg-File) header/source generation
  • TCPROS (un-)marshalling

Planned future extensions:

  • Transport layer independency
  • Realtime capability
  • Development debugging features
  • Compiler optimization packages
    • special size optimizations
    • using special pragmas (like pack)
  • Multimaster/masterless concept

Development Status

rosc is available as alpha, and still under heavy development.

You can try out the alpha under Linux now.

Updated on: 2nd January 2014

rosc repository at GitHub

Documentation (

Wiki: rosc (last edited 2014-02-13 12:30:12 by Nikolai Ensslen)