Robot Operating System
Robot Operating System
Opera+ng
System
Robots
and
Complexity
A
Robot
is
an
amalgam
of
sensors
and
actuators,
each
of
which
needs
to
be
interpreted/controlled
in
synchronicity
with
the
others
so
that
the
whole
produces
desirable
behaviours.
Since
microprocessors
are
typically
used
to
drive
robots,
the
following
can
be
said
about
the
soAware
system:
• Very
complex,
• Hard
to
design,
• Difficult
to
achieve,
• Hard
to
maintain,
• Contain
lots
of
bugs,
and
• Hard
to
evolve.
Modular
Approach
Using
a
modular
approach,
the
complexity
of
the
robo+c
system
is
abstracted
into
a
graph
based
hierarchy
of
conceptually
simpler
tasks.
The
tasks
then
need
to
be
integrated
with
each
other.
• Sensor
and
actuator
units
with
built
in
communica+on
protocols
• CPU
intensive
tasks
need
remote
processing
• Finite
State
Machines
(FSM)
model
non-‐linear
behaviours
• Robot
as
a
Service
(RaaS)
providing
compu+ng
resources
for
common
but
complex
tasks
A
robust
and
versa+le
communica+on
framework
(middleware)
is
needed
to
bring
these
together.
• ROS
• guWhiteboard
• Others
(ppPDC,
CARMEN)
Installing
ROS
• Linux
(Ubuntu
13.10
and
14.04)
– Setup
your
sources.list
and
get
your
apt-‐key
– Install
using
apt-‐get
• Mac
OSX
– Install
Homebrew
– Follow
the
ROS
installa+on
guide
(I
have
compiled
a
document
that
outlines
some
of
these
commands)
Other
ROS
Concepts
• ROS
makes
use
of
the
CMake
system,
which
ROS
refers
to
as
‘catkin’.
• ROS
has
a
large
community
who
have
contributed
much
code
in
the
form
of
“Packages”
• ROS
can
be
programmed
in
C++,
Python,
and
Lisp.
And
the
‘catkin’
philosophy
supports
the
use
of
all
of
them
in
a
single
package.
• ROS
has
a
wiki
site
where
API
documenta+on
can
be
found
(though
some+mes
difficult),
and
the
community
has
a
‘StackOverFlow’
style
forum.
ROS
Overview
ROS
Overview
‘roscore’
is
the
message
marshalling
server.
It
uses
TCP/IP
ROS
Overview
Nodes
ROS
Overview
Topics
MiPal
Example
Code
Some
code
you
can
have
a
look
at
to
see
how
ROS
is
put
to
use:
• src/MiPal/GUNao/webots/catkin_ws_mipal_webots/src/webots_mipal_ros_bridge
• src/MiPal/GUNao/webots/catkin_ws_mipal_webots/src/demo_webots_ros_driver
• src/MiPal/GUNao/webots/EpuckFollowsLineROSController
• src/MiPal/GUNao/posix/guWhiteboardROSbridgeTester
• src/MiPal/GUNao/posix/gusimplewhiteboard/wbperf/ros_publish_test.h
• src/MiPal/GUNao/posix/guWhiteboardROSbridge
And
You
will
no+ce
that
the
ROS
related
code
in
the
MiPal
folder
doesn’t
follow
the
‘catkin
workspace’
layout.
This
is
because
we
want
the
codebase
to
be
consistent
with
the
remainder
of
the
MiPal
work.
We
use
a
make
target
to
transform
this
code
into
the
correct
layout.
‘make
catkin’
will
copy
the
files
into
${MIPAL_DIR}/ros/catkin_ws
and
place
them
in
the
right
places.