Package Summary
A portable, dependency-free ROS client library in pure C
Maintainer: Christian Holl < choll [theAt] synapticon [theDot] com >
- Author: Christian Holl
- License: BSD
Status: UNDER DEVELOPMENT
Source: git https://github.com/synapticon/rosc.git
Documentation
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
Documentation (github.io)