StellarAI powers the autonomous navigation of the mobile robot Hyperion. This project was developed during the interdisciplinary course Produktentwicklung (PREN) at the Hochschule Luzern. Due to the COVID-19 pandemic, the functionality could only be simulated. However, the concepts used can be used for real-world robotics.
StellarAI is inspired by the concepts taught in the Udacity course Artificial Intelligence for Robotics and the book Probabilistic Robotics, including
- Occupancy Grid Maps to transform the robot's physical environment into a probabilistic model
- A* Search Algorithm to plan an optimal path through the environment (from start to finish)
- Gradient descent to optimize the planned path for the robots motion
- PID controller to stay on the planned track during motion
- Computer vision to detect pylons in its environment
To install Stellar, run (preferably in a virtualenv):
$ python setup.py install
- Python 3
- Pipenv
Install all (development-) dependencies
$ pipenv install --dev
This project is using the pytest framework. To run the tests:
$ pipenv run python -m pytest tests/
StellarAI makes use of many components to gain autonomy. These components can be found in individual modules in the stellar
package.
The robot needs information about its environment. Perception collects these data from sensors and turns them into concrete signals.
Aims to solve following problems:
- Receive information about the robots environment
- Order sensor signals in chronologically
- Abstract the underlying hardware
Consists of the main logic; behaviour to achieve the overall-goals.
Aims to solve following problems:
- Mapping of the environment
- Localizing the robot in the environment
- Plan an optimal path through the parcours
- Track robot on the planned path
Translates calculated next state into concrete signals for the underlying hardware.
Aims to solve following problems:
- Send signals to the engine as well as steering
- Abstracts underlying hardware
Gathers debug- and diagnostic data in order to introspect Stellar's behavior.
Aims to solve following problems:
- Allowing introspection into the inner-workings of stellar
- Forward information to the debug UI.
Run the Observatory server:
$ pipenv run python stellar/observatory/server.py
Provides communication infrastructure between modules to allow e.g., gathering diagnostic information from different components.
This project was inspired and uses code and techniques from many other projects, which are credited here:
- PyRoboViz: Used to visualize the robot and the track.
- occupancy-grid-a-star: Helped us greatly with the implementation of the occupancy grid mapping and the A* planning algorithm.
Thanks to all of you!