# G1Nav_Fastlio2 **Repository Path**: EricGao2020/G1Nav_Fastlio2 ## Basic Information - **Project Name**: G1Nav_Fastlio2 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev/my_change - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-19 - **Last Updated**: 2026-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 宇树G1机器人 Docker容器部署HongTu/G1Nav2D仓库指南 ## 文档说明 本文档整理了基于Ubuntu arm64架构(宇树G1机器人),通过Docker容器部署HongTu/G1Nav2D仓库的完整步骤、常见报错及解决方案,可直接用于复现部署流程。 ## 一、环境基础信息 - 机器人系统:Ubuntu 20.04 arm64 - ROS版本:Noetic (ROS1) - 核心依赖:Livox-SDK2、GTSAM、map_server、tf2-sensor-msgs等 - 容器名称:ros1_noetic_hongtu - 镜像名称:ros1_noetic_arm64:v1 ## 二、完整部署流程 ### 2.1 启动/复用Docker容器 #### 2.1.1 启动新容器(首次部署) ```bash docker run -it \ --name ros1_noetic_hongtu \ --net=host \ --privileged \ -v /home/unitree/HongTu:/root/HongTu \ # 映射代码目录 -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ ros1_noetic_arm64:v1 /bin/bash ``` #### 2.1.2 复用旧容器(非首次部署) ```bash #启动docker docker start fastlio2-nav #进入docker docker exec -it fastlio2-nav /bin/bash #赋予xhost权限(转播docker的rviz gui) DISPLAY=:0 XAUTHORITY=/run/user/1000/gdm/Xauthority xhost +SI:localuser:root ``` #### 2.1.3 容器基础操作 - 临时退出容器(保持运行):`Ctrl + P + Q` - 退出并停止容器:`exit` ### 2.2 容器内环境初始化 #### 2.2.1 修复ROS GPG Key过期问题 ```bash # 删除过期Key sudo apt-key del F42ED6FBAB17C654 2>/dev/null # 验证Key是否删除(无输出则成功) apt-key list | grep -i ros # 导入最新ROS GPG Key curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - # 清理重复ROS源(可选,消除警告) sudo rm /etc/apt/sources.list.d/ros1.list # 更新源 sudo apt update ``` #### 2.2.2 ROS Environment Append these lines to `/root/.bashrc` in the container: ```bash source /opt/ros/noetic/setup.bash export LIVOX_LIDAR_SDK_LIBRARY=/usr/local/lib/liblivox_lidar_sdk_shared.so export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH ``` Reload: ```bash source /root/.bashrc ``` #### 2.2.3 安装基础依赖 ```bash # 安装编译工具&ROS基础依赖 sudo apt install -y \ cmake g++ libusb-1.0-0-dev pkg-config \ curl gnupg2 lsb-release \ ros-noetic-map-server ros-noetic-tf2-sensor-msgs \ ros-noetic-amcl ros-noetic-move-base \ libboost-all-dev libtbb-dev libgtest-dev ``` ### 2.3 编译安装Livox-SDK2(雷达驱动) ```bash # 进入容器内的Livox-SDK2目录 cd /root/HongTu/Livox-SDK2 mkdir -p build && cd build # 清空旧缓存(避免路径冲突) rm -rf * # 编译配置(适配arm64) cmake \ -DCMAKE_SYSTEM_PROCESSOR=arm64 \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DBUILD_EXAMPLES=OFF \ -DBUILD_TESTS=OFF \ .. # 编译(arm64用-j1,避免算力不足) make -j1 # 安装+更新库缓存 sudo make install sudo ldconfig # 验证安装成功(输出liblivox_lidar_sdk.so即成功) ls /usr/local/lib/liblivox*.so ``` ### 2.4 编译安装GTSAM(fastlio依赖) ```bash # 下载GTSAM源码 cd /root/Hongtu git clone --depth 1 --branch 4.2.0 https://github.com/borglab/gtsam.git cd gtsam && mkdir build && cd build # 编译配置 cmake -DGTSAM_BUILD_EXAMPLES=OFF -DGTSAM_BUILD_TESTS=OFF .. # 编译安装 make -j1 sudo make install ``` ### 2.5 编译HongTu/G1Nav2D仓库 ```bash source /opt/ros/noetic/setup.bash export LIVOX_LIDAR_SDK_LIBRARY=/usr/local/lib/liblivox_lidar_sdk_shared.so export GTSAM_DIR=/root/HongTu/gtsam/build export CMAKE_PREFIX_PATH=/root/HongTu/gtsam/build:/usr/local:$CMAKE_PREFIX_PATH export LD_LIBRARY_PATH=/root/HongTu/gtsam/build/gtsam:/usr/local/lib:$LD_LIBRARY_PATH ``` Then build: ```bash cd /root/HongTu/G1Nav2D/src/livox_ros_driver2-master rm -rf ../../build/ ../../devel/ ../../install/ ./build.sh ROS1 cd /root/HongTu/G1Nav2D catkin_make -DROS_EDITION=ROS1 --pkg livox_ros_driver2 catkin_make -DROS_EDITION=ROS1 --pkg fastlio catkin_make -DROS_EDITION=ROS1 ``` ### 2.6 保存地图到指定目录 #### 2.6.1 主机端创建目录并赋权 ```bash # 机器人主机执行(非容器内) mkdir -p /home/unitree/HongTu/map/ sudo chmod 777 /home/unitree/HongTu/map/ ``` #### 2.6.2 容器内保存地图 ```bash # 容器内执行(映射路径:/root/HongTu ↔ /home/unitree/HongTu) rosrun map_server map_saver map:=/projected_map -f /root/HongTu/map/mymap # 验证保存成功(容器内查看) ls /root/HongTu/map/ # 主机端验证 # ls /home/unitree/HongTu/map/ ``` ## 三、常见报错及解决方案 | 报错信息 | 报错原因 | 解决方案 | |----------|----------|----------| | `catkin_make: command not found` | 未加载ROS1环境变量 | 执行:`source /opt/ros/noetic/setup.bash` | | `Could not find a package configuration file provided by "map_server"` | 未安装map_server依赖 | 执行:`sudo apt install ros-noetic-map-server` | | `LIVOX_LIDAR_SDK_LIBRARY set to NOTFOUND` | Livox-SDK2未安装/路径未识别 | 1. 重新编译安装Livox-SDK2
2. 执行:`sudo ldconfig`
3. 导出环境变量:`export LIVOX_LIDAR_SDK_LIBRARY=/usr/local/lib/liblivox_lidar_sdk.so` | | `CMake Error: The source directory "/root" does not appear to contain CMakeLists.txt` | 在Livox-SDK2根目录执行cmake | 进入build子目录后执行:`cmake ..` | | `CMake Error: The current CMakeCache.txt directory ... is different` | 缓存路径与实际路径冲突 | 清空build目录:`rm -rf /root/Livox-SDK2/build/*` | | `Couldn't save map file to ...` | 路径不存在/权限不足 | 1. 主机端创建目录:`mkdir -p /home/unitree/HongTu/map/`
2. 赋权:`sudo chmod 777 /home/unitree/HongTu/map/`
3. 容器内用`/root/HongTu/map/`路径保存 | | `gedit: command not found`/`nano: command not found` | 容器未安装编辑器 | 安装nano(推荐):`sudo apt install -y nano`
编辑文件:`nano 目标文件路径` | | `make: *** No rule to make target 'install'. Stop.` | 未执行cmake生成Makefile | 先执行:`cmake ..` 生成Makefile后再执行`make install` | | `NO_PUBKEY F42ED6FBAB17C654` | ROS GPG Key过期/缺失 | 导入最新Key:`curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -` | ## 四、容器内文件编辑操作 ### 4.1 安装编辑器 ```bash # 新手推荐nano(操作简单) sudo apt install -y nano # 可选:安装vim(功能强大) sudo apt install -y vim ``` ### 4.2 nano编辑器使用 ```bash # 打开文件 nano /root/HongTu/G1Nav2D/src/fastlio2/src/map_builder_node.cpp # 核心操作 # 保存:Ctrl + O → 回车确认 → Ctrl + X 退出 # 撤销/删除:直接按Delete键 ``` ### 4.3 vim编辑器使用 ```bash # 打开文件 vim /root/HongTu/G1Nav2D/src/fastlio2/src/map_builder_node.cpp # 核心操作 # 编辑模式:按 i # 保存退出:Esc → :wq → 回车 # 强制退出(不保存):Esc → :q! → 回车 ``` ## 五、关键验证点 1. **Livox-SDK2安装成功**:`ls /usr/local/lib/liblivox*.so` 能看到`liblivox_lidar_sdk.so`; 2. **ROS环境正常**:`which catkin_make` 输出`/opt/ros/noetic/bin/catkin_make`; 3. **编译成功**:执行`./build.sh ROS1`无CMake错误,生成`livox_ros_driver2_node`可执行文件; 4. **地图保存成功**:`/home/unitree/HongTu/map/`下有`mymap.pgm`和`mymap.yaml`文件。 ## 六、注意事项 1. arm64架构(Jetson/宇树G1)编译时需用`-j1`,避免内存溢出导致编译中断; 2. 容器内路径与主机路径映射关系:`/root/HongTu` ↔ `/home/unitree/HongTu`; 3. 所有ROS命令执行前需加载环境变量:`source /opt/ros/noetic/setup.bash`; 4. 开发环境下给目录赋`777`权限可快速解决权限问题,生产环境需按需缩小权限。 ### 语音交互 基于[pyxiaozhi](https://github.com/huangjunsen0406/py-xiaozhi),ubuntu20.04默认python版本不符合,安装小智需要配置虚拟环境。 - 基础要求 Python版本:3.9 - 3.12 操作系统:Windows 10+、macOS 10.15+、Linux 音频设备:麦克风和扬声器设备 网络连接:稳定的互联网连接(用于AI服务和在线功能) - 安装依赖 ``` bash cd PythonProject/py-xiaozhi-main/ pip install -r requirements.txt ``` - 语音导航至目标点简易版 1. 全局搜索关键词“电梯”,将所有“电梯”替换成你需要的关键词,例如“卧室”、“卫生间”等。 2. 在Pythonproject/point_nav/point2.py修改改点坐标,修改位置在该程序最底部。(坐标可以通过导航发布目标点时,监听/move_base/goal话题获取,手动输入,当前为测试版本,每个目标点为不同的启动程序) - 导航到目标点MCP服务 ``` bash #以导航至电梯目标点为例 # 在该文件的第1232行,修改或添加导航至目标点的关键词 PythonProject/py-xiaozhi-main/src/application.py # 在该文件的第334行,修改或添加mcp服务的注册信息 PythonProject/py-xiaozhi-main/src/mcp/mcp_server.py #在该文件的第15至第17行,选择该mcp服务拉起的python程序,以及启动该程序的编译器路径 PythonProject/py-xiaozhi-main/src/mcp/tools/daohang_dianti/tools.py #在该文件的第10至第13行,选择拉起的导航点程序,以及启动该程序的编译器路径 PythonProject/daohang/daohang-dianti.py #在该文件修改目标点的坐标 PythonProject/point_nav/point1.py ``` - 启动语音程序 ``` bash cd PythonProject/py-xiaozhi-main/ python3 main.py ``` 实现语音交互导航需要同时开启语音、运控、导航。