Skip to content

Release v0.0.10: Manipulation Stack, MuJoCo Simulation, DDS Transport, Web and Native Visualization

Latest

Choose a tag to compare

@spomichter spomichter released this 20 Feb 23:29
· 57 commits to dev since this release
f101945

Dimensional

Release v0.0.10

The Agentive Operating System for Generalist Robotics

Discord


Highlights

88+ commits, 20 contributors, 700+ files changed.

The TLDR: a complete manipulation stack, MuJoCo simulation, DDS transport, and a rewritten visualization pipeline. Agents are no longer bolted on top — they're refactored as native modules with direct stream access. The entire ROS message dependency has been removed from core DimOS, and we've added VR, phone, and arm teleoperation stacks. You can now vibecode a pick-and-place task from natural language to motor commands. Installation has been significantly streamlined — no more direnv, simpler setup, and the web viewer is now the default.


🚀 New Features

Simulation

  • MuJoCo simulation module — Run any DimOS blueprint in simulation with no hardware. Supports xArm and Unitree embodiments, parses MJCF/URDF for robot properties, monotonic clock timing (no time.sleep). dimos --simulation run unitree-go2 (#1035) by @jca0
  • Simulation teleop blueprints — Added simulation teleop blueprints for Piper, xArm6, and xArm7. (#1308) by @mustafab0

Manipulation

  • Modular manipulation stack — Full planning stack with Drake: FK/IK solvers (Jacobian + Drake optimization), RRT path planning, world model with obstacle monitoring, multi-robot management. xArm6/7 and Piper support. (#1079) by @mustafab0
  • Joint servo and cartesian controllers — Joint position/velocity controllers and cartesian IK task with Pinocchio solver. PoseStamped stream input for real-time control. (#1116) by @mustafab0
  • GraspGen integration — Grasp generation via Docker-hosted GPU model. Lazy container startup, thread-safe init, RPC generate_grasps() returns ranked PoseArray. (#1119, #1234) by @JalajShuklaSS
  • Gripper control — Gripper RPC methods on control coordinator, exposed adapter property for custom implementations. (#1213) by @mustafab0
  • Detection3D and Object support — Object input topics, TF support on manipulation module, pointcloud-to-convex-hull for Drake imports. (#1236) by @mustafab0
  • Agentic pick and place — Reimplemented manipulation skills for agent-driven pick-and-place workflows. (#1237) by @mustafab0

Teleoperation

  • Quest VR teleoperation — Full WebXR + Deno bridge stack. Quest controller data (pose, trigger, grip) streamed to DimOS modules. Monitor-style locking for control loops. (#1215) by @ruthwikdasyam
  • Phone teleoperation — Control Go2 from your phone with a web-based teleop interface. (#1280) by @ruthwikdasyam
  • Arm teleop with Pinocchio IK — Single and dual arm teleoperation using Pinocchio inverse kinematics. Blueprints for xArm, Piper, and dual configurations. (#1246) by @ruthwikdasyam

Transports & Infrastructure

  • DDS transport protocol — CycloneDDS transport with configurable QoS (high-throughput and reliable profiles). Optional install, benchmark integration. (#1174) by @Kaweees
  • Pubsub pattern subscriptions — Glob and regex pattern matching for topic subscriptions. subscribe_all() for bridge-style consumers. Topic type encoding in channel strings (/topic#module.ClassName). (#1114) by @leshy
  • LCM raw bytes passthrough — Skip lcm_encode() when message is already bytes. (#1223) by @leshy
  • Unified TimeSeriesStore — Pluggable backends (InMemory, SQLite, Pickle, PostgreSQL) with SortedKeyList for O(log n) operations. Replaces the old replay system and TimestampedCollection. Collection API with slice, range, and streaming methods. (#1080) by @leshy
  • DimosROS benchmark tests — Benchmark suite for ROS transport performance. (#1087) by @leshy

Navigation

  • FASTLIO2 support — Hardware-verified localization with arm64 support. Docker deployment with FAR Planner, terrain analysis, and bagfile playback mode. Builds or-tools from source on arm64. (#1149) by @baishibona
  • Native Livox + FASTLIO2 module — First-class DimOS native module for Livox Mid-360 lidar with FASTLIO2 localization. (#1235) by @leshy

Visualization

  • RerunBridge module and CLI — New bridge that subscribes to all LCM messages and logs those with to_rerun() to Rerun viewer. GlobalConfig singleton, web viewer support. Replaces the old rerun initialization system. (#1154) by @leshy
  • Webcam rerun visualization — Camera module logs to Rerun with pinhole projection for 3D visualization. (#1117) by @ruthwikdasyam
  • Default viewer switched to rerun-web — Browser-based viewer is now the default for broader compatibility. No native viewer install needed. (#1324) by @spomichter

Agents

  • Agent refactor — Restructured agent module with cleaner imports and global config integration. (#1211) by @paul-nechifor
  • Timestamp knowledge — Agents now have timestamp awareness in prompts for temporal reasoning. (#1093) by @ClaireBookworm
  • Observe skill — Go2 can now observe (capture and describe) its environment via agent skill. (#1109) by @paul-nechifor

Platform & Hardware

  • G1 without ROS — Unitree G1 blueprints decoupled from ROS dependency. Lazy imports for fast startup. (#1221) by @jeff-hykin
  • ARM (aarch64) support — DimOS runs on ARM hardware. Platform-conditional dependencies, open3d source builds for arm64. (#1229) by @jeff-hykin
  • Universal joint/hardware schemaHardwareComponent dataclass with JointState, JointName type aliases. Backend registry with auto-discovery for SDK adapters. (#1040, #1067) by @mustafab0

🔧 Improvements

  • Optional Dask — Start without Dask using --no-dask flag. Startup time reduced from ~60s to ~45s. (#1111, #1232) by @paul-nechifor
  • RPC rework — Renamed ModuleBlueprint_BlueprintAtom, ModuleBlueprintSetBlueprint, ModuleConnectionStream. Added ModuleRef, improved type hints throughout. (#1143) by @jeff-hykin
  • Image class simplification — Rewritten as pure NumPy dataclass. Removed CUDA backend, unused methods (solve_pnp, csrt_tracker), and image_impls/ directory. (#1161) by @leshy
  • Odometry message cleanup — Simplified Odometry message type. (#1256) by @leshy
  • Remove all ROS message dependencies — Purged ROS message types from core DimOS. Refactored rosnav to use ROSTransport. Removed dead ROS bridge code. (#1230) by @alexlin2
  • Removed bad function serialization — Eliminated unnecessary serialization of Python functions. (#1121) by @paul-nechifor
  • Benchmark IEC units — Switched bandwidth benchmarks from SI to IEC units for accuracy. (#1147) by @leshy
  • Pubsub typing improvements — Thread-safety locks on subscribe_new_topics and subscribe_all. Proper type params across pubsub stack. (#1153) by @leshy
  • Autogenerated blueprint list — Blueprints are now auto-discovered and listed. (#1100) by @paul-nechifor
  • Generic Buttons message — Renamed QuestButtons to Buttons with generic field names for cross-platform teleop. (#1261) by @ruthwikdasyam
  • Dev container uses ros-dev image./bin/dev now runs the ROS-enabled dev image. (#1170) by @leshy
  • LSP support — Added python-lsp-server and python-lsp-ruff to dev dependencies. (#1169) by @leshy
  • Lazy-load pyrealsense2 — RealSense camera module uses lazy imports to avoid errors in simulation environments without the SDK. (#1309) by @spomichter
  • Removed unused mmcv and mmengine — Dead Detic dependencies removed, eliminating slow source builds from install. (#1319) by @spomichter
  • Simplified installation — Removed direnv requirement, streamlined install instructions across all platforms. (#1315) by @spomichter
  • DDS extra excluded from --all-extrascyclonedds requires a source build, so dds is now excluded from uv sync --all-extras by default. (#1318) by @spomichter
  • Nix pre-commit skip — Skip pre-commit install if hooks already exist. (#1162) by @leshy
  • Removed base-requirements — Consolidated dependency management. (#1098) by @paul-nechifor
  • Removed old graspnet — Cleaned up deprecated graspnet version. (#1248) by @paul-nechifor
  • Code cleanup — Removed tofix markers (#1216), fixed ruff issues (#1112), removed old README_installation.md (#1101) by @paul-nechifor

🐛 Bug Fixes


📚 Documentation

  • Major docs overhaul — New README with feature grid, hardware table, quickstart. Navigation, transports, data streams, and agent docs. (#1295) by @leshy
  • Day 1 docs — Comprehensive getting started guide, development docs, contributing guide, architecture overview. Executable blueprint docs via md-babel-py. (#1064) by @jeff-hykin
  • Arm integration guide — How-to for integrating new robotic arms with DimOS. (#1238) by @mustafab0
  • MCP documentation update — Updated MCP install and usage instructions. (#1251) by @Kaweees
  • Docker docs — First pass on Docker deployment documentation. (#1151) by @leshy
  • Transports documentation — Encode/decode mixins, SHM examples, ROS/DDS transport docs. (#1107) by @leshy
  • Rerun API examples — Updated examples for the new RerunBridge API. (#1262) by @jeff-hykin
  • PR template added (#1172) by @christiefhyang
  • Simplified install instructions — Removed direnv, streamlined across all platforms. (#1315) by @spomichter
  • Python example restored — Added back the Python usage example. (#1317) by @jeff-hykin
  • Nix install updated — Replaced uv with pip for Nix compatibility. (#1326) by @ruthwikdasyam
  • README improvements (#1311) by @paul-nechifor
  • Simplified writing docs — Consolidated writing_docs to a single markdown file. (#1254) by @jeff-hykin

🏗️ CI & Build

  • ci-complete gate — Dynamic branch protection via single aggregated status check. MD-only PRs no longer blocked. (#1279) by @spomichter
  • Path-based test filtering — Test jobs fully skip (no container spin-up) when no relevant code changed. (#1284, #1286) by @spomichter
  • Navigation docker build workflow — CI builds for the ROS navigation stack. (#1259) by @spomichter
  • CUDA test marker@pytest.mark.cuda for GPU-dependent tests. (#1220) by @jeff-hykin
  • e2e test marker — Marked end-to-end tests for selective CI runs. (#1110) by @paul-nechifor
  • pytest stdin fix — Added -s to default addopts for LCM autoconf compatibility. (#1320) by @spomichter

⚠️ Breaking Changes

  • RPC renames: ModuleBlueprint_BlueprintAtom, ModuleBlueprintSetBlueprint, ModuleConnectionStream (#1143)
  • Image class rewrite: CudaImage and NumpyImage removed. Image is now a pure NumPy dataclass. Methods like solve_pnp, csrt_tracker, from_depth, to_depth_meters removed. (#1161)
  • ROS messages removed from core: All to_ros/from_ros conversion methods removed. Use ROSTransport instead. (#1230)
  • QuestButtons → Buttons: Renamed with generic field names. (#1261)
  • RerunBridge replaces old rerun init: dimos.dashboard.rerun_init removed. Use RerunBridgeModule or the rerun-bridge CLI. (#1154)
  • Unitree directory restructuring: unitree_go2unitree/go2, unitree_g1unitree/g1. Blueprint names updated. (#1221)
  • Default viewer is now rerun-web: Use --viewer-backend rerun to restore native viewer. (#1324)

Quickstart

# Install
uv pip install dimos[base,unitree]

# Try it (no hardware needed)
# NOTE: First run downloads ~2.4 GB from LFS
dimos --replay run unitree-go2

# Simulate
uv pip install dimos[base,unitree,sim]
dimos --simulation run unitree-go2

New Contributors 🎉


Full Changelog: v0.0.9...v0.0.10