Skip to content

MOLISENS-MOSEP/development.ade

Repository files navigation

MOLISENS/MOSEP Development Environment

Main entry point for the MOLISENS/MOSEP software stack. Uses Docker Compose and just to manage Docker-based ROS 2 development containers across multiple platforms (x86_64, aarch64, macOS ARM64).

Prerequisites

Docker:

sudo apt install docker.io
sudo groupadd docker
sudo usermod -aG docker ${USER}

just (command runner):

Can be instlled via Python:

uv tool install rust-just
# or
pipx install rust-just

or check the install guide.

Installation

  1. Set the installation directory (add to your .bashrc or .zshrc):
export MOSEP_DIR="<WHEREVER_YOU_WANT>/MOSEP"

For example export MOSEP_DIR="/home/$USER/projects/MOSEP"

  1. Clone and run the install script:
mkdir -p $MOSEP_DIR
git clone https://github.com/MOLISENS-MOSEP/development.ade.git $MOSEP_DIR/ade
$MOSEP_DIR/ade/install_ade.sh

If you get permission denied, run chmod +x $MOSEP_DIR/ade/install_ade.sh first.

  1. Restart your terminal.

  2. Login to the GitHub Container Registry with a personal access token:

export CR_PAT=YOUR_TOKEN
echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin

Usage

Enter the development container (downloads the Docker image on first run):

mosep_enter

Stop the container:

mosep_stop

You can also use just directly from the ade/ directory:

cd $MOSEP_DIR/ade
just enter
just stop
just update

AArch64 Sensor Profiles (MOSEP_PROFILE)

On aarch64 systems, you can select sensor-specific compose overrides via MOSEP_PROFILE.

  • met: meteorological setup (GPS, IMU, RS485 adapters)
  • cam: camera-focused setup (/dev/video0, /dev/vchiq, VideoCore libs)

Set profile in your shell config (or export per session):

export MOSEP_PROFILE=met
# or
export MOSEP_PROFILE=cam

Full setup (mapping/met Pi): start container, then inside it pull all repos and build:

mosep_enter
mosep_update   # pulls molisens.repos (LiDAR, radar, GNSS, IMU, ...)
mosep_make

Camera Pi only: start container with MOSEP_PROFILE=cam, then pull only camera repos and build:

export MOSEP_PROFILE=cam
mosep_enter
mosep_cam_update   # pulls cam.repos (cam_sensor_kit + data_recording only)
mosep_make

Available Commands

Alias just recipe Description
mosep_enter just enter Enter the container (starts if needed)
mosep_stop just stop Stop the container
mosep_update just update Pull latest image and restart
just logs Show container logs
just status Show container status

The following aliases run inside the container to sync and build the workspace:

Alias Description
mosep_update Pull molisens.repos — full workspace (mapping/met Pi)
mosep_cam_update Pull cam.repos — camera Pi only (cam_sensor_kit + recording)
mosep_make Build all packages
mosep_make <pkg> Build a specific package

Structure

ade/
├── install_ade.sh          # Installation script
├── extensions.sh           # Shell env setup and aliases
├── compose.yaml            # Docker Compose base config (x86_64)
├── compose.aarch64.yaml    # Common aarch64 overrides
├── compose.met.yaml        # aarch64 met sensor profile
├── compose.cam.yaml        # aarch64 camera sensor profile
├── justfile                # Task runner recipes
└── MOSEP/
    ├── bagfiles/           # Recorded rosbag data
    └── mosep_ws/           # ROS 2 workspace (cloned during install)

Detailed Repository Overview

The MOLISENS/MOSEP project is split across multiple repositories. The install_ade.sh script clones mosep_ws, which in turn uses vcs import to pull all sub-repos into src/. Docker images are built separately from development.docker.

$MOSEP_DIR/
├── ade/                                    ← development.ade (this repo)
│   ├── install_ade.sh
│   ├── extensions.sh
│   ├── compose.yaml
│   ├── compose.aarch64.yaml
│   ├── compose.met.yaml
│   ├── compose.cam.yaml
│   ├── justfile
│   └── MOSEP/
│       ├── bagfiles/                       ← recorded rosbag data
│       └── mosep_ws/                       ← molisens_ws repo
│           ├── config/                        workspace config & aliases
│           ├── repos/
│           │   ├── molisens.repos             vcstool manifest (full)
│           │   └── cam.repos                  vcstool manifest (cam Pi only)
│           └── src/                           cloned via vcs import
│               ├── data/
│               │   ├── mapping_sensor_kit/    ← data.mapping_sensor_kit
│               │   ├── met_sensor_kit/        ← data.met_sensor_kit
│               │   ├── cam_sensor_kit/        ← data.cam_sensor_kit
│               │   └── convert_lidar_packets/ ← data.convert_lidar_packets
│               ├── drivers/
│               │   ├── lufft_weather_station/ ← drivers.lufft_weather_station
│               │   ├── ouster-ros/            (third-party)
│               │   ├── ublox/                 (third-party)
│               │   ├── xsens_ros_mti_driver/  (third-party)
│               │   └── smartmicro_ros2_radars/(third-party)
│               └── tools/
│                   ├── data_recording/        ← tools.data_recording
│                   ├── met_monitoring/        ← tools.met_monitoring
│                   └── ntrip_client/          (third-party)
└── docker/                                 ← development.docker repo
    ├── build.sh
    ├── x86_64/                                Dockerfiles for x86_64
    ├── aarch64/                               Dockerfiles for ARM64
    └── Ouster_ROS1/                           ROS 1↔2 bridge for Ouster

Notes on macOS

  1. Install Docker Desktop and just
  2. Follow the standard installation steps above
  3. Run mosep_enter
  4. Follow the instructions in MOSEP/mosep_ws/src/drivers/smartmicro_ros2_radars/Readme.md under the ARMv8 Support section
  5. Run mosep_make inside the container

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors