机器人运动控制仿真:Matlab机器人工具箱和Simmechanics
时间:2022-07-26
本文章向大家介绍机器人运动控制仿真:Matlab机器人工具箱和Simmechanics,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 运动控制仿真原理
机器人运动控制系统完整的包含了轨迹规划、逆向运动学、逆向动力学、正向动力学和正向运动学等模块。具体如下所示
在上述仿真系统中,由于系统的逆向动力学主要用于控制,正向动力学用于机器人的仿真,而在一般运动控制仿真中默认机器人的可以进行有效的位置伺服跟踪,因而可以忽略系统的动态响应。因而上图中的机器人位置控制系统等效图如下所示:
2 基于simulink运动控制仿真系统
在Simulink中搭建机器人的运动控制仿真系统,由于在运动控制仿真系统中可以忽略机器人的动力学,因而仿真系统中核心模块是机器人的轨迹规划+逆向运动学+正向运动学。
上述仿真系统中,借用了两个“interpreted MATLAB Fcn”,分别调用如下两个matlab函数:Robot_iiwa.m和FK_Robot_iiwa.m
% 机器人工具箱的函数
function dq = Robot_iiwa(theta)
%UNTITLED 此处显示有关此函数的摘要
% 此处显示详细说明
%syms q1 q2 q3 q4 q5 q6
% theta=zeros(1,8);
q1 = theta(1);
q2 = theta(2)-pi/2;
q3 = theta(3);
q4 = theta(4)-pi/2;
q5 = theta(5);
q6 = theta(6);
q7 = theta(7);
time=theta(8);
% theta d a alpha
L(1) = Link([0, 340, 0, -pi/2],'standard');
L(2) = Link([0, 0, 0, pi/2],'standard');
L(3) = Link([0, 400, 0, pi/2],'standard');
L(4) = Link([0, 0, 0, -pi/2],'standard');
L(5) = Link([0, 400, 0, -pi/2],'standard');
L(6) = Link([0, 0 , 0, pi/2],'standard');
L(7) = Link([0, 141 , 0, 0],'standard');
iwa = SerialLink(L, 'name', 'Robot');
% teach(iwa)
% J = iwa.jacob0([0 0 0 0 0 0 0]);
J = iwa.jacob0([q1 q2 q3 q4 q5 q6 q7]);
% T = iwa.fkine([q1 q2 q3 q4 q5 q6]);
% dq=[0 0 0 0 0 0 0];
dx=[-30 25 -20 0 0 0]';
dx=zeros(6,1);
if time<=10
dx(1)=80*cos(1*time);
dx(2)=80*sin(1*time);
else
dx(1)=0;
dx(2)=0;
end
dq=pinv(J)*dx;
end
FK_Robot_iiwa.m函数具体如下所示:
% 机器人工具箱的函数
function y= FK_Robot_iiwa(in)
%UNTITLED 此处显示有关此函数的摘要
% 此处显示详细说明
%syms q1 q2 q3 q4 q5 q6
% theta=zeros(1,8);
q1 = in(1);
q2 = in(2)-pi/2;
q3 = in(3);
q4 = in(4)-pi/2;
q5 = in(5);
q6 = in(6);
q7 = in(7);
%%%
dq1 = in(8);
dq2 = in(9);
dq3 = in(10);
dq4 = in(11);
dq5 = in(12);
dq6 = in(13);
dq7 = in(14);
% theta d a alpha
L(1) = Link([0, 340, 0, -pi/2],'standard');
L(2) = Link([0, 0, 0, pi/2],'standard');
L(3) = Link([0, 400, 0, pi/2],'standard');
L(4) = Link([0, 0, 0, -pi/2],'standard');
L(5) = Link([0, 400, 0, -pi/2],'standard');
L(6) = Link([0, 0 , 0, pi/2],'standard');
L(7) = Link([0, 141 , 0, 0],'standard');
iwa = SerialLink(L, 'name', 'Robot');
% teach(iwa)
% J = iwa.jacob0([0 0 0 0 0 0 0]);
J = iwa.jacob0([q1 q2 q3 q4 q5 q6 q7]);
T = iwa.fkine([q1 q2 q3 q4 q5 q6 q7]);
dx=J*[dq1 dq2 dq3 dq4 dq5 dq6 dq7]';
y(1)=T(1,4);
y(2)=T(2,4);
y(3)=T(3,4);
y(4)=dx(1);
y(5)=dx(2);
y(6)=dx(3);
end
上述系统完成了机器人运动控制的原理仿真:
程序Robot_iiwa中包含了机器人建模,轨迹规划和逆向运动学;程序FK_Robot_iiwa包含了机器人的建模和正向运动学等的计算。
3 机器人LBR iiwa
在Matlab/Simmechanics中建立LBR IIWA的具体动力学模型
- LBR iiwa 14 R820
- 轴数:7
- 工作范围:820mm
- 机器重量:29.5Kg
- 重复定位精度:0.15mm
4 仿真演示
SimMechanics机器人动力学建模;机械臂动力学建模;机械臂仿真;机械臂运动控制;机器人工具箱;多刚体动力学
- 微信小程序中用户唯一ID的获取
- Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录
- Enterprise Library 4.1学习笔记1----配置应用程序块(c/s和b/s均适用)
- 简单账本-用完即走的微信小程序
- 新技术革命和新产业变革正进行 “互联网+大数据+人工智能+”时代正到来
- 微信小程序开发及相关设置小结
- gitlab两种连接方式:ssh和http配置介绍
- C#实现微信AES-128-CBC加密数据的解密
- UrlReferrer为空的问题?
- DeepMind发文回顾2017:AlphaGo团队已迎战下一个重大挑战
- [你必须知道的.Net]读书笔记--浅clone与深clone
- Python基础语法学习整理
- 通过部分感知深度卷积网络进行人脸特征点定位
- [你必须知道的.Net]读书笔记--override与new在继承中的区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《深入浅出SQL》问答录(二)
- 《深入浅出SQL》问答录(四)
- 《深入浅出MySQL》问答录(五)
- 《深入浅出SQL》问答录(七)
- 《深入浅出SQL》问答录(八)
- Improvise_a_Jazz_Solo_with_an_LSTM_Network_v3a-2
- 《深入浅出SQL》问答录(九)
- 《深入浅出SQL》问答录(十)
- Operations_on_word_vectors_v2a
- LeetCode精选好题(一)
- LeetCode精选好题(二)
- 【leetcode两题选手】算法类题目(7.26)
- MySQL见闻录 -- 入门之旅(一)
- MySQL见闻录 -- 入门之旅(二)
- MySQL见闻录 - 入门之旅(三)