ROS开发专栏---ROS2系统架构简介及Gazebo 仿真平台搭建---适配Ubuntu 22.04 渡水无言个人主页渡水无言❄专栏传送门《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》❄专栏传送门《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》❄专栏传送门《产品测评专栏》 《Ai智能体专栏 《ROS开发专栏》⭐️流水不争先争的是滔滔不绝博主简介第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生| 省级优秀毕业生获得者 | csdn新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生在这里主要分享自己学习的linux嵌入式领域知识有分享错误或者不足的地方欢迎大佬指导也欢迎各位大佬互相三连​目录前言一、ROS2 系统架构1.1、 宏观组成四大核心模块1.2、ROS2 从底层到应用层分为三层二、ROS2 工作空间创建三、wpr_simulation2 开源仿真项目环境搭建及测试3.1、安装 Git3.2、下载仿真包3.3、一键安装依赖3.4、编译工作空间3.5、加载环境3.6、启动Gazebo 仿真3.7、测试机器人控制四、必备工具安装Terminator 多窗口终端总结前言上一期博客我们完成了ros2的安装本期博客我们来搭建一套完整可运行的 ROS2 仿真环境为后续 SLAM、导航、视觉等进阶学习打下坚实基础。一、ROS2 系统架构ROS2 的架构可以从两个维度理解宏观组成模块 和 三层分层架构两者结合就能完整理解 ROS2 的设计逻辑。1.1、 宏观组成四大核心模块ROS2 整体由四大模块构成这也是 ROS2 生态的基础ROS2 通信层Plumbing 工具层Tools 功能层Capabilities 社区Community模块核心作用典型例子通信层Plumbing负责节点间数据传输是 ROS2 的 “血管系统”话题Topic、服务Service、动作Action、DDS 通信工具层Tools提供开发、调试、可视化工具提升开发效率rviz2、rqt、ros2 cli命令行工具功能层Capabilities提供机器人通用功能的可复用软件包导航栈Nav2、SLAM 建图、机械臂控制、传感器驱动社区Community提供生态支持包括文档、开源包、技术交流ROS 官方仓库、第三方开源包、开发者社区1.2、ROS2 从底层到应用层分为三层操作系统层OS Layer位于架构最底层是 ROS2 的运行基础支持 Linux、Windows、Mac、RTOS实时操作系统等多平台。ROS2 对操作系统做了抽象上层应用无需关注底层平台差异实现了跨平台兼容性。中间层Middleware Layer这是 ROS2 通信能力的核心也是与 ROS1 差异最大的部分分为 3 个关键部分DDS数据分发服务底层通信中间件提供去中心化、实时、可靠的分布式通信能力是 ROS2 通信的基石Abstract DDS LayerDDS 抽象层对不同 DDS 实现如 Cyclone DDS、Fast DDS做了统一封装让上层应用可以灵活切换 DDS 后端Client Library客户端库提供 C/Python 等语言的 API开发者通过它调用 ROS2 的通信功能无需直接操作 DDSIntra-process API进程内通信接口优化同一进程内节点的通信效率避免跨进程通信的性能损耗。应用层Application Layer这是开发者的主要工作区域核心是编写节点Node程序。开发者通过节点实现机器人的感知、决策、控制等功能比如激光雷达节点读取传感器数据并发布话题导航节点订阅传感器数据输出控制指令机械臂控制节点接收指令驱动硬件执行动作。二、ROS2 工作空间创建安装好ROS2以及应用程序后因为应用程序都是一些二进制的可执行文件如果需要从源代码开始构建ROS2应用程序就需要建立一个工作空间。标准结构ros2_ws/src。mkdir -p ~/ros2_ws/src三、wpr_simulation2 开源仿真项目环境搭建及测试3.1、安装 Git先安装git这样我们便能去github上拉取项目指令如下sudo apt install git3.2、下载仿真包cd ~/ros2_ws/src git clone https://gitee.com/s-robot/wpr_simulation2.git下载完就能看到多了个文件夹这就是源码3.3、一键安装依赖下载好源码之后我们得先安装依赖cd wpr_simulation2/scripts ./install_for_humble.sh3.4、编译工作空间安装好依赖之后我们就可以进行编译了cd ~/ros2_ws colcon build --symlink-install编译完之后会多出以下三个文件夹文件夹编译时是否生成核心作用能否安全删除src❌手动创建存放源码❌删了就没代码了build✅存放编译中间文件✅删了可重新编译install✅存放最终安装产物✅删了可重新编译需重新 sourcelog✅存放编译日志✅删了不影响编译只是丢了历史日志3.5、加载环境编译好了之后我们还是不能启动仿真项目此时我们得加载环境source install/setup.bash3.6、启动Gazebo 仿真之前的步骤完成之后我们就可以启动Gazebo 仿真了ros2 launch wpr_simulation2 wpb_simple.launch.py仿真软件如下图所示3.7、测试机器人控制首先我们得安装rqt_robot_steering工具包输入以下命令sudo apt update sudo apt install ros-humble-rqt-robot-steering启动成功后新开终端输入以下命令ros2 run rqt_robot_steering rqt_robot_steering此时我们可以拖动滑块进行机器人的控制了如下图所示:四、必备工具安装Terminator 多窗口终端Terminator 多窗口终端安装输入以下命令sudo apt install terminator安装完之后可以按快捷键直接启动Ctrl Alt T比如我水平分割之后如下图所示这样便可以方便的多窗口终端操作了。这样便能方便的进行多端开发了常用快捷建垂直分屏左右Ctrl Shift E水平分屏上下Ctrl Shift O关闭一个屏Ctrl Shift W全屏一个屏Ctrl Shift X我们这里再修改一下复制粘贴的快捷键在 Terminator 窗口里右键 → 首选项然后找到快捷键设置修改快捷键的按键即可如下图所示总结本期博客我们成功部署 wpr_simulation2 开源仿真项目启动 Gazebo 并实现机器人可视化控制为后续 SLAM、导航、视觉等进阶学习打下坚实基础。