《Robotics,Vision and Control-2nd Edition》——Learning with Me, day 2

第一章 简要介绍

本书开始从机器人的历史开始介绍,内容较多,有兴趣的可以看机器人领域大牛Oussama Khatib的专著——机器人学手册,这本书内容极为详尽!
有时候一些比较繁琐的内容,我就只看插图。这种方法在鉴别论文的好坏也有用处,一般一篇好的论文,其插图一定极为完美。在这里仅展示一些书中的插图内容。(版权归原书作者所有)下面带大家一起领略以下本书的精美图片。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二章 位置和方向的表示

其中第二章是本书的基础内容,主要讲坐标系相关的知识点。除了这一章,后面的章节可以选择性的看。
书中对一些公式和公式的推导有很详细的说明,我的博客不在这方面做过多解释。如果有想深入了解的,请看原版书籍中的内容。

  1. 首先从二维空间入手

先单独讲矩阵的旋转如何表示,
在这里插入图片描述
如果我们要从坐标系V,逆时针旋转 \theta 角度,可由如下转换:
在这里插入图片描述
由此可以得到旋转矩阵:
在这里插入图片描述
代码例子:

R = rot2(0.2)

运行结果:

R =
0.9801 -0.1987
0.1987 0.9801

(注:以上使用弧度值表示的角度,比如pi表示为3.14)

我们可以验证该旋转矩阵R,矩阵的秩为1(det( R )=1),R的逆矩阵与R的转置相同。

>> syms theta
>> R = rot2(theta)
R =
[ cos(theta), -sin(theta)]
[ sin(theta), cos(theta)]
>> simplify(R*R)
ans =
[ cos(2*theta), -sin(2*theta)]
[ sin(2*theta), cos(2*theta)]
>> simplify(det(R))
ans =
1

如果我们已知一个旋转矩阵,如何知道旋转的度数?
至少有两个解决方法,一是通过旋转矩阵的定义式,求反三角函数得到角度值;二,可以直接用工具箱自带的函数logm和函数vex,代码如下:

>> R = rot2(0.3)
ans =
0.9553 -0.2955
0.2955 0.9553
>> S = logm(R)
S =
0.0000 -0.3000
0.3000 0.0000
>> vex(S)
ans =
0.3000

关于函数vex的使用方法,可查看MATLAB的帮助;

下面把平移和旋转结合起来,就可以得到两个坐标之间的任意变换。
在这里插入图片描述

假设坐标系{V}和坐标系{A}是平行,简单的推导得到坐标系{A}和{B}之间的关系如下:
在这里插入图片描述
写成紧凑的形式:
在这里插入图片描述
此时综合的变换矩阵为:
在这里插入图片描述
下面我们验证一下该矩阵的相关性质:

>> T1 = transl2(1, 2) * trot2(30, 'deg')
T1 =
0.8660 -0.5000 1.0000
0.5000 0.8660 2.0000
0 0 1.0000

transl2(1,2),表示相对平移坐标(2,1),不旋转;
trot2(30,‘deg’),表示逆时针旋转30°,不平移。
(注:函数rot2和trot2都可以表示旋转)

直观的用坐标图表示,如下:
运行以下代码:

>> plotvol([0 5 0 5]);
>> trplot2(T1, 'frame', '1', 'color', 'b')
>> T2 = transl2(2, 1)
T2 =
1 0 2
0 1 1
0 0 1
>> trplot2(T2, 'frame', '2', 'color', 'r');
>> T3 = T1*T2
T3 =
0.8660 -0.5000 2.2321
0.5000 0.8660 3.8660
0 0 1.0000
>> trplot2(T3, 'frame', '3', 'color', 'g');
>> T4 = T2*T1;
>> trplot2(T4, 'frame', '4', 'color', 'c');

分别运行上述代码,得到如下图像:
在这里插入图片描述
其中T3和T4的不同,说明了转换矩阵的左乘次序会影响转换的结果。先平移在旋转,会得到我们直观的结果。如果先旋转,再平移的话,旋转的坐标会影响平移的结果。本篇文章的后面会详细解释这种不可交换性(noncommutativity)

现在我们已经知道各个坐标的平移,那么,坐标中任意一点,在任意一个坐标轴上该如何表示呢?
以上图的大地坐标系中的P(3,2)点为例,它在坐标系{1}中该如何表示?
绘制P点的代码:

>> P = [3 ; 2 ];
>> plot_point(P, 'label', 'P', 'solid', 'ko');

为了解释变换的方法,我们做一个约定:
在这里插入图片描述
等式右边第一部分是向量A到向量B的转换矩阵。
下面做一个简单的推导:
在这里插入图片描述
在这里插入图片描述
代码表示则为:

>> P1 = inv(T1) * [P; 1]
P1 =
1.7321
-1.0000
1.0000

由于坐标下面多了一个“1”,我们转换一下:

>> h2e( inv(T1) * e2h(P) )
ans =
1.7321
-1.0000

(注:函数e2h是从欧几里得坐标转化为同质坐标,具体参考Matlab的help文档。)

举个例子:

>> plotvol([-5 4 -1 5]);
>> T0 = eye(3,3);
>> trplot2(T0, 'frame', '0');
>> X = transl2(2, 3);
>> trplot2(X, 'frame', 'X');

上述代码绘制坐标系T0(世界坐标系)和X(由T0平移获得)
旋转变换

>> R = trot2(2);

分别绘制经过RX和XR变换的结果(如下图):

>> trplot2(R*X, 'framelabel', 'RX', 'color', 'r');
>> trplot2(X*R, 'framelabel', 'XR', 'color', 'r');

在这里插入图片描述
如果希望坐标轴按照指定点(如图中C点)做平移旋转,如下:

>> C = [1 2]';
>> plot_point(C, 'label', ' C', 'solid', 'ko')
>> RC = transl2(C) * R * transl2(-C)
RC =
-0.4161 -0.9093 3.2347
0.9093 -0.4161 1.9230
0 0 1.0000
>> trplot2(RC*X, 'framelabel', 'XC', 'color', 'r');

注意其中旋转变换矩阵为RC。这样看上去还是比较复杂,接下来讲一种直观的新方法,利用Twist函数。
首先我们可以明确一个观念,就是两个任意坐标系,可以通过旋转,把一个坐标系和另一个坐标系重合。平移被认为旋转半径无限大。下面来看代码演示:

>> tw = Twist('R', C)
tw =
( 2 -1; 1 )

创建一个tw对象,由一个2维向量距和1维向量旋转构成,其中R表示转换方式为旋转(rotate)。

>> tw.T(2)
ans =
-0.4161 -0.9093 3.2347
0.9093 -0.4161 1.9230
0 0 1.0000

用T方法可以得到转换矩阵的具体值,我们看到和之前RC的方法得到值差不多(其实这种方法更加精确)

>> tw.pole'
ans =
1 2

pole方法可以获得旋转中心的点坐标。

如果想要表示平移变换的话,以方向(1,1)为例,看下面的代码:

>> tw = Twist('T', [1 1])
tw =
( 0.70711 0.70711; 0 )
>> tw.T(sqrt(2))
ans =
1 0 1
0 1 1
0 0 1

通过转换矩阵我们可以发现,旋转角度为0,平移方向(1,1)
在这里插入图片描述

对于任意平面的变换,例如:

>> T = transl2(2, 3) * trot2(0.5)
T =
0.8776 -0.4794 2.0000
0.4794 0.8776 3.0000
0 0 1.0000

计算其twist向量为:

>> tw = Twist(T)
tw =
( 2.7082 2.4372; 0.5 )

旋转的角度为0.5弧度值。

还原成转换矩阵为:

>> tw.T
ans =
0.8776 -0.4794 2.0000
0.4794 0.8776 3.0000
0 0 1.0000

本节到此告一段落,下一节将把2维平面的结果推广到3维空间。3维空间的结果对于空间机器人(如水下机器人,无人机等)和机械臂来说更加重要!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《机器人学、视觉与控制-第2版》是由彼得·科赫(Peter Corke)所著的一本经典教材。该书为读者提供了全面且系统的机器人学、视觉与控制方面的知识。以下是对该书的简要回答。 首先,该书涵盖了广泛的机器人学知识。它从机器人学的基础开始介绍,包括齐次变换、机器人运动学、逆运动学和动力学等。在介绍完基础知识后,它还详细讨论了路径规划、运动控制和传感器,以及机器人的动力学建模和运动学控制等。通过该书的学习,读者可以全面了解机器人学的基本原理和算法。 其次,该书也涵盖了视觉方面的内容。它介绍了用于机器人视觉的图像获取、图像处理和特征提取等技术。此外,它还探讨了视觉传感器和摄像机的校准、三维视觉和物体识别等重要内容。这些知识可以帮助读者理解机器人如何通过视觉感知环境,从而实现自主操作和导航。 最后,该书强调了机器人控制的重要性。它介绍了不同类型的控制方法,包括位置控制、速度控制和力控制等。此外,它还涵盖了控制器的设计与实现、运动规划与轨迹跟踪等主题。通过学习这些内容,读者可以掌握机器人在不同任务中的控制策略,并了解如何将这些方法应用到实际的机器人系统中。 总之,《机器人学、视觉与控制-第2版》是一本内容丰富并深入浅出的教材,适用于机器人学和自动化控制领域的学习者和研究者。它通过清晰的讲解和丰富的实例,帮助读者深入理解机器人学、视觉与控制的理论和应用。 ### 回答2: 《机器人、视觉与控制-第二版》是一本深入介绍机器人技术的教材。该书由彼得·科多根(Peter Corke)教授撰写,旨在帮助读者了解机器人的运动、感知和控制。 首先,该书介绍了机器人系统的基本组成部分和组织结构。它从机器人的运动学和动力学入手,解释了机器人系统中关于位置、速度和加速度的基本概念。然后,它进一步介绍了机器人的传感器和感知技术,包括摄像头、激光雷达和力传感器等。 接下来,该书详细讲解了机器人运动规划和路径规划的方法。它介绍了常见的规划算法,如插值和正向运动学。此外,对于避开障碍物和进行逆向运动学求解的方法也有详细的介绍。 在控制方面,该书介绍了机器人控制系统的原理和方法。它讨论了闭环控制和开环控制,并解释了PID控制器的原理和调参方法。此外,还介绍了模型预测控制和自适应控制等高级控制方法。 最后,该书还探讨了机器人的计算机视觉和图像处理技术。它详细介绍了机器人视觉系统的组成和工作原理,以及如何进行目标检测、跟踪和三维重建。 总的来说,《机器人、视觉与控制-第二版》是一本全面而深入的机器人技术教材,适合研究机器人技术和控制的学生、研究人员和工程师阅读。通过学习这本书,读者可以获得关于机器人运动、感知和控制的全面理解,并学会应用这些知识解决实际问题。 ### 回答3: 《机器人学、视觉与控制-第2版》(Robotics, Vision and Control-2nd Edition)是一本关于机器人、视觉与控制的教材。这本书是由英国布里斯托大学的彼得·科雷尔(Peter Corke)教授撰写的。 该教材对机器人学的基本概念和原理进行了详尽的讲解,涵盖了机器人的运动学、动力学、传感器、定位、运动规划等方面的内容。同时,它还介绍了机器人的感知与感知技术,包括计算机视觉和视觉传感器的原理与应用。 《机器人学、视觉与控制-第2版》通过简明的语言和清晰的图示,将复杂的理论概念阐述得浅显易懂,让读者能够快速掌握机器人学的基本知识和技术。此外,书中还提供了丰富的实例和实验案例,帮助读者更好地理解机器人的应用场景和实践。 本书的特点之一是对MATLAB工具箱的广泛应用。它介绍了如何使用MATLAB进行机器人建模、仿真和控制设计,同时也涵盖了ROS(机器人操作系统)的基本概念和使用方法。 《机器人学、视觉与控制-第2版》适合作为机器人学、自动化、计算机视觉等专业的教材,也适用于工程师和研究人员作为参考书使用。读者通过学习本书可以深入了解机器人技术的原理和应用,为机器人研发和应用领域提供了有力的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值