【基于Matlab Robotics Toolbox的Dobot机械臂运动规划】系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习、改进。
基于Matlab R2018b 9.5; Peter Corke的Robotics Toolbox 10.3.1
(2)主要介绍了基于App Designer做图形界面、用joystick实现手柄与Matlab通讯。

1.图形界面

1.1正运动学部分

Matlab宣称将来会取消guide,以后仅保留app designer。所以我选择使用app designer做一个图形界面。
首先做正运动学部分。

在设计视图里把组件拖入画布后,进入代码视图。右键选择组件浏览器里面的app.UIFigure,创建一个StartupFcn回调,这里我命名为mainFcn。

%定义连杆%
%        theta  d  a  alpha
L1 = Link([0   138 0   pi/2]);
L2 = Link([0    0 135   0]);
L3 = Link([0    0 147   0]);
%定义关节角范围%
L1.qlim = [deg2rad(-90) deg2rad(90)];
L2.qlim = [deg2rad(0) deg2rad(85)];
L3.qlim = [deg2rad(-90) deg2rad(10)];
L = [L1 L2 L3];
%连接连杆%
dobot = SerialLink(L,'name','Dobot');
%用num2str显示滑块值%
app.theta1.Text = num2str(app.Slider1.Value);
app.theta2.Text = num2str(app.Slider2.Value);
app.theta3.Text = num2str(app.Slider3.Value);
%滑块值转换为弧度%
T1 = deg2rad(app.Slider1.Value);
T2 = deg2rad(app.Slider2.Value);
T3 = deg2rad(app.Slider3.Value);
T = [T1 T2 T3];
%显示机器人%
dobot.plot(T,'tilesize',300)
%正运动学求解并显示%
f = dobot.fkine(T);
app.Labelx.Text = num2str(f.t(1));
app.Labely.Text = num2str(f.t(2));
app.Labelz.Text = num2str(f.t(3));

在设计视图中添加slider时,我手动设置了slider的limits,使其与关节角范围一致。

然后右键选择app.Slider1,创建一个ValueChanged回调。
当slider的值发生变化,就重新进入main函数。

runStartupFcn(app, @mainFcn)

Slider2、Slider3采取同样的操作。

正运动学app如下:

1.2加入逆运动学

在设计时,考虑到加入逆运动学后,当正运动学滑块移动时,逆运动学滑块也应跟随移动。
为实现以下功能,优化代码结构,将各部分写成单独的函数。

  • app启动时,默认以初始θ数据进行正解操作,显示机器人所有信息;
  • 正运动学操作面板中θ滑块移动,进行正解操作;
  • 逆运动学操作面板中x/y/z滑块移动,进行逆解操作。

其中,正解操作流程如图所示:



Created with Raphaël 2.2.0





















开始正解操作



正向θ滑块移动,同时显示角度





以θ进行正运动学计算得到(x,y,z)坐标





将(x,y,z)赋值给逆向操作面板滑块



显示x、y、z的值





结束正解操作

逆解操作流程同理,其中逆运动学计算部分代码如下:

%由位置滑块给app.T赋值,逆解得到app.q%
function inverse(app)%直接调用机器人初始化函数%Robot_Initialization(app);%Slider4、5、6分别为x、y、z%app.T1 = app.Slider4.Value;app.T2 = app.Slider5.Value;app.T3 = app.Slider6.Value;%用transl()将坐标转成transformation matrix%app.T = transl(app.T1,app.T2,app.T3);app.q = app.dobot.ikine(app.T,'mask',[1 1 1 0 0 0]);
end


机械臂正向运动学的解是唯一确定的,即各个关节变量给定之后,末端执行器的位姿是唯一确定的;而逆向运动学往往具有多重解,也可能解不存在。
所以有时候滑动逆运动学操作面板中的x/y/z滑块,不一定会有解,Matlab会报错。因为我在这里的程序中并没有校验输入的(x,y,z)是否有解,而是直接进行求解。忽略逆解报错就行

2.用手柄控制机器人

主要思路是Matlab接收来自手柄硬件的信号,然后改编机器人关节变量q,实现由正运动学驱动机器人。
参考https://www.mathworks.com/help/sl3d/vrjoystick.html.
使用vrjoystick(id)函数创建joystick对象,并用axis(joy, n)函数调用手柄各输入轴的参数,去控制机器人。
主要代码如下:

%连接手柄%
joy = vrjoystick(1);%注:axis函数参数硬件对应表%
%  按键 方向 正负 axis number
%   L   右     +      1
%   L   左     -      1
%   L   下     +      2
%   L   上     -      2
%   R   右     +      4
%   R   左     -      4
%   R   下     +      5
%   R   上     -      5
%   LT  push  +      3
%   RT  push  -      3%机器人初始化, 这部分与系列文章(1)中相同,此处省略%%正运动学控制%
q = [0 0 0];
dobot.plot(q,'tilesize',300);
view(121,41);%手柄控制%
for i = 1:1:100000q(1) = q(1) + 0.1 * axis(joy,3); % [LT/RT]控制底座旋转q(2) = q(2) + -0.1 * axis(joy,2); % L的[上/下]控制大臂q(3) = q(3) + -0.1 * axis(joy,5); % R的[上/下]控制小臂dobot.plot(q,'tilesize',300);
end

展示视频如下

【建议改成】建 议 改 成

基于Matlab Robotics Toolbox的Dobot机械臂运动规划(2)相关推荐

  1. 基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)

    [基于Matlab Robotics Toolbox的Dobot机械臂运动规划]系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习.改进 软件环境 : Matlab ...

  2. 基于Matlab Robotics Toolbox的Dobot机械臂运动规划(4)

    [基于Matlab Robotics Toolbox的Dobot机械臂运动规划]系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习.改进 软件环境 : Matlab ...

  3. 基于Matlab Robotics Toolbox的Dobot机械臂运动规划(1)

    [基于Matlab Robotics Toolbox的Dobot机械臂运动规划] 系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习.改进. 基于Matlab R20 ...

  4. 基于matlab的mk2三自由度机械臂轨迹规划及控制器仿真设计

    基于matlab的mk2三自由度机械臂轨迹规划及控制器仿真设计(报告+ppt) 摘 要:本文的研究对象为EEZYbotARM MK2三自由度机械臂,分析了其机械结构,建立D-H参数表,同时在MATLA ...

  5. 实例介绍机械臂运动规划及前沿研究方向

    origin: https://www.leiphone.com/news/201703/0JJyEB2eqdRe9XS8.html 雷锋网新智造按:运动规划 (Motion Planning) ,有 ...

  6. MATLAB算法实战应用案例精讲-【人工智能】基于机器视觉的机器人及机械臂运动规划

    目录 前言 几个高频面试题目 移动机器人的移动和机械臂的路径规划之间的异同

  7. MATLAB算法实战应用案例精讲-【人工智能】基于机器视觉的机器人及机械臂运动规划(补充篇)

    目录 前言 几个高频面试题目 机器人抓取时怎么定位的?用什么传感器来检测? 相机标定

  8. 机械臂运动空间的计算_机械臂运动规划(Motion Planning)

    写作说明: 本文主要介绍一下机械臂的运动规划(Motion Planning on Manipulators).之所以写这篇文章,是因为受到人邀请回答相应问题,而刚好最近在学<Modern Ro ...

  9. 使用MoveIt配置机械臂运动规划-1.导入URDF文件

    以gluon6L3机械臂为模型来进行操作,已经默认导出urdf文件,存在gluon_6l3_description文件夹下. 一.配置rviz 1.将gluon_6l3_description文件夹移 ...

最新文章

  1. Texlive安装与环境变量配置
  2. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
  3. Thinkphp5+PHPExcel实现批量上传表格数据
  4. webpack 编译stylus_webpack 文档更新日志(9.12-9.29)
  5. asm冗余 oracle_oracle 11.2.0.1 rac 修改asm磁盘组的冗余模式(redundancy mode)为normal
  6. 服务的心跳机制与断线重连,Netty底层是怎么实现的?
  7. 博为峰JavaEE技术文章 ——MyBatis where标签使用方法
  8. Caused by: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, mil_id)
  9. 块级元素行内元素内联元素
  10. 图像复原方法综述(扫盲)
  11. 北京人口密度分布、人口趋势分析
  12. 2022上半年朋友圈都在传的10本书,找到了
  13. MindSpore:自然语言处理(NLP)—分词技术
  14. 联想拯救者u盘安装linux系统,联想拯救者Y7000 U盘装系统win8教程
  15. 旷视回顾全球十大AI治理事件,技术与伦理安全如何进行落地
  16. Office等套件一键下载安装和谐
  17. 躺平减脂减重法补充篇——无需控制碳水摄入的有效方法,另推一种健康的运动和防止老年慢性病的方式...
  18. 在线客服系统|物流行业解决方案——助力企业构建物流行业新一体化模式
  19. 【不务正业】减肥、想瘦,我在csdn学减肥之利用python帮助女友减脂
  20. ZYNQ 常见问题解决方法

热门文章

  1. win7计算机同步中心怎么打开,win7电脑中如何关闭同步中心
  2. 测试中的数据统计分析的验证:python脚本+复杂SQL总结
  3. 清华和北大的计算机系哪个更好,状元们去清华北大选了什么专业?计算机可不是首选,首选你想不到...
  4. LNMP-安装mysql
  5. c++11之智能指针
  6. 车检预约制将对机动车检测站产生哪些影响?
  7. python中mktime函数_Python3 time mktime()方法
  8. Excel技巧之如何对一列中每n个数求平均
  9. html语言单词背不下来,英语单词总是背不下来,怎么办?
  10. 计算机中常见英文术语对照表