ROS2 Environment Manager
Project description
ros2em - ROS2 Environment Manager
ros2em is a CLI tool to create and manage isolated ROS2 environments.
Whether you're a robotics developer, student, or researcher, ros2em makes it easy to:
- 🧠 Spin up clean, persistent ROS 2 environments
- 🐳 Use Docker based containers
- 🖥 Access GUIs like Rviz or Gazebo via browser
- ✅ Support both
amd64andarm64architectures
🚀 Features
- ⚡ One-line ROS 2 environment creation and access
- 🖥 Web-based GUI using tiryoh/ros2-desktop-vnc
- 🖥 GUI access using browser
- 🔐 No system pollution – nothing touches your host machine
- 💡 Powered by Typer (CLI) and Rich (colored output)
🔧 Prerequisites
Before using ros2em, make sure you have Docker installed on your system:
🪟 Windows
- Install Docker Desktop from https://www.docker.com/products/docker-desktop
- Ensure WSL 2 is installed and configured (Docker Desktop will guide you).
- After install, verify Docker is working
docker version.
🍎 macOS
- Install Docker Desktop from https://www.docker.com/products/docker-desktop
- After installation, open Docker Desktop once to initialize.
- After install, verify Docker is working
docker version.
🐧 Linux (Ubuntu/Debian)
sudo apt update
sudo apt install -y docker.io docker-compose
sudo usermod -aG docker $USER
newgrp docker
Then test it docker version.
📦 Installation
Recommended (via pipx)
pipx install ros2em
Or using pip
pip install ros2em
🛠 Commands
🐣 Create a new environment
ros2em init myenv --distro humble
Creates a .ros2em/myenv/ folder with a default docker-compose.yml, metadata, and port configuration.
⚙️ Options
You can customize it with advanced options.
| Option | Type | Default | Description |
|---|---|---|---|
--ports |
list[str] | None | Extra port mappings in host:container format (e.g., 9000:9000) |
--context |
str | "default" | Docker context to use (useful for remote or wsl contexts) |
Example:
ros2em init turtlebot4 humble --ports 11311:11311 --context wsl
🚀 Start or resume the container
ros2em up myenv
Starts the container if it exists, or creates it if not.
🧹 Stop the container
ros2em stop myenv
Stops the running container but retains it, including all manually installed packages.
❌ Delete an environment
ros2em delete myenv
Stops and removes the container. As well deletes .ros2em/myenv/ folder and all metadata.
🖥 Accessing the Desktop GUI
ros2em open myenv
Click on the link that looks something like this in the output: http://localhost:6080.
🧩 Contributing
We welcome contributions, ideas, and feedback.
- Open issues for bugs and enhancements
- Fork and submit a pull request
- Share your use case via Discussions
📄 License
Apache 2.0 — © 2025 Kodo Robotics
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ros2em-0.2.0.tar.gz.
File metadata
- Download URL: ros2em-0.2.0.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b29a59ed023cfdfd5bf59d5a44dea087e1522bb407ae2b9b9037f49af00ec1d1
|
|
| MD5 |
8bde5e163f6e4192b8577c255306a20e
|
|
| BLAKE2b-256 |
3ad724ae037c45417682b7976677b173c3018a8d8c0d9c1931768afc71242632
|
File details
Details for the file ros2em-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ros2em-0.2.0-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
faf46ad3efaa38e505b6295c56ffaff6a213236e141da1eb14c642d3be770545
|
|
| MD5 |
8ace7681475020d584d1f86d828ce373
|
|
| BLAKE2b-256 |
939a579c2ed499d0821124523b8d7afb2dc5cfe87bfeb7be9f45aa24dc9ba793
|