七自由度机械臂设计分析——待更新

       最近准备研究一下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;

end

function [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:7
    for i=1:k
        if DHflg==0
             T(:,:,k)=myfunSDHMatrix( dh(i,1),dh(i,2),dh(i,3),dh(i,4));  % SDH
        elseif DHflg==1
            T(:,:,k)=myfunMatrixTrans( dh(i,1),dh(i,2),dh(i,3),dh(i,4));  %MDH
        elseif (DHflg~=1 && DHflg~=1)
            disp('Error input');
            break;
        end
    end
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           


 

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
针对本文所研制的走 自 由度机械臂设计 一种基于 CAN 总线通讯 的控 制系 统 。 通   过 D enav i t-Har tenber g 参数法构建机械臂的数学模型 , 推导正运动学 公式 , 设计基于牛   顿迭代法 的逆解算法 , 解决逆运动学 的数值解法多解性 问题 , 获取最优解 。 在此基础 上 ,   在 关节 空 间设计 了 H次插值和五 次插值算法进行路径规划 , 实现对机械臂 的 点到 点 的运   动控制 ; 在 笛卡 尔空 间 , 设计空间直 线轨迹和空 间 圆 弧轨迹规划算法 , 实现机械臂直线   和 圆弧运动 。 设计机械臂控制 系统 的硬件框架 , 包括微处理器系 统 电 路和传 感器模块 电   路 设计 、 通讯总线与各元器件 的选型 。 编 写机械臂控制 软件 , 包括 P ID 控制器 、 人机交   互软件和下位机角 度获取 模块程序 , 制 定系统 通信协议 , 实现用 户对机械臂的各种操作   和 设置 。  为验证古 自 由 度机械臂控制系统 的性能满足设计要求 , 进行试验 I 第 一 , 验证基于   牛顿迭代法的逆解算法的准确性 , 对机械臂 逆解结果进行分析测试 。 第 二 , 在机械臂 安   装过程中 , 需要对安装的 部件进巧测试 , W确 保安装部件可 W 正常工作 , 当单个关节安   装完毕时也需 要进巧测 试 , 保证每安装新 的关节之前系 统是正常 的 。 第 H , 对机械臂各   关节尺寸进行标定实验 , 计算机械臂建模所 需要 的 关节参数 , 为后续 的误差优化处理做   准 备 。 第 四 , 实现用 户 通过软件准确地控制机械臂 , 对系统 的通讯进行 测试 , 计算 总线   负 载率 , 保证各 关节可 W正常 通讯 ; 对控制 界面 的各功 能测 试 , 保证毎个按键实现其对   应 功 能 。 第五 , 系 统测试保证机械臂可 W完成用 户 指 定动作 , 设计多种 动作 , 测试机械   臂是否可 W 完成指 定动作 。 第六 , 测试机械臂的精度和误差 , 设计机械臂运动 路径点 的 坐 标 , 测 量实际坐标系所经过 点 的坐标 , 分析计 算误差 。
根据提供的引用内容,没有直接提到自由度机械臂的惯性矩阵。引用\[1\]中提到了六轴六自由度机械臂的轨迹跟踪的matlab实现,引用\[2\]中提到了假设第一、二个杆件的质量分别集中在各自的末端点,没有惯性矩阵。引用\[3\]中提到了拆解方式二的动力学方程结构,但没有具体提到自由度机械臂的惯性矩阵。 因此,根据提供的引用内容,无法直接回答自由度机械臂的惯性矩阵。如果您需要了解自由度机械臂的惯性矩阵,建议参考相关的机械臂动力学理论和文献。 #### 引用[.reference_title] - *1* [【机械臂】六轴六自由度机械臂轨迹跟踪的matlab实现(基于速度雅各比矩阵方法)](https://blog.csdn.net/fantasty9413/article/details/108022571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [机器人学之动力学笔记【10】—— 双旋转自由度机械臂](https://blog.csdn.net/huangjunsheng123/article/details/110354287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

easy_R

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值