Building robots with Rock and Syskit
Rock is a software framework for the development of robotic systems. 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.
This documentation's focus is on building robot systems based on Rock and Syskit, Rock's system management layer. It will not cover issues related to Rock's lower-level Ruby and C++ execution APIs, or only in cases where these plug Syskit limitations.
The most important aspect of this documentation is to explain both the how and the why, i.e. describe the parts of Syskit that are relevant to manage a robot system, but also to explain the underlying design principles that allow you to build a manageable system. The documentation does not assume any prior knowledge about Rock, but does assume that you have more than basic knowledge on general software development practices. The tools being implemented in Ruby and C++, it is best to know about these languages. However, documentation on the basics and principles of a Rock-Syskit system can be followed with basic programming knowledge.
If you are already familiar with Rock, note that this guide uses the buildconf
repository on GitHub
rock-gazebo/buildconf instead of
the default one at
rock-core/buildconf to pull
gazebo-specific packages and configuration. The
installation guide already reflects this.
How to read this documentation
The Basics section is meant to be read in its entirety. It covers presents the fundamentals of how a robotic system is integrated and managed at runtime within Rock and Syskit. A Rock newcomer should read this part sequentially. Tutorials and examples are mixed with more detailed descriptions, with an aim at being progressive.
After the basics, the rest of the documentation is meant to be read on a need-to-know basis. Pick the subjects that are of interest to you, or that you need to know at a certain point in time.
- Basics: Integrating a system from scratch using Gazebo and Syskit
- Runtime: Details of running a Syskit system
- Workspace and Packages
- Libraries, or how to integrate functionality in C++ and Ruby with no dependency on the Rock framework itself.
- Components, or how to use the functionality developed in libraries in a Rock-based component layer, including a description of Rock's type system.
- Working with SDF
- Designing Component Networks
- Advanced Component Deployment
- System coordination
- Error Handling
- Testing and Debugging
- Logging, Data Visualization and Building GUIs
- Inspecting coordination data