第二章:环境搭建与工具链

说实话,环境搭建这事儿,看着琐碎,但往往是整个项目成败的关键。我见过太多同学,算法写得飞起,结果卡在环境配置上,一卡就是两三天。咱们这节课,就把这些坑一个个填平。

2.1 Python与PyTorch环境配置

我个人习惯用 Miniconda 来管理 Python 环境。为什么不用 Anaconda?因为它太臃肿了。咱们做机器人,轻装上阵才是王道。

核心原则:每个项目独立环境,互不干扰。

先装 Miniconda,然后创建环境:

# 创建 Python 3.8 环境(ACT 框架推荐)
conda create -n act_env python=3.8
conda activate act_env

# 安装 PyTorch(根据你的 CUDA 版本选择)
# 我一般用 CUDA 11.8,稳定
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 验证安装
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

小技巧:如果你用的是 RTX 30/40 系列显卡,建议 CUDA 11.8 起步。我曾经在 RTX 4090 上试过 CUDA 11.3,结果死活跑不起来——嗯,教训深刻。

PyTorch 装好后,别忘了装几个常用库:

pip install numpy matplotlib opencv-python h5py
pip install einops  # ACT 里会用到,做张量重排

2.2 ROS/ROS2 基础

机器人操作系统,说白了就是让各个模块能互相说话。ROS1 和 ROS2 怎么选?我个人建议:新项目直接上 ROS2。ROS1 虽然生态成熟,但实时性差,而且通信机制在复杂场景下容易出问题。

ROS2 安装(Ubuntu 22.04 + Humble 版本):

# 设置源
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 安装 ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop

# 配置环境
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

注意:ROS2 的 DDS 通信默认使用 UDP,如果你在局域网内有多台机器,记得配置 ROS_DOMAIN_ID,否则会出现「找不到节点」的诡异问题。我踩过这个坑,排查了整整一下午。

ROS2 的核心概念就三个:节点、话题、服务。节点是执行单元,话题是发布/订阅的通道,服务是请求/响应的模式。你想想看,机械臂发关节角度,相机发图像数据,都是通过话题来传递的。

2.3 MuJoCo 仿真器安装

MuJoCo 是 DeepMind 开源的物理引擎,轻量、快速,特别适合做机器人仿真。ACT 框架里,我们用它来验证策略,避免直接上真机把机械臂撞坏。

安装步骤:

# 安装 MuJoCo 2.3.7(推荐版本)
pip install mujoco

# 验证安装
python -c "import mujoco; print(mujoco.__version__)"

# 下载官方模型(包含机器人模型)
git clone https://github.com/deepmind/mujoco_menagerie.git

个人经验:MuJoCo 的 XML 模型文件看起来复杂,但其实结构很清晰。你只需要关注 <worldbody><actuator> 这两个标签。前者定义物理世界,后者定义电机驱动。

跑一个简单的仿真测试:

import mujoco
import mujoco.viewer

# 加载模型
model = mujoco.MjModel.from_xml_path('path/to/robot.xml')
data = mujoco.MjData(model)

# 启动可视化
with mujoco.viewer.launch_passive(model, data) as viewer:
    for _ in range(1000):
        mujoco.mj_step(model, data)
        viewer.sync()

为什么会用 MuJoCo 而不是 Gazebo?说白了,Gazebo 太重了,启动慢,而且和 ROS 耦合太深。MuJoCo 轻量、可嵌入,适合做算法验证。

2.4 数据采集硬件驱动配置

数据采集是模仿学习的命根子。没有好数据,再牛的算法也是白搭。这里我重点讲机械臂和相机的驱动配置。

2.4.1 机械臂驱动

市面上常见的机械臂有 Franka Emika、UR、Kinova 等。以 Franka 为例:

# 安装 Franka ROS2 驱动
sudo apt install ros-humble-libfranka
sudo apt install ros-humble-franka-ros2

# 启动驱动(记得先给机械臂上电)
ros2 launch franka_bringup franka.launch.py robot_ip:=192.168.1.100

避坑指南:我曾经在配置 Franka 驱动时,发现机械臂一直报「joint position limit exceeded」。后来发现是驱动版本和固件不匹配。记住:驱动版本必须和机械臂固件版本对应,去官网查兼容性表。

2.4.2 相机驱动

相机推荐用 Intel RealSense D435 或 D415,性价比高,ROS2 支持好。

# 安装 RealSense ROS2 驱动
sudo apt install ros-humble-realsense2-camera

# 启动相机
ros2 launch realsense2_camera rs_launch.py depth_module.profile:=640x480x30

验证相机数据:

# 查看话题列表
ros2 topic list

# 可视化图像
ros2 run rqt_image_view rqt_image_view

小建议:数据采集时,相机和机械臂的坐标系标定很关键。我一般用 ArUco 码 做手眼标定,简单可靠。具体做法:在机械臂末端贴一个 ArUco 码,相机识别后计算变换矩阵。

2.5 整体工具链架构

下面这张图,是我自己总结的 ACT 环境搭建的完整链路。你照着这个走,基本不会迷路。

ACT 环境搭建工具链架构 Python + PyTorch ROS2 (Humble) MuJoCo 仿真器 机械臂驱动 相机驱动 标定工具 数据采集管线(关节角度 + 图像 + 动作标签) ACT 模型训练与评估

从底层到顶层,依次是:基础环境 → 硬件驱动 → 数据采集 → 模型训练。每一层都依赖下一层,缺一不可。

2.6 常见问题与避坑

问题 原因 解决方案
PyTorch 找不到 GPU CUDA 版本不匹配 nvidia-smi 查看驱动版本,安装对应 CUDA
ROS2 节点无法通信 ROS_DOMAIN_ID 不一致 所有机器设置相同的 DOMAIN_ID
MuJoCo 仿真卡顿 步长设置太大 dt 设为 0.002 秒(500Hz)
机械臂关节限位报错 驱动版本与固件不匹配 去官网下载对应版本的驱动

最后说一句:环境搭建这事儿,急不得。我当年第一次配 Franka 驱动,从下午搞到凌晨三点。但只要你把每一步都走稳了,后面跑算法就会特别顺畅。嗯,磨刀不误砍柴工嘛。


公众号:蓝海资料掘金营,微信 deep3321