我的机械网

搜索
查看: 4268|回复: 33

为什么要做机器人动力学分析?请牛人详细、易于理解的阐述一下

  [复制链接]

0

主题

0

回帖

-1

积分

限制会员

积分
-1
发表于 2017-3-17 20:26:32 | 显示全部楼层 |阅读模式
各位网友请注意:我的机械网所有附件、百度网盘提取码、机械资料、PDF资料、压缩包文件均需要回帖后才能下载!
本人没有学过控制,想知道为什么要做机器人动力学分析?我知道,做机器人运动学分析,可以知道机械臂的末端位置和姿态以及机器人的运动范围,这就可以知道机器人的操作空间有多大,可以知道要想实现末端手的固定位置和姿态的操作该怎么操作电机,这对机器人的应用和操作很重要。对机器人做静力学分析可以知道结构的设计需求、电机的功率等。但是,对机器人的动力学分析呢?我可以知道机械臂在某位置的速度、加速度以及实现该动作所需要的力和力矩,但是这有什么用呢?

0

主题

0

回帖

-1

积分

限制会员

积分
-1
发表于 2017-3-17 21:08:57 | 显示全部楼层
机器人的动力学分析可以实现机器人各个关节之间的协同控制,如果仅采用运动学方法,虽然可以实现需要实现的功能,但相对于动力学控制更浪费能量,响应速度更慢;在一些要求高动态响应的场合,基本上都需要采用动力学分析才可以实现。一般而言,位置控制的带宽相对于转矩控制的带宽要低的多。
其次,机器人的仿真和建模需要需要机器人的动力学模型,也只有通过动力学模型才可以更真实的模拟机器人的工作状况,举例来说,只有通过动力学分析,我们才可以确定机器人各个关节动态过程中的出力状况,进而确定每个关节所需要电机及驱动器性能;
再者,对机器人做静力学分析可以知道结构的设计需求、电机的功率等实际上是不严格的,机器人静力学分析仅适用于稳态状况下的分析,并不适合动态过程的分析;只有通过动态过程的分析才可以确定机器人的结构要求、电机功率等。很多情况下,稳态情况(静力学)的计算结果如果直接应用于机器人的设计,往往会导致灾难性后果。
最后,机器人的很多功能仅采用运动学分析根本无法完成,举例来说,我们希望机器人抓取一个杯子,那么此时,我们便需要控制机器人末段出力,使得末段出力不能太大从而导致杯子损坏,也不能太小从而导致抓取失败,而此时采用运动学分析仅可以控制位置,很明显此时运动学分析不能满足我们的需要。

0

主题

0

回帖

-1

积分

限制会员

积分
-1
发表于 2017-3-17 21:21:13 | 显示全部楼层
受到 @韩峰涛和 @丁有爽的启发,举一个非常简单的例子现学现卖一下,如有错误请轻拍。

考虑下面这个一轴的机械臂(连杆长L,质量不计),它的目标就是把黑色重物(质量M)从正下方距离L的蓝点送到正上方距离L的红点那里。设重力加速度为g。假设没有摩擦,电机没有转角、功率限制,只有力矩限制,并且。


下面我们来从不同的角度看看这个设计可不可行。

运动学上来看木有一点问题:假如把轴放在原点,Forward kinematics的解应该是吧。和的时候分别能到达蓝点和红点,所以肯定没问题,妥妥的。

静力学上乍一看也没问题:不就嘛,最高点和最低点的时候都不用费劲儿,妥妥的。
但再仔细一看:不对啊,假如从缓慢地往上转,临界情况需要的力矩是。这力矩不够咋整啊?换个大电机?

那是不是不换大电机就无解了呢?然而并不是的。
动力学搬出来再想想:系统的动力学模型是

由于是个二阶无阻尼振荡系统,其实完全可以通过左右摇摆~~摇上去的啊!
(此处应有验证实验视频。。。)


因此,此处说明了在进行设计的时候,除了考虑运动学和静力学之外,还应考虑动力学。当然这只是一个极度简化的例子,但希望对于你的理解有帮助。


虽然只有四个赞,不过还是编了个程序验证了一下:
链接:http://pan.baidu.com/s/1pLU2IJT 密码:hf0q
用了简单的SMC和一些tweaks。通过仿真可以发现,起始点在最底部的话,即使是朝一个方向冲也是冲不上去的,必须利用系统振荡的特性荡上去。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 一键登录:

x

点评

大赞/:strong  发表于 2018-11-19 11:17

0

主题

0

回帖

-1

积分

限制会员

积分
-1
发表于 2017-3-17 21:26:35 | 显示全部楼层
谢邀。
前面的答案从理论方面进行了解释,我来举几个生活中的例子来类比一下,不是百分百对应,但本质一样,需要多联想,主要靠意会,意会。
如果以后想到更适合更贴切的例子,本回答将不定时更新。

我们经常在网络/电视上看到军事人员为了提高瞄准射击的稳定性,会通过在枪械上挂载一定的额外重量(水壶、砖头、沙袋)的方式来锻炼手臂力量,提高稳定性,例如这样:

ok,现在想象一下你在做同样的事情,只不过我们换成单臂持手枪。
先来一个最简单的动作,在枪上挂一个装了1L(1kg)水的水壶,然后抬起手臂并保持稳定(1kg并不困难,一般的笔记本重量大约在1.5~2kg,试着感受一下),瞄准10米外的靶子。


很简单吧,接下来我们增加一点点难度,假设挂着你手臂上的水壶会不定时的随机的改变它的重量,可能会变轻,也可能会变重,这时会发生什么情况?
对,你无法很好的一直瞄准目标了。
当水壶突然变轻时,由于你本来的用力大于实际所需,胳膊会往上抬,偏离目标;
当水壶突然变重时,由于你本来的用力小于于实际所需,胳膊会往下掉,同样偏离目标;
但是不管哪一种情况,偏离目标后,你都可以通过观察手臂朝向与靶标的差距,重新进行瞄准(当然前提是沙袋不要变得太重导致你举不起来)。

////////////////在这里需要插入一丢丢控制理论的知识///////////////////

你通过眼睛观察到了偏差,大脑就会控制手臂移动去减小偏差,与此同时眼睛仍在观察,直到最终瞄准目标,这种基于“偏差/误差/error”进行控制的方法称为反馈控制,PID控制器就是经典的反馈控制之一。
很显然,如果你无法看到需要瞄准的目标,或者虽然你看到了目标但是无法判断到底有多少偏差,那么就无法进行瞄准。即,没有偏差,就无法进行反馈控制。
偏差是反馈控制的基础,也是这种控制策略一些缺点的主要原因。控制之前需要等待产生偏差,会导致控制系统响应变慢。
人通过眼睛来完成绝大部分任务的过程都可以看做是反馈控制,更具体的,由于视觉的存在,有一个专用名词,即“视觉伺服 Visual Servo”。
很多人在研究如何给机器人加上一双好用的眼睛,只不过距离人眼+人类大脑的水平还差的太远。

在射击运动中,你可以认为在人的大脑中产生了一个用于射击的反馈控制器,用于控制人手精确的射击目标。
只不过有的人大脑中的控制参数不行,给定一个目标后,瞄准时间长,射击准确度差(初学射击的人);
而有的人参数调的好,通过大量的练习/训练(肉身完成一次训练时间巨长的学习),可以达到快速瞄准,精准涉及的目的(射击运动员);

///////////////////赶快回来继续动力学//////////////////////////

为什么会发生偏离目标的情况?
因为你不知道沙袋会在什么时候改变重量,也不知道沙袋会变重还是变轻以及变化量是多少,所以在沙袋变化的瞬间你只能以一个旧的稳定状态的出力来处理一个新的状态,导致了控制效果变差。

因此简单的反馈控制无法快速处理这种时变非线性的情况

而现实的情况是,机器人上所使用的关节控制器/电机控制器绝大部分使用经典的PID算法,因此在这种情况下也会面临这样的问题(绝大部分机器人内部都会配备两种控制器,一种是用来控制电机的关节驱动器,里面通常是传统的PID控制,只能控制一个或者少数几个电机/关节的转动;另一种类似于人类的大脑,用来处理上层的感知,规划,通信以及协调各电机/关节控制器等任务)。

如何能改善这种情况呢?

一个自然而然的思路就是想办法知道什么时候水壶的重量会发生变化,以及变化到多重,提前告知你,你就可以在水壶重量变化的一瞬间加把劲或者略微放松一些来保持手臂的水平,继续瞄准目标(当然这是理想情况,人类的精度控制水平是很模糊的,这里需要意会,你懂的)。

这种提前把那些会影响你动作的外界因素告知大脑以提高控制精度的方法,在控制理论中被称为前馈控制

在这个例子中,有哪些外界因素需要提前告知呢?

水壶的质量以及变化的时间。
其中,质量Mass这个参数就属于动力学的范畴(终于讲到动力学了,呼~)。
在这里我们把水壶当成了一个点来考虑,假设水壶换成了一个棍子横在你的胳膊上,你就要考虑这个棍子的重心Center of Mass在什么地方了,毕竟重心在不在胳膊的上方差别很大。
重量变化这个假设对应到机器人上是很常见的,各关节在运动过程中相互位置发生变化,由于重力产生的力也随之变化,例如手臂伸直和垂下两种状态,对肘关节的力量输出要求是不一样的。
质量和重心两个参数与平动有关,涉及到转动时就要换成另外一组动力学参数,即惯量inertia惯性主轴axes of moment,就不再说具体例子了。
这是引入动力学的第一个好处,可以显著提高控制的准确性和响应速度


我们继续,现在射击任务要求有一些变化。

你需要射击10次目标,每次射击前都要求手臂先回到垂直向下状态,然后抬起射击,最终完成10次射击的时间越短越好。
假设一开始水壶是空的,相当于没有额外负载,你轻车熟路,每次都使劲全力快速举枪、射击、放下,20秒完成了10次射击,成绩优异。(20秒是我瞎掰的)
再来一次,不知道谁使坏给你挂上了一个装满水的纯净水桶,估摸有20来公斤吧,你浑然不知,仍然全力举枪。
啊~!good bye,肱二头肌。

举枪时,手臂末端画出了一个圆弧,我们称这个圆弧为路径规划Path Planning,然后为了更快的完成任务,我们尽全力赋予了这个圆弧运动一个速度(按照之前的假设,2s一次射击),整个过程我们称之为轨迹规划Trajectory Planning

当枪的重量远低于手臂力量时,你以多大速度举枪不会有太大影响,因为这在你的肌肉承受范围之内。但是如果你需要举起的力量超出了合理范围(例如前面所说单手横举满的纯净水桶),你仍然要以2s的时间完成一次完整动作,就会造成肌肉拉伤,因为不合理的速度/加速度要求超出了肌肉的物理限制
肌肉如此,机器人的电机也是如此,只不过人对于手臂的控制没有那么精确,而电机有精确的参数。
这里用到的参数就是电机的力矩/转矩Torque,由力矩和惯量就可以得到所允许的最大加速度。
因此动力学的第二个作用,是在规划机器人的运动时,充分考虑机器人动力系统的限制,在不损坏电机的情况下,规划出符合要求的轨迹(时间最短、功耗最优等)。

ok,枪打完了,我们换另一个的例子。
基本上每个人都有过细微调整某些重物位置的经历,例如调整衣柜位置,对准设备的螺丝孔等等,由于比较重,力气小了推不动,稍微用点力,又推过了,神烦。
这是由于摩擦力是非线性的,静摩擦很大,而动起来之后速度较低时的动摩擦又比较小,动静之间切换时控制对象变化过快导致控制精度变差。
在电机低速控制中,有一种速度忽快忽慢的“蠕动”现象就是由于这个原因引起的。
因此,在高精度机器人控制中,也要考虑摩擦力的影响。
除此之外,由于参考系变化“产生”的科氏力,也在基本的动力学方程中,感兴趣的可以回去翻翻教科书。
摩擦力和科氏力同样是动力学的范畴

暂时先这些,以后有时间继续填坑。

其实最开始想到以射击练习作为例子来解释机械臂动力学时,脑子里第一个反应是Howard。


本来后两个例子应该放几张图,但是高铁上实在不方便,见谅。


欢迎关注:
OnionBots - 知乎专栏

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 一键登录:

x

点评

超级赞/:strong  发表于 2018-11-19 11:15

0

主题

0

回帖

0

积分

小白会员

Rank: 1

积分
0
发表于 2017-3-17 21:14:53 | 显示全部楼层
泻药。。。鄙人算不上什么大牛,故尔抛砖引玉,希望能多打开些思路。
首先要明确的是几个术语:Kinematics, Dynamics, Kinetics, 还有Statics.前面的几个表面上从英语语法上看是近义词,不过在机器人学科中却有着明显的不同:
Kinematics只考虑运动本身而不考虑造成运动的原因;比如“物体的运动改变了多少”。解决的问题和运动的“几何学”相关联(相关内容见下图)。
内容来自:第3版的Introduction to Robotics Mechanics and Control
Dynamics在研究物体运动的同时研究造成运动的原因(力或力矩),比如“为什么物 体的速度发生了变化”(见下图)
在第3版的Introduction to Robotics Mechanics and Control一书中,作者Craig很明确的指出了Dynamics的研究对象。
Kinetics是20世纪中期Dynamics的叫法,与Dynamics没有本质的区别。
Statics是静力学,研究“为了使物体保持平衡状态力和力矩应该满足的条件”
回到题主的问题“动力学分析有什么用”,我曾经和题主一样的困扰,因为我本科的毕业设计就是制作一个机械臂,可当我制作的时候我才发现,真正有用的是逆动力学和编程,Dynamics analysis似乎是一个鸡肋的存在,这是为什么呢?我翻来覆去的想,把各种roboticcs的教材看了一遍又一遍寻找答案,终于得出了我自己的结论,虽然我不知道这样的结论是否正确:
运动学,解决了机械臂的末端位置和位姿以及机器人的运动空间范围,从而明确可以怎么操作电机以实现期望的运动;但是,但是,但是,这是建立在你已经有一个机械臂的基础上的!如果没有呢?如果你要靠自己去设计一个能够实现你的要求的机械臂呢?你是知道了“做机器人运动学分析,可以知道机械臂的末端位置和姿态以及机器人的运动范围,这就可以知道机器人的操作空间有多大,可以知道要想实现末端手的固定位置和姿态的操作该怎么操作电机;对机器人做静力学分析可以知道结构的设计需求、电机的功率等。可是你该如何安排造成期望运动的力,力矩,角加速度等等变量配合你的结构设计呢?这才是Dynamics的意义——Dynamics根本就是为了实实在在的从最开始“造”一个机械臂而存在的,欧拉方程,拉格朗日方程根本上揭示了造成运动的各种变量所需要遵循的法则,这些法则是制作一个真正的机械臂所绕不过去的!
这,就是我们为什么要研究动力学分析的原因。这是我做毕业设计后得出的最大最宝贵的经验。
仅仅是个人观点,并非完全正确,欢迎交流 : )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 一键登录:

x

0

主题

0

回帖

0

积分

小白会员

Rank: 1

积分
0
发表于 2017-3-17 21:03:36 | 显示全部楼层
简单说,动力学是解决运动与力的。设计到力与力矩的部分,都需要动力学。

0

主题

0

回帖

-1

积分

限制会员

积分
-1
 楼主| 发表于 2017-3-17 20:57:33 | 显示全部楼层
以3W问题分析——
1.运动学是“是什么”的问题:机器人的目标状态是什么?
2.动力学是“怎么样”的问题:怎么样达到这种目标状态?
3.电机是完成一个动力学使命,和运动学之间没有直接关系。

拿写字类比——
1.运动学:这个字的什么样子,笔顺是什么。
2.动力学:手写笔顺的快慢、轻重是什么。
3.电机及其指令:你的肌肉,以及它怎样伸缩。
人是高级生物,2和3的步骤都在本能中。而机器人,则123都需要人为处理。

现在题主觉得2不重要,可能是因为一些简单问题。
丢开动力学分析,也许可以让机器人晃晃悠悠走一步路,但不可能让机器人尽善尽美跳一支舞。

0

主题

0

回帖

-1

积分

限制会员

积分
-1
发表于 2017-3-17 20:51:22 | 显示全部楼层
动力学和控制关系比较大

1.最基本的,那简单的动力学分析为例,首先肯定要知道对象的固有频率。如果是一个柔性较大的对象,那么基频的作用可以大致确定控制带宽,避免产生较大的振动。也可做频谱规划,将控制对象与其他一些干扰源频率错开,避免共振。

2.其次,为了建立较为精确的控制模型,动力学模型的建立也是必不可少的,常用方法是分析力学。正如其他答主说的,输入经过模型才会有输出,只有知道精确的模型后设计控制器,才能得到精确的输出。

3.说到控制模型,那不可避免的一个问题就是模型降阶了,因为一个真实的物体肯定是无限自由度的系统(尽管常看作刚体),但随着振动越来越受关注,贴近真实情况的模型就很有必要了。而无线维度和高维的模型显然是不利于计算的,如何平衡理论和工程,中间就靠模型降阶了(通过合理的截取或截断,将模型阶数降低,既不影响模型准确性,又使其可用于控制系统设计)。常用的方法有惯性完备性、模态价值分析和内平衡降阶等,视需要选择。

4.我估摸着题主问这个问题,是因为觉得给一定的输入,执行机构一定会达到想要的输出,这也就是舵机和电机的区别?这方面我并不是很清楚,毕竟不怎么接触,看看其他答主的吧~

0

主题

0

回帖

0

积分

小白会员

Rank: 1

积分
0
发表于 2017-3-17 20:44:50 | 显示全部楼层
动力学主要是用来建模,然后用于理解机器人设备的运动特性和控制的。运用动力学建立正确的模型,之后的控制才能够精确稳定。如果不建模,运用自适应系统,同样可以做到很高的精度,但总还是存在误差的,这就好比用直线去拟合三次函数曲线,总归会有误差的。运用动力学模型对了,机器人控制就容易多了

0

主题

0

回帖

0

积分

小白会员

Rank: 1

积分
0
发表于 2017-3-17 20:39:21 | 显示全部楼层
等你买了一个兵人以后才发现姿势不好摆的很,和你想象的根本不一样。机器也是。
您需要登录后才可以回帖 登录 | 立即注册 一键登录:

本版积分规则

快速回复 返回顶部 返回列表