机器人学之运动学笔记【1】—— 旋转矩阵

1. 刚体的位姿描述

1.1 位置描述

与刚体固联的坐标系的原点用方向向量P来确定位置:
在这里插入图片描述

1.2 姿态描述

与刚体固联的坐标系三个坐标轴上的单位矢量相对于参考坐标系的方向余弦组成3*3的旋转矩阵用以表达刚体姿态:

将 {B} 三个坐标轴逐个投影到 {A} 的三个坐标轴,看它的分量是多少来确定 Rotation Matrix 三个列向量的数值。
在这里插入图片描述

例题1:
在这里插入图片描述
例题2:
在这里插入图片描述

2. 旋转矩阵

2.1 旋转矩阵性质

2.1.1 特性一

在这里插入图片描述
由于前后向量互换位置不改变结果:

在这里插入图片描述
所以 :

{B}相对于{A}的旋转矩阵={A}相对于{B}的旋转矩阵的转置矩阵
在这里插入图片描述

2.1.2 特性二

旋转矩阵的转置矩阵×旋转矩阵=单位矩阵
在这里插入图片描述我们知道,一个矩阵和自己的逆矩阵相乘时才会等于单位矩阵,所以:
旋转矩阵的转置矩阵=旋转矩阵的逆矩阵
在这里插入图片描述

2.1.3 特性三

旋转矩阵是正交矩阵:由于旋转矩阵的三个列向量都是单位矢量且两两垂直,相当于给了六个关系条件,所以旋转矩阵的9个元素中只有3个是独立的,这里展现了数学描述和物理中的对应。

2.2 Rotation Matrix 与旋转角

  • 空间中的Rotation是3 DOFs,那要如何把一般rotation matrix 所表达的姿态,拆解成3次旋转角度以对应到3个DOFs ?
  • 拆解成【三次旋转连乘】所需注意事项:
    1)多次旋转的先后顺序必须明确,因为旋转次序不同,旋转的最终姿态将不同
    2)旋转转轴要明确定义,旋转是针对谁而言的

2.2.1 针对Z轴旋转

在这里插入图片描述

2.2.2 针对X轴旋转

在这里插入图片描述

2.2.3 针对Y轴旋转

在这里插入图片描述例题:
在这里插入图片描述

2.3 旋转矩阵的三种用途

  • 描述一个 frame 相对于另一个 frame 的姿态
  • 将 point 由某一个 frame 表达换到另一个和此 frame 仅有相对转动的 frame 来表达在这里插入图片描述 - 将 point(vector)在同一个 frame 中进行转动
    在这里插入图片描述

2.4 旋转的拆解方式

2.4.1 Fixed angles——对方向固定不动的转轴旋转

旋转过程:X→Y→Z
由 angles 推算 R:

在这里插入图片描述
数学描述:
在这里插入图片描述
注意这里!先转的要放在后面,是因为放在后面在相乘的时候才会被先操作到:

在这里插入图片描述在这里插入图片描述
例题:

在这里插入图片描述
由 R 推算 angles:

在这里插入图片描述例题:
在这里插入图片描述

2.4.2 Euler angles——对转动的frame当下所在的转轴方向旋转

在这里插入图片描述在这里插入图片描述
例题:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:

在这里插入图片描述

  • 27
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MATLAB(Matrix Laboratory,矩阵实验室)是一款强大的科学计算软件,它在科学研究、工程设计、数据分析和教学等领域都有广泛的应用。在机器人领域,MATLAB机器人工具箱(Robotics Toolbox for MATLAB)则是一款非常重要的工具箱,它可以实现机器人动力学模拟、控制器设计、路径规划和视觉处理等各种任务。本文将重点介绍MATLAB机器人工具箱中的建模与正逆运动学算法。 建模是机器人控制中非常重要的一步,在机器人工具箱中可以通过类似DH表示法的方式来对机器人进行建模。这里我们以一个三自由度的SCARA机器人为例进行说明。首先需要定义机器人的DH参数,比如对于SCARA机器人,可以采用以下方式定义: ```matlab L1 = Link([0, 0, 0, pi/2, 0]); L2 = Link([0, 0, 0.25, 0, 0]); L3 = Link([0, 0, 0.25, 0, 0]); SCARA = SerialLink([L1 L2 L3], 'name', 'SCARA'); ``` 其中Link表示机械臂链接,SerialLink表示串联链接,name表示机器人的名称。接着可以使用plot和animate方法来绘制机器人的3D模型,如图所示: ```matlab SCARA.plot([0, pi/4, pi/2]); %绘制机器人在三个角度下的姿态图 SCARA.teach(); %绘制机器人可交互的3D模型 ``` ![scara](https://img-blog.csdn.net/20170601140015099?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpbGRlbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75) 接着我们再来介绍一下MATLAB机器人工具箱中的正逆运动学算法。 正运动学是指根据机器人各个关节的角度来计算机器人的末端执行器的姿态(位置和姿态角),可以通过以下代码来实现: ```matlab theta = [0, pi/4, pi/2]; %关节角度 T = SCARA.fkine(theta); %末端执行器的姿态 disp(T); ``` 其中fkine表示正运动学求解,返回机器人末端执行器的位姿矩阵T(4x4)。需要注意的是,机器人运动学求解中必须使用李代数(Lie algebra)和指数映射(Exponential map)的方法,以保证运算的精度和稳定性。 逆运动学是指根据机器人末端执行器的姿态来计算各个关节的角度,可以采用以下方法来实现: ```matlab T = [1, 0, 0, 0.3; 0, 1, 0, 0.3; 0, 0, 1, 0.5; 0, 0, 0, 1]; %给定机器人末端执行器的位姿矩阵 q = SCARA.ikine(T); %计算机器人各个关节的角度 disp(q); ``` 其中ikine表示逆运动学求解,需要注意的是,机器人运动学求解中必须考虑机器人的奇异问题、避障问题和轨迹规划问题,以保证机器人的运动轨迹和效率。 总的来说,MATLAB机器人工具箱中的建模与正逆运动学算法为机器人控制和仿真提供了很好的工具和方法,可以大大简化机器人控制的难度和复杂度。未来随着机器人技术的不断发展和普及,MATLAB机器人工具箱的应用也将逐渐扩大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值