Matlab人形机器人建模与仿真
DH 参数 DH 参数
Denavit-Hartenberg (DH) 提供各种修改版和标准版。 修改后的约定中的连杆和关节参数如下图所示:
DH参数根据下表确定。
The algorithm of the modified DH convention:
两个附加参数是 Sigma 和 Offset。
链接 [THETA, D ,A ,ALPHA ,SIGMA ,OFFSET]
OFFSET 是用户关节角度矢量和真实运动学解之间的恒定位移。 SIGMA=0 表示旋转接头,1 表示棱柱接头。
结构体
结果
MATLAB 教学工具箱中的最终模型
Denavit-Hartenberg 参数
平台
left arm
right arm
left leg
right leg
我的中文水平不是很好,所以我用翻译软件来写这篇文章。 希望它派上用场。
My chinese level is not that good, so I used a translate app to write this article. Hope it comes handy.
Code: GitHub - MikeHarris-AHAM/Humanoid-Kinematics-Simulation: Humanoid Robot Kinematics Simulation Using MATLAB Teach Toolbox.
%% ------------------------------------------------------------------------
% Kinematic Model of Humanoid Robot
%
% Mike
%
% Date: 15/7/2022
%
%% ------------------------------- Init Env -------------------------------
clear;
close all;
clc;
pi = 3.14;
%% Link [THETA D A ALPHA SIGMA OFFSET]
%% OFFSET is a constant displacement between the user joint angle vector
% and the true kinematic solution.
%% SIGMA SIGMA=0 for a revolute and 1 for a prismatic joint.
%% ------------------------------ platform -------------------------------
platform=SerialLink([0 0 0 0],'name','platform','modified');
platform.base=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1;];
platform.qlim = [0,0]; %Platform
%% ------------------------------ Right Arm -------------------------------
RA(1)=Link([0 0.49077 0 0 0 0],'modified');
RA(2)=Link([0 0.283 0 pi/2 0 -pi/2],'modified');
RA(3)=Link([0 0 0 pi/2 0 0],'modified');
RA(4)=Link([0 0 0.287 pi/2 0 0],'modified');
RA(5)=Link([0 0 0.287 pi/2 0 0],'modified');
Humanoid_Robot_RA=SerialLink(RA,'name','RIGHTARM');
RA(1).qlim = [0,0]; % Base for Upper body
RA(2).qlim = [deg2rad(-50),deg2rad(50)]; % Shoulder Pitch
RA(3).qlim = [0,deg2rad(60)]; % Shoulder Roll
RA(4).qlim = [0,deg2rad(140)]; % Elbow Pitch
RA(5).qlim = [0,0];%end-effector
%% -------------------------- Assembly Right Arm --------------------------
pRA=SerialLink([platform,Humanoid_Robot_RA],'name','RA');
view(3)
hold on
grid on
len_RA = length(RA);
init_RA = [];
for i=1:len_RA+1init_RA(i) = 0;
end
pRA.plot([init_RA],'scale',.5)
% pRA.teach
hold on
%% ------------------------------ Left Arm --------------------------------
LA(1)=Link([0 0.49077 0 0 0 0],'modified');
LA(2)=Link([0 -0.283 0 pi/2 0 -pi/2],'modified');
LA(3)=Link([0 0 0 pi/2 0 0],'modified');
LA(4)=Link([0 0 0.287 pi/2 0 0],'modified');
LA(5)=Link([0 0 0.287 pi/2 0 0],'modified');
Humanoid_Robot_LA=SerialLink(LA,'name','LEFTARM');
LA(1).qlim = [0,0]; % Base for Upper body
LA(2).qlim = [deg2rad(-50),deg2rad(50)]; % Shoulder Pitch
LA(3).qlim = [0,deg2rad(60)]; % Shoulder Roll
LA(4).qlim = [0,deg2rad(140)]; % Elbow Pitch
LA(5).qlim = [0,0]; %end-effector
%% -------------------------- Assembly Left Arm ---------------------------
pLA=SerialLink([platform,Humanoid_Robot_LA],'name','LA');
view(3)
hold on
grid on
axis([-1, 1, -1, 1, -1, 1]*0.9)
len_LA = length(LA);
init_LA = [];
for i=1:len_LA+1init_LA(i) = 0;
end
pLA.plot([init_LA],'scale',.5)
% pLA.teach
hold on
%% ------------------------------ Left Leg --------------------------------
LL(1)=Link([0 -0.120 0 pi/2 0 0 ],'modified');
LL(2)=Link([0 0 0 pi/2 0 -pi/2 ],'modified');
LL(3)=Link([0 0 0 -pi/2 0 -pi/2 ],'modified');
LL(4)=Link([0 0 0.42 pi/2 0 0 ],'modified');
LL(5)=Link([0 0 0.42 0 0 0],'modified');
LL(6)=Link([0 0.0772 0 -pi/2 0 0],'modified');
LL(7)=Link([0 0 0 0 0 0],'modified');
Humanoid_Robot_LL=SerialLink(LL,'name','LEFTLEG');
LL(1).qlim = [deg2rad(-50),deg2rad(50)]; %Hip Pitch -50 to 50
LL(2).qlim = [deg2rad(-50.15923567),deg2rad(50.15923567)]; %Hip yaw -50.15923567 to 50.15923567
LL(3).qlim = [deg2rad(-5),deg2rad(5)]; %Hip roll -5 to 5
LL(4).qlim = [0,deg2rad(90)]; %knee 0 to 90
LL(5).qlim = [deg2rad(-45),deg2rad(45)]; %Ankle Pitch -45 to 45
LL(6).qlim = [deg2rad(-20),deg2rad(20)]; %Ankle Roll -20 to 20
LL(7).qlim = [0,0]; %end-effector
%% -------------------------- Assembly Left Arm ---------------------------
pLL=SerialLink([platform,Humanoid_Robot_LL],'name','LL');
view(3)
hold on
grid on
axis([-1, 1, -1, 1, -1, 1]*0.9)
len_LL = length(LL);
init_LL = [];
for i=1:len_LL+1init_LL(i) = 0;
end
pLL.plot([init_LL],'scale',.5)
pLL.teach
hold on
%% ------------------------------ Right Leg --------------------------------
RL(1)=Link([0 0.120 0 pi/2 0 0 ],'modified');
RL(2)=Link([0 0 0 pi/2 0 -pi/2 ],'modified');
RL(3)=Link([0 0 0 -pi/2 0 -pi/2 ],'modified');
RL(4)=Link([0 0 0.42 pi/2 0 0 ],'modified');
RL(5)=Link([0 0 0.42 0 0 0],'modified');
RL(6)=Link([0 0.0772 0 -pi/2 0 0],'modified');
RL(7)=Link([0 0 0 0 0 0],'modified');
Humanoid_Robot_RL=SerialLink(RL,'name','RightLEG');
RL(1).qlim = [deg2rad(-50),deg2rad(50)]; %Hip Pitch -50 to 50
RL(2).qlim = [deg2rad(-50.15923567),deg2rad(50.15923567)]; %Hip yaw -50.15923567 to 50.15923567
RL(3).qlim = [deg2rad(-5),deg2rad(5)]; %Hip roll -5 to 5
RL(4).qlim = [0,deg2rad(90)]; %knee 0 to 90
RL(5).qlim = [deg2rad(-45),deg2rad(45)]; %Ankle Pitch -45 to 45
RL(6).qlim = [deg2rad(-20),deg2rad(20)]; %Ankle Roll -20 to 20
RL(7).qlim = [0,0]; %end-effector
%% -------------------------- Assembly Right Arm --------------------------
pRL=SerialLink([platform,Humanoid_Robot_RL],'name','RL');
view(3)
hold on
grid on
axis([-1, 1, -1, 1, -1, 1]*0.9)
len_RL = length(RL);
init_RL = [];
for i=1:len_RL+1init_RL(i) = 0;
end
pRL.plot([init_RL],'scale',.5)
pRL.teach
hold on
%% -------------------------------- Jacobian ------------------------------
Q = zeros(7,len_LL);
Jacob_LL = pLL.jacobe(Q);
Q = zeros(7,len_RL);
Jacob_RL = pRL.jacobe(Q);
Q = zeros(7,len_LA);
Jacob_LA = pLA.jacobe(Q);
Q = zeros(7,len_RA);
Jacob_RA = pRA.jacobe(Q);
%% -------------------------------------------------------------------------
Matlab人形机器人建模与仿真相关推荐
- Matlab - Solidworks 机器人建模(5)—— 给模型添加摩擦力
Matlab - Solidworks 机器人建模(5)-- 给模型添加摩擦力 0. 前言 建好模型并成功进行一次仿真之后,我们发现虽然模型可以像模像样的产生由重力带来的运动,但是也发现零件可以穿过其 ...
- thetae_1在MATLAB中的意思,无刷直流电机在Matlab中的建模与仿真研究_荣军
第25卷 第2期 湖南理工学院学报(自然科学版) Vol.25 No.22012年6月 Journal of Hunan Institute of Science and Technology (Na ...
- tcsc工作原理matlab仿真,基于Matlab的TCSC建模与仿真研究.doc
基于Matlab的TCSC建模与仿真研究 基于Matlab的TCSC建模与仿真研究 第17卷第5期 2006年1O月 巾原T学院 JOURNALOFZHONGYUANINSTIT[ITEOFTECHN ...
- Matlab - Solidworks 机器人建模(4)—— 如何把SolidWorks模型导入到Matlab (Simscape模型)
Matlab - Solidworks 机器人建模(4)-- 如何把SolidWorks模型导入到Matlab (Simscape模型) 1.说在前面 本文会介绍怎么直接把solidworks的模型转 ...
- matlab link offset,基于MATLAB教学型机器人空间轨迹仿真
基于MATLAB教学型机器人空间轨迹仿真 robotic toolbox for matlab工具箱 1. PUMA560的MATLAB仿真 要建立PUMA560的机器人对象,首先我们要了解PUMA5 ...
- matlab电路建模,单相桥式整流电路在MATLAB中的建模与仿真
摘要:阐述了单相桥式全控整流电路的工作原理,并且详细研究了在MATLAB/Simulink中的单相桥式全控整流电路的建模方法;最后给出了详细的仿真结果,仿真结果和理论分析一致,为单相桥式全控整流电路的 ...
- matlab四足仿真,基于MATLAB的四足机器人建模与仿真.docx
摘要:本课题讨论了一种利用MATLAB中Robotics Toolbox对机器人进行的仿真建模的技术,对四足机器人进行行仿真建模.通过设计确定主要研究对象为哺乳类四足机器人.确定了机器人的腿部关节结构 ...
- 如何给目标机器人建模并仿真【数学/控制意义】
前言 在上一节的机器人学习中,我们已经了解到当下热门的机器人研究方向,从视觉.人工智能到多机通讯.人机协同,机器人的研究有着广阔的前景,而想要学好机器人,第一步就是要首先建立模型,本节的标题是数学意义 ...
- sepic电路MATLAB,Sepic电路建模、仿真设计(最终版)
<Sepic电路建模.仿真设计.doc>由会员分享,可免费在线阅读全文,更多与<Sepic电路建模.仿真设计(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数 ...
最新文章
- Windows 7 with SP1中英文原版MSDN下载汇总(全版本收录完毕)
- [扫盲] Salesforce.com: 业界云计算(Cloud Computing)的主要倡导者之一
- IDEA Tips:Debug跳转任意行
- MyBatis超详细介绍——SQL语句构建器类
- linux一键优化脚本1.0
- Spring.NET学习笔记(4)-对象作用域和类型转换
- OpenSessionInViewFilter作用及配置
- js程序中美元符号$是什么
- Android 音视频深入 十四 FFmpeg与OpenSL ES 播放mp3音乐,能暂停(附源码
- 关于 pip安装的可能错误的排除
- 凸包, 圆角矩阵凸包, 点的旋转,任意多边形外角和为360度, 绕着某点进行旋转
- “双一流”高校,整体搬迁!
- Dockerfile中ADD文件用法
- C语言 写一个函数求两个数的较大值
- 电脑用户名被删除了 登录不了,进不了界面怎么办。
- 前端性能优化学习 03 Web 性能测试
- dns 解析,一个域名解析到多个ip地址
- 华数机器人旋转编程_用户手册-华数机器人.PDF
- Java使用Calender类实现打印日历(指定月份和年)
- vba和vb的小区别
热门文章
- 【笔记1-1】基于对话的问答系统CoQA (Conversational Question Answering)
- 浏览器打开服务器上的图片无法显示,网页中的图片打不开怎么办?原因与解决办法...
- 常见的字符编码(ASCII码,unicode,utf-8,gbk)
- 使用Python连接阿里云盘
- bootstrap 轮播插件
- 根号2计算机代码,根号 2 的程序计算方法
- 【MySql】SQL语句DDL类
- html密码域的type属性,查看网页黑点密码 将type=password中password修改成为text
- python打开文件写入内容_python-11 文件的打开和写入
- 微端更新慢、甚至不更新是怎么回事?