第二章:ROS环境搭建——Ubuntu系统安装、ROS Noetic安装与配置、工作空间创建与编译
各位同学,大家好。欢迎来到《激光雷达避障在无人机中的实战应用》的第二讲。
上一章我们聊了激光雷达避障的整体框架。今天,咱们得先把“地基”打牢。说白了,就是搭建ROS开发环境。没有这个环境,后面所有的代码、算法都跑不起来。
我个人习惯把这一步叫做“磨刀不误砍柴工”。环境搭得好,后面能省下80%的调试时间。我见过太多同学,代码写得很漂亮,结果一编译全是环境问题,最后心态崩了。嗯,咱们今天就把这个坑填平。
本章核心目标:在Ubuntu 20.04系统上,完整安装并配置ROS Noetic,并成功创建、编译你的第一个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
第一次编译会生成 build 和 devel 两个目录。编译成功后,需要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 init和rosdep update是高频坑点 - 工作空间创建后,记得source环境变量
- 遇到问题先看错误日志,大部分问题都能在ROS wiki上找到答案