Skip to content

BuggyROS (High Level Software) Getting Started

Matthew Sebek edited this page Sep 3, 2015 · 9 revisions

So you want to write an autonomous buggy....

This page presents three topics; WHAT BuggyROS is, a bit of WHY BuggyROS is how it is, and HOW to use this knowledge to write something useful.

Philosophy and Assumptions

To write an Autonomous robot, you need to write multiple genres of software.

One is robotics software. Robotics software is theoretical and algorithmic in nature, but rather than being interested in the fastest ways to sort a list or the cost of rebalancing a tree in the worst case, it is interested in transforming measurements in coordinate frames, or using measurements of multiple sensors to yield a composite measurement better than any one.

Another is systems software. Systems software is written as a platform to be used by other programmers, in our case, the ones who write robotics software. System software deals with the harsh realities of computing; that data has to be operated on by different pieces of Robotics code, that operations can fail, and that we live in a world where every device has 2 or more cores. BuggyROS is systems code.

The last is embedded software. Embedded software interfaces with sensors and actuators that sense and act on the physical world. Embedded also reads and acts on messages from higher level software or other embedded components. These messages are received through physical mediums, like I2C or Serial (which RoboBuggy uses).

It is possible to write all of these sorts of softwares at the same time, but it is not efficient for the programmer. By writing each layer individually, with a clear interface or abstraction between each, we make programmers more efficient by limiting what they have to worry about at any point in time.

WHAT BuggyROS is

BuggyROS is at the system-software layer. BuggyROS is a high-speed message passing system.

We will begin by defining some common vocabulary. Note that, because this code is written in Java, all of the following concepts are objects. Note that a User is a programmer who uses BuggyROS to write Robotics code.

Messages are packets of data that are passed between Nodes. A Subscriber is an object that receives messages, and runs code the I A Publisher is an object that takes a message and publishes it to a channel. A Channel is a string that a publisher publishes messages to, or a subscriber listens to.

A Publisher publishes messages to a channel; all of the subscribers who listen on this channel will receive the messages.

A Node contains zero or more Publishers, zero or more Subscribers.

Nodes are pieces of software. A node ma

Note that these concepts are not new;