Bläddra i källkod

[feat]:基本搬运到humble

鱼香ROS 3 år sedan
förälder
incheckning
2717e9cf73
28 ändrade filer med 378 tillägg och 9 borttagningar
  1. BIN
      docs/humble/chapt1/advanced/2.中间件DDS架构/imgs/v2-471abbce0a08b249637dc603f56dc9cf_b.png
  2. BIN
      docs/humble/chapt1/advanced/2.中间件DDS架构/imgs/v2-e6dbd2aa59c57d6bda2fcb25d83f1a34_b.png
  3. 71 6
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具.md
  4. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/1620-16541024020071.jpeg
  5. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/1620.jpeg
  6. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602001924041.png
  7. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602003519710.png
  8. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602003959225.png
  9. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602004014904.png
  10. BIN
      docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602004545523.png
  11. 113 1
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件.md
  12. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720113510268.png
  13. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135816630.png
  14. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135841441.png
  15. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135911694.png
  16. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135941635.png
  17. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720140054631.png
  18. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720140207445.png
  19. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210723125628815.png
  20. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210909005135905.png
  21. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210909005232983.png
  22. BIN
      docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/imageurl=%2Flinux%2F_next%2Fstatic%2Fmedia%2Fhelp16.e32b0f4a.png&w=2048&q=75
  23. 85 1
      docs/humble/chapt1/get_started/1.ROS2前世今生.md
  24. BIN
      docs/humble/chapt1/get_started/1.ROS2前世今生/imgs/image-20210717150453689.png
  25. BIN
      docs/humble/chapt1/get_started/1.ROS2前世今生/imgs/image-20210908230421411.png
  26. BIN
      docs/humble/chapt1/get_started/1.ROS2前世今生/imgs/image-20220602012621600.png
  27. 109 1
      docs/humble/chapt1/get_started/2.ROS与ROS2对比.md
  28. BIN
      docs/humble/chapt1/get_started/2.ROS与ROS2对比/imgs/image-20210717153612576.png

BIN
docs/humble/chapt1/advanced/2.中间件DDS架构/imgs/v2-471abbce0a08b249637dc603f56dc9cf_b.png


BIN
docs/humble/chapt1/advanced/2.中间件DDS架构/imgs/v2-e6dbd2aa59c57d6bda2fcb25d83f1a34_b.png


+ 71 - 6
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具.md

@@ -1,5 +1,9 @@
 # 4.玩转Ubuntu之编程工具
 
+做机器人最常用的两门语言就是C++和Python,同时这两门语言也是编程语言流行度排行榜数一数二的。
+
+![image-20220602004545523](4.玩转Ubuntu之编程工具/imgs/image-20220602004545523.png)
+
 听说牛逼的大佬都用记事本写代码,这节小鱼带你在Linux版记事本之gedit上写一下C++和Python代码。
 
 ## 1.Hello FishRos
@@ -20,7 +24,7 @@ mkdir chapt1
 gedit hello_fishros.py
 ```
 
-
+![image-20220602004014904](4.玩转Ubuntu之编程工具/imgs/image-20220602004014904.png)
 
 接着你应该看到一个类似于记事本的东西,在里面输入下面一段代码,打印一句话
 
@@ -33,14 +37,12 @@ print("Hello FishRos!")
 关掉gedit,接着在终端输入下面的指令运行这段脚本
 
 ```
-python hello_fishros.py
+python3 hello_fishros.py
 ```
 
 如果一切正常,你将看到
 
-
-
-
+![image-20220602003959225](4.玩转Ubuntu之编程工具/imgs/image-20220602003959225.png)
 
 ### 1.2 C++版
 
@@ -68,7 +70,7 @@ int main(){
 
 保存代码,关闭gedit。
 
-![image-20220602001924041](C:\Users\PC\AppData\Roaming\Typora\typora-user-images\image-20220602001924041.png)
+![image-20220602001924041](4.玩转Ubuntu之编程工具/imgs/image-20220602001924041.png)
 
 更麻烦的是你还不能直接运行C++的代码,C++代码必须经过编译构建之后才能运行。
 
@@ -83,9 +85,72 @@ sudo apt install g++
 接着在终端输入下面的指令对刚刚的代码进行编译。
 
 ```
+g++ hello_fishros.cpp
+```
+
+接着使用`ls`指令,你应该可以看到一个叫做`a.out`的文件。恭喜,现在你可以运行了。
 
+输入下面的指令即可运行
+
+```
+./a.out
 ```
 
+![image-20220602003519710](4.玩转Ubuntu之编程工具/imgs/image-20220602003519710.png)
+
+> 请不要小看Linux中的`.`,它的用途很广,比如这里就是用于执行文件./文件名
+>
+> - [linux .(点)是什么意思-linux运维-PHP中文网](https://www.php.cn/linux-434268.html)
+
+
+
+## 2.为什么C++需要编译
+
+### 2.1 编译执行和解释执行的区别
+
+- [3分钟搞懂什么是编译执行和解释执行](https://cloud.tencent.com/developer/article/1894284)
+
+在知乎上看到一个比喻,非常好。
+
+编译相当于做好了一桌子菜,可以直接开吃了。
+
+![img](4.玩转Ubuntu之编程工具/imgs/1620.jpeg)
+
+而解释就相当于吃火锅,需要一边煮一边吃。
+
+![img](4.玩转Ubuntu之编程工具/imgs/1620-16541024020071.jpeg)
+
+那么自然,吃的效率也会低一些。
+
+### 2.2 编译执行
+
+编译执行需要在运行之前把代码翻译成计算机认识的二进制文件,执行的时候就不需要再次翻译了,计算机可以直接看的懂。
+
+C++的代码就是需要编译器进行翻译的,其翻译器的名字就叫做g++,该编译器非常的有名。
+
+可以参阅下面的文章
+
+- [g++是干什么用的 学c++一定要用这个么? - 知乎 (zhihu.com)](https://www.zhihu.com/question/389406095)
+- [GCC,G++介绍_Perz_01的博客-CSDN博客](https://blog.csdn.net/qq_24898229/article/details/124355442)
+
+
+
+### 2.3 解释执行
+
+Python可以说是解释执行的语言了,在运行前不需要翻译,运行时由解释器一句句解释运行即可。
+
+
+
+### 2.4 编译VS解释
+
+> [编译型语言VS解释型语言_Frank---7的博客-CSDN博客](https://blog.csdn.net/qq_45783660/article/details/119451738)
+
+- 编译型语言,执行速度快、效率高;依靠编译器、跨平台性差些。
+- 解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好。
+
+编译型的语言包括:C、C++、Delphi、Pascal、Fortran
+解释型的语言包括:Java、Basic、javascript
+
 
 
 

BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/1620-16541024020071.jpeg


BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/1620.jpeg


BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602001924041.png


BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602003519710.png


BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602003959225.png


BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602004014904.png


BIN
docs/humble/chapt1/basic/4.玩转Ubuntu之编程工具/imgs/image-20220602004545523.png


+ 113 - 1
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件.md

@@ -1,4 +1,116 @@
-**内容还在更新中,请关注公众号鱼香ROS,提前解锁新章节。**
+# 5.玩转Ubuntu之常用软件
+
+gedit虽然很好用,但是效率还是不太高,毕竟写错了代码也没提示。linux虽然好用,但是中文输入和微信QQ不好装,本节小鱼带你一一解决这些问题。
+
+## 1 鸟枪换炮之VsCode编辑器
+
+首先出场的是代码编辑器VsCode,微软大大开源的,值得信赖。
+
+### 1.1 VsCode安装
+
+使用一键安装可以直接安装,打开终端,输入下面的指令
+
+```
+wget http://fishros.com/install -O fishros && . fishros
+```
+
+接着输入密码,选择7一键安装VsCode
+
+```
+RUN Choose Task:[请输入括号内的数字]
+---众多工具,等君来用---
+[1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
+[2]:一键安装:github桌面版(小鱼常用的github客户端)
+[3]:一键配置:rosdep(小鱼的rosdepc,又快又好用)
+[4]:一键配置:ROS环境(快速更新ROS环境设置,自动生成环境选择)
+[5]:一键配置:系统源(更换系统源,支持全版本Ubuntu系统)
+[6]:一键安装:nodejs
+[7]:一键安装:VsCode开发工具
+[8]:一键安装:Docker
+[9]:一键安装:Cartographer(内测版v0.1)
+[10]:一键安装:微信(可以在Linux上使用的微信)
+[77]:测试模式:运行自定义工具测试
+[0]:quit
+```
+
+静候一会,安装完成后在任意终端输入code指令即可打开vscode,当然你还可以通过在文件夹或者文件上右击打开。
+
+```
+cd d2lros2/chapt1
+code ./
+```
+
+> `code ./`在VsCode中打开当前文件夹。
+
+### 1.2 多位一体
+
+VsCode的强大之处有两个,第一个是强大的插件,第二个就是强大的界面。
+
+- 左边是文件目录,`Ctrl+B`即可打开隐藏侧边栏。
+- 中间是编辑器
+- 下面可以显示终端,`Ctrl+Shift+~`即可打开终端。
+
+### 1.3 强大的插件
+
+VsCode插件无奇不有,我们常用的是Python和C++插件,帮助我们编写Python和C++代码。
+
+**Python**
+
+![image-20210909005232983](5.玩转Ubuntu之常用软件/imgs/image-20210909005232983.png)
+
+**C++**
+
+![image-20210909005135905](5.玩转Ubuntu之常用软件/imgs/image-20210909005135905.png)
+
+##### 汉化插件
+
+![image-20210720135816630](5.玩转Ubuntu之常用软件/imgs/image-20210720135816630.png)
+
+##### Python插件
+
+![image-20210723125628815](5.玩转Ubuntu之常用软件/imgs/image-20210723125628815.png)
+
+**听歌网易抑云**
+
+![image-20210720113510268](5.玩转Ubuntu之常用软件/imgs/image-20210720113510268.png)
+
+**背单词**
+
+![image-20210720135841441](5.玩转Ubuntu之常用软件/imgs/image-20210720135841441.png)
+
+##### 玩坦克大战
+
+![image-20210720135911694](5.玩转Ubuntu之常用软件/imgs/image-20210720135911694.png)
+
+##### 看小说
+
+![image-20210720135941635](5.玩转Ubuntu之常用软件/imgs/image-20210720135941635.png)
+
+##### 彩虹屁
+
+在你写代码时候疯狂夸你写的好的插件
+
+![image-20210720140054631](5.玩转Ubuntu之常用软件/imgs/image-20210720140054631.png)
+
+##### 股票
+
+![image-20210720140207445](5.玩转Ubuntu之常用软件/imgs/image-20210720140207445.png)
+
+## 2.中文输入法
+
+- [搜狗输入法Linux官网-安装指导 (sogou.com)](https://pinyin.sogou.com/linux/guide)
+
+
+
+## 3.聊天之微信QQ
+
+使用一键安装即可安装微信,有桌面版和Docker版本,都可以尝试使用。
+
+```
+wget http://fishros.com/install -O fishros && . fishros
+```
+
+
 
 --------------
 

BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720113510268.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135816630.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135841441.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135911694.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720135941635.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720140054631.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210720140207445.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210723125628815.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210909005135905.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/image-20210909005232983.png


BIN
docs/humble/chapt1/basic/5.玩转Ubuntu之常用软件/imgs/imageurl=%2Flinux%2F_next%2Fstatic%2Fmedia%2Fhelp16.e32b0f4a.png&w=2048&q=75


+ 85 - 1
docs/humble/chapt1/get_started/1.ROS2前世今生.md

@@ -1,4 +1,88 @@
-**内容还在更新中,请关注公众号鱼香ROS,提前解锁新章节。**
+# 1.1 ROS2的前世今生
+
+要说ROS2,那就不得不提起ROS,ROS就是传说中的机器人操作系统,英文全称(Robot Operating System),但ROS本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac)上的**软件库和工具集**。
+
+ROS出生于2007年,ROS的出现解决了机器人各个组件之间的通信问题,同时基于ROS的完善的通信机制,越来越多的优秀的机器人算法集成到了ROS中来。
+
+现在的ROS功能已经变得非常的丰富和强大。但随着对ROS功能上要求越来越多,一些原始的架构和设计不能够满足目前的使用需求,这也是ROS2出现的原因。
+
+ROS2继承了ROS原有的优秀之处,同时又带来了很多新的功能,ROS2相对于ROS更加的强大。
+
+
+## 1.ROS为什么会出现?
+
+> ROS的设计目的是:简化在各种机器人平台上创建复杂而强大的机器人行为的任务即不重复造轮子
+
+
+
+在ROS没有出现之前,做一个机器人是非常复杂的一件事情,因为一个机器人需要涉及到多个部分,而且这些部分之间还要进行通信。
+
+例如设计一个像下图一样的轮式移动机器人,我们对其进行拆解。可以分为**感知、决策、控制**三个部分。
+
+![image-20210717150453689](1.ROS2前世今生/imgs/image-20210717150453689.png)
+
+
+- **感知部分**有:激光雷达、深度相机、IMU、里程计、碰撞感知、建图
+- **决策部分**有:路径规划(navigation)算法、定位算法
+- **控制部分**有:轮子驱动
+
+
+机器人复杂之处就在于此,如果想要整个机器人可以跑起来,那么必须要有一个东西将上面的几个部分合理的连接到一起,这个东西就是ROS。
+
+ROS的作用就像我们的身体的神经系统一样,通过神经系统将我们身体的各个部分接入大脑。
+
+
+
+## 2.有了ROS1为什么还要ROS2?
+
+讲个故事,小鱼小时候,鱼爸鱼妈决定给小鱼盖一个新房,留着将来取媳妇,当时盖房子还不用钢筋混凝土,也没有啥设计图,一砖一瓦加上木制大梁就盖好了。盖好房子一家人开心的住了进去之后才发现没有建厕所,后来只能把杂物室给拆出来一空间建了厕所。
+
+![image-20210908230421411](1.ROS2前世今生/imgs/image-20210908230421411.png)
+
+若干年后,小鱼出息了年薪百万,自然要过无比奢华糜烂的生活,什么样的生活才算无比奢华糜烂?
+
+
+
+肯定要有一个全自动洗衣机,于是小鱼决定给家里买个洗衣机,某东上买好送到家,安装师傅一到小鱼家,人给整蒙了,连个下水道都没有。师傅说小鱼必须要先装个下水道,小鱼想了一下这咋办,盖房子时根本没想到会用洗衣机。
+
+
+
+与其重新挖个下水道,不如直接盖个大楼房,请个专业设计师,用上最新最好的的材料,给邻居看看啥叫`壕无鱼性`
+
+
+
+小鱼的故事讲完啦,接着说说ROS和ROS2,2007年ROS开发人员设计和制作ROS时,当时只想着**简化机器人的开发**,并没有想到过今天那么多的功能需求,比如商业化要求的稳定性、生命周期管理、多机协同、数据加密等。就像小鱼建房子时没想要未来会用全自动洗衣机一样~
+
+
+
+ROS发展的后面的几年里,机器人对ROS的功能要求越来越多,ROS开发人员只能在原有的ROS上修修补补。
+
+
+
+随着ROS不断的添加新功能,ROS变得越来越臃肿,祖传代码也越来越多。ROS开发人员发现在原有的ROS架构上修修补补十分消耗头发,于是像小鱼决定把房子推倒重建一样,ROS官方也重新设计制作了ROS2。
+
+
+
+## 3.ROS2介绍
+
+ROS2是在ROS的基础上设计开发的第二代机器人操作系统,可以帮助我们简化机器人开发任务,加速机器人落地的**软件库和工具集**。
+
+### 3.1 ROS2很年轻吗
+
+答案并不是,ROS2第一个`alpha1 - alpha8`版本从2015年8月31号就开始了,截至到目前(2021年7月)已经发布了12个版本(9个已经不再更新),所以ROS2并不年轻。
+
+
+### 3.2 ROS2版本对照表
+
+![image-20220602012621600](1.ROS2前世今生/imgs/image-20220602012621600.png)
+
+
+
+**参考资料:**
+
+- ROS2官方更新计划:http://docs.ros.org/en/humble/Releases.html
+
+
 
 --------------
 

BIN
docs/humble/chapt1/get_started/1.ROS2前世今生/imgs/image-20210717150453689.png


BIN
docs/humble/chapt1/get_started/1.ROS2前世今生/imgs/image-20210908230421411.png


BIN
docs/humble/chapt1/get_started/1.ROS2前世今生/imgs/image-20220602012621600.png


+ 109 - 1
docs/humble/chapt1/get_started/2.ROS与ROS2对比.md

@@ -1,4 +1,112 @@
-**内容还在更新中,请关注公众号鱼香ROS,提前解锁新章节。**
+# 1.2 ROS与ROS2对比
+
+经过上一节的学习,相信你已经对ROS和ROS2的发展有了一定的了解,本节小鱼将给大家从多个角度讲解ROS和ROS2的区别之处。
+
+## 1.ROS问题举例
+
+上节课说到ROS的设计目标是简化机器人的开发,如何简化呢?ROS为此设计了一整套通信机制(话题、服务、参数、动作)。
+
+通过这些通信机制,ROS实现了将机器人的各个组件给的连接起来,在设计这套通信机制的时候就设计了一个叫做`Ros Master`的东西,所有节点(可以理解为某一个组件,比如:激光雷达)的通信建立必须经过这个主节点。
+
+
+这种组合结构图如下:
+
+```mermaid
+graph TB;
+A[qw]-->B[激光雷达节点]
+A[qw]-->C[避障检测节点]
+A[主节点]-->D[底盘驱动节点]
+```
+
+一旦`Ros Master`主节点挂掉后,就会**造成整个系统通信的异常**,此时避障策略将会失效,如果机器人正在运行,碰到障碍物会径直装上去,机毁人亡!
+
+
+> ROS的不稳定这个问题在虽然对大家做机器人研究问题不大,但如果是想基于ROS做商业化机器人(比如无人驾驶汽车),就会造成非常严重的后果,小鱼在工作中可没为这个问题发愁
+
+
+
+除了不稳定这个问题,ROS还有很多其他地方存在着问题:
+
+- 通信基于TCP实现,实时性差、系统开销大
+- 对Python3支持不友好,需要重新编译
+- 消息机制不兼容
+- 没有加密机制、安全性不高
+
+
+
+## 2.ROS与ROS2架构对比?
+
+所以在ROS2中,首当其冲的将ROS的主节点干掉了,这里放一张网上流传最广的ROS/ROS2架构图,接下来就会按照这篇架构图给大家讲解。
+
+> 该图出自论文:`Exploring the Performance of ROS2`,已放入小鱼的公众号中,后台回复`ROS2论文`可获取
+
+
+
+![ROS1和ROS2架构对比](2.ROS与ROS2对比/imgs/image-20210717153612576.png)
+
+
+小鱼来给大家讲解下这张图,我们从下往上看。
+
+#### 2.1 OS层
+
+从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台,这一点要点个赞。
+
+>  之前认识公众号一老哥,做扫地机器人,为了降低成本,不能用ROS,重新造轮子
+
+
+
+#### 2.2 MiddleWare中间件层
+
+> 如果大家觉得中间件太玄乎可以点击小鱼的文章链接:[ROS2和ROS最大的区别中间件到底有什么不一样?](https://zhuanlan.zhihu.com/p/390607053)
+>
+> 下一节的扩展阅读讲了ROS的中心化特性: [1.3课外阅读_ROS镇长与艳娘传奇](1.3课外阅读_ROS镇长与艳娘传奇.md) 
+
+那么中间层ROS2到底相对于ROS做了哪些优化呢?
+
+
+
+1. **去中心化master**,ROS和ROS2中间件不同之处在于,ROS2取消了master节点。
+
+   去中心化后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,且可以1对1、1对n、n对n进行互相通信。
+
+   
+
+2. **不造通信的轮子**,通信直接更换为DDS进行实现(这个小鱼也要点赞,让专业的人做专业的事情)
+
+   采用DDS通信,使得ROS2的实时性、可靠性和连续性上都有了增强。
+
+   
+
+#### 2.3 应用层
+
+对于应用层来说ROS2也做了很大的改进,上面那张图没有体现出来。
+
+ROS2进行改进有:
+
+1. python2到pyhton3的支持
+2. 编译系统的改进(catkin到ament)
+3. C++标准更新到c++11
+4. 可以使用相同 API 的进程间和进程内通信
+
+
+## 3.ROS2新概念例举
+
+- 可用Python编写的Launch文件
+- 多机器人协同通信支持
+- 支持安全加密通信
+- 同一个进程支持多个节点、
+- 支持Qos服务质量
+- 支持节点生命周期管理
+- 高效的进程间通信
+
+
+
+
+## 4.更详细的对比
+
+请看扩展阅读3章节:[扩展阅读3-ROS2VSROS详细对比](chapt1/扩展阅读3-ROS2VSROS详细对比.md) 
+
+
 
 --------------
 

BIN
docs/humble/chapt1/get_started/2.ROS与ROS2对比/imgs/image-20210717153612576.png