Skip to content
/ daylite Public

A lightweight TCP-based IPC mechanism with tooling similar to ROS

License

Notifications You must be signed in to change notification settings

kipr/daylite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

daylite

Daylite is the communications backbone for a number of processes running on the next-generation Botball robot controller from KIPR. Its design is inspired by ROS. Daylite, however, is simple to build, install, and use in comparison, with no external dependencies or extra tooling required. It also makes several different design choices.

Daylite is named after the song Daylight by Andrew Rayel. It was the song that was playing when I decided I needed to make this. Unfortunately, the variable daylight is defined in time.h and as such cannot be used for a namespace.

Design

Daylite is best represented as a fully connected graph of nodes. Nodes advertise topics that they listen to and publish data in the form of binary JSON to topics. Nodes may be in the same process as one-another, on the same machine, over a LAN, or even over the internet. Nodes currently communicate over TCP, though this is relatively straightforward to change.

Unlike ROS, Daylite is schemaless by design. Any well-formed data may be published to a topic. It is up to the recipient to discern a message's contents. This is not necessarily the intended use-case, however. It is merely to simplify library usage, dependencies, and build process at the modest expense of safety and performance.

Also unlike ROS, Daylite does not have a well-defined master node. While there currently is no peer auto-discovery, once a node establishes a connection to another node it becomes a member of the entire daylite network graph. This allows the graph to grow rather organically.

Daylite is designed to run on any OS with BSD-compliant sockets (including Windows, Mac OS, and Linux). It does not take advantage of any un-portable libraries or language features.

Future work

In the future, Daylite will support automatically extending its node graph through network meshing. This will allow robot controllers to seamlessly communicate.

Requirements

  • CMake 2.8.0 or higher
  • libbson
  • boost
  • bsonbind

Building (OS X and Linux)

cd daylite
mkdir build
cd build
cmake ..
make
make install

License

Daylite is released under the terms of the GNU General Public License Version 3 (GPLv3). For more details, see the LICENSE file in the root of the project.

About

A lightweight TCP-based IPC mechanism with tooling similar to ROS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published