使用文档

覆盖底层导航系统与上层管理界面的完整使用指南

功能概览

v1.0 基于 ROS1 Noetic,面向宇树 G1 和 Go2 平台,提供完整的机器人自主导航解决方案。

实时建图

LIO-SAM + LIORF 双 SLAM 算法,支持室内外环境自适应,高精度点云重建与地图保存。

自主导航

A* 全局路径规划 + DWA 局部避障,厘米级定位,支持动态障碍物绕行与安全急停。

路点管理

可视化路点编辑,拖拽调整位置朝向,多点巡航,避障模式切换与回调联动。

Web 管理端

Vue 3 + Flask 架构,地图管理、导航控制、进程管理一体化,支持跳过登录直接使用。

硬件驱动

Unitree SDK2 控制 G1/Go2 运动,Livox MID360 激光雷达驱动,IMU + GPS 多传感器融合。

进程管理

内置进程管理器(端口 9000),Web 面板实时查看状态,支持手动启停与日志下载。

底层导航系统

系统架构

系统采用四层模块化架构,从底层驱动到上层界面层层解耦:

Web 界面层:Vue 3 前端 + Flask API 服务器 + 进程管理器
应用服务层:命令处理 / 导航控制 / 聊天接口(Python)
ROS 导航层:全局规划(A*)/ 局部规划(DWA)/ SLAM(LIO-SAM + LIORF)
底层驱动层:机器人驱动(Unitree SDK2)/ 激光雷达(Livox MID360)/ IMU + GPS

数据流

激光雷达 → Livox驱动 → /velodyne_points → SLAM/LIORF
IMU     → 驱动节点   → /imu/data        → 融合定位
目标点  → 全局规划器 → 全局路径 → 局部规划器 → 速度指令 → G1机器人

环境安装

系统要求

  • Ubuntu 20.04 + ROS Noetic
  • GTSAM 4.0+、Google Glog、GFlags
  • Livox SDK2
  • Unitree SDK2

安装 ROS 依赖

sudo apt install -y \
  ros-noetic-velodyne-msgs ros-noetic-teleop-twist-keyboard \
  ros-noetic-robot-localization ros-noetic-controller-interface \
  ros-noetic-joint-state-controller ros-noetic-joint-state-publisher \
  ros-noetic-robot-state-publisher ros-noetic-controller-manager \
  ros-noetic-effort-controllers ros-noetic-tf2-sensor-msgs \
  ros-noetic-joint-trajectory-controller ros-noetic-xacro ros-noetic-rviz

安装 GTSAM

sudo apt install libgtsam-dev libgtsam-unstable-dev
sudo apt install libgoogle-glog-dev libgflags-dev

安装 Python 依赖

pip3 install -r requirements.txt

编译部署

1. 编译 Livox SDK2

git clone https://github.com/Livox-SDK/Livox-SDK2.git ~/Livox-SDK2
cd ~/Livox-SDK2 && mkdir build && cd build
cmake .. && make -j$(nproc) && sudo make install

2. 编译 Unitree SDK2

mkdir -p ~/navsys/libs && cd ~/navsys/libs
git clone https://github.com/unitreerobotics/unitree_sdk2.git
cd unitree_sdk2 && mkdir build && cd build
cmake .. && make -j$(nproc) && sudo make install

3. 编译 ROS 工作空间

cd ~/navsys
catkin_make
source devel/setup.bash

SLAM 建图

系统集成 LIO-SAM-MID360 和 LIORF 两种 SLAM 算法,支持室内和室外环境。

实时建图

# 机器人端:启动驱动 + 建图
roslaunch base_driver base_driver_g1.launch
roslaunch lio_sam run_no_view.launch

# 本地端:可视化(需配置 ROS_MASTER_URI)
roslaunch lio_sam rviz.launch

保存地图

rosservice call /lio_sam/save_map 0.2 'map_name'

离线建图(数据回放)

# 录制数据
rosbag record -O mapping_data /imu/data /velodyne_points /fix

# 回放建图
roslaunch lio_sam run.launch
rosbag play --clock mapping_data.bag

通过 Web 端建图

在管理界面地图页面点击开始建图,选择室内/室外环境,遥控机器人行走后点击结束建图保存。系统通过 process_manager 自动管理建图进程。

硬件驱动

Unitree G1 机器人

通过 Unitree SDK2 C++ 库控制 G1 运动。base_driver 进程将 /cmd_vel 速度指令转换为 G1 步态控制命令。

roslaunch base_driver base_driver_g1.launch

Livox MID360 激光雷达

通过 livox_ros_driver2 驱动,发布 /velodyne_points 话题供 SLAM 和导航使用。

传感器融合

IMU + 里程计 + LiDAR 多传感器融合,通过 liorf_localization 提供稳定的实时定位。

键盘遥控(调试用)

rosrun teleop_twist_keyboard teleop_twist_keyboard.py -r /cmd_vel:=/cmd_vel_joy

配置文件

ProcessList.txt — 进程管理配置

#name,command,log2file,autostart,autorestart
roscore,roscore,1,1,1
base_driver,roslaunch base_driver base_driver_g1.launch,1,0,1
navigation,sleep 3 && roslaunch navigation navigation.launch,1,0,0
nav_server,cd /root/navsys/web/server/nav_server && python3 run.py,0,1,1

网络配置

# 多机 ROS 通信
export ROS_MASTER_URI=http://192.168.55.2:11311
export ROS_HOSTNAME=192.168.55.7

# 防火墙(如本地无法可视化)
sudo ufw allow 11311/tcp

静态 IP 绑定

设备MACIP
G1 机器人F0:D4:15:DF:7C:21192.168.55.4
导航主机192.168.55.2

上层管理界面

快速开始

1. 启动后端服务

cd web/server/nav_server && python3 run.py

2. 打开管理端

浏览器访问 http://localhost:9001,输入服务器地址后进入主页。支持跳过登录直接使用。

3. 主页仪表盘

展示机器人状态(待机/运行)、已加载地图、路点数量。提供导航和地图管理的快捷入口。

地图管理

新建地图(SLAM 建图)

点击开始建图,弹出对话框选择室内/室外环境。确认后系统通过 process_manager 启动 base_driver + liorf 建图进程。页面每秒刷新实时位姿(X/Y/Z/Yaw)。完成后点击结束建图,输入地图名称保存。

设置启动点

进入地图的启动点设置页,地图上显示绿色箭头标记初始位姿。拖拽/旋转箭头对准机器人实际位置后保存。

地图列表

查看所有已保存地图(ID/名称/环境/创建时间),支持设置路点和启动点操作。

路点编辑

在地图上可视化编辑导航目标点,所有路点以蓝色箭头显示。

  • 添加路点:点击工具栏按钮,在地图原点生成新箭头
  • 拖拽调整:拖拽箭头移动位置,旋转调整朝向
  • 编辑属性:双击箭头弹出编辑框,设置编号、名称、避障模式、回调地址
  • 避障模式:0-不避障 / 1-停障 / 2-绕障
  • 复制路点:从其他地图复制路点配置
  • 清空路点:删除当前地图所有路点

系统配置

在设置页面管理键值对配置,支持添加、修改和删除。

常用配置项

配置名说明示例值
default_map_id默认加载的地图 ID1
default_map_path地图文件存储根目录/home/unitree/maps

进程管理

系统内置进程管理器(端口 9000),负责 ROS 进程的生命周期管理。

管理的进程

进程名说明
roscoreROS 主节点,必须最先启动
base_driverG1 底层驱动 + LiDAR 驱动
navigation导航系统(global_planner + local_planner + liorf_localization)
nav_serverFlask API 服务(端口 9001)

Web 面板

访问 http://localhost:9000 查看进程状态面板,支持手动启动/停止各进程、下载日志。

常见问题

Q: 无法连接机器人?

A: ping 192.168.55.2 检查网络连通性,确认 ROS_MASTER_URI 和 ROS_HOSTNAME 环境变量设置正确。必要时执行 sudo ufw allow 11311/tcp 开放防火墙。

Q: 建图出现重影?

A: 检查 IMU 数据是否正常 rostopic echo /imu/data;确认 GPS 固定状态 rostopic echo /fix(status.status 应为 0);尝试降低录制回放速率。

Q: 导航偏移严重?

A: 初始位姿偏差导致。在设置启动点页面重新校正当前位置后保存。

Q: Web 页面加载不出地图?

A: 确认地图文件存在于配置的路径中,检查 nav_server 后端服务是否正常运行。

Q: 如何调试 ROS 话题?

A: rostopic list 查看所有话题,rostopic echo /topic_name 查看实时数据,rosnode info /node_name 查看节点详情。