0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MATLAB 中的机械臂算法分析和介绍

MATLAB 来源:djl 作者:MathWorks 2019-09-11 14:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前面,我们讲了机械臂的运动学(kinematics)(点击蓝字查看):正向运动学和反向运动学。

正向运动学指的是在已知机械臂各个关节角度的情况下,推算end-effector(机械臂终端)的位置和方向(合称pose)。反向运动学指的是在已知end-effector的位置和方向,推算各个机械臂的关节角度。我们主要研究反向运动学。

让我们看一下基于反向运动学的控制逻辑图:

关于MATLAB 中的机械臂算法分析和介绍

在给出机械臂的end-effector的pose后,反运动学模块计算出各个关节所需要的角度,然后通过电机产生力矩(torque)去执行。在此期间,通过反馈(feedback)去消除一些控制误差。

但是,事实上会有很多的干扰因素存在。例如:

地球引力(gravity)

惯量(inertia)

摩擦力(friction)

科里奥利力和离心力(Coriolis and centrifugal)

由于连杆之间是通过关节(joint)耦合在一起,连杆之间会有反作用力和反向惯量

以及一些人为的要求,例如:

我们想要机械臂运动的速度,按照我们预先的设定运行(velocity and acceleration)

我们想要求机械臂在触碰外物时候做出安全保护(external force)

这些我们暂且称之为disturbance(干扰),当然有些“干扰”是我们故意要求的,比如说需要按照预设轨迹的速度运行。加入“干扰”后的示意图如下:

关于MATLAB 中的机械臂算法分析和介绍

如果我们能提前计算出来这些“disturbance”,然后在控制环路中将它“抵消”(有时候也叫前馈控制)。这样,就能使得机械臂“完美”运行了。让我们再改一下控制逻辑图:

关于MATLAB 中的机械臂算法分析和介绍

为了计算这些“disturbance”。我们需要考虑几个因素:

机械臂各个关节角度,即q

机械臂各个关节的速度,即qd(对q求导)

机械臂的各个关节的加速度,即qdd(对qd再次求导)

机械臂的质量和各个连杆的重心点

有了这些因素,我们可以通过数学方法:

u=M(q)qdd + C(q,qd)qd +G(q)

求出所需要的力矩,其中M项代表克服了机械臂的加速度惯量以及不同连杆之间的惯量影响所需力矩、C项代表了克服科里奥利力和离心力所需力矩、G项代表了克服地球引力力矩。

其中Inverse Dynamics叫做反向动力学,它的作用是输入想要的关节速度(qd)、关节加速度(qdd)、关节角度(q),输出为每个关节所需要的力矩(u)。当然也有正向动力学(forward dynamics),它的作用和反向动力学相反,输入关节角度(q)、关节速度(qd)、每个关节的力矩(u),输出为每个关节的加速度(qdd)。

上述的控制逻辑图,是一个“前馈控制”的例子,它的作用是预先计算出所需的力矩,输入给控制器,“反馈”的存在是为了消除一些误差,例如摩擦力和其他噪音。

总之,我们需要这么一个“动力学”模型,使得我们可以抵消各种不同的“disturbance”的影响 --- 惯量、地球引力、科里奥利力和离心力等等。另外,实际电机的功率是有限的,通过反向动力学我们也可以准确知道电机需要提供多少力矩,从而为电机选型提供参考依据。

下图初略表示了end-effector – inverse kinematics – inverse dynamics之间的关系:

关于MATLAB 中的机械臂算法分析和介绍

Robotics System Toolbox(RST)中的动力学算法

RST 提供了动力学方面的函数和Simulink block。

MATLAB函数:

关于MATLAB 中的机械臂算法分析和介绍

Simulink blocks:

关于MATLAB 中的机械臂算法分析和介绍

让我们看一个简单的例子:

这是一个工作在2D空间的机器人。标明了各个结构件的质量、长度和重心。在静止状态下,两个关节分别需要多大的力矩去抵消地球引力并支撑起这个机器人?

关于MATLAB 中的机械臂算法分析和介绍

我们先一步步地构造这个机器人:

关于MATLAB 中的机械臂算法分析和介绍

然后加入重心、质量:

关于MATLAB 中的机械臂算法分析和介绍

然后在速度和加速度都是0的情况下,调用inverse Dynamics函数算出力矩:

关于MATLAB 中的机械臂算法分析和介绍

tau =

20 10

很明显,第一个关节要比第二个需要更大的力矩。

我们也可以用gravityTorque这个函数试一下,结果是相同的。

关于MATLAB 中的机械臂算法分析和介绍

gravTorq =

20 10

如果我们将速度或者加速度改变一下,看看力矩的变化,例如:

关于MATLAB 中的机械臂算法分析和介绍

相应地,所需力矩也增大了。

tau =

30.5981 12.1340

Simulink 示例

在MATLAB Central File Exchange上搜索“Designing Robot Manipulator Algorithms”。

这是一个机械臂按运动轨迹抓取物体的例子:

关于MATLAB 中的机械臂算法分析和介绍

在前面运动学算法中,我们也介绍了这个例子。当时我们用反向运动学(inverse kinematics)去计算end-effector的位置。这次我们用力矩控制的方式来重新看一下这个问题。这里有两种方式供参考:

关于MATLAB 中的机械臂算法分析和介绍

首先,inverse kinematics根据end-effector的位置,计算出各个关节(电机)所需要的角度位置,然后交给各个关节的电机去执行。由于关节控制的是角度。所以叫Joint Space Control (即关节角度控制)。

前馈部分(feedforward)负责计算出所需力矩(用来抵消重力,按预定轨迹运动等等)。

反馈部分(feedback)用PID去消除误差。

关于MATLAB 中的机械臂算法分析和介绍

这个做法是直接控制end-effector的位置,并用PID去消除end-effector的位置误差。也叫做task space control,即直接控制在XYZ空间(也叫笛卡尔坐标的位置)。

前馈部分只做一件事:计算抵消地球引力的力矩。

反馈部分用PID去控制end-effector的位置。然后用Jacobian矩阵将end-effector(在笛卡尔坐标)的力矩,转化成各个关节的力矩。

关于MATLAB 中的机械臂算法分析和介绍

Computed Torque Control

有了机械臂的动力学模型(dynamic model),我们可以应用的控制方法有很多种。通常来说,反馈是必要的 – 可以消除控制误差和一些噪音。从力矩计算的角度来看,可以做:

力矩前馈控制。刚才两个例子都是将计算好的力矩做前馈。由于机械臂的移动速率远远小于电机控制速率,所以计算力矩的频率并不高。比如说,电机的控制频率为5K Hz,前馈力矩计算的频率大约是50Hz。对控制器的硬件要求不高。

计算力矩控制(computed torque control)。computed torque control工作在较高的控制频率上(例如1K Hz),要比力矩前馈控制频率高的多。对控制器硬件要求较高。

Simulink提供dynamics方面的blocks,可以方便地搭出computed torque controller:

关于MATLAB 中的机械臂算法分析和介绍

computed torque controller的输入:

q,机械臂关节角度

qd,预设的机械臂关节要达到的角度 (desired q)

dq,机械臂关节速度,即对q求导

dqd,预设的机械臂关节要达到的速度 (desired)

ddqd,预设的机械臂关节要达到的加速度 (desired )

computed torque controller的输出:

u,机械臂各个关节的力矩

有了computed torque controller我可以做出比较复杂的控制系统,例如一方面要求机械臂按预定的trajectory(含角度、速度、加速度等信息)运行;一方面又要求机械臂遭受外力干扰后改变运行轨迹(trajectory)。

如果感兴趣,可以看MATLAB自带的“Perform Safe Trajectory Tracking Control Using Robotics Manipulator Blocks”这个例子。机械臂在碰到遮挡的硬物,改变预设的运行轨迹,保证运行安全。

关于MATLAB 中的机械臂算法分析和介绍

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190255
  • 电机
    +关注

    关注

    143

    文章

    9485

    浏览量

    153175
  • 动力学
    +关注

    关注

    0

    文章

    108

    浏览量

    17483
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    复合机器人对比传统AGV和机械的优势何在?

    复合机器人对比传统AGV和机械的优势,核心在于它突破了单一设备的功能局限,实现了“移动+操作”的深度协同,尤其在上下料和物料转运场景优势显著。经世智能复合机器人:重新定义上下料与物料转运的效率
    的头像 发表于 11-21 15:32 1010次阅读
    复合机器人对比传统AGV和<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的优势何在?

    传统测试设备的局限与协作机械的破局

    在协作式测试设备的研发与落地中,北京沃华慧通测控技术有限公司凭借深厚的测控技术积累,成为行业核心赋能者。作为专注于智能测控设备研发的高新技术企业,北京沃华慧通测控技术有限公司深度把握协作机械的技术特性,构建了 “机械
    的头像 发表于 10-11 09:34 298次阅读
    传统测试设备的局限与协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的破局

    机器人机械效率提升的革命性解决方案:上海永铭电容器实践

    在现代自动化与精密制造,机器人机械(人形/工业)的稳定性与效率至关重要。电容器作为电路的基本组件,对机器人机械
    的头像 发表于 09-01 10:06 381次阅读
    机器人<b class='flag-5'>机械</b><b class='flag-5'>臂</b>效率提升的革命性解决方案:上海永铭电容器实践

    协作机械产品介绍

    电子发烧友们、工业自动化从业者、科研工作者们注意啦!今天给大家重磅介绍一款在机械领域表现极为亮眼的产品——协作机械,它正以卓越性能重塑行
    发表于 08-07 17:20 0次下载

    DFT算法与FFT算法的优劣分析

    一概述 在谐波分析,我们常常提到的两个词语,就是DFT算法与FFT算法,那么一款功率分析仪/谐波分析
    的头像 发表于 08-04 09:30 891次阅读

    PROFINET转MODBUS TCP网关在机械通信操作的应用研究

    在特定的汽车零部件生产工厂焊接生产线上,机械被应用于焊接作业,其控制体系基于Profinet协议。同时,工厂的自动化控制体系以西门子S7-1200PLC为核心,通过ModbusTCP协议实现
    的头像 发表于 07-03 16:56 415次阅读
    PROFINET转MODBUS TCP网关在<b class='flag-5'>机械</b><b class='flag-5'>臂</b>通信操作<b class='flag-5'>中</b>的应用研究

    GZCOM-NET:为机械测试带来高效无线解决方案!

    在智慧工厂机械的性能和安全性需通过静态与动态测试来保障。批量化测试时,后台需实时显示数据曲线和异常数据。GZCOM-NET凭借高效稳定的无线传输,为机械
    的头像 发表于 06-20 11:36 677次阅读
    GZCOM-NET:为<b class='flag-5'>机械</b><b class='flag-5'>臂</b>测试带来高效无线解决方案!

    大象机器人携手进迭时空推出 RISC-V 全栈开源六轴机械产品

    大象机器人成立于2016年,专注协作机器人研发与应用,产品线涵盖轻量级协作机器人、人形机器人、仿生机器人等多种形态。拳头产品myCobot系列以“全球最轻的六轴机械”闻名,累计销量超数万台,覆盖
    发表于 04-25 17:59

    海康威视推出大模型机械防碰撞相机

    工业机械负载作业时,往往重达几百斤甚至更重,提升效率的同时,如果它们“意外伤人”,后果不堪设想。
    的头像 发表于 03-17 09:47 890次阅读

    为控制Mercury X1和Mercury B1机械而设计的创新外骨骼

    今天,我们将介绍一款专为控制 Mercury X1 和 Mercury B1 机械而设计的创新外骨骼。这种外骨骼以人类手臂的结构为蓝本,可实现直观和精确的控制。     开发这种外骨骼的动机源于
    的头像 发表于 02-11 09:50 959次阅读
    为控制Mercury X1和Mercury B1<b class='flag-5'>机械</b><b class='flag-5'>臂</b>而设计的创新外骨骼

    如何使用PLC控制myCobot 320机械

    根据持续的用户反馈,目前市场对 PLC 与 myCobot 系统集成的需求很大,因此本文提供的案例介绍了如何使用 PLC(可编程逻辑控制器)来控制 myCobot 320 机械。本案例重点
    的头像 发表于 01-23 14:03 2156次阅读
    如何使用PLC控制myCobot 320<b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    使用myCobot 280机械结合ROS2系统搭建机械分拣站

    这篇文章是来自Automatic Addison的开源项目,已获作者授权转载自github。本项目的主要内容是使用myCobot 280机械结合ROS2系统搭建机械分拣站。
    的头像 发表于 01-15 09:22 1909次阅读
    使用myCobot 280<b class='flag-5'>机械</b><b class='flag-5'>臂</b>结合ROS2系统搭建<b class='flag-5'>机械</b>分拣站

    深度解析!RK3568 加持机械是如何实现颜色识别与抓取的?

    ;2、掌握机械识别颜色抓取积木的实现方法。三、实验原理颜色识别抓取积木功能:实现识别出不同颜色的积木,机械夹取后并放在相应的位置
    的头像 发表于 01-15 08:07 1243次阅读
    深度解析!RK3568 加持<b class='flag-5'>机械</b><b class='flag-5'>臂</b>是如何实现颜色识别与抓取的?

    RK3568国产实验箱+人工智能机械:跳舞、叠罗汉、夹方块、积木搬运案例全解!

    基于语音控制实现机械特定动作的方法。三、实验原理程序功能通过语音控制机械实现特定复杂动作:机械
    的头像 发表于 12-12 19:01 1856次阅读
    RK3568国产实验箱+人工智能<b class='flag-5'>机械</b><b class='flag-5'>臂</b>:跳舞、叠罗汉、夹方块、积木搬运案例全解!

    求LabVIEW程序代做,关于噪声测量方面,需要matlab与labview混合编程,涉及优化算法、PID控制等,可带价联系

    求LabVIEW程序代做,关于噪声测量方面,需要matlab与labview混合编程,涉及优化算法、PID控制等,可带价联系QQ2789223947
    发表于 12-11 17:27