Explorar el Código

修改第四章的目录

鱼香ROS hace 3 años
padre
commit
7af323a471

+ 17 - 12
docs/_sidebar.md

@@ -35,26 +35,31 @@
     - [1.创建一个C++功能包](chapt3/3.6.1创建一个C++功能包.md) 
     - [2.POP方法编写C++节点并测试](chapt3/3.6.2POP方法编写C++节点并测试.md) 
     - [3.OOP方式编写一个节点](chapt3/3.6.3OOP方式编写一个节点.md) 
-  - 扩展资料
-    -  [扩展资料1:本章CLI工具总结](chapt3/3.7扩展阅读.md) 
+  - 章节练习
+    -  [分别使用POP和OOP创建穷鬼张三](chapt3\分别使用POP和OOP创建穷鬼张三.md) 
+  - 扩展阅读
+    -  [扩展阅读1:本章CLI工具总结](chapt3/3.7扩展阅读.md)  
+    -  [扩展阅读2:ROS2客户端库RCL介绍](chapt3\扩展阅读2:ROS2客户端库RCL介绍.md) 
 - 第 4 章 通信机制上(话题与服务)
   - [章节介绍](chapt4/章节介绍.md) 
   - [4.1 ROS2话题介绍](chapt4/4.1ROS2话题介绍.md) 
   - 4.2 ROS2话题编程实现
-    - [4.2 话题通信实现(Python)](chapt4/4.2话题通信实现(Python).md) 
-    - [4.3 ROS2话题通信(C++)](chapt4/4.3ROS2话题通信(C++).md) 
-    - [4.4 话题小练习之李三白嫖](chapt4/4.4话题小练习-李三白嫖.md) 
+    - [4.2.1 话题通信实现(Python)](chapt4/4.2话题通信实现(Python).md) 
+    - [4.2.2 ROS2话题通信(C++)](chapt4/4.3ROS2话题通信(C++).md) 
+    - [4.2.3 话题小练习之李三白嫖](chapt4/4.4话题小练习-李三白嫖.md) 
   - 4.3 接口介绍与自定义接口
-    - [4.5 ROS2通信接口介绍](chapt4/4.5ROS2通信接口介绍.md) 
-    - [4.6 ROS2自定义话题接口](chapt4/4.6ROS2自定义话题接口.md) 
+    - [4.3.1 ROS2通信接口介绍](chapt4/4.5ROS2通信接口介绍.md) 
+    - [4.3.2 ROS2自定义话题接口](chapt4/4.6ROS2自定义话题接口.md) 
   - [4.4 ROS2服务介绍](chapt4/4.7ROS2服务介绍.md) 
   - 4.5 ROS2服务编程实现
-    - [4.8 自定义服务接口](chapt4/4.8自定义服务接口.md) 
-    - [4.9 服务实现(Python)](chapt4/4.9服务实现(Python).md) 
-    - [4.10 服务实现(C++)](chapt4/4.10服务实现(C++).md) 
+    - [4.5.1 自定义服务接口](chapt4/4.8自定义服务接口.md) 
+    - [4.5.2 服务实现(Python)](chapt4/4.9服务实现(Python).md) 
+    - [4.5.3 服务实现(C++)](chapt4/4.10服务实现(C++).md) 
   - [4.6 话题VS服务](chapt4/4.12话题VS服务.md) 
-  - [小练习1:自定义话题通信(python)](chapt4/4.11自定义话题通信(python).md) 
-  - [扩展阅读2:原始数据类型与包装类型](chapt4/4.13扩展阅读原始数据类型与包装类型.md) 
+  - 章节练习
+    - [小练习1:自定义话题通信(python)](chapt4/4.11自定义话题通信(python).md) 
+  - 扩展阅读
+    - [扩展阅读1:原始数据类型与包装类型](chapt4/4.13扩展阅读原始数据类型与包装类型.md) 
 - 第 5 章 通信机制下(参数与Action)
   -  [章节介绍](chapt5/章节介绍.md)  
   -  [5.1 ROS2参数介绍](chapt5/5.1ROS2参数介绍.md) 

+ 1 - 1
docs/chapt3/3.7扩展阅读.md

@@ -49,5 +49,5 @@ Commands:
 
 在线文档:[Installation — colcon documentation](https://colcon.readthedocs.io/en/released/user/installation.html)
 
-PDF文档:[colcon Documentation](https://colcon.readthedocs.io/_/downloads/en/released/pdf/)
+PDF文档:[colcon Documentation](https://colcon.readthedocs.io/downloads/en/released/pdf/)
 

+ 8 - 0
docs/chapt3/分别使用POP和OOP创建穷鬼张三.md

@@ -0,0 +1,8 @@
+# 分别使用POP和OOP创建穷鬼张三
+
+
+
+穷鬼张三,住在张家村。请你帮助ROS2镇长创建出张家村功能包和穷鬼张三,让张三和大家打一个招呼。
+
+
+

+ 54 - 0
docs/chapt3/扩展阅读2:ROS2客户端库RCL介绍.md

@@ -0,0 +1,54 @@
+# 扩展阅读2:ROS2客户端库RCL介绍|API vs CLI vs GUI
+
+大家好,我是一口月饼一口螺狮粉的小鱼,别的不说,就小鱼家楼下10元一份的螺狮粉真是一绝,每次吃完一定拉肚子,哈哈。
+
+## 一、CLI vs GUI vs API
+今天别的不说,就结合ROS2的客户端库讲一讲API,说起API想必大家都听过GUI和CLI,所以GUI和CLI是啥呢?
+
+### 1.1 GUI和CLI
+
+- GUI(Graphical User Interface)就是平常我们说的图形用户界面,大家用的Windows是就是可视化的,我们可以通过鼠标点击按钮等图形化交互完成任务。
+- CLI(Command-Line Interface)就是命令行界面了,我们所用的终端,黑框框就是命令行界面,没有图形化。
+
+很久之前电脑还是没有图形化界面的,所有的交互都是通过命令行实现,就学习机器人而言,命令行操作相对于图形化优势更加明显。
+
+### 1.2 API是什么
+知道了CUI和CLI是根据是否有图形界面划分的,那API又是什么?
+
+API( Application Programming Interface)应用程序编程接口。比如你写了一个库,里面有很多函数,如果别人要使用你这个库,但是并不知道每个函数内部是怎么实现的。使用的人需要看你的文档或者注释才知道这个函数的入口参数和返回值或者这个函数是用来做什么的。对于使用者来说来说 ,你的这些函数就是API。(摘自知乎)
+
+API在不同语言中的表现形式不同,在C和C++表现为头文件,在Python中表现为Python文件。
+
+### 1.3 RCL是什么?
+RCL(ROS Client Library)ROS客户端库,其实就是ROS的一种API,提供了对ROS话题、服务、参数、Action等接口。
+
+
+## 二、ROS2客户端库
+ROS的客户端库就是上面所说的RCL,不同的语言对应着不同的rcl,但基本功能都是相同的。
+
+比如Python语言提供了rclpy来操作ROS2的节点话题服务等,而C++则使用rclcpp提供API操作ROS2的节点话题和服务等。
+
+所以后面我们使用Python和C++来编写ROS2节点实现通讯等功能时,我们就会引入rclpy和rclcpp的库。
+![rcl与rmw](扩展阅读ROS2客户端库RCL介绍/imgs/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6bG86aaZUk9T,size_20,color_FFFFFF,t_70,g_se,x_16.png)
+上面这张图时ROS2,API的实现层级,最新下面的是第三方的DDS,rmw(中间件接口)层是对各家DDS的抽象层,基于rmw实现了rclc,有了rclc,我们就可以实现各个语言的库,大家都知道C语言是各个语言的鼻祖(汇编除外)所以基于rclc,ROS2官方实现了rclpy和rclcpp.
+
+
+基于rclpy和rclcpp我们就可以实现上层的应用了,这张ros2的内部api架构图小鱼也算大概说清楚了。
+
+有的同学可能还想着既然基于rclc可以实现多个语言的ROS2的库那rcljava有没有,有的:https://github.com/esteve/ros2_java,还有很多,小用户这里搜集放一下,说不定大家以后会用得到,比如在AndroidAPP上或者在Web上开发可以使用rcljava或rclnodejs。
+| 语言                                                         | 地址                                           |
+| ------------------------------------------------------------ | ---------------------------------------------- |
+| python-rclpython                                             | https://github.com/ros2/rclpy                  |
+| c++ - rclcpp                                                 | https://github.com/ros2/rclcpp                 |
+| java-rcljava                                                 | https://github.com/esteve/ros2_java            |
+| rust-rclrust                                                 | https://github.com/ros2-rust/ros2_rust         |
+| node.js-rclnodejs                                            | https://github.com/RobotWebTools/rclnodejs     |
+| go-rclgo                                                     | https://github.com/juaruipav/rclgo             |
+| lua-rcllua                                                   | https://github.com/jbbjarnason/rcllua          |
+| kotlin-rclkin                                                | https://github.com/ros2java-alfred/ros2_kotlin |
+| swift-rclswift                                               | https://github.com/atyshka/ros2_swift          |
+| c#-rclcs                                                     | https://github.com/RobotecAI/ros2cs            |
+
+## 三、总结                                           
+今天终于算是把整个ROS2的框架给理清楚了,接下来需要探索的主要是上层应用了,至于ROS2的底层实现,以后有机会小鱼再带大家一起学习。                      
+

BIN
docs/chapt3/扩展阅读ROS2客户端库RCL介绍/imgs/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6bG86aaZUk9T,size_20,color_FFFFFF,t_70,g_se,x_16.png


+ 1 - 1
docs/chapt4/4.10服务实现(C++).md

@@ -1,4 +1,4 @@
-# 4.10 C++服务通信实现(张三买书)
+# 4.5.3 C++服务通信实现(张三买书)
 
 看到张三买书就突然想起`华强买瓜`,但张三是真心买书不是存心找茬。开始之前,我们先梳理一下买书任务流程。
 

+ 1 - 1
docs/chapt4/4.11自定义话题通信(python).md

@@ -1,4 +1,4 @@
-4.11 自定义话题通信
+# 自定义话题通信-看一看带图的小说
 
 待更新,欢迎关注微信公众号《鱼香ROS》,第一时间获取更新。
 

+ 1 - 1
docs/chapt4/4.12话题VS服务.md

@@ -1,4 +1,4 @@
-# 4.12 话题服务对比
+# 4.6 话题服务对比
 
 学完了话题和服务两种通信方式,我们来做个小对比,其实大家在学习的过程中也能感受到两者的区别之处。
 

+ 1 - 1
docs/chapt4/4.13扩展阅读原始数据类型与包装类型.md

@@ -1,4 +1,4 @@
-# 4.13 ROS2原始数据类型与接口
+# 扩展阅读:ROS2原始数据类型与接口
 
 在ROS2中定义接口,需要编写一个接口文件,该文件后缀为`msg`、`srv`、`action`。
 

+ 3 - 5
docs/chapt4/4.1ROS2话题介绍.md

@@ -52,11 +52,10 @@ B -- 订阅 --> C[Node王二]
 
 ### 3.1  RQT工具之rqt_graph
 
-查看节点关系查看rqt_graph
 
 ROS2作为一个强大的工具,在运行过程中,我们是可以通过命令来看到节点和节点之间的数据关系的。
 
-运行我们第二章中的你说我听小程序。依次打开三个终端,分别输入下面三个命令。
+运行我们第二章中的你说我听小demo。依次打开三个终端,分别输入下面三个命令。
 
 ```
 ros2 run demo_nodes_py listener
@@ -83,8 +82,8 @@ ros2 topic -h
 
 ![image-20210803114102048](4.1ROS2话题介绍/imgs/image-20210803114102048.png)
 
-这里小鱼先简单介绍一下,大家可以手动在终端输入这几个命令来一起尝试。
 
+本着学以致用远在,小鱼先对比较常用的几个命令进行介绍,其他的我们用到的时候小鱼再介绍(现在介绍反而不好理解)。
 
 
 #### ros2 topic list 返回系统中当前活动的所有主题的列表
@@ -175,8 +174,7 @@ ros2 topic pub /chatter std_msgs/msg/String 'data: "123"'
 
 ## 4.最后
 
-如果大家想要了解更多的命令,可以到官网来看一看,下一节小鱼就会带大家来手动写Python版本的话题通信。
-
+了解完话题,下一节小鱼就会带大家来手动写Python版本的话题通信。
 
 
 

+ 4 - 2
docs/chapt4/4.2话题通信实现(Python).md

@@ -1,11 +1,13 @@
-# 4.2 话题通信Python实现
+# 4.2.1 话题通信Python实现
 
 本节小鱼将带你一起,通过Python实现王二和李四之间的话题通信,完成李四发布话题(sexy_girl),王二订阅话题(sexy_girl)的代码。
 
-大家都知道白嫖是不对的(看了小鱼视频一定要一键三连),所以李四还要订阅一个话题来收稿费(sexy_girl_money),王二发布(sexy_girl_money)话题来支付稿费。
+大家都知道白嫖是不对的(看了小鱼视频一定要一键三连),所以这里我们再加一个需求,让作家李四订阅一个话题来收稿费(sexy_girl_money),王二发布(sexy_girl_money)话题来支付稿费。
 
 接下来快和小鱼一起动手学习编写Python的话题发布者和订阅者吧~
 
+
+
 ## 1.发布话题(sexy_girl)
 
 ### 1.1 如何编写

+ 1 - 1
docs/chapt4/4.3ROS2话题通信(C++).md

@@ -1,4 +1,4 @@
-# 4.3 ROS2话题通信(C++实现)
+# 4.2.2 ROS2话题通信(C++实现)
 
 本节小鱼将带你一起实现C++版本话题通信功能,帮助王二拿到他最想看的艳娘传奇,并通过话题支付稿费给李四。最终实现像下图这样的计算图。
 

+ 1 - 1
docs/chapt4/4.4话题小练习-李三白嫖.md

@@ -1,4 +1,4 @@
-# 4.4 话题通信小练习之李四白嫖
+# 4.2.3 话题通信小练习之李三白嫖
 
 你好,我是小鱼。恭喜你完成了ROS2中非常重要的话题通信部分的学习,本节我们将一起做一个小练习,巩固一下我们的学习成果。
 

+ 2 - 5
docs/chapt4/4.5ROS2通信接口介绍.md

@@ -1,4 +1,4 @@
-# 4.5 ROS2接口介绍
+# 4.3 ROS2接口介绍
 
 本节小鱼将会带你认识一个新的概念,叫做interface,即接口。
 
@@ -28,9 +28,6 @@ std_msgs/msg/UInt32
 
 
 
-
-
-
 ## 2. ROS2接口介绍
 
 我们继续回到之前的例子上来,李四和王二传递小说和钱的时候,我们并没有定义接口,他们直接使用了std_msgs中的String和UInt32。
@@ -135,7 +132,7 @@ B  --> C[Python的py,C++的.h头文件]
 
 
 
-## 4.ROS2接口常用命令
+## 4.ROS2接口常用CLI命令
 
 最后给大家讲一下ROS2接口相关的常用命令有哪些。
 

+ 1 - 1
docs/chapt4/4.6ROS2自定义话题接口.md

@@ -1,4 +1,4 @@
-# 4.6 自定义话题接口
+# 4.3.2 自定义话题接口
 
 本节小鱼带大家一起新建一个消息接口,帮李四的艳娘传奇每一章插入一图。
 

+ 1 - 1
docs/chapt4/4.7ROS2服务介绍.md

@@ -1,4 +1,4 @@
-# 4.7 ROS2服务介绍
+# 4.4 ROS2服务介绍
 
 大家好,帅鱼又蹬蹬蹬的游回来了。本节小鱼将要带大家一起了解一下什么是服务。
 

+ 1 - 1
docs/chapt4/4.8自定义服务接口.md

@@ -1,4 +1,4 @@
-# 4.8 自定义服务接口
+# 4.5.1 自定义服务接口
 
 帅鱼又来了,上一节小鱼给大家介绍了什么是服务,并且给大家举了李三向李四借钱吃麻辣烫,张三向王二买二手书的例子。作为ROS镇的创造者的我们,肯定要满足村民们的需求。
 

+ 1 - 1
docs/chapt4/4.9服务实现(Python).md

@@ -1,4 +1,4 @@
-# 4.9 Python服务通信实现(李三借钱)
+# 4.5.2 Python服务通信实现(李三借钱)
 
 大家好,我是小鱼。上节说完如何自定义ROS2的服务接口。