最近准备研究一下7自由度机械臂,先做一些基本分析,后续会持续更新其工作空间、动力学模型和基于优化理论的轨迹规划设计。


%Author:easyR
%Date:2019/6/18
%dh:SDH Table
%构型数据参考《基于matlab的七自由度机器人运动学及工作空间仿真》
%徐小龙  《新技术新工艺》设计与计算%parameters of coordinate
clc;clear all;
tic;
% syms q1 q2 q3 q4 q5 q6 q7 real
% structure parameters
a1=0.165; a4=0.2;  d2=0.02; d4=0.098;  d5=0.65;
alpha0=0;alpha1=-pi/2;alpha2=pi/2;alpha3=-pi/2;alpha4=-pi/2;alpha5=pi/2;alpha6=-pi/2;
d=[0 d2 0 d4 d5 0 0];
a=[0 a1 0 0  a4 0 0];
alpha=[alpha0 alpha1 alpha2 alpha3 alpha4 alpha5 alpha6];
q=[0 0 0 0 0 0 0]; % standup
disp('Output the DH parameters Table:')
dh=[a' alpha' q' d']
[T,T10,T20,T30,T40,T50,T60,T70]=myfunTransMatrix(dh,0);
myfunPostureDrawing(T10,T20,T30,T40,T50,T60,T70);
toc;%··············································
%%Matlab Robot Tool Box
%         θ    d   a     α       offset
L(1)=Link([0   0   0     0          0  ],'sdh');
L(2)=Link([0   d2  a1    alpha1     0  ],'sdh');
L(3)=Link([0   0   0     alpha2     0  ],'sdh');
L(4)=Link([0   d4   0    alpha3     0  ],'sdh');
L(5)=Link([0   d5   a4   alpha4     0  ],'sdh');
L(6)=Link([0   0   0     alpha5     0  ],'sdh');
L(7)=Link([0   0   0     alpha6     0  ],'sdh');robot=SerialLink(L,'name','robot7R','manufacturer','Unimation','comment','AK&B');
robot.display();  %display MDH table
robot.plot(q);
%················································function myfunPostureDrawing(T10,T20,T30,T40,T50,T60,T70)
%Method:MDH or SDH
%Goal:compute transform matrix
%Author:easyR
%Date:2019/2/20
%dh:MDH Table
%T:the matrix of Transform,the valve from 'myfunTransMatrix'%% Drawing the posture of manipulators
%draw the posture of robot
x = [T10(1,4) T20(1,4) T30(1,4) T40(1,4) T50(1,4) T60(1,4) T70(1,4)];
y = [T10(2,4) T20(2,4) T30(2,4) T40(2,4) T50(2,4) T60(2,4) T70(2,4)];
z = [T10(3,4) T20(3,4) T30(3,4) T40(3,4) T50(3,4) T60(3,4) T70(3,4)]; %draw the toolpoint coordinate
px=T70*[0.05;0;0;1];     py=T70*[0;0.05;0;1];     pz=T70*[0;0;0.05;1]; %'50'is properties of coordinate
px1=[T70(1,4),px(1,1)];py1=[T70(2,4),px(2,1)];pz1=[T70(3,4),px(3,1)];
px2=[T70(1,4),py(1,1)];py2=[T70(2,4),py(2,1)];pz2=[T70(3,4),py(3,1)];
px3=[T70(1,4),pz(1,1)];py3=[T70(2,4),pz(2,1)];pz3=[T70(3,4),pz(3,1)];%%
%drawing figures
plot3(x,y,z,'o','linewidth',8);
hold on
%set coordinate XYZ
plot3(px1,py1,pz1,'r','LineWidth',3)
hold on
plot3(px2,py2,pz2,'g','LineWidth',3)
hold on
plot3(px3,py3,pz3,'b','LineWidth',3)title("Forward Kinematics")
xlabel("x(m)")
ylabel("y(m)")
zlabel("z(m)")
plot3(x,y,z, 'y','Linewidth',5);
grid on;
grid on;endfunction [T,T10,T20,T30,T40,T50,T60,T70]=myfunTransMatrix(dh,DHflg)
%Method:MDH or SDH
%Goal:compute transform matrix
%Author:easyR
%Date:2019/1/25
%dh:MDH or SDH Table
%DHflg:input 0 or 1,equal sdh or mdh
%T:Transform Matrix from endpoint to basement
for k=1:7for i=1:kif DHflg==0T(:,:,k)=myfunSDHMatrix( dh(i,1),dh(i,2),dh(i,3),dh(i,4));  % SDHelseif DHflg==1T(:,:,k)=myfunMatrixTrans( dh(i,1),dh(i,2),dh(i,3),dh(i,4));  %MDHelseif (DHflg~=1 && DHflg~=1)disp('Error input');break;endend
end
disp('display each transform matrix Tn:');
% transform matrix
T10=(T(:,:,1));T21=(T(:,:,2));T32=(T(:,:,3));T43=(T(:,:,4));T54=(T(:,:,5));T65=(T(:,:,6));T76=(T(:,:,7));
T20=T10*T21;T30=T20*T32;T40=T30*T43;T50=T40*T54;T60=T50*T65;T70=T60*T76;
end%%
function [T]=myfunMatrixTrans(a,alpha,theta,d)
%Method:MDH
%Goal:compute transform matrix
%Author:easyR
%Date:2019/1/25
T=[ cos(theta),          -sin(theta),          0,           a;sin(theta)*cos(alpha),cos(theta)*cos(alpha),-sin(alpha),-sin(alpha)*d;sin(theta)*sin(alpha),cos(theta)*sin(alpha), cos(alpha), cos(alpha)*d;0,                    0,          0,            1];
end
%%function [Ai]=myfunSDHMatrix(a,alpha,q,d)
%%
%Transform matrix in SDH coordinate
%Ai,is the transform matrix between two coordinate
Ai=[cos(q),-sin(q)*cos(alpha), sin(q)*sin(alpha),a*cos(q);sin(q), cos(q)*cos(alpha),-cos(q)*sin(alpha),a*sin(q);0,        sin(alpha),        cos(alpha),       d;0,                 0,                 0,       1];end

Output the DH parameters Table:

dh =

0                 0         0         0
    0.1650   -1.5708         0    0.0200
         0         1.5708         0         0
         0        -1.5708         0    0.0980
    0.2000    -1.5708         0    0.6500
         0          1.5708         0         0
         0         -1.5708         0         0

display each transform matrix Tn:
时间已过 3.166343 秒。
 
robot = 
 
robot7R (7 axis, RRRRRRR, stdDH, fastRNE)                        
 AK&B;                                                           
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|            0|             0|             0|          0|
|  2|         q2|       0.02|      0.165|     -1.571|          0|
|  3|         q3|            0|             0|      1.571|          0|
|  4|         q4|     0.098|             0|     -1.571|          0|
|  5|         q5|       0.65|          0.2|     -1.571|          0|
|  6|         q6|            0|             0|      1.571|          0|
|  7|         q7|            0|             0|     -1.571|          0|
+---+-----------+-----------+-----------+-----------+-----------+
                                                                 
grav =    0  base = 1  0  0  0   tool =  1  0  0  0              
              0           0  1  0  0                 0  1  0  0              
         9.81           0  0  1  0                 0  0  1  0              
                           0  0  0  1                 0  0  0  1


七自由度机械臂设计分析——待更新相关推荐

  1. 【机器人学】冗余七自由度机械臂的解析解逆解算法

    冗余七自由度机械臂的解析解逆解算法 参考 论文一 论文二 参考 -[1] An Analytical Solution for a Redundant Manipulator with Seven D ...

  2. 基于adams与simulink的七自由度机械臂模型与控制仿真

    基于adams与simulink的七自由度机械臂模型与控制仿真 最近在搞adams与simulink联合仿真,发现网上关于高自由度机械臂的建模与仿真中文资料很少,也没有开源模型.因此将我的学习成果开源 ...

  3. 机器人抓取平台搭建记录(六):手眼标定--眼在手上--Kinova Gen2 JACO2 七自由度机械臂--Realsense D435

    吐槽一,手眼标定两个多月前就做好了,这篇文章也是两个多月前就写了,但当时不知出了什么差错,在我还没有写完想暂时保存一下草稿的时候,写的内容竟然没了小半.于是就拖到现在,拖到忘记了当时写作的思路,操作细 ...

  4. 蒙特卡洛法的七自由度机械臂工作空间分析

    MATLAB R2014a 1.蒙特卡洛法: i.确定机械臂各关节变量的变化范围(θ_min,θ_max) ii.确定末端执行器的位姿矩阵T= 位置向量为[px,py,pz)]'. iii.利用随机函 ...

  5. Matlab机器人工具箱(3-4):五自由度机械臂(计算力矩控制方法与roblocks)

    01 roblocks使用方法 在命令行输入roblocks 打开机器人工具箱的模块库 使用'roblocks'命令打开simulink 机器人模块时提示版本过低的解决办法: ① 打开帮助–选择小齿轮 ...

  6. 【详细讲解 附全部代码】【openmv控制三自由度机械臂抓取物品】硬件+软件

    前言: 这份代码很难得的是纯自己写的,虽然openmv梯子都搭成这样了也没什么大技术含量,只有一丢丢细小的逻辑.. 整体代码放在最后了,有需要的自取吧 实现功能 机械臂抓取一定范围内任意位置的物品,将 ...

  7. 运用C#在VS2017的PictureBox控件中绘制简易二自由度机械臂,并且让机械臂实现画直线、圆、人物轮廓及写字的功能。

    运用C#在VS2017的PictureBox控件中绘制简易二自由度机械臂,并且让机械臂实现画直线.圆.人物轮廓及写字的功能. 给大家看看效果吧 演示写字视频在下: VID 首先放置了诸多控件 在给控件 ...

  8. 多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试

    多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试 ) DH建模法可以参考这个博客: 还有<机器人>这本书,一定要理论实践相结合,理解后可以用几何法建模也可以用 ...

  9. Matlab机器人工具箱(3-3):五自由度机械臂(动力学)

    动力学主要分为牛顿-欧拉法和拉格朗日法 牛顿-欧拉法: 向外递推速度与角速度,向内迭代计算力与力矩 拉格朗日方程: 根据能量思想,从标量(拉格朗日方程)得到动力学方程 先计算动能与势能,再构造拉格朗日 ...

最新文章

  1. 在Fedora 14上安装Sun JDK 6 (转载)
  2. linux搭建gitlab
  3. XML文件中的CDATA的使用.
  4. 数据结构的java实现
  5. 随想录(嵌入式工程师的出路)
  6. Java学习笔记四——运算符
  7. lua MVC框架 Orbit初探
  8. win10运行命令大全
  9. 强化学习:Markov Decision Process (基于南大俞扬博士演讲的修改和补充)
  10. 欧姆龙r88d系列服务器说明书,欧姆龙R88D-KN10H-ECT-Z用户手册 - 广州凌控
  11. 从微软中国下载Windows系统并安装
  12. windows配置指定网段流量走虚拟专用网络
  13. 计算机学院审核评估方案,计算机与数据科学学院 本科教学工作审核评估迎评工作方案...
  14. 4本建模必读的书籍,每天学一点,获益匪浅
  15. 学习总结1-跟开涛学SpringMVC
  16. 腾讯位置服务教你轻松搞定微信发送位置功能
  17. 宝塔php缓存关闭,宝塔面板定期释放PHP占用内存
  18. outlook邮件撤回操作
  19. 程序员浪漫之微信烟花
  20. Java面试题(持续日更)

热门文章

  1. STM32 ISP烧录过程
  2. 关于容斥定理、勾股数公式、排列组合置换公式的总结
  3. USB fastboot
  4. Linux命令-PV
  5. 基于sklearn进行蝴蝶花分类案例(Python机器学习笔记)
  6. Windows NT
  7. Windows搭建Nginx直播推流服务器
  8. Android 更改menu的背景颜色和字体颜色
  9. 【推荐】献给在这个世界上摇摆不定的朋友们
  10. 12.14黄金白银欧美盘走势分析及期货原油操作建议