Matlab Robotic Toolbox工具箱学习笔记

在使用工具箱建立机器臂模型验算结果时开始结果总是错误,后来发现原来在用link函数时每个坐标原点取的位置是杆的末端,所以参数发生了变化,
不可直接使用上面的DH参数,所以导致验算错误。最后按照这个参数规则修改后得到了正确的结果。

直接上代码

%%

%初始数据
%连杆长度
l1=4; l2=3; l3=2;
%待求解给定角度
Theta1=[0.0;0.0;0.0];
% Theta2=[10;20;30];
% Theta3=[90;90;90];
Theta2=[10*pi/180;20*pi/180;30*pi/180];
Theta3=[pi/2;pi/2;pi/2];
syms theta1 theta2 theta3;
%精确度
eps=1e-10;
%%
%习题(a),求DH参数,在图上建立好各个关节的坐标后,根据课本53页参数判断的法则得到参数表如下
% 参数意义: theta d  a  alpha 旋转还是平移关节(这个顺序为了方便后面机器人建模)
param1=[theta1 0 0 0 0];
param2=[theta2 0 l1 0 0];
param3=[theta3 0 l2 0 0];
%%
%习题(b)求相邻的齐次变换矩阵,此处用自己写的函数求解
T01=matFun(param1);
T12=matFun(param2);
T23=matFun(param3);
%推导常量矩阵T3h
%由于{H}的姿态和{3}相同,故从{3}到{H}只有a=l3,其他参数都是0,所以
param4=[0 0 l3 0 0];
T3h=matFun(param4);
%%
%习题(c)
%用符号法求正向运动学解并输出
T03=T01*T12*T23; T03=simplify (T03)
T0h=T03*T3h;     T0h=simplify (T0h)
%进行数值计算 不加分号是为了显示结果
theta1=Theta1(1,1); theta2=Theta1(2,1); theta3=Theta1(3,1);
Theta1
T03=eval(T03)
T0h=eval(T0h)
theta1=Theta2(1,1); theta2=Theta2(2,1); theta3=Theta2(3,1);
Theta2
T03=eval(T01*T12*T23)
T0h=eval(T01*T12*T23*T3h)
theta1=Theta3(1,1); theta2=Theta3(2,1); theta3=Theta3(3,1);
Theta3
T03=eval(T01*T12*T23)
T0h=eval(T01*T12*T23*T3h)
%%
%习题(d),用工具箱验算计算结果
%根据参数表建立机器臂模型  经过测试发现,每个坐标原点取的位置是杆的末端,所以参数发生了变化,不可直接使用上面的param
param11=[theta1 0 l1 0 0];
param21=[theta2 0 l2 0 0];
param31=[theta3 0 l3 0 0];


L1=Link(param11,'standard');
L2=Link(param21,'standard');
L3=Link(param31,'standard');


%mhand表示机械臂
mhand=SerialLink([L1 L2 L3], 'name', '3R robot');


%用工具箱进行正运动学计算
disp('用工具箱进行验算');
Theta1
mhand.fkine(Theta1)


Theta2
mhand.fkine(Theta2)


Theta3
mhand.fkine(Theta3)









  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值