Skip to content

Repository files navigation

Artemis Mission Simulator

Build & Test ROS 2 Jazzy Gazebo Harmonic License

An open-source ROS 2 + Gazebo platform for simulating NASA's Artemis lunar missions β€” terrain, illumination, robotics, and beyond.


Launching an Artemis mission with the artemis CLI
One command β€” artemis liftoff β€” boots the mission-control dashboard, Gazebo, and the mission manager in a single tmux session


Overview

Artemis Mission Simulator is a plug-and-play simulation playground for researchers and engineers working on space robotics for the Artemis programme. The goal is two-fold: simulate the lunar environment as faithfully as possible, and provide a ready-to-use testing ground for rovers, drones, humanoids, and other systems intended for lunar surface operations.

The whole stack is driven by a single command-line tool, artemis: artemis liftoff brings up a live terminal mission-control dashboard, the Gazebo simulation, and the mission manager together, each in its own pane of a dedicated tmux session.

Milestone 1 β€” Lunar Environment (in progress)

  • Real terrain from NASA PGDA-78 LRO elevation data for Artemis south-pole landing sites
  • Accurate solar illumination and permanently shadowed regions via ephemeris data
  • Procedural surface texturing for VO and SLAM testing

Upcoming milestones

  • Moonfall drone simulation
  • Lunar Terrain Vehicles (LTVs) and rovers
  • Lunar base environment

Packages

Package Description
artemis_mission_launcher The artemis command-line tool, the terminal mission-control dashboard, and the Gazebo world launch files
artemis_mission_manager Mission-level orchestration; publishes latched site metadata on /mission/site_metadata
artemis_mission_interfaces ROS 2 message definitions for mission-level information (e.g. SiteMetadata)
artemis_assets Pre-built Gazebo terrain models for the supported sites (and future props/robots)
lunar_terrain_exporter CLI tool for generating Gazebo SDF terrain models from NASA PGDA-78 south-pole DEMs

Setup

Prerequisites

Option A β€” Docker scripts

# Build the image
./docker/build.sh

# Launch the container (auto-detects NVIDIA GPU, mounts workspace)
./docker/run.sh

# Inside the container
colcon build --symlink-install
source install/setup.bash

Option B β€” VS Code Devcontainer

Requires the Dev Containers extension.

  1. Open the repo in VS Code.
  2. Run Dev Containers: Reopen in Container.
  3. Build from the terminal:
colcon build --symlink-install
source install/setup.bash

NVIDIA GPU passthrough is opt-in β€” uncomment the --gpus=all lines in .devcontainer/devcontainer.json.

Both flows map your host UID/GID into the container so mounted files are always owned by your host user. Build artifacts persist across restarts in named Docker volumes. To wipe them after an image rebuild:

docker volume rm artemis-build artemis-install artemis-log

Mission Control β€” the artemis CLI

Once the workspace is built and sourced, a single command launches a full mission:

artemis liftoff --site shackleton_rim

Artemis mission-control dashboard
The mission-control window β€” mission clock, site overview, and host telemetry over a starfield

artemis liftoff creates a tmux session named artemis with one window per stack and attaches you to it:

Window What it runs
mission-control A live terminal dashboard β€” mission clock, site overview, and host telemetry, over a starfield
simulation The Gazebo world for the selected site (lunar_world.launch.py)
mission_manager Publishes latched site metadata on /mission/site_metadata

Options

Flag Description
--site <name> Mission site (default: empty_lunar). See sites below.
--epoch <when> Mission UTC epoch: now, now+<N>{s,m,h,d}, YYYY-MM-DD, or YYYY-MM-DDTHH:MM:SSZ (default: now)
-d, --detached Launch in the background instead of attaching to the tmux session
--no-home Skip the mission-control dashboard

Available sites: empty_lunar, shackleton_rim, de_gerlache_rim, peak_near_shackleton, connecting_ridge

Shutting down β€” from the attached session press Ctrl-C to shut the mission down cleanly. If you launched with --detached:

tmux attach -t artemis        # re-attach
tmux kill-session -t artemis  # force-stop

Launching the simulation alone

To bring up only the Gazebo world without the full mission stack:

ros2 launch artemis_mission_launcher lunar_world.launch.py site:=shackleton_rim

Contributing

See CONTRIBUTING.md.

License

Apache 2.0 β€” see LICENSE.


Logo generated with Google Gemini.

About

A ROS 2 based simulator-agnostic Digital Twin for the Lunar South Pole to simulate NASA's Artemis Missions 🌝

Resources

Contributing

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages