Files
Go2_navigation/go2-environment-setup-handoff.md

152 lines
6.2 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Go2 环境安装与构建交接记录
状态日期:2026-08-04
项目目录:`/home/limerly/go2_autonomous_inspection`
## 当前结论
`robot/inspection-core` 已恢复为完整版本。默认 Cargo workspace 测试以及启用 ROS2 `ros2`
feature 的全 workspace 检查均已通过,因此按照当前要求不再优化 Inspection Core 实现。
统一依赖路径下的联网版本校验、外部依赖构建、仓库 ROS 包构建、导航构建和 Inspection Core
检查已经在同一次一键脚本运行中成功完成。环境安装与构建任务没有遗留的软件阻塞;后续工作
转为现场硬件全链路验证,验证通过后再决定是否清理旧 workspace。
## 已完成内容
- 已安装当前机器缺少的主要系统、ROS2、Python、Rust 和 Node.js 环境。
- Rust 当前版本为 `rustc 1.97.1`、`cargo 1.97.1`。
- 用户级 Node.js 当前版本为 `v22.23.1`,位置为
`/home/limerly/.local/opt/node-v22.23.1-linux-arm64`。
- 已完成 rosdep 初始化和更新。
- 已创建 `dependencies/install.sh`,作为新机器的一键依赖安装与构建入口。
- 已创建 `dependencies/environment.sh`,统一所有外部 workspace 和缓存路径。
- 已创建 `dependencies/external.repos` 和 `dependencies/external-versions.env`,固定以下依赖:
- Livox SDK2:`08f523c930b2f0ba1e98a6afaa8d7476bf479908`
- Livox ROS Driver 2:`1.2.6`,对应已验证提交
`13eb05e4e6dd7a765b934d0c5fd6236676a57b49`
- FAST-LIO ROS2:`2fffc570a25d0df172720bac034fbdb6a13d2162`
- Unitree ROS2:`668d1ec5a05d1c38d3306bdca7d59f2ba3581a88`
- 已补齐导航构建入口:
- `robot/navigation/scripts/build/local_packages.sh`
- `robot/navigation/scripts/build/navigation.sh`
- mapping、navigation 和 dashboard 启动脚本已改为读取
`dependencies/environment.sh` 中的统一路径变量。
- 构建生成物默认放在 `${XDG_CACHE_HOME:-$HOME/.cache}/go2_autonomous_inspection`,不会写入
`robot/` 或仓库自有 ROS 依赖源码目录。
- 四个固定版本的外部仓库已下载到 `dependencies/external`,源码树均保持干净,FAST-LIO 的
`ikd-Tree` 子模块也已检出固定提交 `e2e3f4e9d3b95a9e66b1ba83dc98d4a05ed8a3c4`。
- Livox SDK2、Livox ROS Driver 2、FAST-LIO ROS2 和 Unitree ROS2 已构建到新的统一缓存路径。
- `dependencies/install.sh` 已修复两项实际全链路构建问题:
- 在 `set -u` 模式下安全加载 ROS setup 文件。
- 为 ROS2 Rust bindgen 自动加入 GCC 标准头文件目录。
- 当前容器禁止 `sudo` 提权,因此已安装的系统包未重复安装;以下联网版本校验和完整构建命令
已成功退出:
```bash
./dependencies/install.sh --skip-system --jobs 4
```
## 已通过验证
- Inspection Core 默认 workspace:全部测试通过,共 92 个单元测试,doc tests 通过。
- Inspection Core ROS2 feature:`cargo check --workspace --all-targets --features ros2 --locked`
通过。
- Navigation Python:`111/111` 通过。
- Mapping Python:`14/14` 通过。
- Dashboard Python:`53/53` 通过;HTTP 测试需要允许绑定 localhost socket。
- 新统一缓存路径中的外部构建通过:
- Livox SDK2
- Livox ROS Driver 2
- FAST-LIO ROS2
- Unitree ROS2(`unitree_api`、`unitree_go`、`unitree_hg`)
- 新统一缓存路径中的仓库 ROS 构建通过:
- `go2_description`
- `go2_twist_bridge`
- `go2_inspection_navigation`
- 新增和修改的 shell 脚本均通过 `bash -n`。
- 一键脚本的离线工具链检查已通过:
```bash
./dependencies/install.sh --offline --skip-download --skip-build
```
## 尚未完成
依赖安装和构建任务已完成。尚未执行的是连接真实 Go2 和 Livox 设备后的现场全链路验证。
当前机器早期构建的外部 workspace 仍保留在旧路径:
```text
/home/limerly/ws_livox
/home/limerly/fast_lio_ws
/home/limerly/unitree_ros2
/home/limerly/Livox-SDK2
```
新的默认路径已由 `dependencies/environment.sh` 指向并完成构建:
```text
/home/limerly/go2_autonomous_inspection/dependencies/external
/home/limerly/.cache/go2_autonomous_inspection/external
```
在现场验证通过前不要删除这些旧 workspace。
## 后续操作
开始现场验证前加载统一环境:
```bash
cd /home/limerly/go2_autonomous_inspection
source dependencies/environment.sh
go2_dependencies_source_external_ros
```
按照项目根目录的 `end-to-end-inspection-runbook.md` 完成真实设备上的 mapping、导航和巡检任务
验证。确认新路径运行稳定后,再单独评估旧 workspace 的清理。
## 手工复核命令
一键脚本执行完成后,至少运行:
```bash
cd /home/limerly/go2_autonomous_inspection
source "$HOME/.cargo/env"
source /opt/ros/humble/setup.bash
source dependencies/environment.sh
python3 -m unittest discover -s robot/mapping/test -p 'test_*.py'
PYTHONPATH="robot/navigation:${PYTHONPATH:-}" \
python3 -m unittest discover -s robot/navigation/test -p 'test_*.py'
PYTHONPATH="robot/dashboard:${PYTHONPATH:-}" \
python3 -m unittest discover -s robot/dashboard/test -p 'test_*.py'
CARGO_TARGET_DIR=/tmp/go2-inspection-core cargo test \
--manifest-path robot/inspection-core/Cargo.toml --workspace --locked
export BINDGEN_EXTRA_CLANG_ARGS="-I$(gcc -print-file-name=include)"
CARGO_TARGET_DIR=/tmp/go2-inspection-core-ros2 cargo check \
--manifest-path robot/inspection-core/Cargo.toml --workspace --all-targets \
--features ros2 --locked
```
## 注意事项
- 不修改 Inspection Core 业务实现,除非完整编译或测试出现明确失败。
- 不删除旧 workspace,等现场验证通过后再决定是否清理。
- 当前容器设置了 `no new privileges`,不能在容器内运行脚本的 apt 阶段;宿主机或新机器上仍应
使用具备 apt 管理权限的默认命令 `./dependencies/install.sh`。
- 非登录 shell 可能找不到用户级 Rust 和 Node.js,必要时执行:
```bash
source "$HOME/.cargo/env"
export PATH="$HOME/.local/bin:$PATH"
```
- `python3 tools/documentation.py check` 当前会报告仓库内既有的历史 session-state 文件命名和
server 文档索引问题;这不是依赖安装任务造成的,后续应作为独立文档治理任务处理。