当前位置:网站首页>机械臂速成小指南(十):可达工作空间
机械臂速成小指南(十):可达工作空间
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个随机关节变量,依次代入正运动学方程进行求解;最后,将代表末端执行器可达位置的点标注于三维空间中,形成的点阵即可表示机械臂的可达工作空间,程序运行效果如下图所示。
![]() | ![]() | ![]() |
边栏推荐
- 数据的存储
- Allow public connections to local Ruby on Rails Development Server
- ubuntu20安裝redisjson記錄
- 19. (ArcGIS API for JS) ArcGIS API for JS line acquisition (sketchviewmodel)
- 如何检测mysql代码运行是否出现死锁+binlog查看
- It's too convenient. You can complete the code release and approval by nailing it!
- QT 项目 表格新建列名称设置 需求练习(找数组消失的数字、最大值)
- Kotlin Android environment construction
- Redis configuration and optimization of NoSQL
- Open3D 网格滤波
猜你喜欢
[hcie TAC] question 3
力扣------路径总和 III
Top 50 hit industry in the first half of 2022
Enumeration general interface & enumeration usage specification
24. (ArcGIS API for JS) ArcGIS API for JS point modification point editing (sketchviewmodel)
预处理——插值
Huawei and Xiaomi "copy each other"
Set WiFi automatic connection for raspberry pie
Machine learning notes - bird species classification using machine learning
Search of linear table
随机推荐
[MySQL] row sorting in MySQL
QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
使用 TiDB Lightning 恢复 GCS 上的备份数据
浅谈网络安全之文件上传
Gpt-3 is a peer review online when it has been submitted for its own research
Top 50 hit industry in the first half of 2022
VHDL implementation of single cycle CPU design
【DPDK】dpdk样例源码解析之三:dpdk-l3fwd_001
About Confidence Intervals
华为小米互“抄作业”
Summer 2022 daily question 1 (1)
QT thread and other 01 concepts
Probability formula
map和set的实现
小程序能运行在自有App中,且实现直播和连麦?
VHDL implementation of arbitrary size matrix multiplication
Allow public connections to local Ruby on Rails Development Server
Enter the rough outline of the URL question (continuously updated)
Codeworks 5 questions per day (1700 average) - day 7
25. (ArcGIS API for JS) ArcGIS API for JS line modification line editing (sketchviewmodel)