dimensionalOS / dimensionalOS/dimos

Non ros mid360 global mapper

Open
#1,263 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
4.5k
Forks
808
Avg merge
3d 5h
Merged PRs (30d)
233

Description

dimos native mapper

we have this go2 native mapper/nav, you can run it with:
dimos --replay run unitree-go2

visit http://localhost:7779/
click somewhere, route planner makes a route, robot doesn't follow as it's a recording, IRL it would.

This uses PointCloud2 messages from Go2, go2 gives us some preprocessed rough voxel grid. The way we do deletions is we just insert this local map into a global map, replacing existing global map voxels that were in it's place (this way we do deletions). Code is very simple, we use o3d voxel grid on cuda for this. (dimos/mapping/voxels.py)

we then build a costmap and nav on top dimos/mapping/costmapper.py

livox native integraiton

this is all great, but for serious sensors (mid360) we've been running ros till now, we don't want to do this. We want to treat global map that we built from goofy go2 stuff and fancy mid360 map the same. and we want to run our nav etc on top of that.

There is a "dimos native module integration + fastlio + mid360" PR written a few days ago, the thing works great
https://github.com/dimensionalOS/dimos/pull/1235

you should be able to run this easily locally (needs mid360 hw and nix on the system)

next steps

above livox integration optionally gives you a nice global voxel grid map, for now in cpp voxels are just stored in a dumb hash map that never deletes points, we need to experiment with deletions and updating

IDK how we want to do this. do we have 2 topics? local + global? how do we do voxel deletions? explore!

Our current nav assumes dynamic global map, see if this is possible with livox or not, I understand there are many points, but also if minecraft guy can write one, maybe we can also write one

either way once this is done we can easily plug it into the rest of our native stack, start doing multistory, relocalization
easy upgrade is also loop closure, there are livox forks for this but don't care about this as much

possible easy approach

same as we do for go2 - create a convex hull of lidar points, remove that hull from the global map, insert the new one

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with dimos/mapping/voxels.py and dimos/mapping/costmapper.py, then inspect PR #1235 for the Livox, FastLIO, and Mid360 integration. Run dimos --replay run unitree-go2 to understand the existing global-map and navigation flow; validate a design for updating and deleting Livox voxels that remains compatible with the current navigation stack.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
computer-vision, robotics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.