Skip to content

OpenMind/OM1-sim

Repository files navigation

OM1-sim

Gazebo simulation package for the Unitree Go2 robot, designed to work with OM1.

This repo provides a minimal simulation environment with lidar-based obstacle avoidance — no SLAM, Nav2, or mapping stack required.

Architecture

OM1 (Python/LLM) <--> Zenoh <--> zenoh-bridge-ros2dds <--> ROS2 (OM1-sim) <--> Gazebo

What's included

Component Purpose
go2_sim Main simulation package: launch file, topic remapping, sport API bridge, battery mock
om_path Lidar-based path feasibility node — publishes safe movement directions to /om/paths
go2_description Robot URDF, meshes, and Gazebo worlds
champ / champ_base Quadruped locomotion controller (CHAMP framework)
champ_msgs CHAMP custom message definitions
unitree_api / unitree_go Unitree message definitions
om_api OpenMind message definitions (Paths, etc.)

What's NOT included (handled by OM1-ros2-sdk for real robots)

  • SLAM (slam_toolbox)
  • Nav2 navigation stack
  • Frontier exploration
  • Orchestrator / REST API
  • Localization (AMCL, scan matching)
  • D435 depth camera processing
  • Watchdog

Prerequisites

  • ROS 2 Humble
  • Gazebo (Harmonic or Fortress)
  • OM1 for the AI agent

Setup

Option 1: Native Build

# Install ROS 2 dependencies
sudo apt install ros-humble-ros-gz-sim ros-humble-ros-gz-bridge \
  ros-humble-gz-ros2-control ros-humble-ros2-control ros-humble-ros2-controllers \
  ros-humble-robot-state-publisher ros-humble-joint-state-publisher \
  ros-humble-xacro ros-humble-joy ros-humble-teleop-twist-joy \
  ros-humble-rmw-cyclonedds-cpp

# Install zenoh bridge
echo "deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /" | sudo tee /etc/apt/sources.list.d/zenoh.list
sudo apt update && sudo apt install zenoh-bridge-ros2dds

# Build the workspace
source /opt/ros/humble/setup.bash
cd OM1-sim
colcon build --symlink-install
source install/setup.bash

Option 2: Docker

docker compose build

Running

1. Start the simulation

# Native
source install/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
ros2 launch go2_sim go2_launch.py

# Or with Docker (headless, no RViz)
docker compose up

2. Start the Zenoh bridge (in a separate terminal, if running natively)

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
zenoh-bridge-ros2dds -c zenoh/zenoh_bridge_config.json5

3. Start OM1 with the simulation config

# In the OM1 repo
cd ../OM1
python src/run.py --config config/go2_sim_autonomy.json5

Configuration

The corresponding OM1 config is OM1/config/go2_sim_autonomy.json5. It provides:

  • Autonomy mode: Move around with lidar-based obstacle avoidance
  • Conversation mode: Chat with the robot
  • Guard mode: Autonomous patrol with status reports

Launch Arguments

Argument Default Description
use_sim_time true Use Gazebo clock
rviz true Launch RViz
world home_world.sdf Gazebo world file
robot_name go2 Robot name in Gazebo
world_init_x/y/z 0/0/0.375 Initial robot position
publish_map_tf true Publish static map→odom TF

Data Flow

Gazebo /scan (LaserScan)
    --> om_path node --> /om/paths
        --> Zenoh bridge --> om/paths (Zenoh topic)
            --> OM1 SimplePathsProvider
                --> LLM decides direction
                    --> SportClient --> /api/sport/request
                        --> go2_sport_node --> /cmd_vel --> Gazebo

License

MIT

About

Robot simulation setup for OM1 integration

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors