Go to file
Alex Davies 88f6c46213
Build Docs / build (push) Failing after 36s Details
Build for github pages
2024-10-19 13:00:23 -03:00
.copier Update docs 2024-10-16 09:13:46 -03:00
.github/workflows Build for github pages 2024-10-19 13:00:23 -03:00
docs Update docs 2024-10-16 12:55:18 -03:00
guiTools Update docs 2024-10-16 09:13:46 -03:00
.gitignore Update docs 2024-10-16 12:55:18 -03:00
.gitmodules Removed desktop specific items 2024-09-17 12:30:08 -03:00
README.md Bump README 2024-10-16 14:07:01 -03:00
background.png Initial commit 2024-01-22 15:42:59 -04:00
docker-compose.yml Update docs 2024-10-16 09:13:46 -03:00

README.md

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.

You can use the following command to let ubuntu try to install the appropriete drivers automatically:

sudo ubuntu-drivers install --gpgpu

Installing Docker

As per the official Docker documentation.

#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

python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install copier

Installing VSCode

As per the official VSCode documentation

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.

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 project templating utility.

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...