第2章:ROS与MoveIt环境搭建

说实话,搞机器人开发这么多年,我见过太多人在环境搭建这一步就卡住了。明明代码逻辑没问题,结果因为系统版本不对、依赖包冲突,折腾一整天。嗯,咱们先把地基打牢,后面才能跑得快。

2.1 Ubuntu系统安装

ROS Noetic官方推荐的是Ubuntu 20.04 LTS。我个人习惯用LTS版本,稳定,社区支持也久。你想想看,要是用个非LTS版本,过两年就得折腾升级,何必呢?

系统要求:

  • 操作系统:Ubuntu 20.04 LTS(64位)
  • 内存:建议8GB以上(我4GB的旧笔记本跑过,编译时风扇狂转)
  • 硬盘:至少50GB空闲空间
  • 网络:稳定的互联网连接

安装方式有两种:

  1. 双系统安装:性能最好,适合主力开发机
  2. 虚拟机安装:用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 知识体系总览

下面这张图是我自己整理的,把环境搭建的整个逻辑串起来了:

MoveIt环境搭建知识体系 Ubuntu 20.04 LTS ROS Noetic MoveIt 框架 运动规划库(OMPL) 运动学求解器(KDL/TRAC-IK) 碰撞检测(FCL) 验证:Panda演示 + Rviz可视化

从这张图能看出来,整个环境是层层依赖的。底层系统不稳,上面全白搭。我见过有人直接在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节点之间的通信关系。嗯,看到那个图的时候,你会觉得刚才的折腾都值了。