This is a library that powers the communication for the USST's mars rover, but is also applicable to any robotics system where multiple modules are involved. Robocluster allows you to build light weight distributed applications that talk to each other over a local area network using IP multicast and TCP sockets.
We have sphinx generated documentation that can be found here.
The Usage Tutorial steps through
some example code to show off the features of using robocluster.
The examples
folder contains some example scripts to test out robocluster as well.
At some point (soon?) we'll put this on PyPi, but for now you can install robocluster as follows:
- clone the repo from github
- From the project root, do
pip install -r requirements.txt
. - From the project root, do
pip install -e .
. - Run the
examples/device.py
script to confirm everything works. It should print random numbers to the console.
If you have difficulty getting robocluster to run on your machine, you can try running it in a virtual machine. A configutation file for vagrant is provided for easy setup of a VM. Install Vagrant and a VM provisioner such as VirtualBox or VMware, and run:
vagrant up # This will take a while the first time to install the VM
vagrant ssh
You are now in a virtual machine and can cd to /vagrant where the source code is synced. The Vagrant config is set up to bridge your internet connection to the VM, so you may be prompted to select a network interface. This should allow the VM to interact over your local network just like any other physical machine.
Create a branch off of dev
and make changes from there.
When your change is done, and you want feedback, submit a pull request to merge your branch into dev
,
and someone will review your code and merge it if it's ready.
The master
branch is sort of being used to mark major stable versions.
The test suite is set up so that you can run python setup.py test
to run the tests
with coverage statistics. You can also run the tests by themselves with pytest tests
(assuming you have pytest installed through pip).