第一章:课程导学与环境总览
大家好,我是你们这门课的主讲。做自动驾驶仿真这些年,我踩过不少坑,也积累了一些经验。今天咱们就从零开始,把ROS2和自动驾驶仿真这摊事儿先捋清楚。
说实话,很多初学者一上来就急着跑代码,结果环境配了三天还没跑通。我当年也干过这种傻事。所以这一章,咱们先把地基打牢。
1.1 ROS2与自动驾驶仿真概览
ROS2,全称Robot Operating System 2,说白了就是一个机器人开发的"操作系统"。但它不是真正的操作系统,而是一个分布式通信框架。你想想看,一辆自动驾驶车上可能有十几个传感器、三四个计算单元,它们之间怎么高效通信?ROS2就是干这个的。
自动驾驶仿真呢,就是在计算机里模拟真实的路况、传感器数据和车辆动力学。为什么要做仿真?原因很简单——
- 成本低:在真实道路上测试一次,油钱、场地费、安全员成本加起来少说几千块。仿真里跑一万公里,电费都花不了多少。
- 场景丰富:极端天气、突发事故、传感器故障……这些在真实测试中很难复现,仿真里可以随意构造。
- 迭代快:改一行代码,仿真里立刻能看到效果。真实测试?等车调度、等场地、等审批,黄花菜都凉了。
我个人习惯把自动驾驶仿真分成三个层次:
| 层次 | 内容 | 常用工具 |
|---|---|---|
| 算法仿真 | 验证感知、规划、控制算法 | ROS2 + 自定义节点 |
| 场景仿真 | 模拟交通流、路况、天气 | CARLA、SUMO |
| 整车仿真 | 车辆动力学、传感器模型 | Gazebo、CarSim |
这门课,咱们三个层次都会覆盖到。
1.2 课程目标与学习路径
这门课的目标很明确:让你能独立搭建一套完整的ROS2自动驾驶仿真系统。从环境搭建,到传感器仿真,再到感知、规划、控制算法的部署,最后能在仿真里跑起来一辆虚拟的自动驾驶车。
我建议的学习路径是这样的:
- 环境准备(第1-3章):装好Ubuntu、ROS2、仿真工具链
- ROS2核心(第4-8章):掌握节点、话题、服务、参数、动作
- 仿真工具(第9-14章):Gazebo、CARLA、传感器仿真
- 自动驾驶算法(第15-22章):感知、定位、规划、控制
- 系统集成(第23-30章):把各部分串起来,跑通完整仿真
嗯,这里要注意:千万别跳步。我见过太多人直接跳到第20章,结果连话题通信都没搞明白,最后卡在那里进退两难。
核心原则:每章学完,一定要动手敲一遍代码。光看不练,等于白学。
1.3 Ubuntu与ROS2 Humble安装
咱们这门课统一使用 Ubuntu 22.04 + ROS2 Humble。为什么选这个组合?因为Humble是LTS版本,稳定,社区支持好,而且和Ubuntu 22.04的兼容性最好。
安装步骤其实不复杂,但有几个坑我得提前说:
警告:安装前请确保你的Ubuntu系统是22.04版本,并且已经更新到最新。用 lsb_release -a 检查版本号。
好,咱们一步步来:
第一步:设置语言环境
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
这一步很多人会忽略。我曾经在中文系统下装ROS2,结果编译时各种乱码报错,折腾了一下午才发现是语言环境的问题。
第二步:添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
第三步:安装ROS2 Humble
sudo apt install ros-humble-desktop
这个包包含了ROS2的核心功能、可视化工具和常用库,大概2-3GB。网速慢的话,建议找个好点的网络环境。
小技巧:如果你只需要基础功能,可以安装 ros-humble-ros-base,只有几百MB。但咱们做仿真,还是建议装完整版。
第四步:配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
这一步做完,你打开终端就能直接用ROS2的命令了。
1.4 系统验证
装完了,怎么知道装没装好?咱们跑个小例子验证一下。
打开两个终端,第一个终端运行:
ros2 run demo_nodes_cpp talker
第二个终端运行:
ros2 run demo_nodes_py listener
如果看到类似这样的输出:
[INFO] [1700000000.123456789] [talker]: Publishing: 'Hello World: 1'
[INFO] [1700000000.123456789] [listener]: I heard: 'Hello World: 1'
恭喜你,ROS2已经成功安装并运行了!
为什么会这样?说白了,talker节点在发布"Hello World"消息,listener节点在订阅并打印出来。这就是ROS2最基本的通信模式——发布/订阅。
我个人习惯在验证时再跑一个命令:
ros2 node list
这个命令会列出当前所有活跃的节点。如果看到 /talker 和 /listener,说明节点注册正常。
验证清单:
- ✅ talker和listener能正常通信
- ✅ ros2 node list能列出节点
- ✅ ros2 topic list能列出话题
- ✅ ros2 topic echo /chatter能看到消息内容
嗯,到这里,咱们的环境就全部就绪了。接下来,我会带你一步步深入ROS2的核心机制,然后进入仿真世界。
可可精品资料库