feat: Go2 3D navigation (MLS planner, ray tracing) + mid360 mount shim#2670
Draft
jeff-hykin wants to merge 98 commits into
Draft
feat: Go2 3D navigation (MLS planner, ray tracing) + mid360 mount shim#2670jeff-hykin wants to merge 98 commits into
jeff-hykin wants to merge 98 commits into
Conversation
Use Go2Config.static_transforms + local _odom_to_tf helper, and the public camera_info_static() (was the removed _camera_info_static).
…ic instance-level
…ugh Transform ops
# Conflicts: # dimos/robot/all_blueprints.py
The sqlite-vec 0.1.6 aarch64 wheel ships a 32-bit vec0.so (upstream packaging bug) which fails to load on the Jetson with "wrong ELF class: ELFCLASS32". Pin >=0.1.7 to skip it (resolves to 0.1.9). Also fix the unitree-go2-nav-3d PointLio config: pass gravity_align=False instead of the removed config="no_gravity_align.yaml", drop the redundant body_frame_id, and set auto_build=True so the native binary recompiles.
… frames Add a row-major 4x4 transform to PointLioConfig so the C++ rewrites the cloud, odometry, and odom->body TF into a corrected mount frame, replacing the StaticTfCorrection hack. Drop frame_id/child_frame_id/sensor_frame_id config fields in favor of frame_mapping, injected into the C++ args at start.
…ecording Move the mid360 mount URDFs up to the go2 package and export their paths from config. nav_3d now builds the mount correction from those URDFs (replacing the deleted PointLioHack), records the corrected pointlio streams, and captures the raw Livox pcap.
…/hack/kronk-nav-4 # Conflicts: # dimos/robot/unitree/go2/blueprints/navigation/unitree_go2_nav_3d.py
PointLio reads the same physical Mid-360 as the rest of the rig, so collapse its DIMOS_POINTLIO_LIDAR_IP onto the shared DIMOS_MID360_LIDAR_IP — one env var for both modules instead of duplicating the same IP.
The rotated-mount un-rotation assumed the sensor was always physically rotated. Gate it behind USE_ROTATED_MID360_MOUNT (default off) so the blueprint runs the normal mount with an identity transform unless the rotated rig is in use.
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #2670 +/- ##
==========================================
+ Coverage 70.82% 71.33% +0.50%
==========================================
Files 903 896 -7
Lines 81524 80958 -566
Branches 7354 7401 +47
==========================================
+ Hits 57740 57750 +10
+ Misses 21857 21257 -600
- Partials 1927 1951 +24
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 31 files with indirect coverage changes 🚀 New features to boost your workflow:
|
The camera block referenced onimage/Thread/publish_camera_info, none of which exist after camera_info publishing moved to the _on_static_publish hook. Subscribe the on_image closure and drop the stale thread wiring so mypy passes.
…eprint Replace the USE_ROTATED_MID360_MOUNT constant with two blueprints from a shared _nav_3d() factory: unitree-go2-nav-3d (normal mount) and unitree-go2-nav-3d-rotated (applies the mount_correction transform).
… rerun Standalone tool: loads the TF tree if present, then logs every PointCloud2 and Odometry stream (clouds placed via TF frame_id when TF exists). --seconds bounds the window from the recording start.
Point-LIO clouds are already registered in their world frame, and the recorded TF tree usually lacks the sensor frames, so referencing tf#/<frame_id> left clouds unplaced. Log clouds raw. Also move each odom trail off the posed entity (was double-transformed by the pose) onto world/trails/<name>.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuild the Point-LIO to avoid stale binary
Run the recording blueprint
Drive it through the space,
Ctrl+Cwhen you're done. You get two files:recording.db(the cloud + odometry the stack used, replayable) andrecordings/mid360_*.pcap(the raw Livox packets).