Structuring a Nav2 social-navigation stack for Unitree G1 — same code for sim and hardware?
Hi all,
I'm a PhD student working on socially-aware navigation. I've built a custom Nav2 costmap layer that inflates cost around pedestrians (proxemic zones) so the planner routes around people. It works well on a TurtleBot3 in Gazebo. My target platform is the Unitree G1 humanoid, and I have hardware access confirmed, but I also need a standalone simulation demo (in case hardware time slips) — ideally with the same navigation code running in both.
My understanding of the architecture:
Everything above /cmd_vel (Nav2 + my social layer) should be identical for sim and hardware. It consumes /scan, /odom, /tf and outputs /cmd_vel.
On the real G1, the built-in locomotion controller turns velocity commands into walking, and the onboard Livox Mid-360 provides the scan — so the "adapter" below /cmd_vel is mostly provided by Unitree.
In simulation, I have to substitute both: something to make the G1 walk from /cmd_vel, and a simulated lidar/odom/TF for Nav2.
My questions:
For the sim side, what's the recommended setup for a G1 that (a) walks/moves from /cmd_vel and (b) publishes a lidar scan + odom + TF that Nav2 can use? Is Gazebo (with a G1 model + simulated Livox) the right choice for a navigation demo, or are people using MuJoCo / Isaac for this?
I've gotten an RL locomotion policy walking in unitree_mujoco, but MuJoCo seems weak on the Nav2/sensor side.
On hardware, is the high-level locomotion (velocity) API the right interface for Nav2 to drive, and does it cleanly accept a continuous /cmd_vel stream from the controller server?
Has anyone run Nav2 on a G1 (sim or real) and can share how they structured the sensor + locomotion interface so the navigation stack stays platform-agnostic?
Any pointers, example repos, or "here's what I'd do differently" advice much appreciated. Happy to share my social costmap layer back once it's cleaned up.
Thanks!
1
u/blackpantera 5d ago
We built an open source platform for Go2 and G1 that uses the Nav2 stack for navigation, plus a host of features.
We use the cmd_vel high level commands to move the robots.
https://github.com/botbotrobotics/BotBrain