137 lines
4.7 KiB
Markdown
137 lines
4.7 KiB
Markdown
# Spiri SDK
|
|
|
|
|
|
## Overview
|
|
|
|
Spiri Robots run a number of docker containers to achieve their core functionality,
|
|
we try to keep these essential docker containers in one docker compose file. The
|
|
docker compose file you'll find in this repository starts an ardupilot-based UAV simulation
|
|
as well as a ROS master, and mavproxy to tie it together, mirroring the core deployment of
|
|
a spiri robot.
|
|
|
|
|
|
## Prerequisites
|
|
|
|
This SDK was tested using Ubuntu 22.04 and an Nvidia GPU.
|
|
|
|
UI features like 3D worlds (gazebo simulation) were tested with Nvidia GPUs using CDI passthrough.
|
|
Machine-learning features like image recognition are expected to only work with NVIDIA GPUs.
|
|
|
|
We use VSCode as the default IDE, and we use Copier to manage project templates.
|
|
|
|
### Ensure nvidia drivers are working
|
|
|
|
Ensuring nvidia drivers are installed is outside of the scope of
|
|
this document, but you can confirm they working are using the `nvidia-smi` command.
|
|
If the command is present and shows output relevent to your GPU, the drivers are installed.
|
|
|
|
You can find the official ubuntu documentation for install nvidia drivers [here](https://ubuntu.com/server/docs/nvidia-drivers-installation).
|
|
|
|
You can use the following command to let ubuntu try to install the appropriete drivers automatically:
|
|
|
|
```bash
|
|
sudo ubuntu-drivers install --gpgpu
|
|
```
|
|
|
|
### Installing Docker
|
|
|
|
As per the [official Docker documentation](https://docs.docker.com/engine/install/).
|
|
|
|
```bash
|
|
#Uninstall any older docker packages
|
|
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
|
|
|
|
# Add Docker's official GPG key:
|
|
sudo apt-get update
|
|
sudo apt-get install ca-certificates curl
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
|
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
|
|
|
# Add the repository to Apt sources:
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
sudo apt-get update
|
|
|
|
#Install latest docker
|
|
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
|
|
#Allow current user to use docker without sudo
|
|
sudo groupadd docker
|
|
sudo usermod -aG docker $USER
|
|
#Reload the group
|
|
newgrp docker
|
|
```
|
|
|
|
### Installing Copier
|
|
|
|
As per the [official Copier documentation](https://copier.readthedocs.io/en/stable/#installation)
|
|
|
|
```bash
|
|
python3 -m pip install --user pipx
|
|
python3 -m pipx ensurepath
|
|
pipx install copier
|
|
```
|
|
|
|
### Installing VSCode
|
|
|
|
As per the [official VSCode documentation](https://code.visualstudio.com/docs/setup/linux)
|
|
|
|
```bash
|
|
sudo apt-get install wget gpg
|
|
wget https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64 -O /tmp/vscode.deb
|
|
sudo dpkg -i /tmp/vscode.deb
|
|
```
|
|
|
|
### Installing nvidia-container-toolkit
|
|
|
|
|
|
As per the [offical nvidia-container-toolkit guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html).
|
|
|
|
```bash
|
|
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
|
|
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
|
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
|
|
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y nvidia-container-toolkit
|
|
sudo nvidia-ctk runtime configure --runtime=docker
|
|
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
|
|
nvidia-ctk cdi list
|
|
```
|
|
|
|
## Quickstart
|
|
|
|
To get started you can simply clone this repository and run `docker compose --profile uav-sim up`.
|
|
|
|
Once the simulated UAV is running you can connect to it with QGroundControl or other
|
|
MavLink compatible software. We expose the UAVs Mavlink conenction on tcp port 5760.
|
|
|
|
There is experimental GUI support you can enable by running `docker compose --profile uav-sim --profile ui up`.
|
|
|
|
### Creating a new project
|
|
|
|
We provide project templates you can use for development that integrate seamlessly into
|
|
our simulated robots.
|
|
|
|
These templates are intended to be used with VSCode.
|
|
|
|
To get started with our project templates install the [copier](https://copier.readthedocs.io/en/stable/) project
|
|
templating utility.
|
|
|
|
* [template-service-ros1-catkin](https://git.spirirobotics.com/Spiri/template-service-ros1-catkin)
|
|
|
|
This template uses the last stable release of ROS1 (ros noetic) and supports python and c++ programming
|
|
languages.
|
|
|
|
ROS1 is considered end of life. It's recomended to use a ROS2 template instead
|
|
|
|
* ROS2 template
|
|
|
|
We're working on it...
|
|
|
|
|
|
|