Skip to content

Workspace

MICIPSA Banner


Workspace Structure#

The workspace is organized into five top-level group directories. None of these directories are ROS packages themselves, they are organizational containers that partition the workspace by ownership and reuse intent.


micipsa_robot/#

Contains all ROS 2 packages that are specific to Micipsa. These packages depend on Micipsa hardware, configuration, and URDF and are not intended to be reused outside this project without customization. Every package here carries the micipsa_ prefix.

micipsa_robot/
├── micipsa_bringup/
├── micipsa_common/
├── micipsa_control/
├── micipsa_core/
├── micipsa_description/
├── micipsa_hardware/
├── micipsa_localization/
├── micipsa_navigation/
├── micipsa_simulation/
├── micipsa_perception/
├── micipsa_behavior/
└── micipsa_slam/

infra/#

Contains everything needed to provision, deploy, and operate the robot.

infra/
├── config/                 # System-level configuration (robot_system.conf)
├── dds/                    # CycloneDDS XML configuration
├── docker/                 # Dockerfiles, entrypoints, and Compose files
│   ├── <service>/          # One subdirectory per Docker service
│   ├── docker-compose.yaml
│   ├── docker-compose.deploy.yaml
│   ├── docker-compose.sim.yaml
│   ├── scripts/
│       ├── compose_launcher.py # Compose orchestration tool
│       ├── compose_manager.py 
│       ├── config_loader.py
│       └── env_builder.py 
├── scripts/
│   ├── helpers/            # Sourced shell utilities
│   ├── installers/         # Install/uninstall scripts
│   ├── robot_setup.sh      # Full robot provisioning entry point
│   └── robot_teardown.sh
├── systemd/                # Systemd service and target units
├── udev/                   # Udev rules for serial and camera devices
└── doc/                    # documentation assets

Why separate from micipsa_robot/?
micipsa_robot/ is concerned with robotics, it models the hardware, implements control and perception, and computes commands. infra/ is concerned with the machine, it configures the OS, manages processes, routes network traffic, and makes the environment in which ROS runs. These are distinct responsibilities.


common/#

Contains packages that are reusable in other robot projects without modification. They do not carry the micipsa_ prefix by convention.

common/
├── manual_teleop/          # Differential drive keyboard and joystick teleoperation
└── utils/                  # Generic Python utilities (not a ROS package itself)

third_party/#

Contains vendored upstream dependencies.

third_party/
├── ros/                    # Third-party ROS 2 packages
│   ├── realsense-ros/      # Intel RealSense ROS 2 driver
│   ├── serial/             # Serial Port Library ROS2
│   └── ydlidar_ros2_driver/
└── libs/                   # Non-ROS C/C++ libraries

micipsa_docs/#

Repository-level documentation for the robot platform, including architecture, setup, hardware, networking, deployment, and operational guides. ROS 2 package-specific documentation lives inside each individual package README.