很高兴可以和大家分享自己的学习之路
这个板块主要是分享机器人学的相关知识,目前理论部分主要分为三个方面:
-
运动学
-
动力学
-
控制理论
实践部分:
运动学计算:rviz和matlab机器人工具箱
控制和动力学的分析:使用matlab进行
将一些控制算法嵌入到ros平台上
如果还是有时间我会探究一下RT-linux系统在机器人上的运用~
这些是我埋下的坑啦,我会慢慢慢慢的填坑的啦~~~~~~~~
很高兴可以和大家分享自己的学习之路
这个板块主要是分享机器人学的相关知识,目前理论部分主要分为三个方面:
运动学
动力学
控制理论
实践部分:
运动学计算:rviz和matlab机器人工具箱
控制和动力学的分析:使用matlab进行
将一些控制算法嵌入到ros平台上
如果还是有时间我会探究一下RT-linux系统在机器人上的运用~
这些是我埋下的坑啦,我会慢慢慢慢的填坑的啦~~~~~~~~
终于到了这个正向运动学了~~~
上一节说了,机器人学在变换形式上是比图形简单许多的,那么我们就来看看上一节的坐标变换有什么应用。
一、分杆定关节
记住一句话,向后看关节,就 是指,杆上会固定有两个关节,一个是和杆是同号的,一个是比杆下一号的。
1.机器人连杆与关节的标号
先标号,再建系。
连杆编号:基座为杆0,从基座往后依次定义为杆1,杆2,…,杆i;
关节编号:杆i离基座近的一端(近端)的关节为关节i,远的一端(远端)为关节i+1。
为便于理解,这里我把连杆的近端用绿色表示,远端用橙色表示,且远端驱动近端转动。大家只要记住一句话,连杆近端关节的标号和连杆标号是一致的。
图1连杆和关节标号
二、确定Z方向,再确定X方向
有两种把Z轴放置的位置,一个是Z轴在杆和关节相同的位置,那就是改进DH,就是关节和坐标系相同,另外一个就是Z轴在下一关节位置,这样,坐标系就会比杆的序号多一,这个就是标准DH。
区别一:连杆坐标系建立的位置不同。SDH方法将连杆i的坐标系固定在连杆的远端,MDH方法把连杆i的坐标系固定在连杆的近端。
(a)SDH (b)MDH
3.影响
对于树形结构或者闭链机构的机器人来说,按照SDH方法建立的连杆坐标系会产生歧义,因为SDH的建系原则是把连杆i的坐标系建立在连杆的远端,如图3(a)所示,这就导致连杆0上同时出现了两个坐标系。而MDH把连杆坐标系建立在每个连杆的近端,则不会坐标系重合的情况,如图3(b)所示,这就克服了SDH方法建系的缺点。
(a)SDH (b)MDH
图3 坐标系分配的不同
然后我们确定X轴的方向,分情况:
1.MDH
x轴就是杆的方向,也就是MDH中的X轴就是与关节同序号,指向下一个坐标系,我们就能得到下面这个图:
2.SDH
x轴就是杆的方向,也就是SDH中的X轴就是与关节不同序号,杆的方向是X轴是由上一坐标系指过来,如下图:
确定移动顺序:
先介绍d,θ,a,α,分别是x轴之间的距离,x轴之间的角度,z轴之间的距离,z轴之间的角度
也就是两种方法建模取决于初始位置有什么信息。
三、确定坐标系的初始位置
其实只要关注坐标系在初始位置上有没有同时拥有d和θ的信息,没有的话就是MDH。
四、正向移动
这个链接有个例子可以作为习题参考:
我们开始学习运动学的知识,这是后面表达位姿(位置和姿态),线速度,角速度,力和力矩的基础
我参考的书籍如下:
《机器人学导论》
《现代机器人学》
《机器人建模和控制》
《机器人学建模规划与控制》
课程链接:
台大机器人学之运动学——林沛群
https://www.bilibili.com/video/BV1v4411H7ez?spm_id_from=333.337.search-card.all.click
【中英字幕】现代机器人学 | Modern Robotics
https://www.bilibili.com/video/BV1KV411Z7sC?spm_id_from=333.337.search-card.all.click&vd_source=2cb00bb72c9b0db721c2c6945444f148
建议可以翻墙的同学直接在coursera上看原版,b站上的少了很多东西
https://www.coursera.org/specializations/modernrobotics
ME331-机器人建模和控制
https://space.bilibili.com/499858787/?spm_id_from=333.999.0.0
这几个课程互相补充,但是这几个讲的矩阵部分都不是太好,毕竟这门课的先修课是线性代数,刚体力学,反馈控制
所以我推荐mit的线性代数
https://www.bilibili.com/video/BV1ix411f7Yp?p=2&vd_source=2cb00bb72c9b0db721c2c6945444f148
学习完这个再来看这个就很有体会了
ok,教材确定下来了,我准备按照下面这几个大纲去给大家说明这运动学是怎么个一回事:
怎么计算自由度有机会可以填一下坑。
位形空间:
With this assumption, Chapter 2 focuses on representing the configuration
of a robot system, which is a specification of the position of every point of the
robot. Since the robot consists of a collection of rigid bodies connected by
joints, our study begins with understanding the configuration of a rigid body.
We see that the configuration of a rigid body in the plane can be described
using three variables (two for the position and one for the orientation) and the
configuration of a rigid body in space can be described using six variables (three
for the position and three for the orientation). The number of variables is the
number of degrees of freedom (dof) of the rigid body. It is also the dimension
of the configuration space, the space of all configurations of the body
这里是摘自现代机器人学的书籍
http://hades.mech.northwestern.edu/images/8/81/MR-largefont.pdf
https://www.cnblogs.com/21207-iHome/p/7756084.html
暂时还没有公式插入,就先截图了~~
当然这个表达还有隐式表达和显式表达:
假设我们想在一个圆上表示一个点。我们可以通过选择从圆心到所选零角的点从 0 到 2π 变化的角度来做到这一点。两个坐标减去一个约束,为我们提供了圆所属的一维空间。这称为 C 空间的隐式表示,与使用最少坐标数表示空间的显式表示相反:
就是对于某个对象,该对象的所有的点及其点能达到的地方的集合,就是位形空间。
看二维SE(2),如果x,y,θ三者可以任意取,那其实就是覆盖了整个二维空间,想象一个极坐标系在不停的移动和旋转。
但是理论上是假设了整个空间没有障碍物,物体没有形状。但在实际控制机器人时就必须考虑其真实尺寸,这时机器人就不能被简单地当做一个点。
那我们考虑怎么将一个有形状,有障碍的对象转化成一个点,并描述其位形空间?
那么位形空间就会被工作空间障碍分为自由空间 C (free) 和障碍 空间 C (obs ),其中C = C (free) ∪ C (obs )。关节限制被视为 配置空间中的障碍。
借助C (free) 和C (obs的概念),路径规划问题 简化为在障碍C (obs)中为点机器人寻找路径的问题。
路径规划的目标是在 工作空间中找到一条从初始位置到目标位置的路径,避免所有与障碍物的碰撞。这是一个很难在物理空间中可视化和解决的问题 ,尤其是当维度变大时。但在位形空间中,问题很简单。
如果机器人不是一个点怎么办?
对平面机器人来说,C-Space就是以机器人的尺寸为基础,对工作空间进行一定的膨胀即可得到:
如果对工作空间中的障碍物进行膨胀产生了重叠的部分,如下图所示,则表示机器人不能通过那个区域:
C-Space与机器人实际形状和尺寸有关,从下图可以看出中间和右边两个机器人由于尺寸(直径)太大而不能通过工作空间的某些区域:
另外机器人的形状也会影响C-Space。下图中的直角三角形代表一个三角形状的机器人,只能在平面内平移,其参考位置点在图中的(x,y)处。灰色矩形是工作空间内的障碍物,将机器人贴着障碍物边界滑行一圈,追踪参考点的位置可以画出一个黑色粗线框的多边形区域。这个区域就是该三角形机器人C-Space中的障碍区域。
下面是一个关节型机器人的例子。平面二连杆机器人有两个自由度,可以绕两个关节分别旋转0-360°,中间的图描绘了在工作空间中机器人从初始位置开始经过一系列中间点避开障碍物A、B、C运动到目标位置。右图是与之对应的C-Space中的情形:
注意θ(1 )= 0和θ(1 )= 2π(θ(2 )= 0和θ(2 )= 2π)其实是一个角度,因此上面C-Space的左右边界和上下边界其实是连在一起的。其拓扑结构是一个圆环面(torus),正方形构型空间可从圆环面的θ(1 )= 0、θ(2 )= 0处切开、展平得到。
任何落在C-obstacle中的点都表示位于该构型时机械臂与障碍物发生了碰撞。C-Space中从start到end的路径代表了一条工作空间中无碰撞的路径。注意障碍物将C(free)分隔成了三个连通区域,且起点和终点处于同一连通区域中。然而下图这种情况,起始状态q(A)和目标状态q(B)分别位于不连通的区域内,机械臂从A运动到B无论怎么走必然会撞到障碍物。
这是一个能够仿真出位形空间和工作区间的关系的小工具:
https://www.cs.unc.edu/~jeffi/c-space/robot.xhtml
绿色的就是一个小机械臂,红色就是障碍区域,右边的横纵坐标是两个角度(双两杆)。
对于任意的一个机械臂,只要画出其位形空间,那么就可以进行路径规划的算法来进行关节空间的运动规划。
这里有个文章讲路径规划的还可以
https://zhuanlan.zhihu.com/p/390698211
如果想进一步学习关于位形空间和路径规划:
https://blog.csdn.net/huangjunsheng123/article/details/118554490
https://www.bilibili.com/video/BV1bp4y1z7mi?p=2&vd_source=2cb00bb72c9b0db721c2c6945444f148
任务空间:
任务空间是对机器人任务的空间描述,和机器人无关,比如说任务是机器人写字,那就是写字的这整个平面空间,如果是机器人踢球,那任务空间就是整个球场,这个是和机器人无关,指的是任务的一个空间描述
工作空间:
机器人的工作空间就是指末端能够到达的区域,这个和机器人的机构有关
状态空间:
位形是对机械臂的几何结构提供了一个瞬态的描述,而状态空间则是与机械臂的动态响应有关,状态空间是指所有的可能的状态的集合。
机器人的状态变量是指这样的一组变量:结合机械臂的动力学描述,以及未来输入,足以确定机械臂未来的时域响应。
终于到了这个正向运动学了~~~
上一节说了,机器人学在变换形式上是比图形简单许多的,那么我们就来看看上一节的坐标变换有什么应用。
一、分杆定关节
记住一句话,向后看关节,就 是指,杆上会固定有两个关节,一个是和杆是同号的,一个是比杆下一号的。
1.机器人连杆与关节的标号
先标号,再建系。
连杆编号:基座为杆0,从基座往后依次定义为杆1,杆2,…,杆i;
关节编号:杆i离基座近的一端(近端)的关节为关节i,远的一端(远端)为关节i+1。
为便于理解,这里我把连杆的近端用绿色表示,远端用橙色表示,且远端驱动近端转动。大家只要记住一句话,连杆近端关节的标号和连杆标号是一致的。
图1连杆和关节标号
二、确定Z方向,再确定X方向
有两种把Z轴放置的位置,一个是Z轴在杆和关节相同的位置,那就是改进DH,就是关节和坐标系相同,另外一个就是Z轴在下一关节位置,这样,坐标系就会比杆的序号多一,这个就是标准DH。
区别一:连杆坐标系建立的位置不同。SDH方法将连杆i的坐标系固定在连杆的远端,MDH方法把连杆i的坐标系固定在连杆的近端。
(a)SDH (b)MDH
3.影响
对于树形结构或者闭链机构的机器人来说,按照SDH方法建立的连杆坐标系会产生歧义,因为SDH的建系原则是把连杆i的坐标系建立在连杆的远端,如图3(a)所示,这就导致连杆0上同时出现了两个坐标系。而MDH把连杆坐标系建立在每个连杆的近端,则不会坐标系重合的情况,如图3(b)所示,这就克服了SDH方法建系的缺点。
(a)SDH (b)MDH
图3 坐标系分配的不同
然后我们确定X轴的方向,分情况:
1.MDH
x轴就是杆的方向,也就是MDH中的X轴就是与关节同序号,指向下一个坐标系,我们就能得到下面这个图:
2.SDH
x轴就是杆的方向,也就是SDH中的X轴就是与关节不同序号,杆的方向是X轴是由上一坐标系指过来,如下图:
确定移动顺序:
先介绍d,θ,a,α,分别是x轴之间的距离,x轴之间的角度,z轴之间的距离,z轴之间的角度
也就是两种方法建模取决于初始位置有什么信息。
三、确定坐标系的初始位置
其实只要关注坐标系在初始位置上有没有同时拥有d和θ的信息,没有的话就是MDH。
四、正向移动
这个链接有个例子可以作为习题参考:
这一章节主要提纲如下:
一、刚体位姿描述
如何描述刚体:
首先我们是针对三维的物体,那我们就用常见的直角坐标系去描述一个刚体,
机器人中的旋转轴使用x,y和z轴。正面是x轴的正方向,轴是红色(Red)。左边是y轴的正方向,轴用绿色(Green)表示。最后,上方是z轴的正方向,轴用蓝色(Blue)表示。为了便于记忆,您可以将x轴视为食指,将y轴视为中指,将z轴视为拇指。顺序是x、y、z,且颜色是RGB颜色顺序。机器人的旋转方向是右手定则,用右手卷住的方向是正(+)方向
对于一个点,我们可以用(x,y,z)三个坐标值来描述,但是对于一个三维空间的刚体来说,假设有一个坐标系固结在刚体上,则需要三个向量去描述其姿态, ,那么一整个刚体则需要四个向量去描述(3方向+1原点)
刚体可以由其在空间中相对参考坐标系的位置和方向(即位姿)进行完整的描述。
描述刚体的位姿最常用的方法是在基座上建立一个固定坐标系{A},在运动刚体上建立运动坐标系{B},通过描述运动坐标系在固定坐标系的位置和姿态来描述刚体的空间位姿。
刚体的空间位置可用运动坐标系的原点坐标
表示,运动坐标系的原点可以建立在刚体的质心或几何中心上,通过描述该点的坐标,可以很好地体现刚体的位置特征。
知道原点就可以知道刚体的位置,知道固结在刚体坐标系的指向,就可以知道刚体的姿态
用于坐标系间点的映射的通用数学表达式称为算子,包括点的平移算子,矢量旋转算子,旋转加平移算子。
二、平移
坐标系的映射:
[图片]
P1是在坐标系一开始的位置,P2是在经过平移算子的位置,
平移算子:
三、旋转
坐标系的映射:
矢量变化直接就是将坐标系换成矢量即可,变换矩阵是相同的
这里只介绍欧拉角,因为这个欧拉角是指绕特定的X,Y,Z(笛卡尔坐标系),如果是然任意轴,其实旋量理论更方便,后面有机会再补充
那么旋转的欧拉角按从世界坐标系转换到本体坐标系的过程,先按z轴旋转、之后y轴旋转、之后x轴旋转,最终得到本体坐标系,得到的角度分别是yaw、pitch、roll,那么从本体坐标系到世界坐标系的旋转矩阵按如下方式定义:
如果绕的这个轴一直是本体坐标系的轴,那么按顺序右乘,如果是按照相对坐标系,那就左乘,这个从定义去考虑就很简单,因为右乘就是指将前面的矩阵的列向量进行线性组合,列向量则是本体坐标系的基向量,而左乘则是,将后面的行向量进行线性组合。
四、一般变换
坐标系的映射:
那这个T自然而然就是包括了旋转和平移,左上角A,右下角B 表示B相对于A来描述,
为什么要写成这个样子,因为这个矩阵能够旋转拉伸平移,集中在一起,参考图形的知识:
只不过机器人学中把这个平移放在右上角而已,那为什么要把这个写成矩阵的形式呢?
首先对于对于矩阵 A 可以对角化的话,可以通过相似矩阵进行下面这样的特征值分解:
其中,P 的列向量是单位化的特征向量。
说的有点抽象,我们拿个具体的例子来讲:
对于方阵而言,矩阵不会进行纬度的升降,所以矩阵代表的运动实际上只有两种:
左乘
:
补充完对角阵的知识,我们就可以知道旋转矩阵就是这么一个旋转变换,而大部分的图形变换的矩阵是混合了拉伸,机器人学相比起来就是很简单的啦~~~
这里整体只需掌握几件事
我们开始学习运动学的知识,这是后面表达位姿(位置和姿态),线速度,角速度,力和力矩的基础
我参考的书籍如下:
《机器人学导论》
《现代机器人学》
《机器人建模和控制》
《机器人学建模规划与控制》
课程链接:
台大机器人学之运动学——林沛群
https://www.bilibili.com/video/BV1v4411H7ez?spm_id_from=333.337.search-card.all.click
【中英字幕】现代机器人学 | Modern Robotics
https://www.bilibili.com/video/BV1KV411Z7sC?spm_id_from=333.337.search-card.all.click&vd_source=2cb00bb72c9b0db721c2c6945444f148
建议可以翻墙的同学直接在coursera上看原版,b站上的少了很多东西
https://www.coursera.org/specializations/modernrobotics
ME331-机器人建模和控制
https://space.bilibili.com/499858787/?spm_id_from=333.999.0.0
这几个课程互相补充,但是这几个讲的矩阵部分都不是太好,毕竟这门课的先修课是线性代数,刚体力学,反馈控制
所以我推荐mit的线性代数
https://www.bilibili.com/video/BV1ix411f7Yp?p=2&vd_source=2cb00bb72c9b0db721c2c6945444f148
学习完这个再来看这个就很有体会了
ok,教材确定下来了,我准备按照下面这几个大纲去给大家说明这运动学是怎么个一回事:
怎么计算自由度有机会可以填一下坑。
位形空间:
With this assumption, Chapter 2 focuses on representing the configuration
of a robot system, which is a specification of the position of every point of the
robot. Since the robot consists of a collection of rigid bodies connected by
joints, our study begins with understanding the configuration of a rigid body.
We see that the configuration of a rigid body in the plane can be described
using three variables (two for the position and one for the orientation) and the
configuration of a rigid body in space can be described using six variables (three
for the position and three for the orientation). The number of variables is the
number of degrees of freedom (dof) of the rigid body. It is also the dimension
of the configuration space, the space of all configurations of the body
这里是摘自现代机器人学的书籍
http://hades.mech.northwestern.edu/images/8/81/MR-largefont.pdf
https://www.cnblogs.com/21207-iHome/p/7756084.html
暂时还没有公式插入,就先截图了~~
当然这个表达还有隐式表达和显式表达:
假设我们想在一个圆上表示一个点。我们可以通过选择从圆心到所选零角的点从 0 到 2π 变化的角度来做到这一点。两个坐标减去一个约束,为我们提供了圆所属的一维空间。这称为 C 空间的隐式表示,与使用最少坐标数表示空间的显式表示相反:
就是对于某个对象,该对象的所有的点及其点能达到的地方的集合,就是位形空间。
看二维SE(2),如果x,y,θ三者可以任意取,那其实就是覆盖了整个二维空间,想象一个极坐标系在不停的移动和旋转。
但是理论上是假设了整个空间没有障碍物,物体没有形状。但在实际控制机器人时就必须考虑其真实尺寸,这时机器人就不能被简单地当做一个点。
那我们考虑怎么将一个有形状,有障碍的对象转化成一个点,并描述其位形空间?
那么位形空间就会被工作空间障碍分为自由空间 C (free) 和障碍 空间 C (obs ),其中C = C (free) ∪ C (obs )。关节限制被视为 配置空间中的障碍。
借助C (free) 和C (obs的概念),路径规划问题 简化为在障碍C (obs)中为点机器人寻找路径的问题。
路径规划的目标是在 工作空间中找到一条从初始位置到目标位置的路径,避免所有与障碍物的碰撞。这是一个很难在物理空间中可视化和解决的问题 ,尤其是当维度变大时。但在位形空间中,问题很简单。
如果机器人不是一个点怎么办?
对平面机器人来说,C-Space就是以机器人的尺寸为基础,对工作空间进行一定的膨胀即可得到:
如果对工作空间中的障碍物进行膨胀产生了重叠的部分,如下图所示,则表示机器人不能通过那个区域:
C-Space与机器人实际形状和尺寸有关,从下图可以看出中间和右边两个机器人由于尺寸(直径)太大而不能通过工作空间的某些区域:
另外机器人的形状也会影响C-Space。下图中的直角三角形代表一个三角形状的机器人,只能在平面内平移,其参考位置点在图中的(x,y)处。灰色矩形是工作空间内的障碍物,将机器人贴着障碍物边界滑行一圈,追踪参考点的位置可以画出一个黑色粗线框的多边形区域。这个区域就是该三角形机器人C-Space中的障碍区域。
下面是一个关节型机器人的例子。平面二连杆机器人有两个自由度,可以绕两个关节分别旋转0-360°,中间的图描绘了在工作空间中机器人从初始位置开始经过一系列中间点避开障碍物A、B、C运动到目标位置。右图是与之对应的C-Space中的情形:
注意θ(1 )= 0和θ(1 )= 2π(θ(2 )= 0和θ(2 )= 2π)其实是一个角度,因此上面C-Space的左右边界和上下边界其实是连在一起的。其拓扑结构是一个圆环面(torus),正方形构型空间可从圆环面的θ(1 )= 0、θ(2 )= 0处切开、展平得到。
任何落在C-obstacle中的点都表示位于该构型时机械臂与障碍物发生了碰撞。C-Space中从start到end的路径代表了一条工作空间中无碰撞的路径。注意障碍物将C(free)分隔成了三个连通区域,且起点和终点处于同一连通区域中。然而下图这种情况,起始状态q(A)和目标状态q(B)分别位于不连通的区域内,机械臂从A运动到B无论怎么走必然会撞到障碍物。
这是一个能够仿真出位形空间和工作区间的关系的小工具:
https://www.cs.unc.edu/~jeffi/c-space/robot.xhtml
绿色的就是一个小机械臂,红色就是障碍区域,右边的横纵坐标是两个角度(双两杆)。
对于任意的一个机械臂,只要画出其位形空间,那么就可以进行路径规划的算法来进行关节空间的运动规划。
这里有个文章讲路径规划的还可以
https://zhuanlan.zhihu.com/p/390698211
如果想进一步学习关于位形空间和路径规划:
https://blog.csdn.net/huangjunsheng123/article/details/118554490
https://www.bilibili.com/video/BV1bp4y1z7mi?p=2&vd_source=2cb00bb72c9b0db721c2c6945444f148
任务空间:
任务空间是对机器人任务的空间描述,和机器人无关,比如说任务是机器人写字,那就是写字的这整个平面空间,如果是机器人踢球,那任务空间就是整个球场,这个是和机器人无关,指的是任务的一个空间描述
工作空间:
机器人的工作空间就是指末端能够到达的区域,这个和机器人的机构有关
状态空间:
位形是对机械臂的几何结构提供了一个瞬态的描述,而状态空间则是与机械臂的动态响应有关,状态空间是指所有的可能的状态的集合。
机器人的状态变量是指这样的一组变量:结合机械臂的动力学描述,以及未来输入,足以确定机械臂未来的时域响应。
很高兴可以和大家分享自己的学习之路
这个板块主要是分享机器人学的相关知识,目前理论部分主要分为三个方面:
运动学
动力学
控制理论
实践部分:
运动学计算:rviz和matlab机器人工具箱
控制和动力学的分析:使用matlab进行
将一些控制算法嵌入到ros平台上
如果还是有时间我会探究一下RT-linux系统在机器人上的运用~
这些是我埋下的坑啦,我会慢慢慢慢的填坑的啦~~~~~~~~