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口就好了。

总结一下:环境搭建是体力活,但也是基本功。按照上面的步骤走,一般半小时内能搞定。如果遇到问题,先看终端报错信息,大部分问题都能从报错里找到线索。实在不行,重启一下电脑——别笑,我遇到过好几次是系统缓存导致的问题,重启就好了。

环境搭建整体架构 Ubuntu 20.04 ROS Noetic MoveIt 激光雷达驱动 运动规划 运动学 碰撞检测 可视化(RViz) 串口通信 数据解析 话题发布 TF变换 所有组件在Ubuntu 20.04 + ROS Noetic上协同工作