机器人正运动学(2)—— 自由度

1. 自由度的定义

  自由度在很多领域中会出现,对于机器人而言,我们这里谈的也就是机构的自由度。任何一台机器人都可以认为是一个机构。所谓自由度通俗的讲就是为了唯一确定一个机构的运动状态所必须的独立变量的个数

  在自由度的定义中,唯一、必须、独立是三个比较关键的词。唯一确定即给定这些变量后机器人具有唯一的位型;必须则是一种最少的概念,也就是能够确定机器人状态的最少的变量数;独立则表示这些变量可以独立的变化。

  我们以一个二连杆机器人为例,如下图所示。
在这里插入图片描述

  很明显为了确定这个二连杆机器人的运动所需的独立变量个数为2。图中的角度x1和x2就是为了确定二连杆机器人当前状态的一组独立变量。当然这种独立变量并不唯一,我们同样可以选择角度x1和始末两端连线长度r来描述机器人当前状态。在分析力学中这组独立变量又被称为广义坐标,这个概念我们暂时不提,后面会有涉及。

2. 自由度的计算

2.1 刚体的自由度

  在给出具体的公式之前,我们首先考虑,一个不受任何约束的刚体在空间中的自由度,很显然应该是6。因为刚体可以沿着x,y,z三个坐标轴方向平移,也可以绕着x,y,z三个轴旋转。因此为了确定一个不受约束的刚体的运动状态,我们需要六个独立的变量。如下面的图所示。x,y,z可以唯一确定刚体上的一个点,但是只有这三个变量,刚体依然可以绕该点做任意的旋转运动,因此还需要Wx,Wy,Wz三个姿态变量来确定刚体的姿态,这也就是刚体的定位和定姿。
在这里插入图片描述

  机器人通常是由连杆构成,我们通常将每一个连杆看作一个刚体,因此不考虑连杆之间的连接时,机器人每个连杆都有6个自由度。对于一个有n个连杆的机器人,如果不考虑连杆约束那么它的自由度是6n。

2.2 运动副

  机器人连杆之间的相互连接引入了约束。在机构学上将这种约束称为运动副。运动副是指两个构件既保持接触又有相对运动的活动连接。下图是一些比较常见的运动副。
在这里插入图片描述

  移动副是一种使两个构件发生相对移动的连接结构,它具有一个移动自由度,约束了刚体其他5个运动。(只能沿某一个轴平移,缺少三个旋转自由度和两个平移自由度);

  转动副是一种使两个构件发生相对转动的连接结构,它具有一个转动自由度,约束了刚体的其他5个运动。

  圆柱副是一种使两个构件发生同轴转动和移动的连接结构,通常由共轴的转动副和移动副组合而成。它具有两个独立的自由度,约束了刚体的其他4个运动。

2.3 自由度算例

  如下图所示是一个SCARA(水平多关节机器人)机器人。
在这里插入图片描述

  机器人的第一和第二关节为旋转关节,第三关节为移动关节,第四关节为旋转关节。这样一个机器人自由度如何计算呢。

  首先第一个连杆是基座,由于基座固定,因此其自由度为0;

  第二个连杆通过转动副与第一个连杆相连,转动副引入五个约束。

  第三个连杆通过转动副连接到第二个连杆,同样引入五个约束。

  第四个连杆通过滚珠丝杆花件连接到第三个连杆,滚珠丝杠有两个自由度,可以认为是一个圆柱副,这个连接引入了四个约束。

  而机器人总共有四个连杆,那么总的连杆自由度数为4*6=24;总的约束为6+5+5+4=20。因此机器人的自由度为4。
2.4 自由度计算公式

  因此总的来说,自由度计算公式如下: F = 6 ⋅ n − ∑ i = 1 g p i F= 6\cdot n-\sum_{i=1}^{g} p_{i} F=6ni=1gpi

  其中,n代表连杆数量,6代表我们探讨问题的空间的维度,通常为3维的平面空间或者6维的立体空间,g为运动副的个数,pi代表第i个运动副所带来的约束的个数。

  当然关于自由度有许多更为艰深的话题,这绝对不是上面这个简简单单的公式能够完全探讨清楚的,实际上上面的公式并不能计算所有机构的自由度。在现代通常利用拓扑学,李群等更复杂的数学来诠释自由度。

  但是对于机器人学而言,我们能够理解到当前这个程度已基本够用。有时我们甚至可以认为驱动器的个数就是机器人的自由度。

3. 总结

  关于自由度就先介绍到这里,之后将介绍坐标系变换,这是整个机器人学的根基。由于个人能力有限,所述内容难免存在疏漏,欢迎指出,欢迎讨论。

下一篇:机器人正运动学(3)—— 坐标系及其变换
————————————————
版权声明:本文为CSDN博主「hitgavin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hitgavin/article/details/100569001

  • 13
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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机器人工具箱的应用也将逐渐扩大。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值