ROS开发专栏---ROS2系统架构简介及Gazebo 仿真平台搭建---适配Ubuntu 22.04

🎬 渡水无言个人主页渡水无言

专栏传送门 : 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》

专栏传送门 : 《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏

专栏传送门《产品测评专栏》 《Ai智能体专栏) 《ROS开发专栏

⭐️流水不争先,争的是滔滔不绝

📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生

| 省级优秀毕业生获得者 | csdn新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生

在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连

目录

前言

[一、ROS2 系统架构](#一、ROS2 系统架构)

[1.1、 宏观组成:四大核心模块](#1.1、 宏观组成:四大核心模块)

[1.2、ROS2 从底层到应用层分为三层](#1.2、ROS2 从底层到应用层分为三层)

[二、ROS2 工作空间创建](#二、ROS2 工作空间创建)

[三、wpr_simulation2 开源仿真项目环境搭建及测试](#三、wpr_simulation2 开源仿真项目环境搭建及测试)

[3.1、安装 Git](#3.1、安装 Git)

3.2、下载仿真包

3.3、一键安装依赖

3.4、编译工作空间

3.5、加载环境

[3.6、启动Gazebo 仿真](#3.6、启动Gazebo 仿真)

3.7、测试机器人控制

[四、必备工具安装(Terminator 多窗口终端)](#四、必备工具安装(Terminator 多窗口终端))

总结


前言

上一期博客我们完成了ros2的安装,本期博客我们来搭建一套完整可运行的 ROS2 仿真环境为后续 SLAM、导航、视觉等进阶学习打下坚实基础。


一、ROS2 系统架构

ROS2 的架构可以从两个维度理解:宏观组成模块 和 三层分层架构,两者结合就能完整理解 ROS2 的设计逻辑。

1.1、 宏观组成:四大核心模块

ROS2 整体由四大模块构成,这也是 ROS2 生态的基础:

ROS2 = 通信层(Plumbing) + 工具层(Tools) + 功能层(Capabilities) + 社区(Community)

模块 核心作用 典型例子
通信层(Plumbing) 负责节点间数据传输,是 ROS2 的 "血管系统" 话题(Topic)、服务(Service)、动作(Action)、DDS 通信
工具层(Tools) 提供开发、调试、可视化工具,提升开发效率 rviz2rqtros2 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 Layer(DDS 抽象层):对不同 DDS 实现(如 Cyclone DDS、Fast DDS)做了统一封装,让上层应用可以灵活切换 DDS 后端;

Client Library(客户端库):提供 C++/Python 等语言的 API,开发者通过它调用 ROS2 的通信功能,无需直接操作 DDS;

Intra-process API(进程内通信接口):优化同一进程内节点的通信效率,避免跨进程通信的性能损耗。

应用层(Application Layer)

这是开发者的主要工作区域,核心是编写节点(Node)程序。开发者通过节点实现机器人的感知、决策、控制等功能,比如:

激光雷达节点读取传感器数据并发布话题;

导航节点订阅传感器数据,输出控制指令;

机械臂控制节点接收指令,驱动硬件执行动作。

二、ROS2 工作空间创建

安装好ROS2以及应用程序后,因为应用程序都是一些二进制的可执行文件,如果需要从源代码开始构建ROS2应用程序,就需要建立一个工作空间。标准结构:ros2_ws/src

cpp 复制代码
mkdir -p ~/ros2_ws/src

三、wpr_simulation2 开源仿真项目环境搭建及测试

3.1、安装 Git

先安装git,这样我们便能去github上拉取项目,指令如下:

cpp 复制代码
sudo apt install git

3.2、下载仿真包

cpp 复制代码
cd ~/ros2_ws/src
git clone https://gitee.com/s-robot/wpr_simulation2.git

下载完,就能看到多了个文件夹,这就是源码

3.3、一键安装依赖

下载好源码之后,我们得先安装依赖

cpp 复制代码
cd wpr_simulation2/scripts
./install_for_humble.sh

3.4、编译工作空间

安装好依赖之后,我们就可以进行编译了

cpp 复制代码
cd ~/ros2_ws
colcon build --symlink-install

编译完之后,会多出以下三个文件夹

文件夹 编译时是否生成 核心作用 能否安全删除
src ❌(手动创建) 存放源码 ❌(删了就没代码了)
build 存放编译中间文件 ✅(删了可重新编译)
install 存放最终安装产物 ✅(删了可重新编译,需重新 source)
log 存放编译日志 ✅(删了不影响编译,只是丢了历史日志)

3.5、加载环境

编译好了之后,我们还是不能启动仿真项目,此时我们得加载环境

cpp 复制代码
source install/setup.bash

3.6、启动Gazebo 仿真

之前的步骤完成之后,我们就可以启动Gazebo 仿真了

cpp 复制代码
ros2 launch wpr_simulation2 wpb_simple.launch.py

仿真软件如下图所示:

3.7、测试机器人控制

首先我们得安装rqt_robot_steering工具包,输入以下命令:

cpp 复制代码
sudo apt update
sudo apt install ros-humble-rqt-robot-steering

启动成功后,新开终端,输入以下命令:

cpp 复制代码
ros2 run rqt_robot_steering rqt_robot_steering

此时我们可以拖动滑块进行机器人的控制了,如下图所示:

四、必备工具安装(Terminator 多窗口终端)

Terminator 多窗口终端安装,输入以下命令:

cpp 复制代码
sudo apt install terminator

安装完之后,可以按快捷键直接启动:

cpp 复制代码
Ctrl + Alt + T

比如我水平分割之后,如下图所示,这样便可以方便的多窗口终端操作了。

这样便能方便的进行多端开发了!!

常用快捷建:

垂直分屏(左右):Ctrl + Shift + E

水平分屏(上下):Ctrl + Shift + O

关闭一个屏:Ctrl + Shift + W

全屏一个屏:Ctrl + Shift + X

我们这里再修改一下复制粘贴的快捷键,在 Terminator 窗口里 右键 → 首选项,然后找到快捷键设置,修改快捷键的按键即可,如下图所示:


总结

本期博客我们成功部署 wpr_simulation2 开源仿真项目,启动 Gazebo 并实现机器人可视化控制,为后续 SLAM、导航、视觉等进阶学习打下坚实基础。

相关推荐
济6175 小时前
ROS开发专栏---创建软件包 和编写第一个节点---适配Ubuntu 22.04
嵌入式·ros2·机器人方向
kyle~1 天前
机器人感知 --- 多相机传感时间误差分析
linux·c++·数码相机·机器人·ros2·传感器
勤自省1 天前
ROS2 + OpenCV 实战教程:人脸识别、物体跟踪、ArUco 二维码识别初级
人工智能·opencv·ubuntu·计算机视觉·ros2
kyle~1 天前
机器人感知---工业相机硬触发、时间戳同步( PTP)与 ROS2 驱动时间戳设计
linux·c++·机器人·ros2
liu-yonggang1 天前
ROS2 性能优化指南
性能优化·ros2
波特率1152002 天前
在ROS2当中两种rmw比较(CycloneDDS和FastDDS)
ros·ros2·dds
kyle~3 天前
CDR--- 数据序列化格式(DDS的底层数据支持)
机器人·信息与通信·ros2·dds
kyle~3 天前
RTPS(Real-Time Publish-Subscribe)---DDS的传输协议
c++·机器人·ros2
MIXLLRED3 天前
Ubuntu 22.04 + ROS2 Humble 环境下对 RealSense D435 进行深度校准
ros2·校准·d435·深度图校准