﻿1
00:00:13,019 --> 00:00:13,650
大家好

2
00:00:13,747 --> 00:00:17,029
我是东北大学机器人科学与工程学院的王帅

3
00:00:17,409 --> 00:00:18,431
第一次实验课

4
00:00:18,431 --> 00:00:19,257
我们来初识

5
00:00:19,257 --> 00:00:21,096
MATLAB robotics toolbox

6
00:00:22,207 --> 00:00:22,494
一

7
00:00:23,418 --> 00:00:25,565
MATLAB robotics toolbox简介

8
00:00:26,227 --> 00:00:27,832
MATLAB robotics toolbox

9
00:00:28,180 --> 00:00:31,859
是由澳大利亚科学家Peter Corke 开发和维护的

10
00:00:31,859 --> 00:00:34,702
一套基于MATLAB的机器人学工具箱

11
00:00:35,272 --> 00:00:37,716
当前最新版本为10.2

12
00:00:38,335 --> 00:00:42,102
可在该工具箱的网页上免费下载

13
00:00:42,870 --> 00:00:45,261
robotics toolbox提供了机器人学

14
00:00:45,261 --> 00:00:47,442
研究的许多重要功能函数

15
00:00:47,639 --> 00:00:51,027
包括机器人运动学动力学轨迹规划等

16
00:00:51,546 --> 00:00:54,777
该工具箱可以对机器人进行图形仿真

17
00:00:54,967 --> 00:00:58,256
并能分析真实机器人控制的实验结果

18
00:00:58,733 --> 00:01:02,220
因此非常适宜于机器人学的教学和研究

19
00:01:03,330 --> 00:01:04,391
一  下载

20
00:01:05,065 --> 00:01:05,666
第一步

21
00:01:06,009 --> 00:01:09,740
我们可以在以下地址下载zip格式的安装包

22
00:01:10,127 --> 00:01:12,852
将解压后的文件夹rvctools

23
00:01:13,065 --> 00:01:16,746
复制到MATLAB安装路径下的toolbox文件夹中

24
00:01:17,254 --> 00:01:17,895
第二步

25
00:01:18,108 --> 00:01:19,278
打开MATLAB

26
00:01:19,389 --> 00:01:20,833
点击设置路径

27
00:01:21,026 --> 00:01:23,324
添加并包含子文件夹

28
00:01:23,416 --> 00:01:26,426
然后选择这个rvctools文件夹

29
00:01:26,680 --> 00:01:28,683
最后保存关闭

30
00:01:30,427 --> 00:01:30,763
二

31
00:01:30,898 --> 00:01:31,526
安装

32
00:01:33,010 --> 00:01:35,192
打开rvctools文件夹的

33
00:01:35,192 --> 00:01:38,437
start up下划线rvc的M文件运行

34
00:01:38,951 --> 00:01:41,654
此时robotics toolbox安装完毕

35
00:01:42,082 --> 00:01:44,964
或者在Matlab命令行中输入

36
00:01:45,028 --> 00:01:47,753
start up下划线rvc安装

37
00:01:48,701 --> 00:01:49,379
第四步

38
00:01:49,529 --> 00:01:51,726
我们可以在Matlab命令行中

39
00:01:51,897 --> 00:01:55,142
输入VER查看是否安装成功

40
00:01:55,449 --> 00:01:57,246
可以在列表中找到

41
00:01:57,710 --> 00:02:01,590
robotics toolbox当前版本是10.2.0

42
00:02:02,343 --> 00:02:06,077
最后我们在使用时就可以在命令行中

43
00:02:06,186 --> 00:02:10,227
输入start up下划线RVC启动该工具箱了

44
00:02:16,209 --> 00:02:16,720
二

45
00:02:17,371 --> 00:02:19,210
二维空间位姿描述

46
00:02:19,600 --> 00:02:22,285
涉及到的函数主要有SE2

47
00:02:22,628 --> 00:02:25,062
输入参数是XYtheta

48
00:02:25,406 --> 00:02:28,741
可以做XY的平移和theta角度的旋转

49
00:02:29,586 --> 00:02:32,169
tr plot2输入参数T

50
00:02:32,410 --> 00:02:35,615
画出相对于世界坐标系的变换大T

51
00:02:36,627 --> 00:02:41,486
transl2在二维空间中做纯平移的变换

52
00:02:42,015 --> 00:02:43,397
下面我们来看一下

53
00:02:43,397 --> 00:02:45,397
MATLAB具体函数的实现

54
00:02:59,516 --> 00:02:59,823
好

55
00:02:59,823 --> 00:03:02,415
我们来看一下Matlab函数的具体实现

56
00:03:02,842 --> 00:03:05,127
首先调用SE2函数

57
00:03:05,294 --> 00:03:09,150
做E3的纯平移变换和30度的一个旋转

58
00:03:10,134 --> 00:03:12,131
然后调用trplot2

59
00:03:13,209 --> 00:03:15,875
把t1齐次变换给它画出来

60
00:03:18,355 --> 00:03:19,238
t2呢

61
00:03:19,405 --> 00:03:23,613
是做一个纯平移的移动三和四

62
00:03:24,876 --> 00:03:27,468
然后也是利用trplot2

63
00:03:27,505 --> 00:03:29,809
把t2齐次变换给它画出来

64
00:03:29,809 --> 00:03:31,964
我们看一下具体的运行结果

65
00:03:37,611 --> 00:03:38,019
好

66
00:03:38,368 --> 00:03:40,466
最终的运行结果如图所示

67
00:03:55,902 --> 00:03:56,757
第三节

68
00:03:58,805 --> 00:04:00,669
三维空间位姿描述

69
00:04:00,708 --> 00:04:02,563
涉及到的函数主要有

70
00:04:03,417 --> 00:04:06,310
rotX rotY 和rotZ

71
00:04:06,769 --> 00:04:07,745
那么分别呢

72
00:04:07,745 --> 00:04:11,056
是绕XY和Z轴的一个旋转矩阵

73
00:04:12,031 --> 00:04:15,197
trplotR是绘制出相应的旋转矩阵

74
00:04:15,896 --> 00:04:18,421
tranimateR是做一个旋转动画

75
00:04:18,990 --> 00:04:20,441
下面我们来看一下

76
00:04:20,441 --> 00:04:22,040
Matlab函数的具体实现

77
00:04:43,637 --> 00:04:44,774
我们来看一下

78
00:04:45,497 --> 00:04:49,466
r1它是等于rotX 做30度的一个旋转

79
00:04:49,466 --> 00:04:52,061
和rotY做一个50度的一个旋转

80
00:04:52,523 --> 00:04:54,277
然后用trplot

81
00:04:54,845 --> 00:04:57,357
把R1旋转矩阵给它画出来

82
00:04:58,127 --> 00:04:59,798
同时做一个动画

83
00:05:00,900 --> 00:05:03,059
r2是等于rotY50度

84
00:05:03,059 --> 00:05:04,747
乘以rotX30度

85
00:05:07,272 --> 00:05:09,495
同理也是用trplot2

86
00:05:09,495 --> 00:05:12,032
把R2这个旋转矩阵给它画出来

87
00:05:12,414 --> 00:05:13,605
并做一个动画

88
00:05:13,758 --> 00:05:15,447
我们来看一下运行结果

89
00:05:21,018 --> 00:05:22,431
那么我们可以看到

90
00:05:22,446 --> 00:05:26,519
R1和R2是两个完全不同的一个旋转矩阵

91
00:05:26,960 --> 00:05:31,428
也就是说是具有不可交性的

92
00:05:41,995 --> 00:05:44,202
可以看出旋转的不可交性

93
00:05:50,184 --> 00:05:50,563
二

94
00:05:50,660 --> 00:05:52,019
三角度表示法

95
00:05:53,301 --> 00:05:54,116
欧拉角

96
00:05:54,679 --> 00:05:57,475
欧拉角定义的坐标系B的方位

97
00:05:57,475 --> 00:05:58,404
规则如下

98
00:05:58,906 --> 00:06:01,225
最初坐标系B与A重合

99
00:06:01,537 --> 00:06:03,610
转动相对运动坐标系

100
00:06:03,610 --> 00:06:04,564
B来描述

101
00:06:05,074 --> 00:06:07,771
先绕ZB轴转阿法角

102
00:06:08,199 --> 00:06:11,513
再绕YB轴转贝塔角

103
00:06:11,644 --> 00:06:14,753
最后绕ZB轴转伽马角

104
00:06:15,477 --> 00:06:17,894
按照从左向右的原则

105
00:06:18,034 --> 00:06:19,909
得到相应的旋转矩阵

106
00:06:20,197 --> 00:06:24,026
为rotZ阿尔法乘以rotY贝塔

107
00:06:24,026 --> 00:06:26,026
乘以rotZ伽马

108
00:06:26,562 --> 00:06:29,991
我们就可以用EU22R这个函数

109
00:06:30,049 --> 00:06:32,689
把欧拉角转换为旋转矩阵

110
00:06:33,042 --> 00:06:36,677
相反的可以用TR2EUL函数

111
00:06:36,776 --> 00:06:39,375
把旋转矩阵用欧拉角表示

112
00:06:39,843 --> 00:06:42,245
下面我们来看一下Matlab

113
00:06:42,245 --> 00:06:43,486
具体函数的实现

114
00:07:05,065 --> 00:07:06,382
好 我们来看一下

115
00:07:06,847 --> 00:07:09,367
R3呢它是等于rotZ0.1乘以

116
00:07:09,367 --> 00:07:12,012
rotY0.2乘以rotZ0.3

117
00:07:12,493 --> 00:07:16,037
R4呢是调用了UL2R这个函数

118
00:07:16,322 --> 00:07:18,165
阿尔法贝塔伽马分别是

119
00:07:18,165 --> 00:07:19,946
0.1 0.2 0.3

120
00:07:20,489 --> 00:07:22,947
那么运行的结果是什么样子的呢

121
00:07:23,134 --> 00:07:24,167
我们可以看到

122
00:07:24,292 --> 00:07:26,162
R3它是等于R4的

123
00:07:28,495 --> 00:07:32,012
那么同理我们在调用TR21UL

124
00:07:32,012 --> 00:07:36,545
可以把R3的欧拉角给它计算出来

125
00:07:36,785 --> 00:07:38,593
计算结果如下所示

126
00:07:40,756 --> 00:07:41,086
二

127
00:07:41,139 --> 00:07:42,101
RPY角

128
00:07:43,116 --> 00:07:44,933
用RPY角所描述的

129
00:07:44,933 --> 00:07:47,293
坐标系B的方位规则如下

130
00:07:47,622 --> 00:07:50,133
最初坐标系B与A重合

131
00:07:50,507 --> 00:07:53,668
转动相对于固定坐标系A来描述

132
00:07:54,122 --> 00:07:56,874
先绕XA轴转伽马角

133
00:07:57,150 --> 00:07:59,501
再绕YB轴钻贝塔角

134
00:07:59,919 --> 00:08:02,831
最后绕ZA轴转阿法角

135
00:08:03,232 --> 00:08:05,449
按照从右向左的规则

136
00:08:05,592 --> 00:08:07,818
可以得到相应的旋转矩阵

137
00:08:07,978 --> 00:08:12,502
R等于rot C阿法乘以rot Y贝塔

138
00:08:12,644 --> 00:08:14,844
乘以rot X伽马

139
00:08:15,182 --> 00:08:17,880
我们可以用RPY2R这个函数

140
00:08:18,174 --> 00:08:21,317
把Roll Pitch Yaw角

141
00:08:21,424 --> 00:08:23,303
用旋转矩阵来表示

142
00:08:23,642 --> 00:08:26,812
相反的可以用TR2rpY R

143
00:08:26,812 --> 00:08:28,851
这个函数把旋转矩阵

144
00:08:29,056 --> 00:08:31,451
Roll Pitch Yaw角来表示

145
00:08:31,648 --> 00:08:35,004
下面我们来看一下Matlab具体函数实现

146
00:08:48,986 --> 00:08:50,260
好  我们来看一下

147
00:08:50,701 --> 00:08:53,404
R5呢它是等于rotZ0.3

148
00:08:53,525 --> 00:08:57,696
乘以rotY0.2乘以rotX0.1

149
00:08:58,162 --> 00:09:02,526
R6呢是等于RPY2R0.1 0.2 0.3

150
00:09:02,796 --> 00:09:04,736
我们来看一下运行的结果

151
00:09:05,806 --> 00:09:07,065
那么我们可以看到

152
00:09:07,414 --> 00:09:10,202
R5和R6的运算结果是一样的

153
00:09:11,765 --> 00:09:15,047
接下来我们就要用TR2RP Y

154
00:09:15,047 --> 00:09:17,618
这个函数把R5旋转矩阵

155
00:09:17,618 --> 00:09:20,746
给它转换成RPY角运算的结果

156
00:09:20,746 --> 00:09:21,848
如下所示

157
00:09:23,319 --> 00:09:25,795
所有的三角度形式的姿态表示

158
00:09:25,869 --> 00:09:28,516
不论是欧拉是还是RPY是

159
00:09:28,826 --> 00:09:30,960
当两连续轴共线时

160
00:09:30,960 --> 00:09:33,233
都会遇到万象解锁的问题

161
00:09:33,457 --> 00:09:34,653
为消除这个问题

162
00:09:34,898 --> 00:09:36,670
我们引进四元素法

163
00:09:36,990 --> 00:09:39,530
即将在下面的小节中讨论

164
00:09:44,258 --> 00:09:44,727
三

165
00:09:44,909 --> 00:09:46,328
双向量表示法

166
00:09:46,734 --> 00:09:48,868
机器人末端执行器的坐标

167
00:09:48,954 --> 00:09:52,870
用一个接近向量A和一个姿态向量O

168
00:09:52,870 --> 00:09:54,140
来定义它的位姿

169
00:09:54,450 --> 00:09:57,353
从而可以计算出姿态向量N

170
00:09:57,961 --> 00:10:00,256
NOA分别对应于

171
00:10:00,256 --> 00:10:03,372
末端执行器坐标系的XY和Z轴

172
00:10:03,810 --> 00:10:07,460
那么我们就可以用OR2R这个函数

173
00:10:07,908 --> 00:10:11,077
OA这两个向量作为输入参数

174
00:10:11,131 --> 00:10:13,372
组成旋转矩阵大R

175
00:10:13,842 --> 00:10:15,538
下面我们就来看一下

176
00:10:15,538 --> 00:10:17,641
Matlab具体函数的实现

177
00:10:32,315 --> 00:10:33,659
好  我们来看一下

178
00:10:34,318 --> 00:10:37,488
如果我们定义A是等于100

179
00:10:37,791 --> 00:10:41,006
O是等于010这样的一个向量

180
00:10:42,014 --> 00:10:45,279
那么我们调用OA2R这个函数

181
00:10:45,287 --> 00:10:47,971
就可以把OA所组成的一个向量

182
00:10:47,971 --> 00:10:50,167
组成一个旋转矩阵R7

183
00:10:50,493 --> 00:10:51,987
看一下运算的结果

184
00:10:52,201 --> 00:10:53,248
如下所示

185
00:10:56,315 --> 00:10:56,812
四

186
00:10:57,274 --> 00:10:59,135
绕任意向量旋转

187
00:10:59,281 --> 00:11:01,019
涉及到的函数主要有

188
00:11:01,233 --> 00:11:02,796
TR2angvec

189
00:11:03,553 --> 00:11:07,631
求出R的等效任意旋转变换的

190
00:11:07,757 --> 00:11:10,747
旋转矢量vec和转角theta

191
00:11:11,456 --> 00:11:13,262
还有angvec2r

192
00:11:13,495 --> 00:11:15,679
从角度和向量计算出

193
00:11:15,679 --> 00:11:17,068
相应的旋转矩阵

194
00:11:17,582 --> 00:11:19,514
下面我们来看一下Matlab

195
00:11:19,514 --> 00:11:20,776
具体函数的实现

196
00:11:34,234 --> 00:11:35,536
好  我们来看一下

197
00:11:35,627 --> 00:11:38,912
我们分别调用tr2angvec和

198
00:11:38,912 --> 00:11:40,833
angvec2R这两个函数

199
00:11:40,833 --> 00:11:43,406
来看一下这两个函数的具体的实现

200
00:11:46,813 --> 00:11:48,246
函数时间的结果

201
00:11:49,254 --> 00:11:50,404
如上所示

202
00:11:53,101 --> 00:11:53,640
五

203
00:11:53,796 --> 00:11:54,946
单位四元数

204
00:11:55,557 --> 00:11:57,601
单位四元数可以被看作

205
00:11:57,601 --> 00:12:00,496
是绕单位向量N旋转了C塔角

206
00:12:00,837 --> 00:12:03,534
该旋转与四元数组的关系

207
00:12:03,718 --> 00:12:05,138
如下式所示

208
00:12:05,493 --> 00:12:07,622
单位四元素表示法的引入

209
00:12:07,679 --> 00:12:10,518
解决了三角度形式的姿态表示中

210
00:12:10,574 --> 00:12:11,994
万象解锁的问题

211
00:12:16,686 --> 00:12:18,890
涉及到的函数主要有

212
00:12:19,376 --> 00:12:21,960
Quatenion和UnitQuatenion

213
00:12:21,960 --> 00:12:25,243
分别是建立四元数和单位四元数

214
00:12:25,410 --> 00:12:28,541
Q点RNV是四元数的共轭

215
00:12:29,057 --> 00:12:32,097
Q点display也是打印出可读的形式

216
00:12:32,568 --> 00:12:34,772
Q点plot的是绘制四元数

217
00:12:34,772 --> 00:12:34,984
所指的方向

218
00:12:34,984 --> 00:12:36,033
所指的方向

219
00:12:36,641 --> 00:12:37,857
Q点animate

220
00:12:38,130 --> 00:12:41,838
是画出四元数的坐标变换的动画

221
00:12:42,021 --> 00:12:45,121
Q点R是转换成旋转矩阵

222
00:12:45,182 --> 00:12:47,963
Q点T是转换成齐次变换矩阵

223
00:12:48,237 --> 00:12:51,580
Q点torpy是转换成导航角

224
00:12:51,610 --> 00:12:55,182
Q点TOEUL是转换成欧拉角

225
00:12:55,607 --> 00:12:57,021
下面我们来看一下

226
00:12:57,021 --> 00:12:58,875
Matlab啊具体函数实现

227
00:13:12,462 --> 00:13:13,753
好  我们来看一下

228
00:13:14,042 --> 00:13:17,097
首先我们定义S和V

229
00:13:18,404 --> 00:13:20,835
然后呢调用UnitQuatenion

230
00:13:20,835 --> 00:13:23,708
这个函数来组成一个四元数Q

231
00:13:26,124 --> 00:13:31,003
然后调用RNV来求它的一个共轭

232
00:13:31,428 --> 00:13:32,325
Q点display

233
00:13:32,325 --> 00:13:34,437
打印出四元数

234
00:13:34,437 --> 00:13:38,662
Q点plot是绘制出这个四元数

235
00:13:39,255 --> 00:13:42,310
Q点animate是做一个四元素的一个动画

236
00:13:43,465 --> 00:13:47,036
然后我们分别吊用Q点T和Q点R

237
00:13:47,036 --> 00:13:50,790
来做它的一个齐次变换矩阵和旋转矩阵

238
00:13:51,170 --> 00:13:53,799
然后就要用Q点TORPY

239
00:13:54,164 --> 00:13:56,626
来把它转换成RPY角

240
00:13:56,945 --> 00:14:00,911
Q点tooEUL是转换成EUL的角

241
00:14:01,960 --> 00:14:03,525
看一下具体的运行结果

242
00:14:06,413 --> 00:14:06,854
好

243
00:14:06,854 --> 00:14:09,680
我们可以得到四元数法

244
00:14:10,197 --> 00:14:13,085
Q他是组成了这样的一个四元数

245
00:14:15,091 --> 00:14:17,386
TT呢是它的齐次变换矩阵

246
00:14:17,386 --> 00:14:19,741
RR呢是它的一个旋转矩阵

247
00:14:20,364 --> 00:14:20,805
那么

248
00:14:20,820 --> 00:14:24,604
RPY和EUL分别如上所示

249
00:14:25,942 --> 00:14:27,963
第四节坐标变换

250
00:14:28,282 --> 00:14:29,103
平移类

251
00:14:29,270 --> 00:14:32,158
涉及到的函数主要是transl

252
00:14:32,264 --> 00:14:33,343
下面我们来看一下

253
00:14:33,343 --> 00:14:35,440
Matlab函数的具体实现

254
00:14:53,496 --> 00:14:53,986
好

255
00:14:54,019 --> 00:14:55,146
程序的运行结果

256
00:14:55,146 --> 00:14:56,116
如上所示

257
00:14:58,289 --> 00:14:58,643
好

258
00:14:58,667 --> 00:15:00,378
这节课我们就上到这里


