Bladeren bron

修改第五章并添加了矩阵介绍

sangxin 3 jaren geleden
bovenliggende
commit
f9269e5b47

+ 2 - 2
docs/chapt5/5.1ROS2参数介绍.md

@@ -38,7 +38,7 @@ ROS2参数是由键值对组成的,此话怎讲?键值对指的是就是名
 - 名字:李四写小说周期,值:5s
 - 名字:显示器亮度,值:60%
 
-名字的数据类型小鱼不多说肯定是字符串了,值的数据类型呢?我们这里用到的是5是整形数据,显然只有一个整形是不够用的,ROS2支持的值的类型如下:
+名字的数据类型小鱼不多说肯定是字符串了,值的数据类型呢?我们这里用到的是5是整形数据,显然只有一个整形是不够用的,ROS2支持的参数值的类型如下:
 
 - bool 和bool[],布尔类型用来表示开关,比如我们可以控制雷达控制节点,开始扫描和停止扫描。
 - int64 和int64[],整形表示一个数字,含义可以自己来定义,这里我们可以用来表示李四节点写小说的周期值
@@ -80,7 +80,7 @@ ros2 param list
 
 写代码为什么要做到见名知意?我们看到乌龟模拟器的四个参数,background背景bgr指的是blue、green、red。简而言之就是背景颜色。那这几个参数应该可以控制乌龟模拟器的背景颜色。
 
-> 最后一个use_sim_time是每个节点都带的,消息回放相关,后面小鱼写篇文章稍微讲讲。
+> 最后一个use_sim_time是每个节点都带的,后面小鱼写篇文章稍微讲讲。
 
 如果看不懂,还可以有一个方法详细查看一个参数的信息。
 

+ 2 - 2
docs/chapt5/5.2使用Python玩转参数.md

@@ -7,10 +7,10 @@
 打开vscode,打开li4.py,把目光放到下面这行代码上
 
 ```
-class Li4Node(Node)
+class WriterNode(Node)
 ```
 
-这行程序告诉我们,Li4Node是继承于rclpy.node.Node的。所以李四获取到了参数相关的能力:
+这行程序告诉我们,WriterNode是继承于rclpy.node.Node的。所以李四获取到了参数相关的能力:
 
 | 函数名称               | 描述                                                         |
 | ---------------------- | ------------------------------------------------------------ |

+ 5 - 5
docs/chapt5/5.3使用C++玩转参数.md

@@ -1,6 +1,6 @@
 # 5.2使用C++玩转参数
 
-大家好,我是小鱼,本节课带大家一起学习使用C++来对参数进行操作。
+大家好,我是小鱼,本节课带大家一起学习如何使用C++来对参数进行操作。
 
 本节课的任务是通过参数实现动态调整王二卖二手书的价格。
 
@@ -9,7 +9,7 @@
 打开`village_wang`下的`wang2.cpp`,我们可以看到王二节点同样是继承于`rclcpp:Node`的,因此王二也具备了操作参数的能力。                                                                                                                                                                         
 
 ```
-class Wang2Node : public rclcpp::Node
+class SignalDogNode : public rclcpp::Node
 ```
 
 | 函数名称               | 描述                                                         |
@@ -49,15 +49,15 @@ this->get_parameter("novel_price",novel_price);
 unsigned int novelsNum = int( request->money / novel_price ); //应给小说数量,一块钱一章
 ```
 
-修改完成后的新增的Wang2Node代码如下:
+修改完成后的新增的SignalDogNode代码如下:
 
 ```
-class Wang2Node : public rclcpp::Node
+class SignalDogNode : public rclcpp::Node
 {
 
 public:
     // 构造函数
-    Wang2Node() : Node("wang2")
+    SignalDogNode(std::string name) : Node(name)
     {
         //声明参数
         this->declare_parameter<std::int32_t>("novel_price", novel_price);

+ 10 - 1
docs/chapt5/5.4ROS2_Action介绍.md

@@ -4,20 +4,25 @@
 
 ## 1.Action背景
 
-前面章节学习了话题、服务、参数。话题适用于节点间单向的频繁的数据传输,服务则适用于节点间双向的数据传递,而参数则用于动态调整节点的设置,动作Action和他们三个有什么不同之处呢?
+前面章节学习了话题、服务、参数。
+
+话题适用于节点间单向的频繁的数据传输,服务则适用于节点间双向的数据传递,而参数则用于动态调整节点的设置,动作Action和他们三个有什么不同之处呢?
 
 小鱼举个例子,在前面的章节中王二通过话题获取李四写的小说。张三通过服务向李四购买小说。
 
 流程是张三将钱通过服务给王二,然后王二凑够对应章节数量的小说返回给张三,这个过程看似没有问题,假设你是张三,你就会发现下面这些问题:
+
 - 你把100块钱给了王二,你并不知道王二有没有收到自己的钱(不能确认服务端接收并处理目标)
 - 假设王二收到了,但库存没有100章的小说,王二开始攒小说,此时你也无法得知王二攒小说的进度(没有反馈)
 - 假设王二攒小说攒一半,你不想要了,也没办法通知王二退款
 
+
 如果这些问题体现在机器人上,可能是这样子的。我们通过服务服务发送一个目标点给机器人,让机器人移动到该点:
 - 你不知道机器人有没有处理移动到目标点的请求(不能确认服务端接收并处理目标)
 - 假设机器人收到了请求,你不知道机器人此时的位置和距离目标点的距离(没有反馈)
 - 假设机器人移动一半,你想让机器人停下来,也没有办法通知机器人
 
+
 上面的场景在机器人控制当中经常出现,比如控制导航程序,控制机械臂运动,控制小乌龟旋转等,很显然单个话题和服务不能满足我们的使用,因此ROS2针对控制这一场景,基于原有的话题和服务,设计了动作(Action)这一通信方式来解决这一问题。
 
 ## 2.Action的组成部分
@@ -29,6 +34,10 @@
 - 结果:即Action服务端最终告诉客户端其执行结果,结果最后返回,用于表示任务最终执行情况。
 
 > 参数是由服务构建出来了,而Action是由话题和服务共同构建出来的(一个Action = 三个服务+两个话题)
+三个服务分别是:1.目标传递服务    2.结果传递服务    3.取消执行服务
+两个话题:1.反馈话题(服务发布,客户端订阅)   2.状态话题(服务端发布,客户端订阅)
+
+
 
 ![../_images/行动-单一行动.gif](5.4ROS2_Action介绍/imgs/Action-SingleActionClient.gif)
 

+ 2 - 2
docs/chapt5/章节介绍.md

@@ -1,8 +1,8 @@
 # 第5章-ROS2通信机制
 
-叮叮叮,恭喜你完成了第4章的学习,在第4章里,相信你你已经掌握了ROS2中的话题和服务两种通信机制,也会学会来实现他们了!
+叮叮叮,恭喜你完成了第4章的学习,在第4章里,相信你你已经掌握了ROS2中的话题和服务两种通信机制,也会学会如何让通过代码来实现他们了!
 
-但是仅仅这两种通信方式依然不能满足我们开发机器人的使用。所以本章节小鱼将会带大家学习ROS2的另外两种通信机制——**参数**和**Action**两种通信方式。
+但是仅仅这两种通信方式依然不能满足我们开发机器人的使用。所以本章节小鱼将会带大家学习ROS2的另外两种通信机制——**参数**和**动作**两种通信方式。
 
 
 

+ 33 - 8
docs/chapt7/7.1.1数学基础.md

@@ -1,10 +1,35 @@
-# 数学基础
+# 7.1 数学基础
 
-线性代数基础
+大家好,我是小鱼。本节我们来学习一下线性代数的基础中的矩阵部分,矩阵作为我们学习机器人学中最常用的基础知识,后面学习过程中我们会经常遇到,比如:表示旋转的旋转矩阵、坐标变换中的齐次矩阵、关节速度映射雅可比矩阵、仿真中的惯性矩阵等等。所以很有必要在正式学习之前,了解一下矩阵的概念及常用的矩阵定义。
+
+本节小鱼将从以下内容来介绍:
+
+## 1.矩阵介绍
+
+### 1.1 矩阵定义
+
+由$m*n$个数$a_{ij}(i=1,2,..,m;j=1,2...,n)$排成的m行n列的矩阵表格
+$$
+\begin{bmatrix}
+{a_{11}}&{a_{12}}&{\cdots}&{a_{1n}}\\
+{a_{21}}&{a_{22}}&{\cdots}&{a_{2n}}\\
+{\vdots}&{\vdots}&{\ddots}&{\vdots}\\
+{a_{m1}}&{a_{m2}}&{\cdots}&{a_{mn}}\\
+\end{bmatrix}
+$$
+称为一个$m*n$的矩阵,记为为$A$或$(a_{ij})_{m*n}(i=1,2,..,m;j=1,2...,n)$,当$m=n$时称$A$为$n$阶方阵
+
+### 
+### 1.2 零矩阵
+### 1.3 单位矩阵
+### 1.4 正交矩阵 
+### 1.5 增广矩阵
+
+## 2.矩阵的运算
+
+### 2.1加法运算
+### 2.2减法运算
+### 2.3乘法运算
+### 2.4求逆运算
+### 2.4转置运算
 
-- 矩阵介绍                                
-- 单位矩阵
-- 矩阵的逆
-- 增广矩阵
-- 正交矩阵
-- 矩阵转置