Skip to content

9LogM/Lexaire

Repository files navigation

Lexaire

Natural Language Control and Autonomy for Drone Systems.


Setup

Requirements

Hardware

  • MAVLink-compatible flight controller
  • Companion computer with serial connection to flight controller
  • Depth sensor
  • Ubuntu x86_64 ground station

Ground station software

  • Docker with Compose v2
  • SSH key configured to companion computer

Companion computer software

  • Docker with Compose v2
  • SSH server enabled

Optional

  • QGroundControl (manual control and parameter tuning during development)

Configuration

Edit common/config.yaml:

serial_device: /dev/ttyACM0       # serial port to flight controller (companion computer side)
serial_baud: 57600                # baud rate of the serial connection
drone_host: user@companion.local  # SSH connection to companion computer

SSH key setup

Lexaire deploys the relay over SSH. Run once from the ground station:

ssh-keygen -t ed25519 -C "lexaire"   # skip if you already have a key
ssh-copy-id user@companion.local   # use the drone_host value from config.yaml

Build

docker compose build

Run

docker compose run --rm lexaire

Deploy relay

On first run, deploy the MAVLink relay to the companion computer from the Lexaire menu:

1. Start relay

This uses Docker's remote daemon over SSH. After the first deploy, the relay auto-starts on every reboot.


Architecture

[ Drone ]
  Flight controller
        │ serial
        ▼
  Companion computer — mavlink-router (relay container)
        │ UDP over WiFi
        ▼
[ Ground station ]
  ┌─────┴──────┐
  ▼            ▼
:14550       :14551
 QGC         MAVSDK (lexaire)

The companion computer is a dumb MAVLink bridge. All logic — telemetry, commands, SLAM, AI — runs on the ground station.

Stack

Component Version Runs on Role
Debian slim 13 (Trixie) Ground station (amd64) Base image for Lexaire
Debian slim 13 (Trixie) Companion computer (native arch) Base image for relay
MAVSDK 3.17.0 Ground station High-level MAVLink SDK
mavlink-router v4 Companion computer MAVLink packet forwarder
Boost.Asio system Ground station Async event loop
ncurses system Ground station Terminal UI

Relay deployment

The relay/ directory contains the relay's Dockerfile and entrypoint. When you select Start relay in the Lexaire menu, it runs:

DOCKER_HOST=ssh://<drone_host> docker compose -f relay/docker-compose.yaml up -d --build

Docker streams the relay/ build context over SSH to the companion computer's daemon, which builds and starts the container natively. The companion computer never needs the repo cloned. restart: unless-stopped keeps the relay running across reboots.


Discussions

Have questions, ideas, or want to follow along? Join the conversation: github.com/9LogM/Lexaire/discussions


Special Thanks

This project was built with the help of Claude — cheers for the pair programming.

About

Natural Language Control and Autonomy for Drone Systems.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors