环境:Robotics Toolbox 10.3(版本不一致有可能会报错)

Robotics Toolbox配置

机械臂逆解计算

一、六轴机械臂构型分析

关节机器人,是应用于当前工业领域中最为广泛的工业机器人的构型之一,它也被称作关节型手臂机器人或者关节型机械手臂。它可应用于诸多工业领域,例如喷漆、自动装配、焊接等工作。多自由度关节机器人中以六自由度关节机器人最为常见,它的关节分布参考人体手臂进行设计,以与地面垂直的腰部旋转轴为主轴,带动小臂旋转的肘部旋转轴以及小臂前端的手腕等构成,手腕部分通常拥有2到3个自由度。因为该构型机器人的动作空间与球体类似,所以也被称为多关节球面机器人。自由度关节机器人的主要优点有两个,第一为可通过连续控制实现复杂的运动轨迹,第二为通过各关节配合可获得多种末端姿态。六自由度关节机器人根据不同的工作环境也有不同的类别,下图是几种较为常见的六自由度关节机器人。

 

a) 垂直六关节L型手腕机器人      b)垂直六关节串联机器人             c)关节码垛机器人

二、数学模型的建立与分析

标准D-H参数法常用于建立关节型机器人的数学模型,D-H参数法是一种对连杆的坐标描述,而关节机器人本质上就是一系列连杆通过关节连接起来而组成的空间开式运动链。对于连杆本身,其功能在于保持其两端的关节轴线具有固定的几何关系,连杆的特性由轴线决定,如下图所示,通常用四个连杆参数来描述,连杆长度,连杆扭转角,连杆偏移量和关节角

这里所设计的机械臂由六个转动副构成,关节分布方式参考现有成熟的工业机器人进行设计,如下图所示。第一轴为垂直于地面的旋转轴,第二轴、第三轴和第五轴都为平行与地面的旋转轴,第四轴和第六轴则是与连杆方向平衡的旋转轴。

根据标准D-H参数法,建立机械臂的D-H参数模型,其对应的参数表如下表所示,该表的参数根据自己的机器人实物进行设定。

以上表的参数构建机械臂的模型如下图所示。

机械臂建模MATLAB程序

%机械臂为六自由度机械臂
clear L;%角度转换
du=pi/180;     %度
radian=180/pi; %弧度%关节长度
L1=4.324;L2=16;L3=2.35;L4=16.085;L5=14.675;%% 字符串法建立模型,
q0=0;L0=0;%过渡关节
% hand = 'Rz(q1).Tz(L1).Ry(q2).Tz(L2).Ry(q3).Tz(L3).Rx(q4).Tx(L4).Ry(q5).Rz(q6).Tz(L5)';
% dhand = DHFactor(hand)
% six_hand =eval(dhand.command('hand'));
% plotopt = {'noraise', 'nowrist', 'nojaxes', 'delay',0};
% tool_dh=[1 0 0 0;
%          0 1 0 0;
%          0 0 1 0;
%          0 0 0 1];
% six_link=SerialLink(six_hand,'name','six hand','tool',tool_dh)%% DH法建立模型,关节角,连杆偏移,连杆长度,连杆扭转角,关节类型(0转动,1移动)
L(1) = Link( 'd',L1  ,  'a',0,   'alpha',-pi/2, 'offset',0   );
L(2) = Link( 'd',0   ,  'a',-L2, 'alpha',0    , 'offset',pi/2);
L(3) = Link( 'd',0   ,  'a',-L3, 'alpha',pi/2 , 'offset',0   );
L(4) = Link( 'd',L4  ,  'a',0 ,  'alpha',-pi/2, 'offset',0   );
L(5) = Link( 'd',0   ,  'a',0,   'alpha',pi/2 , 'offset',pi/2);
L(6) = Link( 'd',L5  ,  'a',0,   'alpha',0   ,  'offset',0   );
plotopt = {'noraise', 'nowrist', 'nojaxes', 'delay',0};
tool_char=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];
six_link=SerialLink(L,'name','six link','tool',tool_char);%显示机械臂
figure(1)
hold on
six_link.plot([0 0 0 0 0 0], plotopt{:});
hold off

三、工作空间的计算

3.1 数值法

机器人的工作空间是机器人在运转过程中,手部参考点在空间所能达到的点的集合。工作空间是一种重要的运动学指标,常用于衡量机器人活动范围,机器人无法到达处于工作空间以外的目标。机器人的工作空间的种类有三种,分别是全工作空间,可达工作空间和灵巧工作空间,本课题中计算的是机器人给定所有位姿时,末端可到达目标点的集合,即全工作空间。

这里采用数值法进行机器人全工作空间的绘制,具体流程如下图所示。首先是设置各关节角度限制,然后以某一步距值对各关节分别进行累加并计算正解获得末端点位置,当各关节都到达最大限制角度后停止计算,最后对获得的所有末端点进行处理绘制出机器人的边界曲线,根据这些边界曲线可以绘制出代表机器人的工作空间的边界曲面。

 程序实现

%六轴机械臂工作空间计算
clc;
clear;
format short;%保留精度%角度转换
du=pi/180;  %度
radian=180/pi; %弧度%% 模型导入
robot_hand;%% 求取工作空间%关节角限位q1_s=-180; q1_end=180;q2_s=0;    q2_end=90;q3_s=-90;  q3_end=90;q4_s=-180; q4_end=180;q5_s=-90;  q5_end=90;q6_s=0;    q6_end=360;%设置stepstep=10;%计算步距step1= (q1_end -q1_s) / step;step2= (q2_end -q2_s) / step;step3= (q3_end -q3_s) / step;step4= (q4_end -q4_s) / step;step5= (q5_end -q5_s) / step;step6= (q6_end -q6_s) / step;%计算工作空间tic;%tic1i=1;T = zeros(3,1);T_x = zeros(1,step1*step2*step3*step4*step5);T_y = zeros(1,step1*step2*step3*step4*step5);T_z = zeros(1,step1*step2*step3*step4*step5);  for  q1=q1_s:step:q1_endfor  q2=q2_s:step:q2_endfor  q3=q3_s:step:q3_endfor  q4=q4_s:step:q4_endfor q5=q5_s:step:q5_endT=six_link.fkine([q1*du q2*du q3*du q4*du q5*du 0]).t;%正向运动学仿真函数T_x(1,i) = T(1); T_y(1,i) = T(2); T_z(1,i) = T(3); i=i+1;endendendend enddisp(['循环运行时间:',num2str(toc)]); t1=clock;%% 绘制工作空间
figure('name','六轴机械臂工作空间')
hold on
plotopt = {'noraise', 'nowrist', 'nojaxes', 'delay',0};
six_link.plot([0 0 0 0 0 0], plotopt{:});
plot3(T_x,T_y,T_z,'r.','MarkerSize',3);
disp(['绘制工作空间运行时间:',num2str(etime(clock,t1))]);  %获取X,Y,Z空间坐标范围
Point_range=[min(T_x) max(T_x) min(T_y) max(T_y) min(T_z) max(T_z)]
hold off

程序效果 

3.2 蒙特卡罗法

蒙特卡罗方法(英语:Monte Carlo method),也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。

使用蒙特卡罗法计算工作空间相较于数值化,优势在于用时较短,以100000个点为例,用时在2到3分钟内(根据关节运动范围和关节数不同而不同),劣势在于蒙特卡罗方法只能趋近于结果而不能完全得到真实的结果,但经过测试,只要数据的数量足够大,也能获得较为准确的结果。

蒙特卡罗法一般实现步骤

  1. 用蒙特卡罗方法模拟某一过程时,需要产生各种概率分布的随机变量。
  2. 用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。

蒙特卡罗法工作空间求解步骤

  1. 产生各关节的随机变量
  2. 计算正解

程序实现 

clc;
clear;%% 准备%保留精度format short;%角度转换du=pi/180;  %度radian=180/pi; %弧度%模型导入robot_hand;%% 参数%关节角限位q1_s=-180; q1_end=180;q2_s=0;    q2_end=90;q3_s=-90;  q3_end=90;q4_s=-180; q4_end=180;q5_s=-90;  q5_end=90;q6_s=0;    q6_end=360;%计算点数num=100000;%% 求取工作空间%设置轴关节随机分布,轴6不对工作范围产生影响,设置为0q1_rand = q1_s + rand(num,1)*(q1_end - q1_s);q2_rand = q2_s + rand(num,1)*(q2_end - q2_s);q3_rand = q3_s + rand(num,1)*(q3_end - q3_s);q4_rand = q4_s + rand(num,1)*(q4_end - q4_s);q5_rand = q5_s + rand(num,1)*(q5_end - q5_s);q6_rand = rand(num,1)*0;q = [q1_rand q2_rand q3_rand q4_rand q5_rand q6_rand];%正运动学计算工作空间tic;T_cell = cell(num,1);[T_cell{:,1}]=six_link.fkine(q).t;%正向运动学仿真函数disp(['运行时间:',num2str(toc)]);%% 分析结果%绘制工作空间t1=clock;figure('name','机械臂工作空间')hold onplotopt = {'noraise', 'nowrist', 'nojaxes', 'delay',0};six_link.plot([0 0 0 0 0 0], plotopt{:});figure_x=zeros(num,1);figure_y=zeros(num,1);figure_z=zeros(num,1);for cout=1:1:numfigure_x(cout,1)=T_cell{cout}(1);figure_y(cout,1)=T_cell{cout}(2);figure_z(cout,1)=T_cell{cout}(3);endplot3(figure_x,figure_y,figure_z,'r.','MarkerSize',3);hold offdisp(['绘制工作空间运行时间:',num2str(etime(clock,t1))]);  %获取X,Y,Z空间坐标范围Point_range=[min(figure_x) max(figure_x) min(figure_y) max(figure_y) min(figure_z) max(figure_z)];

 程序效果

参考

熊有伦. 机器人技术基础[M]. 华中理工大学出版社, 1996.

徐卫良. 机器人工作空间分析的蒙特卡洛方法[J]. 东南大学学报(自然科学版), 1990, 20(1):1-8.

机械臂——六轴机械臂构型分析与MATLAB建模相关推荐

  1. 机械臂——六轴机械臂逆解

    环境:MATLAB 2017B+Robotics Toolbox 9.10.0 前期准备:完成机械臂数学模型的建立+计算机械臂工作空间 https://blog.csdn.net/Kalenee/ar ...

  2. 六轴机械臂控制原理图_机械臂——六轴机械臂操作空间运动分析

    机械臂建模分析:https://blog.csdn.net/Kalenee/article/details/81990130 MoveIt规划下的关节空间运动分析:http://www.guyueho ...

  3. 机械臂——六轴机械臂操作空间运动分析

    机械臂建模分析:https://blog.csdn.net/Kalenee/article/details/81990130 MoveIt规划下的关节空间运动分析:http://www.guyueho ...

  4. 六轴机械臂下位机(arduino)+上位机(ROS+Moveit)---(一)机械臂硬件

    六轴机械臂下位机(arduino)+上位机(ROS+Moveit)---(一)机械臂硬件 机械部分 机械臂制作时的注意点!!!(坑) 零件的3D打印 控制器接线问题 机械部分 六轴机械臂在工业领域的运 ...

  5. 桌面小六轴机械臂mechArm

    1 产品简介 mechArm Pi 270隶属于大象机器人"mechArm"系列小六轴机械臂,采用树莓派微处理器,支持ROS仿真模拟软件,是大象机器人面向创客创新和机器人产学研服务 ...

  6. 六轴机械臂DIY(三)开源项目介绍

    就这样一年半了,项目断断续续仍在进行,期间我混了个毕业,相信大家也经历了很多吧.最近上海疫情,毕业后的我哪里也去不了,只能在寝室等学校的投喂,那么正好,让我们项目继续. 本节主要完整介绍这个机械臂的开 ...

  7. 六轴机械臂算法-引导篇

    最近一直在研究 6轴机械臂算法,整理出了如下几个计算六轴机械臂正解和逆解的关键点: 01_机器人坐标系和关节的说明 02_算法坐标系的建立 03_D-H参数表的建立 04_FK(正解)算法 05_Ma ...

  8. 四轴六轴机械臂基础运动仿真实验(Matlab)

    博主最近在学一本叫做<A Mathematical Introduction to Robotic Manipulation>的机器人学教材,并且在学习之余根据了老师的要求完成了一个仿真项 ...

  9. 【机器人原理与实践(三)】六轴机械臂正逆解控制

    文章目录 3.1 空间转换矩阵的理解 3.1.1平移变换 3.1.2旋转变换 3.2 D-H参数法 3.3 建立机械臂模型 3.3.1 机械臂模型介绍 3.3.2 使用Matlab进行示教仿真 3.4 ...

  10. 六轴机械臂DIY(四)机械模型重建及DH法建模

    通过本系列文章的前三篇,一个小型桌面舵机机械臂我们就获得了,但一个控制单关节实现整体运动的机械臂无非就是一个桌面玩具,根本就不能称之为"机器人",因此在接下来的文章中我们会使用机器 ...

最新文章

  1. candy算子python_Python-计算机视觉中的Canny边缘检测方法
  2. 金属圆柱求取倾斜角度
  3. 在虚机上安装WIN2003
  4. 关于 Taro 的 ScrollView 在Dom结构发生变化会自动回滚到顶部解决方案和原因
  5. 【李宏毅2020 ML/DL】P24 Semi-supervised
  6. div关闭怎么写 html,大神你好,请问怎么在以下代码的div中添加一个关闭按钮?...
  7. 计算机二级分省和国家吗,计算机国家二级和省二级有什么区别?
  8. stackoverflowerror解决办法
  9. [UE4]图片按钮设置技巧
  10. 【SQLAlchemy】SQLAlchemy技术文档(中文版)(上)
  11. Linux下rpm安装lrzsz
  12. 使用HTML+CSS设计个人简历
  13. 电子技术基础(三)__第3章 集成运算放大器及其应用
  14. 抽奖h5小游戏还能这么玩?h5抽奖游戏种类详解
  15. 硬盘属不属于计算机主机组成,电脑主机是由哪些硬件组成
  16. 身份证护照扫描仪助力酒店信息录入
  17. Python手机App数据抓取实战:抖音用户的抓取
  18. 国庆节想吃想玩要不去这? 央视推荐——新疆独库公路
  19. 测试人员需要具备哪些基本技能
  20. php添加背景图及设置格式,PHP添加PNG图片背景透明水印操作类定义与用法示例

热门文章

  1. 分析:谷歌不会退出中国市场的8大理由
  2. MKV 高清视频文件分解与封装和音频编码的转换
  3. Unity3dRPG 相机跟随player旋转_【Cinemachine】VirtualCamera虚拟相机详解(一)
  4. 如何在Nintendo交换机上设置家长控制
  5. 利用ESP8266与米思齐从零制作模拟温室大棚--硬件篇
  6. 超全GitLab保姆级使用教程
  7. 图解PCIE原理(从软件角度)
  8. 关于HTML页面跳转的5种方法分享。
  9. java使用RXTX的详细总结
  10. 什么是informatic?