热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

matlab计算机械臂素的,机械臂动力学——动力学建模

一、动力学基础概念基本动力学模型建模方法牛顿-欧拉法拉格朗日法连杆质量,连杆质心位置矢量,连杆质心惯性矩阵(通过动力学参数识别获得)二、牛顿-欧拉法运动

一、动力学基础概念

基本动力学模型

a45ea7a47daac1d467d636b1c993a13a.png

建模方法

牛顿-欧拉法

拉格朗日法

连杆质量,连杆质心位置矢量,连杆质心惯性矩阵(通过动力学参数识别获得)

二、牛顿-欧拉法

运动外推:向外迭代计算连杆的角速度、角加速度和线加速度

力外推:计算作用在连杆质心上的惯性力和力矩

力矩内推:向内迭代计算关节力矩

2.1 运动向外迭代

2.1.1 刚体线速度和角速度

线速度

坐标系{A}为固定,坐标系{B}固连在刚体上。

c3f9e4e965453b4ef3e82f0a211ecbf0.png

2.1.2 连杆速度

连杆i+1的速度为连杆i的速度加上附加到关节i+1上的速度分量。

注意:线速度相对于一点,角速度相对于一个物体,因此,"连杆的速度“指连杆坐标原点的线速度和连杆的角速度

角速度

连杆i+1的角速度等于连杆i的角速度加上一个由于关节i+1上的角速度引起的分量。

d8e0278057feb46a055156c70555b488.png

0acd59cd1eda621275d5017ba8752a4d.png

2.2 力向外迭代

2.2.1 牛顿方程(Newton)

0fa5d81c55c9ff58e3c1deb39f7e646f.png

用于描述刚体的平动。

质点的牛顿方程

7c398eddbe7d13de01e2310b83239bd8.png

m为质点质量,r为矢径,26105da97acac323e394e612d3facd0f.png为加速度,F为质点的合力。

平动刚体的牛顿方程

刚体平动为刚体上每一点速度一致。

cdd9787ab95cadd2dcd8b3cfc6e13e0d.png

163a737fbdf66b1a5b359afb3d72bc0d.png为刚体上任一点加速度。

一般运动刚体的牛顿方程

刚体平动为刚体上各点速度不相同。

532db4b9766eab005d41a17c948e8d6a.png

0c45c328c3100c5e41878d8a345595b3.png为刚体质心的加速度。

2.2.2 欧拉方程(Euler方程)

f46033c682838b92850d7697c3997928.png

绕定点转动刚体的Euler方程

e042afda74754889f5a7409533d5b7bb.png

w为刚体固连坐标系的角速度,958bf99e13905a03e22720fe02120083.png为常值矩阵,表示刚体在与刚体固连坐标系中对O点的惯性张量矩。

2.3 力和力矩向内迭代

c288588b52765d3028002f6805c13944.png

上图为典型连杆在无重力状态下受力图,根据该图建立力平衡方程和力矩平衡方程。

力平衡方程

7768724432ef5632b1356f4e988f7851.png

23c06078c090fab768960d266b936993.png为连杆i-1作用在连杆i上的力

力矩平衡方程

dcb8d02b9486bda766a3fed2b2770079.png

38c47e0081735d585b626f7865423488.png为连杆i-1作用在连杆i上的力矩

98b6a07132abc42b9af0d23a3aded19e.png

根据力平衡方程和附加旋转矩阵可化简该公式

661195098780af19a42cdeaeda22438c.png

迭代方程

按照连杆序号高到低排序获得迭代关系为

5c63a6b27f2019be9f62a68e6b604ba6.png

2.4 建立动力学方程

6b4dc7dd3f6d463bf752aeefdff26ad1.png

2.5 两连杆动力学方程

bd6f4b6cd0273ae9dffb97aa56907092.png

假设连杆质量集中在连杆末端,质量分别为m 1​和m2​。

连杆质心位置矢量

ef62a78e84ec21f4a1de54dd6da85f79.png

ed92552d840adef006d4cebe499bd728.png

2a919309599efaae511f4f382d513078.png

连杆2

754985def8e7c0198baee5f234d43872.png

1a947f13f4233691d689febde2bbedaa.png

c933893884773e27ff37b45dee781311.png

连杆1

a616586a1877fc9b6268bf0f2762ff34.png

350a6857ea28bd3d70c8e8f56e7fdcb3.png

ebaf7f196e76fa1e3f13a65a8c0147ab.png

Matlab建模

% 动力学建模

syms l1 l2 m1 m2 g;

syms q1 q2 dq1 dq2 ddq1 ddq2;

%% 参数初始化

R{1}=[cos(q1) -sin(q1) 0;sin(q1) cos(q1) 0;0 0 1];

R{2}=[cos(q2) -sin(q2) 0;sin(q2) cos(q2) 0;0 0 1];

R{3}=[1 0 0;0 1 0;0 0 1];

% 坐标系原点位移,用P{1}表示坐标系1与坐标系0原点位置关系,用P{2}表示坐标系2与坐标系1原点位置关系。

P = cell(1,3);

P{1}=[0;0;0];P{2}=[l1;0;0];P{3}=[l2;0;0];

% 每个连杆质心的位置矢量

Pc = cell(1,3);

Pc{1}=[0;0;0];Pc{2}=[l1;0;0];Pc{3}=[l2;0;0];

% 连杆质量

m = cell(1,3);

m{2}=m1;

m{3}=m2;

% 惯性张量

I = cell(1,3);

I{2}=[0;0;0];

I{3}=[0;0;0];

% 连杆间角速度和角加速度

w = cell(1,3);dw = cell(1,3);

w{1}=[0;0;0];dw{1}=[0;0;0];% 机器人底座不旋转

% 连杆坐标原点和质心加速度

dv = cell(1,3);dvc = cell(1,3);

dv{1}=[0;g;0];% 重力因素

% 关节速度和加速度

dq = cell(1,3); ddq = cell(1,3);

dq{2}=[0;0;dq1];dq{3}=[0;0;dq2];

ddq{2}=[0;0;ddq1];ddq{3}=[0;0;ddq2];

% 末端执行器没有力

f = cell(1,4);n = cell(1,4);

f{4}=[0;0;0];

n{4}=[0;0;0];

%% 建立运动学方程

% 外推

for i=1:2 %matlab下标从1开始

w{i+1}=R{i}.'*w{i}+dq{i+1};

dw{i+1}=R{i}.'*dw{i}+cross(R{i}.'*w{i},dq{i+1})+ddq{i+1};

dv{i+1}=R{i}.'*(cross(dw{i},P{i})+cross(w{i},cross(w{i},P{i}))+dv{i});

dvc{i+1}=cross(dw{i+1},Pc{i+1})+cross(w{i+1},cross(w{i+1},Pc{i+1}))+dv{i+1};

F{i+1}=m{i+1}*dvc{i+1};

N{i+1}=[0;0;0];%假设质量集中,每个连杆惯性张量为0

end

% 内推

for i=3:-1:2

f{i}=R{i}*f{i+1}+F{i};

n{i}=N{i}+R{i}*n{i+1}+cross(Pc{i},F{i})+cross(P{i},R{i}*f{i+1});

end

% 力矩

tau = cell(1,2);

tau{1} = n{2}(3);

tau{2} = n{3}(3);

celldisp(tau)

三、拉格朗日法

拉格朗日法为基于能量的动力学方法。

3.1 动能

第i根连杆的动能k i k_iki​为连杆质心线速度产生动能和连杆角速度产生动能之和

2fc9b97ed315fa1e26d10f65004b5722.png

3.3 构建动力学方程

拉格朗日函数定义为系统的动能减去势能

3fa4a55c831f4e25dba68af4179c53fc.png

操作臂运动方程为

717a7b4e4077c485173f6d98f886eef3.png

τ为n x 1力矩矢量,运动方程代入拉格朗日函数为

0e5ae2c0de07516105b4c95759130dd0.png

3.4 两连杆动力学方程

2R机械臂在处在xy平面内,重力沿-y方向。

532d81d18aaeeae353c05db4de1a3a5f.png

连杆质心线速度

连杆1

0847c810687425c5e9c3e89863cf4d8f.png

连杆2

75aad0472ead57dd07267fb8de725f26.png

连杆角速度

因质量集中,连杆质心惯性张量为零矩阵

a62776984bce934674c17b1625ce66d3.png

因此连杆角速度产生动能为0,即

e20a6d1a2813fadfa0f2e9e3f8ddad9e.png

连杆动能

29ec726a8d81ea3fe0cdac12593b8f91.png

连杆势能

76196f5f23ef0f7f89497ea6444cc5c4.png

拉格朗日方程

2ab9c8a376dfa3a7e9b2c25817bfaeae.png

使用运动方程求力矩

c4ce47f42b198da927014af41783e794.png

状态空间方程

82455b1059cbdede19e699e28479a828.png

matlab建模

% 质量集中,无惯性矩阵,连杆长度与质心位置重合

syms m1 m2 l1 l2 g

syms q1 q2 q1d q2d q1dd q2dd

syms x1(t) x1d x1dd x2(t) x2d x2dd

x1d=diff(x1,t); x2d=diff(x2,t);

x1dd=diff(x1,t,t); x2dd=diff(x2,t,t);

%质量矩阵

M1=diag([m1,m1]);

M2=diag([m2,m2]);

% 速度

V1=[[l1*cos(x1(t)) 0];[l1*sin(x1(t)) 0]]*[x1d;x2d];

V2=[[-l1*sin(x1(t))-l2*sin(x1(t)+x2(t)) -l2*sin(x1(t)+x2(t))];

[l1*cos(x1(t))+l2*cos(x1(t)+x2(t)) l2*cos(x1(t)+x2(t))]]*[x1d;x2d];

% 动能

K1=simplify((1/2)*V1.'*M1*V1);

K2=simplify((1/2)*V2.'*M2*V2);

K =K1+K2;

% 势能

u1=m1*g*l1*sin(q1);

u2=m2*g*(l1*sin(q1)+l2*sin(q1+q2));

u =u1+u2;

% 拉格朗日方程

L=K-u;

L=subs(L,{x1,x2,x1d,x2d,x1dd,x2dd},{q1,q2,q1d,q2d,q1dd,q2dd});

% 利用运动方程计算力矩方程

dLdqd=[diff(L,q1d); diff(L,q2d)];

dLdqd =subs(dLdqd, {q1,q2,q1d,q2d,q1dd,q2dd}, {x1,x2,x1d,x2d,x1dd,x2dd});

ddLdqddt=diff(dLdqd,t);

ddLdqddt= subs(ddLdqddt,{x1,x2,x1d,x2d,x1dd,x2dd},{q1,q2,q1d,q2d,q1dd,q2dd});

dLdq=[diff(L,q1); diff(L,q2)];

% 输出结果

syms f

f=simplify(ddLdqddt-dLdq)

四、算法对比

054108492a42ef8b1350abdb5e144458.png

通过牛顿欧拉方程导出的逆动力算法较拉格朗日方程推导计算量要少,但实际上两者差异在于表示连杆角速度的方式不一致,牛顿欧拉方程采用三维矢量,拉格朗日方程采用3 × 3 3 \times 33×3旋转矩阵导数,因此多余因素造成计算量增大,若在计算动能时采用三维角速度矢量描述,则拉格朗日方程可推导处与牛顿欧拉方程相同的形式的逆动力方程。

在实际应用中,多轴机械臂连杆结合计算机建模更适合选用牛顿-欧拉法,手动推算下拉格朗日法更加简单直观,但推导多轴机械臂较为困难。

参考

MATLAB机器人运动学与动力学

MATLAB 中的机械臂算法——动力学

三关节机械臂动力学模型问题?

【机器人学】机器人开源项目KDL源码学习:(4)机械臂逆动力学的牛顿欧拉算法

matlab递推牛顿-欧拉法解机械臂动力学方程

《机器人动力学与控制》第九章——动力学 9.1初探欧拉拉格朗日方程法

机器人动力学–拉格朗日公式

《机器人动力学与控制》

《机器人技术基础》

《机器人学导论》

Kenvin M. Lynch , Frank C. Park, Modern Robotics Mechanics,Planning , and Control. May 3, 2017



推荐阅读
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • 本文探讨了利用JavaScript实现集合的对称差集算法的方法。该算法旨在处理多个数组作为输入参数,同时保留每个数组中元素的原始顺序。算法不会移除单个数组内的重复元素,但会删除在不同数组之间出现的重复项。通过这种方式,能够有效地计算出多个数组的对称差集。 ... [详细]
  • 本文介绍了一种算法,用于计算当前日期在本年度的具体周数。该方法由作者王峰提出,通过私有函数 `weekOfYear` 实现,能够准确地确定当前日期在一年中的周位置。此算法在日历计算和时间管理中具有广泛应用,适用于各种编程语言和应用场景。 ... [详细]
  • HTML 页面中调用 JavaScript 函数生成随机数值并自动展示
    在HTML页面中,通过调用JavaScript函数生成随机数值,并将其自动展示在页面上。具体实现包括构建HTML页面结构,定义JavaScript函数以生成随机数,以及在页面加载时自动调用该函数并将结果呈现给用户。 ... [详细]
  • 总数 | 小规模算法动态规划第3讲:LeetCode 62 不同路径详解 | 从自顶向下到自底向上的动态规划方法分析
    总数 | 小规模算法动态规划第3讲:LeetCode 62 不同路径详解 | 从自顶向下到自底向上的动态规划方法分析 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • 今日深入研究了树状数组,感觉难度较大,通过课件和博客辅助学习,仍有许多疑惑。主要探讨了老师推荐的三道题目,初步掌握了树状数组的基本用法。同时,还学习了逆序数和离散化的概念及其应用。 ... [详细]
  • 欧拉法与龙格-库塔法在微分方程求解中的对比分析
    本文探讨了计算机如何理解和模拟连续系统的动态特性,重点介绍了欧拉法和龙格-库塔法这两种常用的数值积分方法。通过详细的理论分析和MATLAB代码实现,对比了两种方法在求解微分方程时的性能和适用性。 ... [详细]
  • 本文详细介绍了Dijkstra算法,该算法用于解决图中从单个源点到其他所有顶点的最短路径问题。 ... [详细]
  • YOLO由24层ConvNet和2层FCs组成。其核心思想是将图片均匀划分为多个gridcell,每个gridcell产生两个bbox和gridcell中如果存在对象,对象是各类的 ... [详细]
  • Java作为全球最流行的编程语言之一,应用广泛。本文将详细介绍Java开发的相关岗位及其具体职责,帮助读者更好地了解这一领域的职业发展路径。 ... [详细]
  • Linux 防火墙与端口管理必备命令
    在使用 Linux 系统进行服务部署和问题排查时,防火墙和端口管理是不可或缺的操作。本文将详细介绍如何查看防火墙状态、端口占用情况,以及如何开放和关闭端口,帮助初学者更好地掌握这些技能。 ... [详细]
  • 本文介绍了在Shader中优化常见数学函数的方法,包括特化和近似计算,以提高渲染性能。这些方法适用于HDR格式和RGBE编码的优化。 ... [详细]
author-avatar
天若无雨666
这个菇凉很宅,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有