ROS2机器人避障实战:从传感器融合到动态窗口法
1. 从零开始:搭建你的ROS2避障机器人开发环境
嘿,朋友们,我是老张,在机器人这行摸爬滚打十几年了,从最早的ROS1玩到现在的ROS2,亲手调试过的避障机器人少说也有几十台。今天咱们不聊那些虚头巴脑的理论,直接上手,带你从零开始,把一个室内移动机器人的避障系统给“跑”起来。我知道很多刚入门的兄弟,一看到“传感器融合”、“动态窗口法”这些词就头大,感觉门槛很高。别怕,跟着我的步骤走,我保证你能把这一套东西都装好,并且理解每一步在干嘛。
首先,你得有个“地盘”。我强烈建议你使用 Ubuntu 22.04 LTS 作为操作系统,这是目前ROS2 Humble Hawksbill最稳定、支持最好的平台。别在Windows上折腾,那纯粹是给自己找不痛快。系统装好后,第一件事就是设置软件源。打开终端,把下面这行命令敲进去,这是ROS官方提供的安装脚本,稳得很。
sudo apt update && sudo apt install curl gnupg lsb-release 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 $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null 源设置好了,就可以安装ROS2 Humble了。这里有个小技巧,如果你只是做应用开发,安装桌面版(desktop)就足够了,它包含了ROS、RViz、示例这些核心工具。但如果你是深度玩家,想自己编译一些底层包,那就装基础版(base)。咱们今天的目标是快速出效果,所以直接装桌面版。
sudo apt update sudo apt install ros-humble-desktop 安装过程可能会花点时间,喝杯咖啡等着就行。装完之后,千万别忘了最关键的一步:把ROS2的环境变量加到你的bash配置里。每次打开新终端,你都需要“激活”这个环境,否则系统找不到ROS2的命令。把下面这行加到你的 ~/.bashrc 文件末尾。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc 环境搭好了,咱们来验证一下。打开两个终端窗口。在第一个窗口里,启动一个“说”话题的节点:ros2 run demo_nodes_cpp talker。在第二个窗口里,启动一个“听”话题的节点:ros2 run demo_nodes_py listener。如果你能看到 talker 在不停发送消息,而 listener 在同步接收并打印出来,恭喜你,ROS2的核心通信机制工作正常,你的基础环境已经妥了!
但这只是个开始。我们的机器人需要“眼睛”和“大脑”。接下来,我们要安装今天的主角——Nav2(Navigation2)导航框架。它是ROS2里做路径规划和避障的“瑞士军刀”,我们后面所有的避障算法都要集成到它里面。安装命令很简单:
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-turtlebot3* 这里我顺便把TurtleBot3的仿真包也装上了。TurtleBot3是个非常经典的入门级机器人模型,我们用它来做仿真测试,成本为零,效果直观,是学习和调试的绝佳工具。没有实体机器人?完全没关系,在仿真环境里,我们一样可以玩转所有避障逻辑。
2. 给机器人装上“眼睛”:多传感器数据融合实战
机器人要避障,首先得“看见”障碍物。只靠一种传感器,就像人蒙上一只眼睛走路,容易判断失误。在复杂的室内环境里,我们需要结合多种传感器的长处,这就是传感器融合。咱们常用的有激光雷达(LiDAR)和深度摄像头(比如Intel Realsense),一个擅长精确测距,一个擅长识别物体和纹理。
我们先在仿真环境里把激光雷达跑起来。使用TurtleBot3的