第二章:ROS环境搭建——Ubuntu系统安装、ROS Noetic安装与配置、工作空间创建与编译

各位同学,大家好。欢迎来到《激光雷达避障在无人机中的实战应用》的第二讲。

上一章我们聊了激光雷达避障的整体框架。今天,咱们得先把“地基”打牢。说白了,就是搭建ROS开发环境。没有这个环境,后面所有的代码、算法都跑不起来。

我个人习惯把这一步叫做“磨刀不误砍柴工”。环境搭得好,后面能省下80%的调试时间。我见过太多同学,代码写得很漂亮,结果一编译全是环境问题,最后心态崩了。嗯,咱们今天就把这个坑填平。

本章核心目标:在Ubuntu 20.04系统上,完整安装并配置ROS Noetic,并成功创建、编译你的第一个ROS工作空间。

ROS环境搭建知识体系 ROS环境搭建 ① Ubuntu 20.04 安装 ② ROS Noetic 安装 ③ 工作空间创建 系统分区 驱动与源配置 rosdep初始化 环境变量配置 catkin_make 最终目标:一个可编译、可运行的ROS开发环境

2.1 Ubuntu 20.04 系统安装——选对版本很重要

ROS Noetic 官方支持的Ubuntu版本是20.04(Focal Fossa)。这一点请大家务必记住。你想想看,如果装了18.04或者22.04,后面会有一堆依赖冲突等着你。我在项目中就吃过这个亏,当时图省事用了最新版Ubuntu,结果折腾了两天才把环境对齐。

安装要点:

  • 系统镜像:去Ubuntu官网下载 ubuntu-20.04.6-desktop-amd64.iso
  • 磁盘分区:建议至少给Ubuntu分配80GB空间。如果你要做激光雷达的数据采集,硬盘越大越好。我一般给200GB。
  • 软件源:安装完成后,第一时间更换国内源(阿里云、清华、中科大都可以)。不然下载速度会让你怀疑人生。

小技巧:安装时选择“为图形或无线硬件安装第三方软件”,可以省去后续安装NVIDIA驱动的麻烦。如果你用的是NVIDIA显卡,这一步很关键。

2.2 ROS Noetic 安装——一步一步来

ROS的安装流程其实很固定。我建议你严格按照官方wiki的步骤来,但要注意几个容易翻车的地方。

第一步:添加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 -

第三步:安装ROS Noetic

这里我推荐安装完整桌面版,包含了所有常用工具和仿真器。

sudo apt update
sudo apt install ros-noetic-desktop-full

注意:安装过程可能需要20-30分钟,取决于你的网速。如果中途断网或报错,不要慌,重新执行 sudo apt install ros-noetic-desktop-full 即可,它会继续下载未完成的部分。

第四步:初始化rosdep

rosdep是用来解决依赖关系的工具。很多新手在这里卡住。

sudo rosdep init
rosdep update

如果 sudo rosdep init 报错,多半是网络问题。我曾经遇到过,解决方案是手动创建配置文件:

sudo mkdir -p /etc/ros/rosdep/sources.list.d
sudo nano /etc/ros/rosdep/sources.list.d/20-default.list

然后写入:

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, Indigo, Jade, Kinetic, Lunar, Melodic, Noetic)
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

第五步:设置环境变量

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证是否安装成功:

roscore

如果看到类似下面的输出,说明ROS核心启动成功:

... logging to /home/yourname/.ros/log/...
started core service [/rosout]

2.3 工作空间创建与编译——你的第一个ROS项目

工作空间(Workspace)是ROS开发的基本单元。说白了,就是放代码的地方。我习惯在 ~/catkin_ws 下工作。

创建步骤:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make

第一次编译会生成 builddevel 两个目录。编译成功后,需要source一下:

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证工作空间:运行 echo $ROS_PACKAGE_PATH,如果输出中包含 /home/你的用户名/catkin_ws/src,说明配置成功。

创建一个测试包:

cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make

如果编译没有报错,恭喜你,ROS环境搭建完成!

避坑指南:我曾经遇到过 catkin_make 报错说找不到Python模块。原因是系统默认Python版本不对。ROS Noetic需要Python 3。检查一下:python3 --version。如果版本低于3.8,建议升级。

2.4 常见问题与解决方案

问题现象 可能原因 解决方案
roscore启动失败 ROS环境变量未配置 检查 ~/.bashrc 中是否有 source /opt/ros/noetic/setup.bash
catkin_make 找不到命令 catkin工具未安装 sudo apt install python3-catkin-tools
rosdep update 超时 网络问题或DNS解析失败 尝试使用代理或手动配置rosdep源
编译时提示缺少依赖 未安装相关ROS包 rosdep install --from-paths src --ignore-src -r -y

好了,到这里,ROS环境搭建就全部完成了。你想想看,其实步骤并不多,关键是要细心。我当年第一次搭环境时,光是rosdep就折腾了三个小时。现在回头看,其实就是一个小配置问题。

环境搭好之后,下一章我们就可以开始写真正的激光雷达避障代码了。到时候你会发现,今天花的时间,绝对值。

本章总结:

  • Ubuntu 20.04 是ROS Noetic的最佳搭档
  • 安装ROS时,rosdep initrosdep update 是高频坑点
  • 工作空间创建后,记得source环境变量
  • 遇到问题先看错误日志,大部分问题都能在ROS wiki上找到答案
专注资料整理