-
Notifications
You must be signed in to change notification settings - Fork 10
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
#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