云机器人就是云计算与机器人学的结合。而机器人则是云机器人的主要终端,云可以为机器人提供数据监控以及分析服务,同时也可从远端遥操作机器人的动作。腾讯云社区为大家了解和使用腾讯云服务提供了优秀的平台。而对于机器人部分,下面给出关于机器人关键技术之一的动力学建模与仿真的介绍。
机器人作为实体,在其前期设计验证以及控制等任务中均需要建立其运动学模型、动力学模型以及虚拟样机模型等。
对于机器人的运动学仿真,主要是针对机器人各个关节角以及末端位姿之间的数学关系,而动力学则是机器人关节角度、角速度以及角加速度和关节力矩之间的关系。具体的关系如下所示:
1 机器人动力学仿真软件
常规的三维软件Pro/e以及Soliworks是机器人的虚拟样机模型设计软件,其仅仅勉强能进行机器人的运动学仿真。而动力学需要特定的仿真软件,软件会提供充足的数据资源。
由于动力学仿真算法中需要计算机器人的运动学,因为机器人的动力学软件一般可以进行机器人的运动学仿真,而机器人的运动学仿真软件一般无法进行机器人的动力学仿真。机器人常见的动力学仿真软件主要有三类:
第一类是机器人通用的研发级仿真软件,第二类是通用的工业级仿真软件(通用工业级),第三类是专用的工业级仿真软件(专业工业级)
Adams是业界公认的强大可靠的机械系统多体动力学仿真软件。其也被广泛应用在各行各业中。现在属于美国MSC公司。
Gazebo是与ROS集成很好的开源动力学仿真软件,Gazebo目前最好在Ubuntu上运行。其官方建议采用Nvidia GPU, Intel I5以上处理器。
SimMechanics是基于simulink的动力学仿真软件,其将实际的机器人本体分解成刚体、铰链、约束、坐标系统、驱动器以及传感器等元器件。使用图形化的元器件可以建立机器人的动力学模型。
SimulationX是多学科领域建模、仿真和分析的通用CAE工具。其集成了1D力学 、3D多体系统、动力传动系统、液力学、气动力学、热力学、电子学、电驱动、磁学和控制等学科的元器件。由于其源码开放的特点,其目前在航空航天领域发挥着重要的作用。
此外,机器人的动力学仿真软件还有V-Rep等仿真软件。
分类 | 软件 | 特点 |
---|---|---|
通用型(研发) | Adams | Strong solver,图形化建模 |
Gazebo | URDF,ROS集成 | |
V-rep | 跨平台 | |
SimMechanics | Matlab集成接触求解器较弱 | |
SimulitionX | 代码开源 | |
通用型(工业级) | RobotMaster | Jabez科技,碰撞检测非常精确 |
RobotoWorks | 支持多种机器人、支持外部轴 | |
Robotmove | 支持多台机器人仿真 | |
RobotCAD | SIEMENS,支持多台机器人仿真 | |
专用型(工业级) | Robot Studio | ABB原厂的离线软件 |
RoboGuide | Fanuc原厂的离线软件 | |
KUKA Sim | KUKA原厂的离线软件 |
2 机器人的动力学建模原理(第一内核)
多刚体动力学就是研究多刚体系统运动和受力之间的关系,它的的动力学研究问题可以分为动力学正问题、逆问题以及正逆混合问题。动力学正问题即已知驱动力(力矩)求解多刚体系统运动,动力学逆问题则已知多刚体系统的运动学量求解作用在运动副上的驱动力(力矩),正逆混合问题则是系统部分运动副的运动情况和部分运动副的作用力已知而求解其它运动副的运动情况以及驱动力(力矩)的问题。多刚体动力学既可以是解析的也可以是数值的。
2.1 刚性机器人动力学
多刚体的建模方法可以分为数值计算方法、符号计算方法以及符号和数值相结合的动力学算法。一般地说,基于数值计算的动力学算法中间的大量计算都被避免,计算任务量更小,但是难以得到通用的表达式,且由于数值计算过程中累积误差很大,因此数值计算的精度较低。基于符号计算的方法初期有着较大的计算量,虽然能得到通用表达式但是许多多体系统的动力学符号表达式繁琐,导致目前的计算机无法针对其进行有效的符号运算。
动力学建模原理 | 特点 |
---|---|
牛顿欧拉 | 完整约束系统: D’Alembert原理消除约束力;非完整约束系统:Jourdain原理消去约束力 |
拉格朗日 | 多体系统运动方程和约束方程;刚性微分-代数方程 |
维登伯格方法 | 多体系统拓扑结构矩阵描述; |
凯恩方程 | 兼有分析力学与矢量力学的优点 |
高斯最小约束原理 | 变分原理分析多体系统可能存在的运动;泛函极值原理求解出系统的运动规律 |
2.2 柔性关节机器人动力学
机器人的关节层由于采用了谐波减速器等原因,常常伴随着柔性,典型的是DLR轻型机械臂。
柔性关节的示意图如下所示
由此机器人的动力学方程式需要在刚性的动力学基础上添加上关节的柔性项
2.3 柔性机器人动力学建模
刚性机械臂建模方法已经可以有效地求解出机械臂各部分之间的耦合情况,但是对于柔性机械臂的动力学建模其侧重点在于基于刚性机械臂建模方法的基础上如何有效的处理机械臂关节柔性以及臂杆柔性的问题。由于机械臂的截面相对于其长度而言很小,可以将柔性杆作为Euler-Bernouli梁,柔性机械臂可以视为一个具有无限自由度的连续系统。相对于刚性机械臂杆件之间的耦合,柔性机械臂还需要考虑关节的柔性以及臂杆弹性变形的耦合。因而,柔性机械臂的运动方程具有高度非线性。
在对柔性系统进行建模的过程中,需要解决坐标系的选择、柔性体的离散化、动力学建模方法以及方程求解等问题。
(1)柔性体的描述
柔性体的描述是柔性机械臂建模与控制的基础。根据选择参照系的不同,一般可分为相对坐标法以及绝对坐标法。由于绝对坐标法虽然可以获得形式简单的动力学方程,但是却大大增加了广义坐标的数目,进而需要引入相应的约束方程。目前的应用已经较少。而相对坐标法则是在柔性体上建立一动参照系,将柔性体的真实运动分解为牵连运动和相对于动坐标系运动的迭加。有利于小变形构件的离散化和线性化。应用较多。
(2)柔性体的离散化
柔性机械臂是由柔性关节构成的集中参数系统和柔性杆件构成的分布参数系统所组成的混合系统,其动力学特性由偏微分方程描述。为求解该偏微分方程,需要采用离散方法将偏微分方程离散成常微分方程。对于变形场的离散化主要有有限元法(FEM),假设模态法(AMM),集中质量法(LPM)以及转移矩阵法(TMM)等。
总之,柔性带给机器人的实体的既有优点也有缺点。机器人因为柔性,从而使得在与环境交互的同事自带柔性,发生刚性碰撞的机会减小了;同时,由于柔性,机械臂的控制器有可能会发散,从而在设计带有柔性的机械臂控制器时增加了难度。
3 机器人动力学计算的积分器(第二内核)
机械臂的正向动力学分为模型建立以及数值积分部分。模型建立过程则是为了根据当前时刻的角度、 角速度以及驱动力矩求解当前时刻的角加速度, 数值积分则是根据当前时刻角度、 角速度以及求出的当前时刻角加速度值求解下一时刻角度和角速度。
建立机械臂的动力学模型。关节角加速度是关于关节角、角速度以及力矩等的函数:
进一步变换得到:
因而有
机械臂关节的角度和角速度的求解构成了标准的常微分方程组的初值问题。 考虑到实际控制系统,因此需要采用定步长数值积分进行计算。最简单的数值积分方法即是欧拉积分。常规的计算则采用四阶龙格库塔积分,具体可以参见
可以参见以下列举链接,详细的细节可以重温大学教材《数值分析》
https://www.me.psu.edu/cimbala/Learning/General/Runge_Kutta_Technique.pdf
http://web.mit.edu/10.001/Web/Course_Notes/Differential_Equations_Notes/node5.html
4 机器人接触动力学(第三内核)
机器人的接触动力学是机器人动力学仿真的第三个内核,也是区分不同动力学仿真软件优劣的关键指标。其也综合体现了数值积分算法的优劣。
机器人的点接触分为单点接触和多点接触。
对于多点接触可以表示如下所示
此外机器人实际的刚体接触情况是面接触,即将接触面用网格划分,再采用接触动力学算法计算接触情况。网格划分越细,动力学计算越精确。不同接触面可以列举如下
此外机器人刚体接触过程中经常会收到冲击力影响,冲击力的建模可以采用动量定理的方式
接触动力学相对比自由运动空间的动力学较为复杂,在后续的文章中将会详细介绍。接触动力学主要涉及到机械臂对目标物体的抓取操作、具有行动能力的机器人等。
当然机器人在面对环境接触时候,一般会采用相应的控制算法,实现软接触。从而保证机器人不会因为发生与环境的硬接触而导致破坏。软接触的模型可以简化如下所示
5 机器人动力学仿真结果对比
本次采用三种方式建立一个七自由度的机械臂动力学仿真模型。
- simmechnics
- ABA算法
- CRBA算法
其中ABA算法和CRBA算法可以视为机器人的实时动力学,详细参见:
- Featherstone R. The calculation of robot dynamics using articulated-body inertiasJ. The International Journal of Robotics Research, 1983, 2(1): 13-30.
- 知网论文:空间七自由度冗余机械臂动力学建模与控制研究
- SimMechnics中建立的机器人模型如下所示
给定同样的关节驱动力矩,观测不同的建模方式下机器人的各个关节角度以及关节速度可以表示如下
仿真结果可以看出,三种模型仿真得出的机械臂各个关节角度以及关节角速度曲线一致, 机械臂运动情况相同。由此可以验证本节两种正向动力学算法的正确性。
不同的仿真软件基于不同的动力学原理。但是其本质是一样的。衡量一个动力学模型和软件的指标是计算效率,计算精度,收敛性,稳定性,通用性等。在不同的应用场合下其应用侧重点不一样,如离线方仿真软件对计算速度要求不高而对通用性等特性要求高,而实时仿真软件则对通用 性要求不高但对计算效率以及稳定性要求较高。
对于针对特定类型的对象建立的实时算法, 由于不需要计算和存储多余的量。且其建模过程中已经根据对象的特点尽量避免了虚运算, 因而其速度更快。
机械臂不同建模方法其物理本质是一样的,但是其计算效率以及精度却不相同。主要与变量的表示方法有关
正向动力学的计算精度与计算过程中的截断误差以及数值积分的累计误差有关。 其计算效率主要涉及计算量与存储量。计算量和存储量越大,其计算效率越低。
此外,采用matlab/simulink/simmechnics 中的multibody示例仿真得到如下效果
正向动力学的计算精度与计算过程中的截断误差以及数值积分的累计误差有关。 其计算效率主要涉及计算量与存储量。计算量和存储量越大,其计算效率越低