1. Rock - The Robot Construction Kit
http://rock-robotics.org
Sylvain Joyeux
DFKI Bremen - Forschungruppe Robotik
& Universit¨at Bremen
Director: Prof. Dr. Frank Kirchner
www.dfki.de/robotics
robotics@dfki.de
2. Who am I ?
Senior Researcher @DFKI Robotics Innovation Center in
Bremen
DFKI is a German public/private partnership for AI research
Focussing on architectures for long-term autonomy
⇒ quit the “demo robotics” state of mind
PhD: plan manager for multi-robot systems
DFKI
Intelligent Mobility: autonomous navigation in unknown,
unstructured, environments
Sauc-E, HROV: autonomous mission execution on AUVs.
Resp. student project and on an oceanographic AUV
Virgo4: long-term autonomy integrating learning methods
Now leader of the “Autonomy Team”
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 2/35
3. Rock: The Robot Construction Kit
Vizkit: Data Visualization
OpenSceneGraph, Qt, vtk
Data Logging And Replay
Very efficient logging
Long-term analysis and replay
Script-based system deployment
Distributed process management
Coordination
Script-based
5. Component Development
oroGen workflow
all algorithms should be developed first in a
framework-independent library
rock-create-lib path/to/library
language of choice (currently): C++
you then integrate the library’s functionality into
component(s)
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 5/35
6. Component Development
Framework-independent libraries
Critical !
no one can predict the future of frameworks
⇒ the “hot” framework is ROS nowadays, was player three
years ago, what will it be in three years ?
industry / other partners will probably not want to use your
framework of choice
frameworks evolve
Fortunately
It is finally becoming the standard: OpenCV, OpenNI, PCL,
OpenRave, OMPL, Reflexxes, Gazebo, . . .
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 6/35
8. Component Development
Component description
task context ’BaseTask’ do
output port(’solution’, ’/gps/Solution’).
doc "the GPS solution as reported by the hardware"
output port(’position_samples’, ’/base/samples/RigidBodyState’).
doc "computed position in m"
error states :IO ERROR, :IO TIMEOUT
property("utm_zone", "int", 32).
doc "UTM zone for conversion of WGS84 to UTM"
end
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 8/35
9. Component Development
Type description
a subset of C++
helps integrating oroGen-free libraries
⇒ no convertions / bindings necessary
namespace tutorials {
struct Msg {
std::string value;
};
}
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 9/35
10. Component Development
What is so special about it ?
separation between description and code
⇒ easy to discover other people’s components
hard-realtime compatible
RTT core is “only” a component model and supporting
infrastructure. Independent of any communication layer
“main” communication layer is CORBA. Full support for
data flow on ROS and POSIX message queues. Some
support for YARP.
can talk to multiple communication layers at the same time
Stopped Running
FatalError
RuntimeError
PreOperational
Output
ports
Input
ports
Properties
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 10/35
11. Component Development
Highlights
What you get for free is
dynamic reconfiguration
run what you need when you need it
component monitoring
error recovery
coordination
deployment-time choices
⇒ components can be deployed in the same thread, same
process or in different processes depending on your
application
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 11/35
13. Basic Services
Logging
Low-overhead: 5% CPU for a whole system, from 1kHz
control loop ( 5 components) to high-level stereo
processing
Self-contained: a log file is all you need to read the data
⇒ guarantee to re-read years-old data
Future-proof: rock-convert “upgrades” old log files for
which data types changed
⇒ can reuse old datasets to test new / visualize new code
Interoperable: convertion tool to HDF5 for e.g. Matlab
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 13/35
14. Basic Services
vizkit: Log Replay / Data Visualization
visualization of log files
“replay” log data into components
⇒ test components
⇒ regression testing
Video
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 14/35
15. Basic Services
GUI Design
can open standalone widgets / 3D views from task browser
/ log browser
⇒ ideal for one-shot data analysis sessions
all widgets are standard Qt widgets
⇒ can be used to design complete GUIs, e.g. using Qt
Designer
design GUIs, bind it using vizkit
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 15/35
17. Data Processing Helpers
stream aligner: the problem
0 10 20 30 40
t(ms)
Sensor Acquisition - when the sensor reads a value originating from the real world
Lidar, period=25ms
Cameras, period=17ms (60fps)
Motion Tracker
1 2 3 4 5
1 2
1 2
1 2
Servo, period=10ms
1 2 3
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 17/35
18. Data Processing Helpers
stream aligner: the problem
0 10 500 510
t(ms)
Sensor Processing - when samples arrive, are processed, and leave components
1
1
1
1
Laser
Filter
1
1
1
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 18/35
19. Data Processing Helpers
stream aligner: latency
realigning adds latency
⇒ you have to wait to know which samples can be safely
processed
concept of lookahead
⇒ add more information to improve the latency situation
0 10
1
1
Laser
Filter
0 10
1
1
Laser
Filter
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 19/35
20. Data Processing Helpers
transformer
extension to the stream aligner concept
computes arbitrary geometric transformations between
frames
aligns (in time) the computed transformations with other
data streams
optionally interpolates
distributed: one component only gets what it needs
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 20/35
22. Scripting-based execution
Ruby-based scripting
gives access to all components
gives access to processes
⇒ can detect when a process crashes
gives access to ROS nodes / log files
⇒ integrate ROS / Rock and log files seamlessly
Ideal for small-scale testing
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 22/35
23. Scripting-based execution
Example
require ’orocos’
Orocos.initialize
Orocos.run ’message_consumer::Task’ => ’message_consumer’,
’message_producer::Task’ => ’message_producer’ do
producer = Orocos.name service.get ’message_producer’
consumer = Orocos.name service.get ’message_consumer’
producer.messages.connect to consumer.messages
producer.configure
producer.start
consumer.configure
consumer.start
Orocos.watch(producer, consumer)
end
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 23/35
25. System Integration
Real-World Systems
are always more complex than we originally think
how to safely reuse (parts of) component networks ?
how to simply combine different subsystems ?
⇒ since they often share some subparts
how to do systematic error monitoring and error recovery
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 25/35
26. System Integration
The Concept: System Design
Subsystem Composition
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 26/35
27. System Integration
The Concept: System Monitoring
Hierarchy
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 27/35
28. System Integration
Highlights
offline system design
⇒ can design integrated systems without writing a single
component
can manage multi-host systems transparently
high-level runtime coordination
⇒ can arbitrarily and safely switch between behaviours
extensive logging and display
⇒ logs the whole system view
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 28/35
29. System Integration
The Means
syskit can be used as soon as oroGen is used
no need to “think syskit” from the very beginning
. . . but it remains available when the complexity grows
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 29/35
30. System Integration
Results: An Overview
In the end
bachelor students are able to use syskit
⇒ it is complex, but not that much
promotes separation of roles: many algorithm developers,
one or two system integrators
proved incredibly useful on real-world systems
Sauc-E 2011 Intelligent Mobility Final
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 30/35
32. Conclusion
Scalability
At the level of computing power required
⇒ multi-host, multi-process deployments down to
single-threaded, no-overhead deployments
⇒ run only what is needed at a certain point in time
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 32/35
33. Conclusion
Scalability
At the level of system complexity
use either command-line tools or (very simple) ruby scripts
for small systems
use model-based deployments when the complexity grows
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 33/35
34. Conclusion
Framework-independent Workflow
the “code libraries first, integrate later” workflow is an
integral part of Rock
can very easily integrate external libraries without any
modifications
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 34/35
35. Conclusion
A Proven Framework
we don’t reinvent the wheel(s)
⇒ reuse as much as we can when it makes sense
based on Orocos/RTT, which is a component
implementation used in a variety of systems including in
industry
Rock - The Robot Construction Kit http://rock-robotics.org
May 3, 2013 35/35