- Publishing of SwissCat+ laboratory map and QR Markers localization for mobile robots to localize itself, developed in Python and ROS 2 Humble, running inside Docker.
- Integrates with the EM_onrobot deployed on the mobile robot.
- Overview
- System Architecture
- Deployment of a New Robot
- Docker Installation (recommended)
- How to Run
- ROS 2 Interfaces
- Project Structure
- Improvements & Roadmap
- License
The EM_fleetmanager repository contains the software resources for deploying the laboratory maps, markers and managing the fleet of mobiles robots
- Published the map of the track where mobile robots are moving in a png format that can be seen in rviz.
- Publishes the markers position in the map for the mobile robot to localize itsef in the map
- Supports containerized deployment with Docker for easy setup and reproducibility.
- OS: Ubuntu 22.04
- ROS 2: Humble
-
Hardware
- PC
- Laboratory Track
- Aruco Markers
-
Software
- ROS 2 packages (all inside Docker):
mob_rob_loca→ publishes the map and markersmob_rob_loca_msgs→ service definitions
- ROS 2 packages (all inside Docker):
- Ensure PC and RPi are on the same network.
- For that, configure a static IP on the PC which should be the same as the one found in fastdds.xml (for example : 192.168.0.14)
- Match the ROS_DOMAIN_ID on both PC and RPi (default =
10):Or in the Dockerfile:echo "export ROS_DOMAIN_ID=10" >> ~/.bashrc
ENV ROS_DOMAIN_ID=10
-
Install Docker on the PC:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo groupadd docker sudo gpasswd -a $USER docker newgrp docker docker run hello-world
-
Run the container:
./deploy.sh
./deploy.sh| Topic | Type | Description |
|---|---|---|
/map |
nav_msgs/OccupancyGrid |
Map image of the laboratory track |
/marker_<num> |
geometry_msgs/TransformStamped |
Aruco Makers in the map |
| Parameter | Type | Description |
|---|---|---|
namespace |
string | Namespace prefix for topics/nodes per robot |
config_file |
string | Path to camera calibration file (ArUco positions, intrinsics) |
EM_fleetmanager/
├── Dockerfile # Build instructions for fleetmanager image
├── entrypoint.sh # Container entrypoint script
├── fastdds.xml # Fast DDS configuration
├── src/
│ ├── mob_rob_loca/ # Main fleetmanager package (map,markers)
│ ├── mob_rob_loca_srv/ # ROS 2 service definitions
├── pictures/logo.png
├── README.md
├── requirements.txt # Requirements if trying to run locally
├── LICENSE # MIT License
├── deploy.sh # Launch the container
- Expand documentation with troubleshooting and advanced usage examples.
This project is licensed under the MIT License.