Repository Summary
Checkout URI | https://github.com/roshub/vapor_master.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2019-04-04 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
vapor_master | 0.5.0 |
README
<img src=./icons/roshub_vector_logo.svg width=150>
Vapor is a high availibility rosmaster implementation
Introduction
Vapor-master is a drop in replacement for rosmaster enabling high availability ROS service discovery. Vapor removes the single point of failure fundamental to ROS1 enabling new options for achieving greater scale and uptime of ROS1 workflows.
Installing
Vapor is available as a catkin package, debian package and Ubuntu Snap. We recommend consuming vapor via the debian package or Ubuntu Snap.
Prerequisites
A requirement of vapor is that you have installed and configured mongodb for your environment. For local testing you can simply run:
sudo apt install mongodb
Non-requirements
Vapor does not strictly require a ROS installtion, it can simply be run as a micro service if so desired.
Debian Package
NOTE: We are still awaiting the next rosdistro sync for Melodic, you can follow sync status here
- Install ROS Melodic
sudo apt install ros-melodic-vapor_master
Snap Package
Vapor can be installed either by visiting the Ubuntu Snap store above or with the following command
snap install vapor-master
Once installed the snap runs as a daemon until stopped using:
snap stop vapor-master
To re-start simply:
snap start vapor-master
You can manually start vapor for:
snap run vapor-master
You can debug by seting the DEBUG
environment variable:
DEBUG=* snap run vapor-master
All command line flags are accessible via the snap as well:
snap run vapor-master --help
Configuring
Vapor can be configured in four ways with highest precedence in order:
- Command line flags
- Configuration file
- Environment variables
- Defaults
Command Line Flags
Usage vapor-master
--clean-db
--no-clean-db
--no-shutdown
--db=[mongo-uri]
--dboptions={[mongo-db-options]}
--ROS_MASTER_URI=[ros-master-uri]
--config=[configuration-file]
Configuration File
Vapor looks for configuration files in:
- The file defined in the command line flag
--config
-
$SNAP_COMMON/config.json
- If $SNAP_COMMON is defined
-
$HOME/.vapor-master/config.json
- If $HOME is defined
-
./config.json
- If neither $SNAP_COMMON or $HOME are defined
Environment Variables
- $clean-db
- $no-clean-db
- $no-shutdown
- $db=[mongodb-uri]
- $dboptions={[mongo-db-options]}
- $ROS_MASTER_URI
Defaults
- clean-db:
true
- db:
mongodb://localhost:27017/vapor_master
- ROS_MASTER_URI:
http://localhost:11311
Developing
To develop you will need to install
- nodejs
- yarn
- ROS Melodic
To interactively develop run:
yarn
yarn watch
Tests
To run tests, first run catkin_make
in the tests/native_client
folder, and then source the file tests/native_client/devel/setup.bash
.
Then run:
yarn test
Roadmap
- Support snap configuration
- Write Tutorials
- Complete ROS API implementation
- Database availability as ROS Topic
- Vapor instance as ROS Topic
- Rosgraph outage reporting as Topic and Action
- hot-swap support
- Detect and report lost mongo replicas
- Automatic db replicaset expansion
- rosout leader election
- Autostart via systemd on Ubuntu/debian
Further Reading
Support
Should you need professional support, contact us.
Credits
<img src=./icons/roshub_logo_cropped_large.png width=300>
Vapor is open source software developed by RosHub Inc.
- Philetus Weller
- Nick Zatkovich
- Alan Meekins