152 lines
6.2 KiB
Markdown
152 lines
6.2 KiB
Markdown
|
|
# 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 文档索引问题;这不是依赖安装任务造成的,后续应作为独立文档治理任务处理。
|