6.2 KiB
Executable File
6.2 KiB
Executable File
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
- Livox SDK2:
- 已补齐导航构建入口:
robot/navigation/scripts/build/local_packages.shrobot/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提权,因此已安装的系统包未重复安装;以下联网版本校验和完整构建命令 已成功退出:
./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_descriptiongo2_twist_bridgego2_inspection_navigation
- 新增和修改的 shell 脚本均通过
bash -n。 - 一键脚本的离线工具链检查已通过:
./dependencies/install.sh --offline --skip-download --skip-build
尚未完成
依赖安装和构建任务已完成。尚未执行的是连接真实 Go2 和 Livox 设备后的现场全链路验证。
当前机器早期构建的外部 workspace 仍保留在旧路径:
/home/limerly/ws_livox
/home/limerly/fast_lio_ws
/home/limerly/unitree_ros2
/home/limerly/Livox-SDK2
新的默认路径已由 dependencies/environment.sh 指向并完成构建:
/home/limerly/go2_autonomous_inspection/dependencies/external
/home/limerly/.cache/go2_autonomous_inspection/external
在现场验证通过前不要删除这些旧 workspace。
后续操作
开始现场验证前加载统一环境:
cd /home/limerly/go2_autonomous_inspection
source dependencies/environment.sh
go2_dependencies_source_external_ros
按照项目根目录的 end-to-end-inspection-runbook.md 完成真实设备上的 mapping、导航和巡检任务
验证。确认新路径运行稳定后,再单独评估旧 workspace 的清理。
手工复核命令
一键脚本执行完成后,至少运行:
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,必要时执行:
source "$HOME/.cargo/env"
export PATH="$HOME/.local/bin:$PATH"
python3 tools/documentation.py check当前会报告仓库内既有的历史 session-state 文件命名和 server 文档索引问题;这不是依赖安装任务造成的,后续应作为独立文档治理任务处理。