v0.0.13.post1
Patch release for v0.0.13 with packaging fixes and a few features that landed after the initial cut.
What's new in this patch
Bug Fixes & Packaging
- Pin support to Python <3.13 (#2640)
- Bump minimum version of
typing_extensions(#2639) - Fix release wheel builds (#2629)
- Skip musllinux builds (#2661)
- Fix release 13 issues (#2671)
Features
- Introduce runtime scene packages for MuJoCo and Rerun (#2594)
- Roboplan integration (#2478)
- Point-LIO: mirror FAST-LIO cleanups — no-YAML config, memory2 Recorder, frame scheme (#2559)
Full v0.0.13 Changelog
Highlights
This is the Navigation, Relocalization, and Loop closure release.
160 commits, 17 contributors, 969 files changed.
Any lidar-enabled robot can now build a clean, loop-closed global map from its own recordings and relocalize against it on later runs. A new Rust voxel ray-tracing mapper with per-voxel normals stops moving objects and grazing rays from corrupting the map, so floors, stairs, and slopes stay dense and stable. PGO loop closure reconstructs a full global map in seconds from a sampled slice of memory2 recordings, and a dimos map tool builds, inspects, and exports the relocalization pointclouds. At runtime the robot loads a saved map, publishes the map -> world transform, and plans on the global costmap, with low-confidence matches filtered out and AprilTag/ArUco markers flowing through the same 3D pipeline as anchors.
⚠️ Breaking Changes
- Foxglove viewer support removed (~15k lines); Rerun is the sole viewer backend. (#2122)
- RPyC removed as a transport and dependency. (#2094)
- Docker modules have been removed. (#2224)
- Robot catalogue (
RobotConfig) removed. Hardware metadata now comes from a_hardware.pyfactory. (#2550) - Manipulation viz config:
visualization_backend/visualization_optionsreplaced by a singlevisualizationblock (none/meshcat/viser). (#2475)
✨ New Features
Navigation
- Per-platform nav blueprints:
unitree-g1-nav-simpleraytracing nav for the G1 (#2327), the i2rt FlowBase base from WASD teleop to full MID-360 + FastLio2 + click-to-drive (#2090), andalfred-navfor the new Alfred wheeled base (#2100). by @jeff-hykin, @mustafab0 - 3D multi-level-surface (MLS) path planner that places nodes on map surfaces and plans over a cached graph, plus a
path-planner-evalblueprint to score any planner against synthetic and mesh-derived scenarios. (#2310, #2302) by @aclauer unitree-go2-nav-3dblueprint wires the Rust ray-tracer to the MLS planner for click-to-navigate 3D nav: incremental planner-artifact builds off the ingest path, per-frame replanning, string-pulled paths with tunable cost/safety, and aset_motion_mode()to disable stock obstacle avoidance. (#2570) by @aclauervis_throttleworks out of the box and nav logging is much quieter (FastLIO, PGO, A*). (#2108, #2095) by @jeff-hykin
Mapping, SLAM & relocalization
- Rust voxel ray-tracing mapper that clears stale voxels along rays so global maps handle moving objects (
dimos run mid360-fastlio-ray-trace); per-voxel normals and a recency gate keep grazing rays from eroding floors, stairs, and slopes. (#2163, #2462, #2275) by @aclauer - Publishes a
local_mapslice of the global map around the robot for downstream nav. (#2257) by @aclauer - Pose-graph loop closure and global map reconstruction, plus a
dimos maptool to visualize mem2 maps, run offline loop closure, and export relocalization pointclouds. (#2242, #2241, #2306) by @leshy - Go2 relocalization against a prebuilt map: load a saved map, publish
map->world, and plan on the global costmap. (#2160) by @arkluc - Point-LIO native module as an alternative to FAST-LIO, plus a Virtual Mid-360 that records and replays Livox pcaps offline; FAST-LIO supports the same pcap record/replay, and Point-LIO inherits the same no-YAML config, memory2 Recorder, and frame scheme. (#2486, #2498, #2559) by @jeff-hykin
- PyO3 Python bindings and a mem2 transform pipeline for the Rust ray-tracer and 3D planner. (#2351, #2368) by @aclauer
Robot support
- A-750 arm: initial support with a
keyboard-teleop-a750blueprint and gripper bindings. (#1911) by @adob - G1 GR00T whole-body walking policy as a first-class coordinator task (
unitree-g1-groot-wbc);--simulationselects 500 Hz hardware vs 50 Hz Mujoco, and Twists on/g1/cmd_veldrive it. (#2300, #2239) by @Nabla7 - Go2 rage mode is now a bidirectional
set_rage_mode(enable)toggle (restores the normal velocity envelope on disable), the lowstate stream is part ofGo2ConnectionProtocoland implemented on the sims, and aget_battery_soc()skill reads battery level. (#2569) by @ruthwikdasyam - Support for current Unitree firmware (G1 >= 1.5.1, Go2 >= 1.1.15) via an optional
aes_128_key;connect()now fails fast with an actionable error instead of hanging. (#2476) by @KrishnaH96
Manipulation
- Viser visualizer with a MoveIt-style plan/preview/execute UI; the loose viz options collapse into one validated
visualizationconfig. (#2475) by @TomCC7 - Pink IK backend (
kinematics_name=pink) for faster IK, and a visualization protocol routed throughWorldMonitorwith trajectory-timed preview playback. (#2481, #2460) by @TomCC7 - Roboplan integration: a single backend implements both world and planner specs (
world_backend=roboplan), usable with roboplan's planner or the generic planners (e.g.planner_name=rrt_connect). (#2478) by @TomCC7 - Skills return a structured
SkillResult(success, message, error_code, duration) with domain error enums, exposed to the LLM as JSON for structured retries; all 18 skills migrated. (#2091) by @mustafab0 - xArm teleop syncs to the robot's real joint state at startup and moves to a default pose on activate/deactivate. (#2425) by @TomCC7
Simulation
- Runtime scene packages: a
scene.meta.jsoncontract resolves MuJoCo XML/.mjb, Rerun/browser visuals, entities, and frame alignment from one cooked package so consumers stop hardcoding folder layouts. Selectable with--scene(none/office/supermarket);unitree-g1-groot-wbcis the first end-to-end consumer (spawn, lidar, map, plan, Rerun robot/scene viz, WASD velocity). (#2594) by @Nabla7
Teleoperation
- Hosted teleoperation over WebRTC via a Cloudflare Realtime SFU: a
HostedTeleopModule(cmd/state datachannels + camera video) that drops into existing blueprints, with recording and latency/jitter/loss stats (dimos run teleop-hosted-go2 teleop-recorder). (#2411) by @ruthwikdasyam - Stream a robot or sim camera (MuJoCo, RealSense, Go2) into the Quest VR headset during teleop. (#2198) by @ruthwikdasyam
Learning & datasets
- Teleop-to-dataset pipeline: an
EpisodeMonitorModuleturns Quest/keyboard buttons into start/save/discard episodes and aCollectionRecordercaptures obs/action/status to a session DB (learning-collect-quest-xarm7/-piper);dimos dataprep build/inspectthen time-syncs the streams and exports LeRobot v2 or HDF5 datasets with per-feature stats. (#2446) by @ruthwikdasyam
Perception & fiducials
- AprilTag 3D detector plus a camera-calibration CLI that generates
camera_info.yaml, with adesk-marker-tfblueprint; calibration also works with the Go2 (live topic source, fisheye model). (#2107, #2123) by @bogwi, @leshy dimos apriltaggenerates print-ready ArUco/AprilTag PDFs with packing and a size ruler. (#2037) by @leshy- ArUco detections emit standard
vision_msgs/Detection3DArray, so markers flow through filtering, tracking, spatial memory, TF frames, and Rerun. (#2278) by @bogwi
memory2 & recording
- MCAP/DDS as a memory2 store, so Go2 DDS recordings query like any mem2 stream and render to
.rrd. (#2314) by @leshy - Time windowing on
Stream(from_time/to_time,from_timestamp/to_timestamp). (#2315) by @leshy - Recorder overwrite modes (
overwrite/backup/error, defaultbackup) so re-recording no longer silently clobbers prior runs. (#2248) by @arkluc go2_mid360andmid360_realsense_30recording blueprints. (#2588) by @jeff-hykin
Core, modules & tooling
- Rust module API reworked with proc macros (declare inputs/outputs/setup/teardown as attributes) and a faster runtime; crates renamed to
dimos-module/dimos-module-macros. (#2080) by @aclauer native_configmacro and aModuleConfigvalidation trait cut native-module config boilerplate; native modules honor real log levels and Rust modules usetracingdriven by the dimos log level. (#2503, #2325, #2235) by @aclauer- Exclusive capabilities for agent skills:
@skill(uses=[...])plus a capability registry so the MCP server refuses or briefly waits on conflicting skills (e.g. two movement commands at once). (#2279) by @paul-nechifor dedicated_workerlets a heavy module claim an exclusive worker instead of sharing one. (#2185) by @paul-nechiforrobot_idinGlobalConfig(--robot-id/ROBOT_ID) so multiple robots can share one API key for hosted teleop. (#2490) by @spomichter- TF lookups can wait for not-yet-available transforms via
forward_tolerance. (#2229) by @arkluc - New lightweight
dimsimsimulator selectable with--simulation=dimsim. (#1735) by @paul-nechifor
🐛 Bug Fixes
- FAST-LIO Mid-360 scan voxel default lowered to 0.1 m to stop Go2 odometry divergence (notably on stairs). (#2466) by @jeff-hykin
- Global mapper VRAM leak fixed by releasing Open3D's CUDA cache per frame. (#2031) by @leshy
- RealSense color-only mode (
enable_depth=False) no longer crashes; falls back to an identity color TF. (#2561) by @ruthwikdasyam - Native module builds fixed on Linux, and native modules now compile during the build step before replay starts. (#2459, #2207) by @jeff-hykin
- LCM segfault fixed via a patched
lcm-dimos-fork; dropped LCM packets now surface as warnings with larger default buffers for high lidar throughput. (#2343, #2200) by @paul-nechifor, @jeff-hykin - Packaging: runtime data files (yaml/json/urdf/...) reliably shipped in the wheel, and a wrongly-dropped dependency restored. (#2104, #2551) by @paul-nechifor
--simulationflag restored and backwards compatible (bare, or=mujoco/=dimsim). (#2103) by @paul-nechifor- RealSense switched to
realsense-extendedwith Jetson wheels, fixing RealSense on the G1's Jetson. (#2322) by @jeff-hykin - Drone agentic blueprint startup fixed (
DroneTrackingModule/OsmSkillaccept wiring kwargs). (#2345) by @knikou01 - CUDA-only security demo removed from the Go2 agentic flow that was breaking it everywhere. (#2251) by @spomichter
- Manipulation tears down cleanly when planning init fails; keyboard teleop accepts
LfsPath/Pathmodel paths. (#2520, #2186) by @TomCC7, @mustafab0 LCMService.startmade idempotent to fix a double-start crash in skill tests. (#2589) by @paul-nechifor
⚡ Performance
- 3D MLS planner builds its graph artifact in ~200 ms on a 2M-voxel map and plans in ~0.28 ms. (#2310) by @aclauer
- Rust module runtime sped up via separate publish/receive tokio tasks and constant-time routing. (#2080) by @aclauer
- Removed ~1 GB of unused Python dependencies. (#2539) by @paul-nechifor
🔒 Security
- Upgrade vulnerable dependencies flagged by Dependabot. (#2040) by @paul-nechifor
- Enable uv cooldown to avoid immediately-published package versions (supply-chain protection). (#2115) by @Dreamsorcerer
👥 New Contributors
- @bogwi made their first contribution in #1884
- @Mgczacki made their first contribution in #2050
- @swstica made their first contribution in #2071
- @arkluc made their first contribution in #2145
- @adob made their first contribution in #1911
- @KrishnaH96 made their first contribution in #2224
- @knikou01 made their first contribution in #2345
- @TomCC7 made their first contribution in #2425
Full Changelog: v0.0.12...v0.0.13
