1. 研究目的与意义
刚体运动(rigid motion)在三维空间中,把一个几何物体作旋转, 平移的运动,称之为刚体变换。刚体运动也可以理解为保持长度,角度,面积等不变的仿射变换,即保持内积和度量不变。从坐标变换上看, 旋转对应行列式的正交矩阵。此外,刚体变换下,具有物理意义的量,如梯度,散度和旋度都保持不变。从群的角度看,刚体变换全体构成一个群。
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
三维空间刚体运动在惯性导航、增强现实、自动驾驶等领域有很多重要应用。对刚体目标进行三维运动估计是计算机视觉的基本问题, 在很多工程实践中有广泛的应用, 如体育运动图像分析、桥梁动态变形测量、飞行器运动测量等。基于图像的运动估计可以基于特征, 也可以基于光流。本课题拟采用Python编程语言,通过方案设计和算法实现,对主要的三维刚体运动方法如欧拉角法、旋转向量法、四元数法等进行分析研究,并得出相关结论。2. 研究内容和预期目标
本课题拟采用python语言,结合pyhton的manim库进行三维空间刚体的可视化显示。三维空间中,刚体的运动可以用两个概念来表示:旋转和平移。平移比较简单一些,一般用一个表示位移的向量来表示。而旋转则有多种表示方法,例如旋转矩阵、旋转向量等等,不同的表示方法各有优劣。本课题根据三维空间刚体运动的理论,采用旋转举证,欧拉角等方法结合编程语言来进行三维刚体的方案比较。最终给予用户各种方法的品评价,并给出选择建议。
3. 研究的方法与步骤
本课题根据三维空间刚体运动的理论,采用旋转举证,变换矩阵,变换矩阵,平移向量,欧拉角,四元数等方法结合编程语言进行刚体的研究 两个坐标系之间的运动由一个旋转加上一个平移组成,若同一个向量在各个坐标系下的长度和夹角都不会发生变化,则这种运动称为刚体运动。刚体运动前后的两个坐标系相差一个欧式变换。除了欧式变换之外,还有其它的变换,汇总如下: 欧式变换:保持向量的长度和夹角,包括旋转和平移。 相似变换:比欧式变换多了一个缩放因子s,可以在旋转之后进行缩放。 仿射变换:仿射变换要求A是是一个可逆矩阵,而不一定是正交矩阵。经过放射变换后,立方体可能会变成斜的,但是各个面仍然是平行四边形。 射影变换:射影变换是最一般的变换,左上角为可逆矩阵A,右上角为平移t,左下角为缩放a。 一般说的坐标变换就是欧式变换。 其中我们研究的方法分别有旋转矩阵,平移向量,变换矩阵,旋转向量,欧拉角和四元数。 旋转矩阵: 对于坐标变换,向量本身没有发生变换,只是坐标系变了,根据坐标的定义有:
对上式左右两边同时左乘[e1,e2,e3]T,得:
得到旋转矩阵R, 该矩阵各分量是两个坐标系基的内积,由于基向量的长度为 1,所以实际上是各基向量的夹角之余弦,所以也叫方向余弦矩阵(DirectionCosine matrix)。旋转矩阵是行列式为1的正交矩阵,反之行列式为1的正交矩阵也是旋转矩阵。旋转矩阵集合:
SO(n)称为特殊正交群(special Orthogonal Group)。旋转矩阵的逆描述了一个相反的旋转,且R-1=RT。 平移向量: 欧式变换由旋转变换和平移变换组成,旋转变换由旋转矩阵R描述,平移变换由平移向量t描述,即坐标变换A’=RA t。 变换矩阵: 使用旋转矩阵和平移向量描述坐标系变换,多次变换后公式过于复杂,因此引入齐次坐标和变换矩阵。齐次坐标:在三维向量末尾添加1,变成四维向量。变换矩阵T;将旋转和平移写在一个矩阵里。坐标变换可表示如下:
旋转向量: 用旋转矩阵描述旋转存在以下缺点: 1.SO(3)的旋转矩阵有9个量,但是一次旋转只有三个自由度,因此这种方式存在冗余。变换矩阵同理。 2.旋转矩阵自身带有约束:必须是正交矩阵,而且行列式为1。当想要估计或优化一个旋转矩阵/变换矩阵时,这些约束会使得求解变得更加困难。 因此需要一种更加紧凑方式的描述旋转和平移。任意旋转都可以用一个旋转轴和一个旋转角来刻画,使用一个向量,其方向和旋转轴一致,长度等于旋转角,这种向量称为旋转向量(或轴角,Axis-Angle)。这种表示法仅需要一个三维向量即可描述旋转。使用旋转向量加平移向量,只有六维,即可描述一次变换。 旋转向量和旋转矩阵之间的转换 假设有一个旋转轴为n,角度为θ的旋转,则其对应的旋转向量为θ*n。从旋转向量到旋转矩阵的转换使用罗德里格斯公式:
符号^表示向量到反对称的转换符,如下:
反之从旋转矩阵转换到旋转向量,对于转角θ,有:
其中tr(R)表示矩阵R的迹。对于转轴n,由于旋转轴上的向量在旋转后不发生改变,即Rn=n,因此转轴n是旋转矩阵R特征值1对应的特征向量。求解此方程,再归一化,就得到了旋转轴。 欧拉角
旋转矩阵和旋转向量虽然能描述旋转,但是非常不直观。欧拉角提供了非常直观的方式描述旋转,将一个旋转分解为3次绕不同轴的旋转。比如先绕X轴,再绕Y轴,最后绕Z轴就得到XYZ轴的旋转。同理得ZYX,ZXY等方式的旋转。这里使用ZYX分解,假设一个刚体的前方(朝向我们的方向)为X轴,右侧为Y轴,上方为Z轴。 1.绕物体的Z轴旋转,得到偏航角yaw; 2.绕旋转之后的Y轴旋转,得到俯仰角pitch; 3.绕旋转之后的X轴旋转,得到滚转角roll。
欧拉角和旋转向量的一个重大缺点是万向锁问题(Gimbal Lock):在俯仰角为 -90度时,第一次旋转和第三次旋转将使用同一个轴,这使得系统丢失了一个自由度,这被称为奇异性问题。三个实数表示旋转一定会碰到奇异性问题,因为三维旋转是一个三维流形,想要无奇异的表达它,三个量是不够的。因此欧拉角往往只用于人际交互。 四元数: 旋转矩阵具有冗余性,而欧拉角和旋转向量虽然紧凑,但是具有奇异性。四元数(Quaternion)是一种扩展的复数,用它来表示旋转既紧凑,又没有奇异性。一个四元数q有一个实部和三个虚部,如q = q0 q1*i q2*j q3*k ,其中i,j,k为四元数的三个虚部。三个虚部满足如下关系式:
也可以用一个标量和一个向量表示四元数:q=[s,v],s=q0,v=[q1,q2,q3],s称为实部,v称为虚部。若虚部为0,则该四元数称为实四元数,反之称之为虚四元数。
|
4. 参考文献
[1]王伟兴. 刚体位姿参数单目视觉测量系统研究[d].哈尔滨工业大学,2013.
[2]林文惠.刚体运动学的几何讨论[j].力学与实践,2005(05):71-72.
[3]唐刚,白雪岭,王洪生,王成焘.基于关节坐标系的人体运动学仿真[j].计算机仿真,2011,28(08):94-97 241.
5. 计划与进度安排
1、第01周~第03周,设计的研究现状分析,毕业设计相关规定、规范和要求学习。该阶段与毕业实习同时进行。
2、第04周,毕业设计正式开始的第一周。汇报前期调研学习的成果。搜索大量相关参考文献,认真书写开题报告,并及时与导师沟通。
3、第04周~第05周,书写第一章绪论部分,主要阐述设计的背景、目的和意义,论述设计计划完成的全部内容以及章节安排。
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。