Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
2715c31
feat: code cleanup and add a seperate config for 5090 server
enkerewpo Oct 25, 2025
b741472
Merge branch 'syswonder:main' into main
enkerewpo Oct 29, 2025
63efb66
feat: update Docker setup and remove unused files
enkerewpo Oct 29, 2025
fe92806
feat: implement Robonix core with registration service
enkerewpo Oct 29, 2025
c75fa42
feat: enhance Robonix core with demo RGB camera provider
enkerewpo Nov 1, 2025
169e066
feat: add rust/ros2-client submodule and update registration service
enkerewpo Nov 1, 2025
3ff0bf6
feat: add new Rust submodules for rcl_interfaces and common_interfaces
enkerewpo Nov 1, 2025
bf0232d
feat: enhance message generation script and add new message structures
enkerewpo Nov 1, 2025
97c34a6
fix: resolve dependencies for ROS2 Humble compatibility
enkerewpo Nov 3, 2025
3f58842
chore(rust): update rust code
enkerewpo Nov 9, 2025
fe56f54
feat: enhance package specification and process management
enkerewpo Nov 9, 2025
9524a57
docs: update PACKAGE_SPEC.md
enkerewpo Nov 9, 2025
b4f0493
refactor: update Dockerfile and enhance Rust CLI structure
enkerewpo Nov 14, 2025
7942248
chore: update Dockerfile and enhance Rust CLI output handling
enkerewpo Nov 14, 2025
7d79020
refactor: improve process management and command structure in Rust CLI
enkerewpo Nov 14, 2025
c0cb200
refactor: reorganize Rust CLI and enhance package management features
enkerewpo Nov 15, 2025
4b4bdae
feat: enhance package specification and registration process
enkerewpo Nov 15, 2025
4f15fb7
docs: update README with API key registration instructions
enkerewpo Nov 15, 2025
c0cebb8
docs: update PACKAGE_SPEC.md and demo_recipe.yaml for deployment process
enkerewpo Nov 15, 2025
30da858
feat: implement daemon management and enhance service communication
enkerewpo Nov 16, 2025
7201d84
refactor: update socket and state directory paths in Rust CLI
enkerewpo Nov 16, 2025
0767e41
feat: improve daemon startup process and executable discovery
enkerewpo Nov 16, 2025
95e9e86
feat(cli): add build command
enkerewpo Nov 16, 2025
4310895
feat: enhance error handling and signal management in demo skills
enkerewpo Nov 16, 2025
98e0ceb
feat: enhance daemon response structure and improve CLI output
enkerewpo Nov 16, 2025
062fc50
feat: implement task management and DSL execution modules
enkerewpo Nov 16, 2025
93f54e4
docs: update README for workflow clarity and code examples
enkerewpo Nov 16, 2025
d321073
chore: remove obsolete fast.xml configuration file
enkerewpo Dec 12, 2025
6367b4a
feat: enhance Robonix framework with new service and primitive modules
enkerewpo Dec 12, 2025
674f585
feat: add Docker configuration and new service definitions
enkerewpo Dec 12, 2025
9379f63
fix: update Docker options in CI workflow
enkerewpo Dec 12, 2025
7dd1247
chore: remove obsolete service definitions
enkerewpo Dec 12, 2025
51955d0
chore: remove CI workflow for Rust Robonix
enkerewpo Dec 12, 2025
64f92fa
feat: transition from robonix-msg to robonix-sdk
enkerewpo Dec 15, 2025
75cad44
feat: add initial message and service definitions for Robonix
enkerewpo Dec 15, 2025
a0f3179
chore: remove obsolete Robonix message and service definitions
enkerewpo Dec 15, 2025
cbe0e05
fix: update ROS2 service type references in PACKAGE_SPEC.md
enkerewpo Dec 15, 2025
03a5751
docs: update README with instructions for using the prebuilt Robonix …
enkerewpo Dec 21, 2025
0d5a0b2
feat: add Ping Pong service and load testing clients
enkerewpo Dec 21, 2025
670e215
chore: remove example Docker environment file and update README instr…
enkerewpo Dec 21, 2025
9a8cb05
docs: streamline README for Robonix quick start instructions
enkerewpo Dec 21, 2025
f338fbf
refactor: improve error handling and code formatting in daemon client…
enkerewpo Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 3 additions & 15 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,36 +1,24 @@
__pycache__/
*.py[cod]
*$py.class

# ros2
log/
build/
install/

# additions
temp/
.vscode/

#log
log.txt

.DS_Store

.cursor/
.cursorrules
*.pt
.env

test.txt
path.sh
scene_info.json

frames_*

# skill export
__export__.py
skill/__init__.py

*.log

tmp/
tmp/
tailscale/
target
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,12 @@
[submodule "robonix/driver/ranger_ros2/src/ugv_sdk"]
path = robonix/driver/ranger_ros2/src/ugv_sdk
url = https://github.com/enkerewpo/ugv_sdk.git
[submodule "ros2-client"]
path = rust/lib/ros2-client
url = https://github.com/enkerewpo/ros2-client
[submodule "rcl_interfaces"]
path = rust/lib/rcl_interfaces
url = https://github.com/enkerewpo/rcl_interfaces
[submodule "common_interfaces"]
path = rust/lib/common_interfaces
url = https://github.com/enkerewpo/common_interfaces
40 changes: 12 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,20 @@
# robonix
<div align="center">
<img src="robonix.png" alt="robonix" width="200">
</div>
# Robonix

**robonix** is an open-source embodied intelligence framework.
**Robonix** is an open-source embodied intelligence framework built with Rust and ROS2, implementing the EAIOS (Embodied AI Operating System) architecture.

## Setup
## Architecture

```bash
git clone --recurse-submodules https://github.com/syswonder/robonix.git
```
Robonix follows the EAIOS architecture with four core components:

1. install ROS2 humble: https://docs.ros.org/en/humble/Installation.html
2. build your driver and capability ROS2 node (enter the folder and run build.sh or colcon build)
- **Task Manager**: Global scheduling and control core, responsible for task parsing, planning, and execution coordination
- **Skill Library**: Stores reusable skills that can be called at runtime
- **Service Registry**: Manages standardized algorithm capabilities (perception, planning, evaluation, verification)
- **Primitive Abstraction Layer**: Provides standardized hardware capability mapping, managing access to actuators and sensors

## Startup
## Quick Start

```bash
cd robonix
python3 ./manager/boot.py --config {YOUR_BOOT_CONFIG}
```
See [robonix quickstart](rust/README.md)

Please see examples configs in `config/include`.
## License

## Action Programming and Simulation

for user action programming and simulation, you need to install the following packages:

```bash
pip install rich loguru mcp pyyaml argparse # basic packages for uapi and manager
pip install grpcio grpcio-tools genesis-world pynput # if you want to use genesis simulator
pip install openai python-dotenv # for LLM-generated action
```

run `python3 ./simulator/genesis/robot1.py` to start the genesis simulator, then run example python scripts in `./simulator/examples` to run the abstract action program.
See LICENSE file for details.
5 changes: 5 additions & 0 deletions config/include/nvidia_server.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
driver:
capability:
skill:
- spatial
brain:
3 changes: 2 additions & 1 deletion config/include/ranger_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ skill:
- vision
- semantic_map
- test_skill
- pointcloud
- spatial
- asr
brain:
- test_brian

Expand Down
77 changes: 77 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
FROM osrf/ros:humble-desktop

ENV ROS_DOMAIN_ID=0
ENV ROS_LOCALHOST_ONLY=0
# ENV FASTRTPS_DEFAULT_PROFILES_FILE=/root/shared/fast.xml
# ENV RMW_IMPLEMENTATION=rmw_fastrtps_cpp

# RUN apt-get update && apt-get install -y \
# ca-certificates \
# wget gnupg && \
# wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb && \
# dpkg -i cuda-keyring_1.1-1_all.deb && \
# apt-get update && \
# apt-get install -y cuda-toolkit-12-4 && \
# rm cuda-keyring_1.1-1_all.deb

# RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
# bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3 && \
# rm Miniconda3-latest-Linux-x86_64.sh

RUN apt update && apt install -y \
ros-humble-rmw-fastrtps-cpp \
python3-pip \
python3-dev \
build-essential \
git \
wget \
libeigen3-dev \
libgl1-mesa-glx \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
bzip2 \
libosmesa6 \
libglu1-mesa \
libglfw3 \
libglfw3-dev \
mesa-utils \
libclang-dev python3-vcstool

# RUN apt update && apt install -y curl && \
# curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null && \
# curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list && \
# apt update && \
# apt install -y tailscale && \
# pip3 install --upgrade pip

# ENV PATH=/opt/miniconda3/bin:$PATH

# RUN conda tos accept || true && \
# conda create -n env1 python=3.10 -y && \
# conda clean -ya

# RUN conda config --set solver classic && \
# conda config --set channel_priority flexible

# install some basic packages in the env1 conda env
# RUN conda run -n env1 pip install intel-openmp && \
# conda run -n env1 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

# RUN conda run -n env1 pip install git+https://github.com/colcon/colcon-cargo.git && \
# conda run -n env1 pip install git+https://github.com/colcon/colcon-ros-cargo.git

# CUDA 12.4 toolkit installs to /usr/local/cuda by default
# Also set up version-specific paths for compatibility
# ENV CUDA_HOME=/usr/local/cuda
# ENV CUDA_PATH=/usr/local/cuda
# ENV PATH=/usr/local/cuda/bin:$PATH
# RUN echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/compat:${LD_LIBRARY_PATH:-}' >> ~/.bashrc
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility

# install rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

WORKDIR /root/workspace
100 changes: 100 additions & 0 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Docker Setup for Robonix

This directory contains Docker configuration files for building and running Robonix in a containerized environment.

## Files

- `Dockerfile`: Docker image definition based on ROS2 Humble
- `run.sh`: Script to build and run the Docker container locally
- `upload.sh`: Script to build and upload Docker image to cloud registry
- `docker-entrypoint.sh`: Container entrypoint script

## Local Usage

### Build and Run Container

```bash
cd docker
./run.sh # Run container (builds if needed)
./run.sh -b # Force rebuild image
./run.sh -d # Delete existing container
```

### Environment Variables

Create a `.env` file in the `docker/` directory to set custom variables:

```bash
# Optional: Custom image name
DOCKER_IMAGE_NAME=robonix_ros

# Optional: Custom registry
DOCKER_REGISTRY=ghcr.io/username

# Optional: Custom tag
DOCKER_TAG=latest

# Optional: Disable push (default: true)
DOCKER_PUSH=false

# Optional: Docker credentials (for upload.sh)
DOCKER_USERNAME=your_username
DOCKER_PASSWORD=your_token_or_password
```

## Upload to Cloud Registry

### Docker Hub (Default)

```bash
cd docker

# Set credentials (or use .env file)
export DOCKER_USERNAME=your_dockerhub_username
export DOCKER_PASSWORD=your_dockerhub_password

# Upload with default settings (uses docker.io)
./upload.sh docker.io/username/robonix_ros latest

# Or use environment variables
export DOCKER_REGISTRY=docker.io/username/robonix_ros
export DOCKER_TAG=v1.0.0
./upload.sh
```

### Using .env File

1. Copy the template file:
```bash
cd docker
cp dotenv.template .env
```

2. Edit `.env` and fill in your values:

```bash
# For Docker Hub (default)
DOCKER_REGISTRY=docker.io/your_dockerhub_username/robonix_ros
DOCKER_TAG=latest
DOCKER_USERNAME=your_dockerhub_username
DOCKER_PASSWORD=your_dockerhub_password_or_token
DOCKER_PUSH=true
```

**Important Notes:**
For Docker Hub: Use your Docker Hub username and password (or access token). Create access token at: https://hub.docker.com/settings/security.

3. Run the upload script:
```bash
./upload.sh
```

The script will automatically use values from `.env` if no command-line arguments are provided.

## Notes

- The Docker image includes ROS2 Humble, Rust, and all necessary dependencies
- GPU support is enabled if NVIDIA drivers are available on the host
- The container uses host networking for ROS2 communication
- X11 forwarding is set up for GUI applications

22 changes: 22 additions & 0 deletions docker/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash
set -e

mkdir -p /tmp/runtime-root
chmod 700 /tmp/runtime-root
export XDG_RUNTIME_DIR=/tmp/runtime-root

# Set up OSMesa for headless OpenGL rendering
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/osmesa:${LD_LIBRARY_PATH}
export OSMESA_LIB=/usr/lib/x86_64-linux-gnu/libOSMesa.so

# some post apt install
apt install -qq -y iputils-ping screenfetch >/dev/null 2>&1

# source the setup.bash
source /opt/ros/humble/setup.bash

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

echo -e "[*] \033[1mWelcome to robonix docker environment!\033[0m Distro is: \033[33m$(lsb_release -ds 2>/dev/null || echo "Linux")\033[0m with ROS2 \033[33m$(echo $ROS_DISTRO)\033[0m"
exec bash

49 changes: 49 additions & 0 deletions docker/dotenv.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Docker Upload Configuration
# Copy this file to .env and fill in your values
# cp dotenv.template .env

# ============================================
# Registry Configuration
# ============================================

# Full registry path (recommended)
# For Docker Hub (default):
DOCKER_REGISTRY=docker.io/your_dockerhub_username/robonix_ros

# For GitHub Container Registry:
# DOCKER_REGISTRY=ghcr.io/your_github_username/robonix_ros

# Or just registry (will use default image name)
# DOCKER_REGISTRY=docker.io
# DOCKER_IMAGE_NAME=robonix_ros

# Image tag (default: latest)
DOCKER_TAG=latest

# ============================================
# Authentication
# ============================================

# Your Docker Hub username
DOCKER_USERNAME=your_dockerhub_username

# Your Docker Hub password or access token
# You can use your account password or create an access token at:
# https://hub.docker.com/settings/security
DOCKER_PASSWORD=your_dockerhub_password_or_token

# ============================================
# Upload Options
# ============================================

# Whether to push image to registry (default: true)
# Set to false to only build locally without pushing
DOCKER_PUSH=true

# ============================================
# Other Configuration (if needed)
# ============================================

# Tailscale auth key (if using Tailscale)
# DOCKERKEY_PERM=PASTE_YOUR_TAILSCALE_AUTH_KEY_HERE

Loading
Loading