Skip to content

Pre-Release v0.0.8: Unitree Go2 Navigation & Exploration Beta, Transport Updates, Documentation updates#1056

Merged
spomichter merged 46 commits intomainfrom
dev
Jan 23, 2026
Merged

Pre-Release v0.0.8: Unitree Go2 Navigation & Exploration Beta, Transport Updates, Documentation updates#1056
spomichter merged 46 commits intomainfrom
dev

Conversation

@spomichter
Copy link
Contributor

No description provided.

paul-nechifor and others added 29 commits January 8, 2026 16:02
* fix mujoco menagerie

* CI code cleanup

---------

Co-authored-by: paul-nechifor <1262969+paul-nechifor@users.noreply.github.com>
MuJoCo's renderer outputs RGB, but Image.from_numpy() defaults to BGR.
This caused red/blue channel swap in Rerun camera visualization when
running in simulation mode.
* make camera demo not need langchain

* add camera demo

* CI code cleanup

* -

* revert

---------

Co-authored-by: jeff-hykin <17692058+jeff-hykin@users.noreply.github.com>
* fix tests

* stop using deprecated "ifconfig" (fails on fresh ubuntu install)

* switch to `ip route` instead of deprecated `route` command

* fix syntax
* fix(rerun): poll-based TF viz + remove async queue bloat (#956)

TF visualization now uses snapshot polling (self.tf.buffers) instead of
LCM subscriptions.

Changes:
- TFRerunModule: poll TF buffers at configurable Hz, log changed transforms
- CostMapper: remove _rerun_worker thread/queue, log synchronously
- VoxelGridMapper: remove _rerun_worker thread/queue, log synchronously
- GO2Connection: remove manual transform logging (robot/camera poses),
  keep only static axes + pinhole; TF module handles dynamic transforms
- TFMessage.to_rerun: log to 'world/tf/{child}' instead of 'world/{child}'

The queue/thread patterns were removed because:
- costmapper is O(n) and voxel_size tuning addresses perf, not async magic
- threads added complexity without benefit for visualization logging


Former-commit-id: 9c14a09 [formerly 6128ee1]
Former-commit-id: f7b2453

* docs(viewer): prefer --viewer-backend flag over VIEWER_BACKEND


Former-commit-id: 5e21367 [formerly cb53ae5]
Former-commit-id: 4bdb7a7

* docs(rerun): add dev usage + TF/entity nuances


Former-commit-id: 6a5144c [formerly 813db61]
Former-commit-id: 19b7b2d

* docs(rerun): clarify rr.log usage section


Former-commit-id: 6b7e848 [formerly aec0555]
Former-commit-id: 286e212

* pre commit hooks


Former-commit-id: a6892c0 [formerly 7d5e7b6]
Former-commit-id: 2b8742a

* fix(replay): correct RGB/BGR mislabel in legacy Unitree video recordings

- Add ImageFormat autocast to ReplayConnection.video_stream() that
  relabels BGR-tagged frames as RGB (fixes red/blue swap in Rerun)


Former-commit-id: db94ef6 [formerly d678e64]
Former-commit-id: fdf08c0

* refactor(tf_rerun): remove unnecessary try-except in poll loop


Former-commit-id: 487cf48 [formerly fe2da41]
Former-commit-id: 199457c

* docs: fix doclinks hook error for Transform.to_rerun() reference

Former-commit-id: 5950968 [formerly 41c04a5]
Former-commit-id: dc08f59

* remove retard


Former-commit-id: 51b8e37 [formerly 4d3438d]
Former-commit-id: 663e48a

* refactor(rerun): split scene wiring from GO2, compose into tf_rerun()

- Add RerunSceneWiringModule for static Rerun setup (view coords, entity
  attachments, URDF, axes, camera pinholes)
- Refactor tf_rerun() to compose TF polling + scene wiring via autoconnect
- Remove _init_rerun_world() from GO2Connection (now only TF + sensor data)
- Update GO2 blueprint to pass URDF + camera config via tf_rerun(...)
- Update VIEWER_BACKENDS.md to document the new architecture

* fix(rerun): add stop() method to RerunSceneWiringModule

---------

Co-authored-by: stash <pomichterstash@gmail.com>
* add main as a group in extras

* fix rerun being missing (temp fix for launch)

* -

* remove temp

* revert weird CI thing

* -

---------

Co-authored-by: jeff-hykin <17692058+jeff-hykin@users.noreply.github.com>
* Semantic navigation fix spatial perception and spatial_vector_db

* commented in logs that were accidentally commented out

* grep suggestion fix

* Suggested changes -removed tf warm start

* Removed logging
…nstall (#985)

* -

* add fully bundled html

* we don't need to have assets because the js is merged into the html (one file)

* -
* v0.0.7

* update uv.lock
* added backwards compatibility for langchain API change and remove detic dependencies

* Fix mypy remove dict

---------

Co-authored-by: stash <pomichterstash@gmail.com>
* refactor(policy): update inference session initialization

* refactor(policy): simplify inference session provider initialization

* Log the policy directory and provider
…eline and replaced with Object Scene Registration (#936)

* added rate limiting and backpressure to pointcloud publishing

CI code cleanup

updated ZED module to the same standard as realsense

CI code cleanup

fixed stash's comments

CI code cleanup

mypy fixes + comments

removed property of camera_info

should pass CI now

added detection3d pointcloud types from depth image

added yoloe support and 3D object segmentation

CI code cleanup

use yoloe-s instead for nuc

CI code cleanup

removed deprecated perception code

some pointcloud color changes

major refactor and added object class for object scene registration

CI code cleanup

refactored, added objectDB for persistent object memory

CI code cleanup

made objectDB a normal class instead of a module

CI code cleanup

revert to dev

reverted more files

CI code cleanup

completely refactored object scene registration to work natively in dimos instead of using ROS as transport. Made everything super clean and working

CI code cleanup

bug fixed + use yoloe-l by default

added yolo object exlusion list

CI code cleanup

added zed camera to the object registration demo

CI code cleanup

added image and pointclou2 fixes and as_numpy function

working promptable object scene registration

CI code cleanup

bug fixes

bug fix + remove ros imports

should not fail CI now

CI code cleanup

more CI fixes, somehow local CI did not catch

changed prompt fixed bug

CI code cleanup

reverted some changes

Cleanup very dead code and fixed mypy errors

CI code cleanup

fixed more mypy

CI code cleanup

* one last mypy fix

* added default to imagedetection2d to not set off mypy

* fixed bug and default to open vocab for detection

* mypy fixes

* fixed one last mypy error

* fixed all of Stash's comments

* should pass mypy now

* added uv lock

* sync uv.lock with dev

* fixed the last mypy error

* fixed mypy errors from source

* reverted mypy import error fixes

* fixed Ivan's comment

* fixed last of ivan's comment

* remove all to_ros_msgs stuff in this commit

* passed Ivan's detector tests

* added README for depth camera integration

* fixed last of Stash's comments
#988)

* feat(cli): type-free topic echo via /topic#pkg.Msg inference, this mirrors ros topic echo functionality.

- Make type_name optional in 'dimos topic echo'
- Infer message type from LCM channel suffix (e.g. /odom#nav_msgs.Odometry)
- Dynamically import dimos.msgs.<pkg> and call cls.lcm_decode(data)
- Keep existing explicit-type mode working
- Update transports.md docs

* fix(cli): use LCMPubSubBase instead of raw lcm.LCM for topic echo, my bad
* verify blueprints

* Fix geometry msgs check failure in CI

---------

Co-authored-by: stash <pomichterstash@gmail.com>
…sed RAG (#973)

* temporal memory + vlm agent + blueprints

* fixing module issue and style

* fix skill registration

* removing state functions unpickable

* inheritancefixes and memory management

* docstring for query

* microcommit: fixing memory buffer

* sharpness filter and simplified frame filtering

* CI code cleanup

* initial graph database implementation

* db implementation, working and stylized, best reply is unitree_go2_office_walk2

* type checking issues

* final edits, move into experimental, revert non-memory code edits, typechecking

* persistent db flag enabled in config

* Fix test to not run in CI due to LFS pull

* Fix CLIP filter to use dimensional clip

* Add path to temporal memory

* revert video operators

* Revert moondream

* added temporal memory docs

* Refactor move to /experimental/temporal_memory

---------

Co-authored-by: Paul Nechifor <paul@nechifor.net>
Co-authored-by: Stash Pomichter <pomichterstash@gmail.com>
Co-authored-by: shreyasrajesh0308 <shreyasrajesh0308@users.noreply.github.com>
Co-authored-by: spomichter <12108168+spomichter@users.noreply.github.com>
… controller (#970)

* archive old driver to manipulators_old for redesign

* spec.py defining minimal protocol for an arm driver

* xarm driver driver added - driver owns control thread and robot state threads also invokes rpc calls to arm specific SDK backends

* xarm SDK specific wrapper to interface with dimos RPC calls from the driver

* removed type checking for  old armdriver spec from the cartesian controller

* replicated piper driver to meet the new architecture

* added mock backend

* updated all blueprints to add new arm module

* Added readme explaining new driver architecture overview

* config now parsed in backend init instead of connect method

* addded dual arm control blueprint using trajectory controller

* adding a control orchestrator for single control loop for multiple arms and joint control -  added dataclasses for orchestrator and protocol for ControlTask

* hardware interface protocol that wraps specific arm SDK to work with orchestrator. Also solves namespace for multiple arm and hardware

* main orchestrator module and control loop that claims resources computes next commands,  and arbitrates priority of different tasks and controllers

* added a trajectory task implementation that performs trajecotry control

* added blueprints to launch orchestratory module with differnt arms for testing

* updated blueprints to add piper + xarm blueprint

* orchestrator client that can send tasks to the control orchestrator module

* added a readme

* added pytest and e2e test

* Update dimos/control/hardware_interface.py

explicit false added to the Torque Mode command sent, to avoid silent failing scenario

* CI code cleanup

* Fixed issues flagged by greptile

Mode conflict detection in routing: Added check in _route_to_hardware
Preemption tracking: Changed structure to {preempted_task: {joint: winning_task}}
Mode conflict preemption: Tasks dropped due to mode conflict at same priority
Trajectory completion edge case: Returns final position instead of None on completion
Dead code removal: and Piper backend cleanup

* Renamed deprecated old manipuialtion test file and Mypy type fixes

* fix mypy test

* mypy test fix added explicit  type

* Remove deprecated manipulators_old folder

* fixed redef error in dual trajectory setter

* Fixed bugs identified by greptile overview:
1. tick_loop.py - Race condition in _route_to_hardware
2. orchestrator.py  -  Added hardware_added tracking list and rollback in outer except block
3. hardware_interface.py - Added disconnect() to both HardwareInterface protocol and BackendHardwareInterface
4. Added disconnect() to both HardwareInterface protocol and BackendHardwareInterface
5. orchestrator.py - Start order fix Moved super().start() to end, after tick loop starts successfully
6. trajectory_task.py - Added Empty joint_names validation

* addressed greptile suggestion:
hardware_interface.py - Torque mode logging fix
orchestrator.py - Fail hardware removal if joints in use
tick_loop.py - Rate control drift fix

* undo change to pyproject.toml

* Replaced _running bool with threading.Event (_stop_event) for thread safety
Removed duplicate _auto_start() call from __init__ - connection now only happens in start()
orchestrator_client.py	IPython conversion

* added type ignore for ipythin

* removed check for has attribute in hardware interface

Moved super.start() at the beginning

replaced running bool with stop_event in tick_loop to improve thread safety

removed default ip from init

removed simple dataclasses test

* orchestrator.py: Use match statement for backend factory, restructure backend cleanup
task.py: Use match statement in get_values()
tick_loop.py: Add JointWinner NamedTuple for cleaner arbitration logic
xarm/backend.py: Extract unit conversions into static helper methods

* tick_loop.py: Notify preemption when lower-priority task loses to existing winner
hardware_interface.py: Call set_control_mode() before mode-specific writes, Convert if/elif to match statement for control mode dispatch

* tick_loop.py: Notify preemption when lower-priority task loses to existing winner
hardware_interface.py: Call set_control_mode() before mode-specific writes, convert if/elif to match statement
trajectory_task.py: Defer start time to first compute() for consistent timing
orchestrator.py: Extract _setup_hardware() helper for cleaner config setup
piper and xarm/backend.py: Fail fast on read_joint_positions(), map SERVO_POSITION to mode 1
hardware_interface.py: Retry initialization with proper error propagation,
spec.py: Add SERVO_POSITION control mode for confusion between position planning and position servo
task.py: added SERVO_POSITION to JointCommandOutput helper

* cleaned up legacy blueprints for manipulator drivers

* enforce ManipulatorBackend Protocol on the backend.py

* feat: add runtime protocol checks for manipulator backends

* added runtime checking for controlTask protocol

* Add TaskStatus dataclass, refactor get_trajectory_status and Explicitly inherit from ControlTask protocol

---------

Co-authored-by: stash <pomichterstash@gmail.com>
* fix print to be correct URL based on rerun web or not

* make width of rerun/command center adjustable

* swap sides
* minimal edit

* rice the readme

* grammar

* formatting

* fix examples

* change links to reduce change count

* improve wording

* wording

* remove acknowledgements

* improve the humancli example

* formatting

* Update README.md

* switch to dev branch for development

* changes for paul

* Update README.md

* fix broken link

* update broken link
* add uv to nix and fix resulting problems

* fix for linux
* capitalization

* punctuation

* more small fixes
* raw rospubsub and benchmarks

* typefixes, shm added to the benchmark

* SHM is not so important to tell us every time when it starts

* greptile comments

* Add co-authorship line to commit message filter patterns

* Remove unused contextmanager import

* lcmservice correct kernel settings reintroduced

* mixin mixin resolved

* lcmservice tests fix

* macos lcm rmem fix
@spomichter spomichter requested a review from a team January 19, 2026 00:19
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 19, 2026

Skipped: This PR changes more files than the configured file change limit: (204 files found, 100 file limit)

Nabla7 and others added 17 commits January 18, 2026 19:25
- Changed GlobalConfig.viewer_backend default from rerun-native to rerun-web
- WebsocketVisModule now opens dashboard in browser automatically on start
- Requested by Jeff

Co-authored-by: s <pomichterstash@gmail.com>
* move slow tests to integration

* run integration tests too

* remove fast

* fix dimos/control/test_control.py
* refactor: streamline transport start/stop methods

* refactor: unify transport start logic to improve code reuse
* person follow skill with EdgeTAM

* add person and do some code review comments

* try 3d nav

* extract to class

* try

* use 2d version and edgetam-dimos
* raw rospubsub and benchmarks

* typefixes, shm added to the benchmark

* SHM is not so important to tell us every time when it starts

* greptile comments

* Add co-authorship line to commit message filter patterns

* Remove unused contextmanager import

* lcmservice correct kernel settings reintroduced

* mixin mixin resolved

* lcmservice tests fix

* macos lcm rmem fix

* rospubsub added to test_spec.py

* rospubsub work, ready for type conversions

* removed sequential bench (added by mistake)

* rospubsub bench bugfix

* kicked out Plum dispatch from Vector

* generic conversion sketch

* posestamped conversion tests

* initoal ROSTransport, go2 blueprint

* removed LidarMessage

* undo ros conversions to pass the tests for now

* removed boxglove, pickling shim for lidarmsg

* deselected ros tests on default runners

* removed lidarmessage test from map (about to delete unitree_webrtc stuff)

* rospubsub composition for better typing

* typing

* fixtures fix

* sneaked in md-babel-py

* small cleanup

* converter cleanup and recursive tests

* twist tests

* typing cleanup

* transport simplification

* removed unneccessary msg_name

* oof autostart needed

* web_input reintroduced

* type fix

* small tests fixes
* clean up system configuration

* fix boolean check

* redo tests for lcm services

* remove unused imports

* -

* fix mypy complaints

* fix naming

* rename with better naming scheme

* name fix

* naming fix

* allow sysctl to show stderr/stdout for better debugging

* improve _DEFAULT_LCM_URL handling

* fix import name

* fix test
* raw rospubsub and benchmarks

* typefixes, shm added to the benchmark

* SHM is not so important to tell us every time when it starts

* greptile comments

* Add co-authorship line to commit message filter patterns

* Remove unused contextmanager import

* shm basic fix

* fixed SHM not to suck, implemented LCM encoding (faster then pickle) and benchmarks

* nicer number logging

* Fix ndarray type annotation for stricter mypy in Python 3.10

Use npt.NDArray[np.uint8] instead of bare np.ndarray to satisfy
mypy's disallow_any_generics check in CI.

* shm tests, fixes

* renamed udpraw to udpbytes
* update advanced_streams.md with reactivex example

* typos

* pikchr experiment

* hot/cold getter graphs

* diagram fold fix

* random change to trigger CI
* fix more tests

* fix imports

* remove cuda sharpness test

* PYTHONWARNINGS
* verified working foxglove bridge, docker build and run start.sh --hardware

* verified rviz flag work, route planner flag work, and can use joystick to controll robot

* verified working on robot, without src folder and build folder copied to docker

* verified working foxglove layout, docker build, added goal send feature for foxglove

* verified working with both humble and jazzy, use --jazzy or --humble when build and run start.sh

* switch to use dev branch for ros-navigation-autonomy-stack, added pathc for cv_bridge if humble. verified start.sh --simulation with --jazzy and --humble work. verified start.sh --hardware --route-planner with --humble and --jazzy work on real robot, --rviz option preserved

* fix: move foxglove relay scripts to foxglove_utility folder, remove unused layout mount

- Created foxglove_utility/ folder with twist_relay.py and goal_autonomy_relay.py
- Updated Dockerfile to copy relay scripts from foxglove_utility/ instead of ros-navigation-autonomy-stack
- Removed foxglove_layout.json mount from docker-compose.yml (not needed in container)

* add warning log if cv_bridge.h not found during Humble compatibility fix

* add message when stashing local changes in build.sh

* add warnings when fallback GIDs are used for device permissions

* fix: source ROS setup.bash correctly and auto-install dimos package at runtime

* add langchain dependencies and pre-install dimos package in navigation Dockerfile

- Add langchain-core and langchain to pip install for dimos.agents support
- Copy dimos source and install as editable package during build
- Update comment to reflect dimos source handling

* udpate build image size

* changed dependency fixed launch bug

* docs: update image size estimate from 10 GB to 24 GB

* updated README for G1 EDU

* CI code cleanup

* chore: trigger CI rebuild

* Update docker/navigation/README.md

* chore: update organization to Dimensional in Overwatch.json

* chore: move Overwatch.json to dimos/assets/foxglove_dashboards

* docs: fix Dockerfile comment to reflect actual base image

* fix: capture RViz and Unity PIDs for clean shutdown

- Track RVIZ_PID and UNITY_PID for proper cleanup
- Add graceful shutdown for RViz and Unity before other processes
- Add pkill fallback for rviz2 and Model.x86_64

* fix: add missing docker-compose.dev.yml for dev mode

Adds development-specific volume mounts for editing ROS configs
without rebuilding the image (SLAM and local planner configs).

* fix: add existence check for Unity executable before launch

Verify Unity Model.x86_64 exists before attempting to run it.
Continue with warning if not present instead of failing.

---------

Co-authored-by: Bona <bona@iserve.ai>
Co-authored-by: alexlin2 <alex.lin416@outlook.com>
Co-authored-by: baishibona <10568111+baishibona@users.noreply.github.com>
* Readme changes

* readme reorg

* Final release readme

* Formatting

* formatting

* fix

* Formatting

* formatting

* table formatting

* fixes
Copy link
Contributor

@leshy leshy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recomend rerun native due to performance issues on large maps but team can decide if you prefer iframes

I see there are no nix/docker instructions, this excludes everyone not on ubuntu, so can re-add

@spomichter spomichter merged commit 3b46344 into main Jan 23, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.