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 中的机械臂算法分析和介绍

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

    关注

    112

    文章

    16232

    浏览量

    177544
  • 电机
    +关注

    关注

    142

    文章

    8942

    浏览量

    145172
  • 动力学
    +关注

    关注

    0

    文章

    105

    浏览量

    16963
收藏 人收藏

    评论

    相关推荐

    机械的高效运作,连接器起关键作用

         机械是灵活且可编程的自动化设备,在工业生产中发挥着至关重要的作用。其广泛的应用领域涵盖了装配与搬运、焊接与喷涂、检测与测量、码垛等多个环节,极大地提升了生产效率与质量,并成功替代人工完成
    的头像 发表于 11-11 18:07 164次阅读

    【原创】 drawbot 平面机械scara写字画画机器人DIY教程贴

    M205 X0.8 电机运动平滑度 (下面介绍)M503 查看机械设置参数M501 载入用户参数(保存到EEPROM的参数)M502 恢复出厂设置M500 保存用户参数(保存到EEPROM)M370
    发表于 08-30 11:54

    OrangePi AIpro应用:机械应用开发指南

    2024世界人工智能大会上,香橙派携OrangePiAIpro20T在世博展览馆H1-A301展区亮相,给大家带来AI+互动的沉浸式体验。其中,搭载OrangePiAIpro开发板的智能机械吸引了
    的头像 发表于 08-19 16:42 548次阅读
    OrangePi AIpro应用:<b class='flag-5'>机械</b><b class='flag-5'>臂</b>应用开发指南

    工业机器人和机械的设计、功能和应用有哪些区别?

    自动化设备,专门用于在工业生产线或其他工业环境执行各种操作任务。它们通常具备多轴关节结构,能够在三维空间内自由移动,并搭载各种工具、夹具或传感器来完成特定的任务。 工业机器人和机械都属于自动化设备,用于执行
    的头像 发表于 08-16 09:43 421次阅读

    奥比光推出2.0版大模型机械

    近期,奥比光研发团队融合前沿多模态大模型技术,推出最新2.0版大模型机械演示方案。新方案搭载公司最新深度相机Gemini 335L和Femto Bolt,能够基于语音指令,自动执行沏茶、插花、滴
    的头像 发表于 07-19 16:50 672次阅读

    大象机器人开源协作机械机械接入GPT4o大模型!

    和智能化的任务,提升了人机协作的效率和效果。我们个人平时接触不太到机械这类的机器人产品,但是有一种小型的机械我们人人都可以拥有它myCobot,价格低廉的一种桌面型
    的头像 发表于 07-03 14:09 807次阅读
    大象机器人开源协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    国产Cortex-A55人工智能教学实验箱_基于Python机械跳舞实验案例分享

    又不必要。 从力学的角度分析,物件在空间只有6个自由度。因此为抓取和传送在空间不同位置和方位物件,传送机构也应具有6个自由度。 实验程序流程 1、创建机械对象 2、机械
    发表于 06-28 14:37

    基于六维力传感器的机械自动装配应用

    外部环境的关键装置,六维力传感器通常安装于机器末端执行器与机械之间,用于检测作业的机器人与环境之间的多维交互力/力矩,并将交互力/力矩反馈给机器人力控制系统,
    的头像 发表于 06-06 13:49 702次阅读
    基于六维力传感器的<b class='flag-5'>机械</b><b class='flag-5'>臂</b>自动装配应用

    自然语言控制机械:ChatGPT与机器人技术的融合创新(下)

    引言 在我们的上一篇文章,我们探索了如何将ChatGPT集成到myCobot 280机械臂中,实现了一个通过自然语言控制机械的系统。我们详细介绍
    的头像 发表于 04-11 15:54 823次阅读
    自然语言控制<b class='flag-5'>机械</b><b class='flag-5'>臂</b>:ChatGPT与机器人技术的融合创新(下)

    机械技术的前沿探索:年度案例回顾!

    在过去的几年里,机械技术经历了前所未有的发展,其应用领域从传统的制造业扩展到了医疗、服务、物流等多个新兴行业。这种跨界扩展得益于科技的飞速进步,尤其是在传感器、控制系统和人工智能领域的突破。特别是
    的头像 发表于 03-12 15:14 1032次阅读
    <b class='flag-5'>机械</b><b class='flag-5'>臂</b>技术的前沿探索:年度案例回顾!

    如何去提升机械的位置控制性能?

    1.背景介绍 机械的位置控制是机械最重要的功能。机械
    的头像 发表于 03-05 08:43 869次阅读
    如何去提升<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的位置控制性能?

    【国产FPGA+OMAPL138开发板体验】(原创)2.手把手玩转游戏机械

    ChatGPT来增强其交互能力。 5.1 ChatGPT集成 AI算法实现 为了使机械具有AI功能,我会使用机器学习和AI算法来优化其运动轨迹和控制参数。例如,可以使用强化学习
    发表于 02-01 20:18

    使用ChatGPT学习大象机器人六轴协作机械mechArm!

    调试的过程,出现了一些问题,在识别收拾的时候,它是一直识别,这就意味着如果在1s内识别了10次的话,会给机械发送10个命令,这样肯定不是我一开始所设想的。我一开始的想法是,当相机
    的头像 发表于 01-31 14:39 635次阅读
    使用ChatGPT学习大象机器人六轴协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>mechArm!

    【开源获奖案例】四轴机械控制系统

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——四轴机械控制系统。工程师采用T5L智能屏,基于DGUS软件“旋转指示”控件实现机械的实时位置显示,并通过串口控制
    的头像 发表于 12-23 08:13 1206次阅读
    【开源获奖案例】四轴<b class='flag-5'>机械</b><b class='flag-5'>臂</b>控制系统

    七轴开源协作机械myArm视觉跟踪技术!

    处理技术,使用ArUco标记的机械系统可以实现更高级的自动化功能,如精确定位、导航和复杂动作的执行。 本案例旨在展示结合ArUco标记和机械运动控制技术,实现对
    的头像 发表于 12-18 11:14 1163次阅读
    七轴开源协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>myArm视觉跟踪技术!