Skip to content

Commit 4947951

Browse files
committed
Added ROS.
1 parent cb1ebcf commit 4947951

File tree

3 files changed

+119
-0
lines changed

3 files changed

+119
-0
lines changed

html/quigley2009ros.html

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Papers</title>
5+
<link href='../style.css' rel='stylesheet'>
6+
<meta name=viewport content="width=device-width, initial-scale=1">
7+
</head>
8+
9+
<body>
10+
<div id="container">
11+
<h1 id="ros-an-open-source-robot-operating-system-2009"><a href="https://scholar.google.com/scholar?cluster=143767492575573826">ROS: an open-source Robot Operating System (2009)</a></h1>
12+
<p>Writing code that runs on a robot is a <em>very</em> challenging task. Hardware varies from robot to robot, and the software required to perform certain tasks (e.g. picking up objects) can require an enormous amount of code (e.g. low-level drivers, object detection, motion planning, etc.). ROS, the Robot Operating System, is a framework for writing and managing distributed systems that run on robots. Note that ROS is not an operating system as the name suggests.</p>
13+
<h2 id="nomenclature">Nomenclature</h2>
14+
<p>A <strong>node</strong> is a process (or software module) that performs computation. Nodes communicate by sending <strong>messages</strong> (like protocol buffers) to one another. Nodes can publish messages to a <strong>topic</strong> or subscribe to a topic to receive messages. ROS also provides <strong>services</strong> (i.e. RPCs) which are defined by a service name, a request message type, and a response message type.</p>
15+
<h2 id="what-is-ros">What is ROS?</h2>
16+
<p>In short, ROS provides the following core functionality.</p>
17+
<ul>
18+
<li>ROS provides a messaging format similar to protocol buffers. Programmers define messages using a ROS IDL and a compiler generates code in various languages (e.g. C++, Octave, LISP). Processes running on robots then send messages to one another using XML RPC.</li>
19+
<li>ROS provides command line tools to debug or alter the execution of distributed systems. For example, one command line tool can be used to log a message stream to disk without having to change any source code. These logged messages can then be replayed to develop and test other modules. Other command line tools are described below.</li>
20+
<li>ROS organizes code into <strong>packages</strong>. A package is just a directory of code (or data or anything really) with some associated metadata. Packages are organized into <strong>repositories</strong> which are trees of directories with packages at the leaves. ROS provides a package manager to query repositories, download packages, and build code.</li>
21+
</ul>
22+
<h2 id="design-goals">Design Goals</h2>
23+
<p>ROS has the following design goals which motivate its design.</p>
24+
<ul>
25+
<li><strong>Peer-to-peer.</strong> Because ROS systems are running on interconnected robots, it makes sense for systems to be written in a peer-to-peer fashion. For example, imagine two clusters of networked robots communicate over a slow wireless link. Running a master on either of the clusters will slow down the system.</li>
26+
<li><strong>Multilingual.</strong> ROS wants to support multiple programming languages which motivated its protobuf-like message format.</li>
27+
<li><strong>Tools-based.</strong> Instead of being a monolithic code base, ROS includes a disaggregated set of command line tools.</li>
28+
<li><strong>Thin.</strong> Many robot algorithms developed by researchers <em>could</em> be re-used but often isn't because it becomes tightly coupled with the researcher's specific environment. ROS encourages algorithms to developed agnostic to ROS so they can be easily re-used.</li>
29+
<li><strong>Free and Open-Source</strong> By being free and open-source, ROS is easier to debug and encourages collaboration between lots of researchers.</li>
30+
</ul>
31+
<h2 id="use-cases">Use Cases</h2>
32+
<ul>
33+
<li><strong>Debugging a single node.</strong> Because ROS systems are loosely coupled modules communicating via RPC, one module can be debugged against other already debugged modules.</li>
34+
<li><strong>Logging and playback.</strong> As mentioned above, message streams can be transparently logged to disk for future replay.</li>
35+
<li><strong>Packaged subsystems.</strong> Programmers can describe the structure of a distributed system, and ROS can launch the system on across multiple hosts.</li>
36+
<li><strong>Collaborative development.</strong> ROS' packages and repositories encourage collaboration.</li>
37+
<li><strong>Visualization and monitoring.</strong> Message streams can be intercepted and visualized over time. Subscribe streams can also be filtered by expressions before being visualized.</li>
38+
<li><strong>Composition of functionality.</strong> Namespaces can be used to launch the same system multiple times.</li>
39+
</ul>
40+
<script type="text/x-mathjax-config">
41+
MathJax.Hub.Config({
42+
tex2jax: {
43+
inlineMath: [['$','$'], ['\\(','\\)']],
44+
skipTags: ['script', 'noscript', 'style', 'textarea'],
45+
},
46+
messageStyle: "none",
47+
});
48+
</script>
49+
</div>
50+
</body>
51+
</html>

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ <h1 id="indextitle">Papers</h1>
5656
<li><a href="html/letia2009crdts.html">CRDTs: Consistency without concurrency control <span class="year">(2009)</span></a></li>
5757
<li><a href="html/graefe2009five.html">The Five-Minute Rule 20 Years Later <span class="year">(2009)</span></a></li>
5858
<li><a href="html/cheney2009provenance.html">Provenance in Databases: Why, How, and Where <span class="year">(2009)</span></a></li>
59+
<li><a href="html/quigley2009ros.html">ROS: an open-source Robot Operating System <span class="year">(2009)</span></a></li>
5960
<li><a href="html/lagar2009snowflock.html">SnowFlock: Rapid Virtual Machine Cloning for Cloud Computing <span class="year">(2009)</span></a></li>
6061
<li><a href="html/alvaro2010boom.html">BOOM Analytics: Exploring Data-Centric, Declarative Programming for the Cloud <span class="year">(2010)</span></a></li>
6162
<li><a href="html/sigelman2010dapper.html">Dapper, a Large-Scale Distributed Systems Tracing Infrastructure<span class="year">(2010)</span></a></li>

papers/quigley2009ros.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# [ROS: an open-source Robot Operating System (2009)](https://scholar.google.com/scholar?cluster=143767492575573826)
2+
Writing code that runs on a robot is a *very* challenging task. Hardware varies
3+
from robot to robot, and the software required to perform certain tasks (e.g.
4+
picking up objects) can require an enormous amount of code (e.g. low-level
5+
drivers, object detection, motion planning, etc.). ROS, the Robot Operating
6+
System, is a framework for writing and managing distributed systems that run on
7+
robots. Note that ROS is not an operating system as the name suggests.
8+
9+
## Nomenclature
10+
A **node** is a process (or software module) that performs computation. Nodes
11+
communicate by sending **messages** (like protocol buffers) to one another.
12+
Nodes can publish messages to a **topic** or subscribe to a topic to receive
13+
messages. ROS also provides **services** (i.e. RPCs) which are defined by a
14+
service name, a request message type, and a response message type.
15+
16+
## What is ROS?
17+
In short, ROS provides the following core functionality.
18+
19+
- ROS provides a messaging format similar to protocol buffers. Programmers
20+
define messages using a ROS IDL and a compiler generates code in various
21+
languages (e.g. C++, Octave, LISP). Processes running on robots then send
22+
messages to one another using XML RPC.
23+
- ROS provides command line tools to debug or alter the execution of
24+
distributed systems. For example, one command line tool can be used to log a
25+
message stream to disk without having to change any source code. These logged
26+
messages can then be replayed to develop and test other modules. Other
27+
command line tools are described below.
28+
- ROS organizes code into **packages**. A package is just a directory of code
29+
(or data or anything really) with some associated metadata. Packages are
30+
organized into **repositories** which are trees of directories with packages
31+
at the leaves. ROS provides a package manager to query repositories, download
32+
packages, and build code.
33+
34+
## Design Goals
35+
ROS has the following design goals which motivate its design.
36+
37+
- **Peer-to-peer.** Because ROS systems are running on interconnected robots,
38+
it makes sense for systems to be written in a peer-to-peer fashion. For
39+
example, imagine two clusters of networked robots communicate over a slow
40+
wireless link. Running a master on either of the clusters will slow down the
41+
system.
42+
- **Multilingual.** ROS wants to support multiple programming languages which
43+
motivated its protobuf-like message format.
44+
- **Tools-based.** Instead of being a monolithic code base, ROS includes a
45+
disaggregated set of command line tools.
46+
- **Thin.** Many robot algorithms developed by researchers *could* be re-used
47+
but often isn't because it becomes tightly coupled with the researcher's
48+
specific environment. ROS encourages algorithms to developed agnostic to ROS
49+
so they can be easily re-used.
50+
- **Free and Open-Source** By being free and open-source, ROS is easier to
51+
debug and encourages collaboration between lots of researchers.
52+
53+
## Use Cases
54+
- **Debugging a single node.** Because ROS systems are loosely coupled modules
55+
communicating via RPC, one module can be debugged against other already
56+
debugged modules.
57+
- **Logging and playback.** As mentioned above, message streams can be
58+
transparently logged to disk for future replay.
59+
- **Packaged subsystems.** Programmers can describe the structure of a
60+
distributed system, and ROS can launch the system on across multiple hosts.
61+
- **Collaborative development.** ROS' packages and repositories encourage
62+
collaboration.
63+
- **Visualization and monitoring.** Message streams can be intercepted and
64+
visualized over time. Subscribe streams can also be filtered by expressions
65+
before being visualized.
66+
- **Composition of functionality.** Namespaces can be used to launch the same
67+
system multiple times.

0 commit comments

Comments
 (0)