用matlab实现蛇形,matlab蛇形机械手仿真建模

初学者哈哈,因为一次建模需要,速学机器人仿真。记录下自己的小成果,万一哪天又用到了呢?

(一个很粗糙的蛇形机械手demo)

基础理论可参考B站教学视频(我没看完):

【机械臂运动学教程】机械臂+旋转矩阵+变换矩阵+DH+逆解+轨迹规划+机器人+教程

【仿真工具】

MATLAB R2019a + robot-9.10

robot-9.10需要自行下载安装,安装官方地址:

http://petercorke.com/wordpress/toolboxes/robotics-toolbox

安装教程:matlab安装Robotics Toolbox 机器人工具箱,内附百度云盘下载链接

每次启动matlab需要重新输入startup_rvc启动工具箱。

6e7528305d31873e93f7144566d7bbff.png

【开始仿真】

先贴出效果图:

(1)初始时呈竖直形态。

8f10e00fd33ae54b590d99bc30de731f.png

(2)调节各关节角度。

41404c3215102510bb239c909c75d07b.png

(3)各种角度都成(这里限制了每个关节只能在 ±30⁰角度活动)

9866d340b3b535c9e135b85c8631f2e7.png

再贴出完整源码:

完整源码:

clear L

warning off

% theta d a alpha sigma

L1 = Link([0 0 0 0 0 ]); % 定义连杆的DH参数

L2 = Link([pi 0 0.43 0 0 ]);

L3 = Link([ 0 0 0.43 0 0 ]);

L4 = Link([ 0 0 0.43 0 0 ]);

L5 = Link([ 0 0 0.43 0 0 ]);

L6 = Link([ 0 0 0.43 0 0 ]);

L7 = Link([ 0 0 0.43 0 0 ]);

% 限制转动角度

L1.qlim=[-pi/6,pi/6];

L2.qlim=[pi*5/6,pi];

L3.qlim=[-pi/6,pi/6];

L4.qlim=[-pi/6,pi/6];

L5.qlim=[-pi/6,pi/6];

L6.qlim=[-pi/6,pi/6];

L7.qlim=[-pi/6,pi/6];

L8.qlim=[-pi/6,pi/6];

mrbt=SerialLink([L1 L2 L3 L4 L5 L6 L7], 'name', '蛇形臂', 'base',transl(0,0,0.2)*troty(pi/2));

q0 = [0,pi,0,0,0,0,0]; % 设置输出时的theta姿态,初始为竖直状态

mrbt.teach;

result = mrbt.getpos(); % 调节完成后按X,可得到调后的变量

axis([-3 3 -3 3 0 4])

mrbt.plot(q0);

disp("D-H参数表及其他参数:")

mrbt.display();

% 运动学正解:根据关节角结算出末端位姿

T = mrbt.fkine([-13.8,150,4.8,7.8,8.4,8.4,23.4]);

% 运动学逆解:根据末端位姿结算出关节角

qi = mrbt.ikine(T);

disp('根据关节角,计算末端位姿:')

disp(T)

disp('根据末端位姿,计算关节角:')

disp(qi)

【输出结果及解析】

其中,mrbt.display()输出D-H参数表以其他参数:

7790013753b54ce5595349889ff3139c.png

参数含义如下:

theta:关节角

d:横距

a:杆件长度

alpha:扭转角

sigma:关节类型(0代表旋转关节,非0代表移动关节;默认为0)

具体参考以下链接:

Matlab机器人工具箱机械手建模详解

matlab机器人工具箱攻略——矩阵变换,运动学

matlab中Link函数与SeriaLink函数学习笔记

4自由度臂型机器人MATLAB仿真

运动学正解与逆解:

比较糙的示例,根据需要自行使用:

% 运动学正解:根据关节角结算出末端位姿

T = mrbt.fkine([-13.8,150,4.8,7.8,8.4,8.4,23.4]);

% 运动学逆解:根据末端位姿结算出关节角

qi = mrbt.ikine(T);

disp('根据关节角,计算末端位姿:')

disp(T)

disp('根据末端位姿,计算关节角:')

disp(qi)

输出结果:

064b2cf8a473704d292c7c351b6452d0.png

【遇到的问题】

其他给忘了诶,就剩下面这个了。。。

如果修改杆的个数出现了下面报错:

错误使用 SerialLink/fkine (line 85) q must have 9 columns

检查一下参数是否超出或者遗漏。若检查后没有问题,不慌。。。也可能是超出解空间的问题。

(1)第一种解决方案:

修改plot的坐标轴,扩大x,y或z的范围

axis([-3 3 -3 3 0 4])

表示:axis([xmin xmax ymin ymax zmin zmax])

(2)第二种解决方案:

修改下面a列各连杆的长度,使其能够在解空间内

% theta d a alpha sigma

L1 = Link([0 0 0 0 0 ]); % 定义连杆的DH参数

L2 = Link([pi 0 0.43 0 0 ]);

L3 = Link([ 0 0 0.43 0 0 ]);

L4 = Link([ 0 0 0.43 0 0 ]);

L5 = Link([ 0 0 0.43 0 0 ]);

L6 = Link([ 0 0 0.43 0 0 ]);

L7 = Link([ 0 0 0.43 0 0 ]);

初次学习,如果有误,希望大家留言,一起进步鸭!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值