2. 开发环境搭建
说实话,搞机器人视觉协同控制,环境搭不好后面全是坑。我见过太多同学卡在依赖冲突上,一卡就是两三天。这一章咱们就把地基打牢。
先看整体架构,心里有个谱:
2.1 为什么选 Ubuntu 20.04 + ROS Noetic
你可能要问:为什么不用更新的 Ubuntu 22.04?
原因很简单——生态兼容性。ROS Noetic 是最后一个基于 Python 2/3 双支持的版本,也是 ROS 1 的最终 LTS 版本。我去年在一个项目里试过 Ubuntu 22.04 强行装 Noetic,结果依赖库打到一半就崩了,最后还是乖乖回退到 20.04。
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 20.04.6 LTS | 2025年4月前安全更新 |
| ROS 版本 | Noetic Ninjemys | ROS 1 最终 LTS,2025年5月 EOL |
| Python | 3.8.10(系统自带) | Noetic 原生支持 Python 3 |
| 编译器 | GCC 9.4.0 | 与 PCL 1.12 完美兼容 |
2.2 Ubuntu 20.04 安装要点
我个人习惯用 最小安装 模式,不装多余软件包。这样系统干净,后面 ROS 编译时少很多冲突。
/ 分 40GB,/home 分 60GB 以上。你想想看,后面装 PCL 和 OpenCV 源码编译时,临时文件动不动就占 10GB+。
安装完成后,先做三件事:
- 换源——用清华或阿里源,apt 速度能快 10 倍
- 更新系统——
sudo apt update && sudo apt upgrade -y - 装基础工具——git、vim、curl、cmake、build-essential
sudo apt install -y git vim curl cmake build-essential \
python3-pip python3-dev python3-venv \
libeigen3-dev libflann-dev libboost-all-dev
2.3 ROS Noetic 完整安装
ROS 的安装流程其实很固定,但有几个细节容易翻车。我按步骤来:
2.3.1 添加软件源与密钥
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
hkp://pgp.mit.edu:80。我在国内遇到过几次超时,换这个就好了。
2.3.2 安装完整桌面版
sudo apt install -y ros-noetic-desktop-full
这个包包含了 ROS、rviz、gazebo、navigation stack 等核心组件。大概 2-3GB,看网速等 20-40 分钟。
2.3.3 初始化 rosdep
sudo rosdep init
rosdep update
rosdep 是用来解决依赖的。如果你在墙内,rosdep update 可能会失败。我当时的解决办法是:
# 使用代理或修改 rosdep 源
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
rosdep update
2.3.4 配置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证安装:
roscore
# 看到 "started core service [/rosout]" 就对了
2.4 创建工作空间
ROS 的工作空间结构很清晰。我习惯用 catkin_ws 这个名字:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
记得把工作空间的 setup.bash 也加到 ~/.bashrc:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
2.5 OpenCV 安装与配置
ROS Noetic 自带了 OpenCV 4.2,但版本偏老。咱们项目需要 4.5+ 才能用上最新的 SIFT 和 AKAZE 特性。
我推荐源码编译安装:
# 安装依赖
sudo apt install -y libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 下载源码
cd ~
git clone https://github.com/opencv/opencv.git -b 4.5.5
git clone https://github.com/opencv/opencv_contrib.git -b 4.5.5
# 编译
cd opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON ..
make -j$(nproc)
sudo make install
-D WITH_QT=ON,这样 OpenCV 的 highgui 窗口能用 Qt 后端,显示图像更流畅。我曾经没加这个选项,调试时图像窗口卡得要命。
验证安装:
python3 -c "import cv2; print(cv2.__version__)"
# 输出 4.5.5
2.6 PCL 1.12 安装
PCL(Point Cloud Library)是点云处理的核心。ROS Noetic 的 apt 源里有 PCL 1.12,直接装就行:
sudo apt install -y ros-noetic-pcl-ros ros-noetic-pcl-conversions
sudo apt install -y libpcl-dev pcl-tools
验证:
pcl_viewer --version
# 输出 PCL 1.12 相关信息
pcl_ros 有 ABI 不兼容。我踩过这个坑,编译通过了,运行时 segfault,查了两天才发现是版本问题。
2.7 MoveIt! 安装与配置
MoveIt! 是机械臂运动规划的核心框架。安装命令很简单:
sudo apt install -y ros-noetic-moveit ros-noetic-moveit-msgs ros-noetic-moveit-visual-tools
但配置才是关键。我建议装完后跑一下官方 demo 验证:
roslaunch moveit_setup_assistant setup_assistant.launch
如果能正常启动图形界面,说明 MoveIt! 核心组件都装好了。
2.8 环境验证清单
全部装完后,我习惯跑一个快速验证脚本,确保所有组件能协同工作:
#!/bin/bash
echo "=== 环境验证 ==="
echo "ROS 版本: $(rosversion -d)"
echo "OpenCV 版本: $(python3 -c 'import cv2; print(cv2.__version__)')"
echo "PCL 版本: $(pcl_viewer --version 2>&1 | head -1)"
echo "MoveIt! 版本: $(dpkg -l ros-noetic-moveit-core 2>/dev/null | tail -1 | awk '{print $3}')"
echo "Python 版本: $(python3 --version)"
echo "=== 完成 ==="
| 组件 | 验证命令 | 预期输出 |
|---|---|---|
| ROS Core | roscore | 启动成功,无报错 |
| OpenCV | python3 -c "import cv2; print(cv2.__version__)" | 4.5.x |
| PCL | pcl_viewer --version | 1.12.x |
| MoveIt! | roslaunch moveit_setup_assistant setup_assistant.launch | GUI 正常启动 |
2.9 常见问题与解决
- roscore 启动失败: 检查
~/.bashrc里有没有source /opt/ros/noetic/setup.bash,以及 ROS_MASTER_URI 是否被覆盖 - OpenCV 编译报错: 多半是缺少依赖,
sudo apt build-dep opencv一键补齐 - PCL 运行时 segfault: 检查是否混装了多个版本的 PCL,用
ldd查看链接库路径 - MoveIt! 启动黑屏: 检查显卡驱动,
glxinfo | grep "OpenGL renderer"
我的建议: 环境搭建别急,每一步装完都验证一下。我见过太多人一口气装完所有东西,最后出问题了不知道从哪查起。分步验证,出了问题能精准定位。