2. ROS与MoveIt环境搭建:Ubuntu + ROS Noetic安装、MoveIt1安装、工作空间创建、依赖包检查
说实话,环境搭建这一步,劝退了很多人。
我见过不少同学,代码写得挺溜,结果卡在安装上,一折腾就是两三天。其实没必要。只要把版本对应关系搞清楚,按步骤来,半小时就能搞定。
这一章,我就带你走一遍完整流程。从Ubuntu系统开始,到ROS Noetic,再到MoveIt1,最后建好工作空间、检查依赖。每一步我都会告诉你:哪些坑我踩过,哪些地方可以省时间。
2.1 系统与版本选择:为什么是Ubuntu 20.04 + ROS Noetic?
先明确一点:ROS和Ubuntu版本是严格绑定的。不是你想装哪个就装哪个。
ROS Noetic对应的就是Ubuntu 20.04(Focal Fossa)。你如果用Ubuntu 22.04装Noetic,那基本是自找麻烦——依赖冲突会让你怀疑人生。
| ROS版本 | 对应Ubuntu版本 | 支持状态 |
|---|---|---|
| ROS Noetic | Ubuntu 20.04 | 长期支持(至2025年) |
| ROS Melodic | Ubuntu 18.04 | 已停止维护 |
| ROS2 Foxy | Ubuntu 20.04 | 长期支持 |
2.2 Ubuntu 20.04 安装要点
系统安装我就不手把手教了,说几个关键点:
- 磁盘分区:建议给Ubuntu至少留50GB空间。我见过有人只分20GB,装完ROS就满了,后面编译MoveIt直接报磁盘空间不足。
- 软件源:安装完系统后,第一件事就是换国内源。阿里云、清华、中科大都可以。不然你下载ROS包的速度会让你崩溃。
- 显卡驱动:如果你用NVIDIA显卡,建议装驱动。虽然ROS本身不依赖显卡,但后面用Gazebo仿真时,没驱动画面会卡成PPT。
我曾经在VMware里装ROS,结果USB转串口死活识别不了机械臂。折腾了两天,最后换双系统,十分钟搞定。如果你只有一台电脑,建议装双系统,或者用Docker。
2.3 ROS Noetic 完整安装
好,系统准备好了。现在开始装ROS。
整个过程其实就是几条命令。但每条命令背后都有它的道理,我简单解释一下。
# 1. 设置sources.list(这里用清华源)
sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 2. 添加密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 3. 更新
sudo apt update
# 4. 安装完整版ROS(推荐)
sudo apt install ros-noetic-desktop-full
# 5. 初始化rosdep
sudo rosdep init
rosdep update
# 6. 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 7. 安装依赖工具
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
ros-noetic-desktop-full包含了ROS核心、可视化工具(Rviz)、仿真环境(Gazebo)等。大概2GB左右,下载时间取决于你的网速。rosdep是用来解决依赖的。后面你编译自己的包时,它会自动帮你安装缺少的系统依赖。- 环境变量一定要加到
~/.bashrc里,不然每次开终端都要手动source。
装完之后,验证一下:
roscore
# 如果看到类似 "started core service [/rosout]" 的信息,说明ROS安装成功。
sudo rosdep init 这一步卡了很久,一直报网络错误。后来发现是公司网络限制了raw.githubusercontent.com。解决办法是手动下载那个配置文件,或者换个网络环境。
2.4 MoveIt1 安装
ROS装好了,接下来装MoveIt1。
MoveIt1是ROS Noetic时代的标配。虽然现在MoveIt2已经出来了,但MoveIt1在Noetic上依然是最稳定的选择。
# 安装MoveIt1完整版
sudo apt install ros-noetic-moveit
# 安装MoveIt1的示例包(方便后面测试)
sudo apt install ros-noetic-moveit-resources
sudo apt install ros-noetic-moveit-visual-tools
就这么简单?对,就这么简单。一条命令,MoveIt1就装好了。
但注意,这只是安装了MoveIt1的核心库。如果你要用特定的机械臂(比如UR5、Kinova、Franka),还需要安装对应的驱动包。这个我们后面章节会讲。
2.5 创建工作空间
工作空间(workspace)是ROS里存放代码的地方。你可以把它理解成一个项目文件夹。
我个人习惯用 catkin_ws 这个名字。当然你也可以叫 robot_ws、moveit_ws,随你。
# 创建工作空间目录
mkdir -p ~/catkin_ws/src
# 初始化工作空间
cd ~/catkin_ws
catkin_make
# 设置环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
这里有个细节:catkin_make 会在 ~/catkin_ws 下生成 build 和 devel 两个文件夹。build 是编译中间文件,devel 是编译产物。你平时写代码只需要关注 src 文件夹。
catkin_make,确保环境没问题。然后再往 src 里放代码。这样如果后面编译出错,我能确定是代码的问题,而不是环境的问题。
2.6 依赖包检查
最后一步,检查依赖包是否齐全。
这一步很多人会忽略。结果编译到一半报错,说缺了某个包,又回头去装。浪费时间。
# 进入工作空间
cd ~/catkin_ws
# 检查所有依赖
rosdep install --from-paths src --ignore-src -r -y
这条命令会扫描 src 下所有包的 package.xml,然后自动安装缺少的依赖。
如果输出是 #All required rosdeps installed successfully,那就万事大吉。
如果报错,比如提示找不到某个包,那就手动安装:
sudo apt install ros-noetic-<包名>
| 包名 | 用途 |
|---|---|
| ros-noetic-urdf | 机器人模型描述 |
| ros-noetic-srdf | 语义机器人描述 |
| ros-noetic-moveit-msgs | MoveIt消息类型 |
| ros-noetic-tf2 | 坐标变换 |
| ros-noetic-robot-state-publisher | 机器人状态发布 |
rosdep install 时遇到网络超时,可以试试加代理,或者手动下载依赖包。我曾经在客户现场部署时,内网没有外网权限,所有依赖包都是手动下载的。那叫一个酸爽。
2.7 本章知识体系总览
为了让你对整个流程有个直观印象,我画了一张图。你可以把它当作一张地图,后面遇到问题就知道该查哪一步。
嗯,到这里,环境搭建就全部完成了。你现在应该有一个可以正常运行的ROS Noetic系统,安装了MoveIt1,创建了工作空间,并且检查了所有依赖。
下一章,我们会开始接触真正的机械臂模型——URDF。那是描述机器人长什么样的文件。准备好了吗?