Skip to content

macaris64/build-with-opus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cFS - Space ROS Integration

In future Mars and Titan missions, how will spacecraft, ground systems, and the ground, air, and water vehicles sent to the planet communicate? How will data communication take place? Many large teams are currently working on this. And the protocol used is clear: CCSDS. NASA has begun using cFS, whose code is now open source, embedded in spacecraft. Meanwhile, ground, air, and water rovers use SPACE ROS, the spacecraft version of the robot operating system. Data communication is also provided via CCSDS. In our project, we are communicating with cFS applications written in Rust, and rovers whose cores we developed using SPACE ROS. We are running both systems integrated.

Screenshot from 2026-04-27 11-17-04 Screenshot from 2026-04-27 11-16-47 Screenshot from 2026-04-27 11-16-10

What's Inside

Layer Directory Technology
Flight Software apps/ C17, NASA cFS, MISRA C:2012
Robotics ros2_ws/ Space ROS 2, ament/colcon, C++17
Simulation simulation/ Gazebo Harmonic, ModelPlugin
Ground Tools rust/ Rust stable, Cargo workspace
Mission Config _defs/ CMake targets, compile-time constants

Quick Start — Docker (recommended)

Requires Docker ≥ 24 with the Compose v2 plugin. No other tools needed.

make run    # build all images and start every service (cFS, Gazebo, ROS 2, ground station, fault injector)
make logs   # stream combined logs from all services  (Ctrl-C to exit)
make stop   # stop and remove containers (volumes preserved)
make clean  # stop containers and remove named volumes

Once the stack is up:

Service URL / Address Protocol Notes
Ground station operator UI http://localhost:8080 HTTP /api/time, /api/tc, telemetry surfaces
Ground station telemetry API http://localhost:8080/api/time HTTP Liveness probe
UDP telemetry ingress localhost:10000 UDP CCSDS AOS frames from cFS / fault injector

First run pulls/builds all images — expect 10–20 minutes. Subsequent runs use the Docker layer cache and start in seconds.

Quick Start — Native (no Docker)

# Build C/cFS + simulation plugins + fault injector
cmake -B build -DCMAKE_BUILD_TYPE=Debug && cmake --build build

# Run C unit tests
ctest --test-dir build --output-on-failure

# Build and test Rust
cargo build && cargo test && cargo clippy -- -D warnings

# ROS 2 workspace (requires Space ROS 2 install)
cd ros2_ws && colcon build --symlink-install && colcon test

Copy .env.example to .env before using the Postgres MCP server.

Using This as a Boilerplate

Forking to start a new mission? See docs/dev/fork-bootstrap.md for the runbook (rename codename, reset mission config, trim rules/skills, re-run quickstart).

Documentation

About

Communicating with cFS applications written in Rust, and rovers whose cores we developed using SPA communicating with cFS applications written in Rust, and rovers whose cores we developed using SPACE ROS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors