1. 课程导学与环境搭建
1.1 为什么我们要学这个?
说实话,我见过太多做ROS2的朋友,一提到跟嵌入式设备通信就头疼。要么是串口数据对不上,要么是WiFi延迟高得离谱。我自己刚入行那会儿,也踩过不少坑。
这门课,说白了就是帮你打通ROS2和嵌入式设备之间的「最后一公里」。我们会从最基础的环境搭建开始,一步步带你掌握Micro-ROS这个利器。你想想看,当你的机器人能流畅地跟STM32、ESP32这些芯片对话时,那种感觉还是很爽的。
我个人习惯是,先把地基打牢。所以第一章,咱们就专心把环境搭好。别嫌麻烦,这一步做好了,后面能省80%的调试时间。
1.2 整体知识框架
先给你看一张图,这是我做课程设计时画的。它把本章要讲的内容串起来了:
嗯,这张图就是咱们这章要走的路线。从通信原理到系统安装,再到ROS2和Micro-ROS,一步都不能跳。
1.3 ROS2与嵌入式通信概述
先聊聊通信方式。ROS2跟嵌入式设备通信,常见的有这么几种:
- 串口(UART):最经典的方式。我在项目里用过它跟STM32通信,稳定可靠,就是速度慢点。
- WiFi(TCP/UDP):适合距离远的场景。但要注意,WiFi延迟不稳定,实时性要求高的场合要小心。
- CAN总线:工业级通信,抗干扰强。我之前做AGV小车时,电机控制全靠它。
- Micro-ROS:这是咱们课程的主角。它把ROS2的通信协议「压缩」到嵌入式设备上,让单片机也能直接发Topic、调Service。
核心观点:Micro-ROS不是替代传统通信方式,而是让嵌入式设备「原生」融入ROS2生态。说白了,就是让单片机像一台迷你ROS2节点一样工作。
1.4 Ubuntu 22.04 系统安装
ROS2 Humble官方推荐用Ubuntu 22.04。我个人习惯用双系统,但如果你不想折腾,虚拟机也行。不过要注意,USB设备透传有时会出问题。
安装步骤其实不复杂:
- 去Ubuntu官网下载22.04 LTS的ISO镜像
- 用Rufus或balenaEtcher制作启动U盘
- BIOS里设置U盘启动,开始安装
- 分区时建议:/ 分区给50GB,swap给8GB,剩下的给/home
避坑指南:我曾经在安装时选了「最小安装」,结果后面编译Micro-ROS时缺了一堆依赖。建议选「正常安装」,把基础开发工具都带上。
1.5 ROS2 Humble 安装
ROS2 Humble安装,我推荐用apt方式。干净、省心。别自己从源码编译,除非你想体验一下什么叫「编译两小时,报错三分钟」。
打开终端,逐条执行:
# 设置locale
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
# 添加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
# 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop
# 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装完成后,跑一下小乌龟测试:
ros2 run turtlesim turtlesim_node
如果看到小乌龟窗口,恭喜你,ROS2装好了。
小技巧:我习惯把 source /opt/ros/humble/setup.bash 写到 ~/.bashrc 里,这样每次打开终端就不用手动source了。省事。
1.6 Micro-ROS 环境搭建
Micro-ROS的环境搭建,是本章的重头戏。它分两部分:PC端的工具链,和嵌入式端的固件库。
先装PC端工具:
# 安装依赖
sudo apt install python3-pip cmake gcc-arm-none-eabi
# 安装Micro-ROS工具
pip3 install micro_ros_setup
# 创建工作空间
mkdir -p ~/microros_ws/src
cd ~/microros_ws
ros2 run micro_ros_setup create_agent_ws.sh
# 编译Micro-ROS Agent
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.bash
然后测试一下Agent能否启动:
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888
如果看到类似 [info] UDP agent initialized 的日志,说明Agent跑起来了。
注意:我曾经在编译Agent时卡在 rmw_microxrcedds 的依赖上。后来发现是CMake版本太低。建议先检查一下:cmake --version,确保版本不低于3.16。
1.7 验证整个链路
环境搭好了,咱们来个快速验证。用Micro-ROS的示例程序,在PC上模拟一个嵌入式节点:
# 启动Agent(新终端)
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888
# 启动示例节点(另一个终端)
ros2 run micro_ros_demos_rclc ping_pong
# 查看话题
ros2 topic list
如果看到 /micro_ros_ping 和 /micro_ros_pong 这两个话题,说明Micro-ROS通信链路已经通了。
到这里,你的环境就全部就绪了。从Ubuntu系统到ROS2 Humble,再到Micro-ROS工具链,每一步都验证通过。后面咱们就可以放心地往嵌入式设备上移植了。
1.8 本章小结
这一章我们做了三件事:理解了ROS2与嵌入式通信的几种方式,装好了Ubuntu 22.04和ROS2 Humble,最后搭起了Micro-ROS环境。嗯,说实话,环境搭建是最枯燥的部分,但也是最重要的。我见过太多人因为环境没配好,后面调试时反复折腾。
你如果跟着做完了,现在应该能跑通Micro-ROS的示例了。如果卡在哪一步,别急,回头检查一下依赖版本和网络连接。我曾经在装ROS2时因为源的问题折腾了一下午,后来换了清华源就搞定了。
下一章,咱们开始写真正的嵌入式代码。到时候你会看到,Micro-ROS在STM32上跑起来的样子,还是挺酷的。
可可精品资料库