第2章:ROS与MoveIt环境搭建
说实话,搞机器人开发这么多年,我见过太多人在环境搭建这一步就卡住了。明明代码逻辑没问题,结果因为系统版本不对、依赖包冲突,折腾一整天。嗯,咱们先把地基打牢,后面才能跑得快。
2.1 Ubuntu系统安装
ROS Noetic官方推荐的是Ubuntu 20.04 LTS。我个人习惯用LTS版本,稳定,社区支持也久。你想想看,要是用个非LTS版本,过两年就得折腾升级,何必呢?
系统要求:
- 操作系统:Ubuntu 20.04 LTS(64位)
- 内存:建议8GB以上(我4GB的旧笔记本跑过,编译时风扇狂转)
- 硬盘:至少50GB空闲空间
- 网络:稳定的互联网连接
安装方式有两种:
- 双系统安装:性能最好,适合主力开发机
- 虚拟机安装:用VirtualBox或VMware,适合尝鲜或资源有限
我在项目中遇到过用虚拟机跑MoveIt仿真,结果卡得鼠标都动不了。后来换成双系统,流畅多了。所以如果你打算做真实机器人控制,建议直接双系统。
小技巧:安装时选择「最小安装」,省掉LibreOffice那些用不上的软件包,能省不少时间。
2.2 ROS Noetic安装
ROS Noetic是ROS1的最后一个LTS版本,2025年才停止维护。说白了,现在学ROS1,Noetic是最佳选择。
安装步骤其实很简单,跟着敲命令就行:
# 1. 设置sources.list
sudo sh -c 'echo "deb http://packages.ros.org/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. 安装完整桌面版(推荐)
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
这里有个坑——sudo rosdep init这一步经常因为网络问题失败。我曾经在客户现场折腾了半小时,最后换了手机热点才搞定。如果遇到超时,可以试试:
# 手动创建rosdep配置文件
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo echo "yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx" > /etc/ros/rosdep/sources.list.d/20-default.list
# ... 其他源同理
注意:不要用sudo pip安装ROS包,会破坏系统Python环境。我见过有人这么干,结果roscore都启动不了。
2.3 MoveIt安装与测试
MoveIt是ROS生态里最核心的运动规划框架。安装它其实就一行命令:
sudo apt install ros-noetic-moveit
但光装完还不够,得验证一下能不能跑。我习惯用Panda机械臂的演示包来测试:
# 安装Panda演示包
sudo apt install ros-noetic-panda-moveit-config
# 启动演示
roslaunch panda_moveit_config demo.launch
如果一切正常,你会看到Rviz界面里出现一个红色的Panda机械臂。这时候你可以拖拽末端执行器,MoveIt会自动规划运动轨迹。
验证安装是否成功:在终端输入rospack list | grep moveit,如果列出几十个moveit相关的包,说明安装完整。
为什么会这样?因为MoveIt本质上是一堆ROS包的集合,包括运动学求解器、碰撞检测、路径规划算法等等。装一个ros-noetic-moveit元包,就把所有依赖都拉下来了。
2.4 知识体系总览
下面这张图是我自己整理的,把环境搭建的整个逻辑串起来了:
从这张图能看出来,整个环境是层层依赖的。底层系统不稳,上面全白搭。我见过有人直接在Windows上装虚拟机跑ROS,结果USB设备透传搞不定,机械臂死活连不上。所以——老老实实用Ubuntu双系统,省心。
2.5 常见问题与避坑
| 问题 | 原因 | 解决方案 |
|---|---|---|
| rosdep update超时 | GitHub raw.githubusercontent.com被墙 | 使用代理或手动下载rosdep配置文件 |
| roscore启动报错 | Python版本冲突或环境变量未设置 | 检查echo $ROS_DISTRO是否输出noetic |
| MoveIt启动后Rviz空白 | 缺少机器人模型或配置 | 确认roslaunch命令中的包名正确 |
| 编译工作空间时找不到包 | 未source setup.bash | 每次新终端执行source ~/.bashrc |
避坑指南:我曾经在安装过程中同时开了多个终端,结果apt锁住了。解决办法是sudo killall apt-get,然后重新来过。记住——装ROS的时候别手贱去点其他软件更新。
好了,环境搭好之后,你可以试试运行rosrun rqt_graph rqt_graph,看看ROS节点之间的通信关系。嗯,看到那个图的时候,你会觉得刚才的折腾都值了。