2. 环境搭建:Ubuntu + ROS Noetic安装、MoveIt安装、激光雷达驱动安装
做机器人开发,环境搭建是第一道坎。我见过太多同学卡在这一步,装到一半系统崩了,或者版本对不上,折腾一整天还没开始写代码。说实话,这很正常。ROS的版本依赖确实有点绕,尤其是Noetic和Ubuntu 20.04的绑定关系,搞错了就得重装系统。
这一章,我会带你一步步把环境搭好。包括Ubuntu系统、ROS Noetic、MoveIt,还有激光雷达驱动。每一步我都会标注我踩过的坑,你跟着走就行。
核心原则:ROS Noetic 只支持 Ubuntu 20.04(Focal Fossa)。不要尝试在18.04或22.04上装Noetic,那是给自己找麻烦。
2.1 系统准备:Ubuntu 20.04 安装要点
如果你已经有Ubuntu 20.04系统,可以跳过这一节。但如果你是从Windows或macOS过来,我建议你直接用双系统,别用虚拟机。为什么?激光雷达的数据流很大,虚拟机的USB转发经常丢包,我在项目里吃过这个亏。
安装时注意几点:
- 磁盘分区:建议给根目录(/)至少50GB,home目录留100GB以上。ROS的包和编译缓存很占空间。
- 软件源:安装时选“最小安装”,装完再换国内源(阿里云或清华源),速度能快10倍。
- 显卡驱动:如果你有NVIDIA显卡,装完系统后去“软件与更新”里选专有驱动,别用开源的nouveau。
我的习惯:装完系统第一件事就是执行 sudo apt update && sudo apt upgrade -y,把内核和基础库更新到最新。这能避免很多奇怪的依赖冲突。
2.2 ROS Noetic 完整安装
ROS Noetic是ROS1的最后一个长期支持版本,2025年5月才EOL,现在用完全没问题。安装过程我拆成三步:
2.2.1 添加软件源和密钥
# 添加ROS官方源
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 install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 更新源
sudo apt update
这里有个坑:如果你在国内,官方源可能很慢。我建议换成中科大的镜像:
sudo sh -c 'echo "deb https://mirrors.ustc.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2.2.2 安装完整桌面版
sudo apt install ros-noetic-desktop-full
这个包包含了ROS核心、rqt、RViz、仿真工具等。大概2-3GB,下载时间取决于你的网速。我建议用有线网络,Wi-Fi容易断。
2.2.3 初始化rosdep并配置环境
# 初始化rosdep
sudo rosdep init
rosdep update
# 配置环境变量(添加到~/.bashrc)
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 验证安装
roscore
如果 roscore 启动后看到一堆日志,没有报错,说明ROS装好了。按 Ctrl+C 退出。
注意:如果你用的是zsh(比如Oh My Zsh),记得把 source /opt/ros/noetic/setup.bash 改成 source /opt/ros/noetic/setup.zsh。我刚开始用zsh时没注意,折腾了半天才发现是shell的问题。
2.3 MoveIt 安装
MoveIt是ROS里做运动规划的核心工具。安装很简单,但版本要注意:
# 安装MoveIt核心包
sudo apt install ros-noetic-moveit
# 安装MoveIt可视化插件(可选,但推荐)
sudo apt install ros-noetic-moveit-visual-tools
装完后,你可以用这个命令测试一下:
roslaunch moveit_setup_assistant setup_assistant.launch
如果能弹出图形界面,说明MoveIt装好了。这个工具后面我们会用来配置机械臂。
避坑指南:我曾经在装MoveIt时遇到依赖冲突,原因是之前装了ROS的某个旧包。解决办法是执行 sudo apt install ros-noetic-moveit --fix-missing,或者干脆 sudo apt --fix-broken install 修复依赖。
2.4 激光雷达驱动安装
激光雷达的驱动因型号而异。这里我以最常见的思岚(Slamtec)RPLIDAR A1/A2为例,其他型号(如镭神、Velodyne)原理类似,只是驱动包不同。
2.4.1 安装RPLIDAR驱动
# 创建工作空间
mkdir -p ~/lidar_ws/src
cd ~/lidar_ws/src
# 克隆驱动包
git clone https://github.com/Slamtec/rplidar_ros.git
# 编译
cd ~/lidar_ws
catkin_make
# 配置环境
echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
2.4.2 测试雷达
把雷达通过USB接到电脑,先查看设备端口:
ls -l /dev/ttyUSB*
一般会显示 /dev/ttyUSB0。然后给权限:
sudo chmod 666 /dev/ttyUSB0
启动雷达驱动:
roslaunch rplidar_ros rplidar.launch
如果一切正常,你会看到雷达开始旋转,终端输出扫描数据。再开一个终端,用RViz查看:
rviz
在RViz里添加 LaserScan 话题,选择 /scan,就能看到雷达点云了。
注意:每次拔插雷达后,端口号可能变化。我建议写一个udev规则固定端口,后面章节会详细讲。另外,雷达的供电要稳,USB 2.0口有时供电不足,会导致扫描数据断断续续。
2.5 环境验证与常见问题
装完所有东西后,我建议做一个快速验证:
| 组件 | 验证命令 | 预期结果 |
|---|---|---|
| ROS Noetic | roscore |
启动成功,无报错 |
| MoveIt | roslaunch moveit_setup_assistant setup_assistant.launch |
弹出图形界面 |
| 激光雷达 | roslaunch rplidar_ros rplidar.launch |
雷达旋转,/scan话题有数据 |
如果某个组件验证失败,别慌。常见问题及解决办法:
- roscore启动报“Unable to contact my own server”:检查
~/.bashrc里有没有设置ROS_MASTER_URI,如果有,先注释掉。 - catkin_make编译报错:多半是依赖缺失。执行
rosdep install --from-paths src --ignore-src -r -y自动安装依赖。 - 雷达不转或没数据:检查USB权限,或者换个USB口。我遇到过USB 3.0口不兼容的情况,换到2.0口就好了。
总结一下:环境搭建是体力活,但也是基本功。按照上面的步骤走,一般半小时内能搞定。如果遇到问题,先看终端报错信息,大部分问题都能从报错里找到线索。实在不行,重启一下电脑——别笑,我遇到过好几次是系统缓存导致的问题,重启就好了。