当前位置:网站首页>机械臂速成小指南(十):可达工作空间
机械臂速成小指南(十):可达工作空间
2022-07-06 21:16:00 【躺躺我啊】
指南目录:
********************以下为正文********************
在指南(九)中,我们已得到六自由度机械臂的正运动学方程,将关节变量代入该方程即可求得机械臂末端的位姿。现在我们已经知道了每个关节的可旋转的范围,那么,我们同时也可以得到机械臂末端所能到达的所有位置,我们将这个可能到达的位置的集合称为可达工作空间,而这也是机械臂的一个重要参数指标。
指南中使用使用MATLAB中的Robotic Toolbox工具箱(不是官方的Robotics System Toolbox )对机械臂进行运动学仿真,并使用易于实现且运行速度快的蒙特卡洛方法得到机械臂的可达工作空间。
一、关节空间与驱动器空间
关节空间描述与驱动器空间描述是两种用于描述机械臂位姿的方法。
1.关节空间
对于一个具有n个自由度的机械臂来说,它所有连杆的位置可由一组n个关节变量加以确
定。这样的一组变量常被称为nx1的关节矢量。所有关节矢量组成的空间称为关节空间。
2.驱动器空间
到目前为止,我们一直假设每个关节都是直接由某种驱动器驱动。然而,对于许多工业机器人来说并非如此,有时我们也会使用两个驱动器以差动的方式驱动一个关节,有时又会用直线驱动器通过四连杆机构来驱动旋转关节。
在这些情况下,就需要考虑驱动器空间。由于测量机械臂关节变化的传感器通常安装于驱动器上,因此进行某些计算时必须把关节矢量表示成一组驱动器函数,即驱动器矢量。所有驱动器矢量组成的空间称为驱动器空间。
二、工作空间(workspace)
工作空间(workspace)是当机械臂的所有关节进行所有可能的运动时,末端执行器坐标系的原点位置的集合。工作空间可分为为可达(reachable)工作空间与灵活(dexterous)工作空间。
工作空间是有限、闭合、连贯的。因为关节是转动型或移动型的,易知到工作空间是由平面、球形、环形和圆柱形等曲面元素组成的。机械臂厂商都会在数据手册中以俯视图和平视图的形式给出机械臂的工作空间,是用于评估机器人在预期应用中的性能所需的基本要素。
1.可达工作空间
机械臂末端执行器以一种以上的方向到达的目标点的集合为可达工作空间。
2.灵活工作空间
机械臂能以任意方向到达的目标点的集合为灵活工作空间。
3.机械臂可达工作空间计算的编程实现
%蒙特卡洛法仿真机械臂可达工作空间
%刘躺
radian1 = pi/180;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%定义DH参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%刘躺%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d1 = 169.77;
d2 = 0;
d3 = 0;
d4 = -222.63;
d5 = 0;
d6 = -36.25;
%机械臂连杆长度参数a
a1 = 64.2;
a2 = 305;
a3 = 0;
a4 = 0;
a5 = 0;
a6 = 0;
%机械臂关节偏角参数alpha
alpha1 = -90 * radian1;
alpha2 = 0 * radian1;
alpha3 = 90 * radian1;
alpha4 = -90 * radian1;
alpha5 = 90 * radian1;
alpha6 = 0 * radian1;
%定义关节角度限制
lim1_min = -170 * radian1; lim1_max = 170 * radian1; %关节1(-170,170)
lim2_min = -132 * radian1; lim2_max = 0 * radian1; %关节2(-132,0)
lim3_min = 1 * radian1; lim3_max = 141 * radian1; %关节3(1,141)
lim4_min = -165 * radian1; lim4_max = 165 * radian1; %关节4(-165,165)
lim5_min = -105 * radian1; lim5_max = 105 * radian1; %关节5(-105,105)
lim6_min = -155 * radian1; lim6_max = 155 * radian1; %关节6(-155,155)
%定义关节旋转范围
lim1 = lim1_max - lim1_min;
lim2 = lim2_max - lim2_min;
lim3 = lim3_max - lim3_min;
lim4 = lim4_max - lim4_min;
lim5 = lim5_max - lim5_min;
lim6 = lim6_max - lim6_min;
% 定义各个连杆以及关节类型,默认为转动关节
% θ d a α 角度限制 关节偏置
L(1)=Link([ 0 d1 a1 alpha1]); L(1).qlim=[lim1_min,lim1_max];
L(2)=Link([ 0 d2 a2 alpha2]); L(2).qlim=[lim2_min,lim2_max];
L(3)=Link([ 0 d3 a3 alpha3]); L(3).qlim=[lim3_min,lim3_max]; L(3).offset=-pi/2;
L(4)=Link([ 0 d4 a4 alpha4]); L(4).qlim=[lim4_min,lim4_max];
L(5)=Link([ 0 d5 a5 alpha5]); L(5).qlim=[lim5_min,lim5_max];
L(6)=Link([ 0 d6 a6 alpha6]); L(6).qlim=[lim6_min,lim6_max]; L(6).offset=pi;
%组合上述连杆
AR3=SerialLink(L,'name','AR3');
%显示机械臂关节数以及D_H参数列表
%AR3:: 6 axis, RRRRRR, stdDH, slowRNE
AR3.display();
%使用蒙特卡洛法绘制机械臂的工作空间
N=15000;
theta1 = ( lim1_min + (lim1 * rand(N,1)) );
theta2 = ( lim2_min + (lim2 * rand(N,1)) );
theta3 = ( lim3_min + (lim3 * rand(N,1)) );
theta4 = ( lim4_min + (lim4 * rand(N,1)) );
theta5 = ( lim5_min + (lim5 * rand(N,1)) );
theta6 = ( lim6_min + (lim6 * rand(N,1)) );
for n = 1:N
theta = [theta1(n),theta2(n),theta3(n),theta4(n),theta5(n),theta6(n)];
workspace = AR3.fkine(theta);
plot3(workspace.t(1),workspace.t(2),workspace.t(3),'b.','markersize',1);
hold on;
end
AR3.plot(theta); %动画显示
%进行机器人的实时展示
AR3.teach();
具体编程过程为:首先根据上一章节中所定义的机械臂运动学参数对Robotic Toolbox工具箱中机械臂相关参数赋值,以此构建机械臂的仿真模型;接着,生成30000个随机关节变量,依次代入正运动学方程进行求解;最后,将代表末端执行器可达位置的点标注于三维空间中,形成的点阵即可表示机械臂的可达工作空间,程序运行效果如下图所示。
![]() | ![]() | ![]() |
边栏推荐
- List interview common questions
- Probability formula
- Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
- [development software] tilipa Developer Software
- 预处理——插值
- HW notes (II)
- PIP download only, not install
- 卡尔曼滤波-1
- 运算放大器应用汇总1
- 未来发展路线确认!数字经济、数字化转型、数据...这次会议很重要
猜你喜欢
PHP lightweight Movie Video Search Player source code
Open3D 网格滤波
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
QT 打开文件 使用 QFileDialog 获取文件名称、内容等
QT thread and other 01 concepts
Set WiFi automatic connection for raspberry pie
Class常量池与运行时常量池
[leetcode] 700 and 701 (search and insert of binary search tree)
Enumeration general interface & enumeration usage specification
Flutter3.0, the applet is not only run across mobile applications
随机推荐
Summer 2022 daily question 1 (1)
19. (ArcGIS API for JS) ArcGIS API for JS line acquisition (sketchviewmodel)
海思3559万能平台搭建:RTSP实时播放的支持
It's too convenient. You can complete the code release and approval by nailing it!
Kalman filter-1
cuda编程
2022夏每日一题(一)
SSL证书部署
[security attack and Defense] how much do you know about serialization and deserialization?
接口数据安全保证的10种方式
map和set的实现
【开发软件】 tilipa开发者软件
U.S. Air Force Research Laboratory, "exploring the vulnerability and robustness of deep learning systems", the latest 85 page technical report in 2022
20. (ArcGIS API for JS) ArcGIS API for JS surface collection (sketchviewmodel)
你心目中的数据分析 Top 1 选 Pandas 还是选 SQL?
1.19.11.SQL客户端、启动SQL客户端、执行SQL查询、环境配置文件、重启策略、自定义函数(User-defined Functions)、构造函数参数
[dpdk] dpdk sample source code analysis III: dpdk-l3fwd_ 001
. Net interface can be implemented by default
QT 项目 表格新建列名称设置 需求练习(找数组消失的数字、最大值)
Set WiFi automatic connection for raspberry pie