This repository provides the software stack for the Eomer and Eowyn Unmanned Ground Vehicles (UGVs) at the Controls for Distributed and Uncertain Systems Lab (CDUS). The Eomer stack, unlike Eowyn, is equipped with a vision-sensor and performs relative navigation with respect to a given target -- usually, Eowyn. The UGVs are pictured below for reference.
The bill of materials and reference images for both Eomer and Eowyn UGVs are found here
The basic functionality in this repository requires Python 3.8+ and depends on the following packages:
$ python -m pip install numpy$ python -m pip install opencv-pythonWarning
This repository includes implementation for video streaming with Gstreamer inside of OpenCV and that functionality requires that OpenCV be built from source, indicating the cmake flag -D WITH_GSTREAMER=ON
Warning
If users intend to communicate via a UDP connection, they must install zmq with draft socket support.
- pygame <-- for interfacing gamepads
$ python -m pip install pygame- adafruit-circuitpython-servokit <-- for sending pwm signals via adafruit IIC
$ python -m pip install adafruit-circuitpython-servokit- pyrealsense2 <-- for streaming intel realsense camera channels
Warning
We have found that the intel realsense libraries and asscoiated python bindings usually need to be built from source, especially on microcomputers; However, users can attempt to install the necessary packages via pip in the following
$ python -m pip install pyrealsense2To install the python package, the following is additionally required:
$ python -m pip install --upgrade setuptoolsAs this project is not yet uploaded to the Python Package Index (PyPI) it is, many times, useful to install this package locally via pip:
$ cd <WORKSPACE>
$ git clone <GITREPO> -b <VERSION>
$ cd theodwyn
$ python -m pip install .where <WORKSPACE> location is up to the user and a <VERSION> can be found in the the tags list on the associated github page
- NOT YET IMPLEMENTED
- TODO
- TODO
As this package handles interactions between hardware components, our validation procedure is carried out through a baseline system in house. In many ways, this makes it difficult to validate contributions. However, when possible, we validate code on the pan-tilt camera system -- pictured below -- using pytest and the following debug files found in this repository:
theodwyn/config/debug_config.jsontests/
Validation of changes to the base classes is then done through pytest with the following:
$ cd <WORKSPACE>/theodwyn
$ pytest