(默认已经学会D-H参数法),直接上正文:
目录
- 结构图示及D-H参数表
- 机器人工具箱
- 建模
- D-H参数表
- 让机器人动起来
- 多段运动
- 位移、速度、加速度曲线
- 本文的问题:
- 可能会出现的报错
- 找不到SE3
- 无法建立移动关节
- 代码
- 如果仔细阅读前文的话,是用不着这个下载链接的
- 生成GIF
结构图示及D-H参数表
首先简单看一下SCARA机器人的结构还有D-H参数表:(选自机器人学导论)
机器人工具箱
打开MATLAB,先检查一下机器人工具箱安装好了没有,以及版本号。我自己安装的是10.3.1版本:
建模
D-H参数表
1
2
3
4
5
6
7L1 = Link([ 0 0 1 0 ]); %由Link函数输入D-H参数表的各个参数 L2 = Link([ 0 0 0.75 pi ]); %其中,1、0.75、1.5仅为样例臂长 L3 = Link([ 0 1.5 0 0 ]); L3.jointtype='P'; %声明L3是移动关节 L3.qlim=[0 2]; %设定L3工作上下限 SCARA = SerialLink([L1 L2 L3], 'name', 'Kang'); %由D-H参数表建模
这个时候就可以让自己建的模型以任意关节变量显示了:
1
2
3
4figure(1); view(3); SCARA.plot([pi/3 pi/2 1.4]); %输入参数分别为L1、L2、L3三个关节变量
- 这里一定要加一句view(3),否则会报错
因为机器人工具箱在更新到10之后似乎就不能直接把三维的机器人模型打印出来了,要先写一句view(3)才可以。
- 这里,如果是从旧版本(比如9.2)更新过来的,在执行SerialLink函数的时候可能会报错:
1
2SCARA = SerialLink([L1 L2 L3], 'name', 'Kang'); %由D-H参数表建模
处理方法见“可能出现的报错–找不到SE3”
- 或者有可能是在建立移动关节时,建模失败,会有如下报错。这是因为旧版本的工具箱是不能直接建立移动关节的
1
2
3
4
5
6%错误使用 SerialLink/plot>plot_options (line 711) %Prismatic joint(s) present: requires the 'workspace' option % %出错 SerialLink/plot (line 207) % opt = plot_options(robot, varargin);
处理方法见“可能出现的报错–无法建立移动关节”
让机器人动起来
1
2
3
4
5
6
7
8q1 = [0 0 1.4]; %起点关节变量 q2 = [pi/3 pi/2 0]; %终点关节变量 q = jtraj(q1, q2, 50); %工具箱自带函数规划路线 %三个参数从左至右分别代表:起点、终点和迭代次数(步数) figure(1); view(3); SCARA.plot(q);
多段运动
上文的代码只能让机器人的各个关节向着一个方向运动。如果我现在想要移动关节由最长缩短再伸长,用一句jtraj已经满足不了。
但是如果又用两次jtraj函数的话,由于分别进行S型速度曲线运动的缘故,机器人会在两段轨迹之间停一下,导致运动不连续:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15%前1/2时间,移动关节缩短 q11 = [0 0 1.4]; q12 = [pi/3/2 pi/2/2 0.5]; [q_1, v_1, a_1] = jtraj(q11, q12, 25); %后1/2时间,移动关节伸长 q21 = [pi/3/2 pi/2/2 0.5]; q22 = [pi/3 pi/2 1.4]; [q_2, v_2, a_2] = jtraj(q21, q22, 25); Q = [q_1; q_2]; figure(1); view(3); SCARA.plot(Q);
这时有一种非常简单粗暴的方法:
我可以把两个旋转关节的运动只用一个jtraj生成,然后分别生成两段移动关节的运动,再合到一起,就是完整的先缩短再伸长:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25%移动关节固定,直接生成起点与终点之间的运动轨迹 q1 = [0 0 1.4]; q2 = [pi/3 pi/2 1.4]; [q_m, v_m, a_m] = jtraj(q1, q2, 50); %前1/2时间,移动关节缩短 q11 = [0 0 1.4]; q12 = [pi/3/2 pi/2/2 0.5]; [q_1, v_1, a_1] = jtraj(q11, q12, 25); %后1/2时间,移动关节伸长 q21 = [pi/3/2 pi/2/2 0.5]; q22 = [pi/3 pi/2 1.4]; [q_2, v_2, a_2] = jtraj(q21, q22, 25); %把原L3不动的轨迹替换为把两段L3运动轨迹合并后的的轨迹 q_m(:, 3) = [q_1(:,3);q_2(:, 3)];%针对移动关节进行轨迹合并 v_m(:, 3) = [v_1(:,3);v_2(:, 3)];%针对移动关节进行速度融合 a_m(:, 3) = [a_1(:,3);a_2(:, 3)];%针对移动关节进行加速度融合 %q_m, v_m, a_m是最终的三轴位移、速度、加速度 figure(1); view(3); %打开三维视图 SCARA.plot(q_m); %动态显示
那么此时,它的运动轨迹就是:
实际上,机器人工具箱是有圆弧运动的轨迹函数的hhhhh在这里由于它只涉及到一个移动关节的伸缩,就用这种方法替代了。
位移、速度、加速度曲线
1
2
3
4
5figure(2); %显示位移、速度、加速度曲线 subplot(1, 3, 1);plot(1:50, q_m); subplot(1, 3, 2);plot(1:50, v_m); subplot(1, 3, 3);plot(1:50, a_m);
本文的问题:
- SCARA机器人是四轴的(三个旋转一个位移),在本文中忽略了第三个旋转轴
- 圆弧运动
- and else…
这些问题就等有缘再补全好了,可能是暑假想起来它就会把这些缺口补上。
可能会出现的报错
找不到SE3
更新完工具箱后,使用SerialLink会报错:
有时候就算已经改完工作路径了,它还是会出现这样的报错。
这时候需要跳转到机器人工具箱源文件的目录,然后运行startup_rvc,比如
1
2
3cd(''F:文件tool'') startup_rvc
一般这时候就解决了
无法建立移动关节
貌似在10之后才可以给移动关节建模?
我在使用9.2版本的时候,如果都用旋转关节建模是不会报错的,可是一旦换为移动关节,他就会报错:
1
2
3
4
5
6%错误使用 SerialLink/plot>plot_options (line 711) %Prismatic joint(s) present: requires the 'workspace' option % %出错 SerialLink/plot (line 207) % opt = plot_options(robot, varargin);
嗯,换成10就好了。
当然,在换成10之后可能就会遇见“找不到SE3”的报错hhhhh。
代码
如果仔细阅读前文的话,是用不着这个下载链接的
生成GIF
放进这篇文章里的gif没有用到录屏软件,是用matlab自己生成的,这里就以这个两段运动轨迹硬合成一个的运动为例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18cd('F:文件MGIF_Out') Num = 1; Q = [q_1; q_2]; figure(3); view(3); for time = 1:50 %因为源程序就是定了50步,这里就写50 SCARA.plot(Q(time,:)); %让机器人一帧一帧地动 F1=getframe(gcf); %获取当前帧 F2=frame2im(F1); [F2,F3]=rgb2ind(F2,256); if Num == 1 %创建 imwrite(F2, F3, 'SCARA_err12.gif', 'gif', 'Loopcount', inf, 'DelayTime', 0.2); else %修改 imwrite(F2, F3, 'SCARA_err12.gif', 'gif','WriteMode','append','DelayTime',0.2); end Num = Num + 1; end
最后
以上就是帅气电话最近收集整理的关于用matlab机器人工具箱对SCARA机器人建模结构图示及D-H参数表机器人工具箱建模多段运动位移、速度、加速度曲线本文的问题:可能会出现的报错代码的全部内容,更多相关用matlab机器人工具箱对SCARA机器人建模结构图示及D-H参数表机器人工具箱建模多段运动位移、速度、加速度曲线本文内容请搜索靠谱客的其他文章。
发表评论 取消回复