【Matlab 六自由度机器人】关于灵活工作空间与可达工作空间的理解(附MATLAB推导代码)
现代人追求工作生活平衡,倡导工作空间与休闲空间的结合 #生活乐趣# #生活分享# #家居生活方式# #现代生活方式#
【Matlab 六自由度机器人】灵活工作空间与可达工作空间的解释 往期回顾前言正文一、两种工作空间的定义及区别1. 可达工作空间2. 灵活工作空间 二、辅助理解工作空间的代码1. 可达工作空间的代码表示2. 灵活工作空间的代码表示 总结参考文献往期回顾
【Matlab 六自由度机器人】
1. 建立机器人模型
2. 运动学正解
3. 基于蒙特卡洛法(Monte Carlo Method)构建工作空间
前言
本篇介绍机器人关于灵活工作空间与可达工作空间,如何理解灵活工作空间与可达工作空间,并利用文中的实例辅助理解。
以下是本篇文章正文内容,包含对灵活工作空间与可达工作空间的图文理解和代码的辅助理解。
正文
一、两种工作空间的定义及区别
定义:工作空间分析是设计机器人操作器的首要环节。机器人的工作空间是机器人操作器的工作区域,是衡量机器人性能的重要指标。根据操作器工作时的位姿特点,工作空间可分为可达工作空间和灵活工作空间。
1. 可达工作空间可达工作空间表示的是,对于一个自由度大于1的机械结构来说,它无论是平动关节结构或是旋转关节结构(除开球关节),都会有一个工作范围。这个关节在运动的过程当中,其末端的坐标系能扫到的点都可以看作该机械机构能够到达的位置。不到达的姿态,这些所有能够到达的位置的点的集合,就是可达工作空间的含义。
2. 灵活工作空间灵活工作空间表示的是,对于一个自由度大于2的机械结构,而且是处于同一平面内的旋转关节大于2的结构,都可以以不同的姿态(姿势)到达某一个位置点。旋转关节在运动的过程当中,其末端的坐标系原点都该点上,但是是以不同的姿态到达。相同的位置,以不同的姿态,即不同的位姿。而这些所有能够任意点到达的位姿的点的集合,就是灵活工作空间的含义。
小结:可达工作空间表示的是位置,灵活工作空间表示的是位姿。正是位置和位姿的两种不同表达方式将可达工作空间与灵活工作空间区分开。
因此我们也能看出,对于可达工作空间,实现灵活工作空间的条件更为苛刻。但这两种工作空间都含有位置的点的集合,而灵活工作空间的点的集合由于条件的苛刻,显然是可达工作空间的点的集合的子集。
灵 活 空 间 的 点 的 集 合 ⊆ 可 达 空 间 的 点 的 集 合 灵活空间的点的集合⊆可达空间的点的集合 灵活空间的点的集合⊆可达空间的点的集合
二、辅助理解工作空间的代码
以平面连杆结构为例,加深理解工作空间。以下是平面连杆机构,其第一根连杆长度为120mm,第二根连杆长度为60mm。
代码如下:
%连杆偏移 d1 = 0;d2 = 0;d3 = 0; %连杆长度 a1 = 0;a2 = 120;a3 = 60; %连杆扭角 alpha1 = 0;alpha2 = 0;alpha3 = 0; %建立机器人模型 % theta d a alpha offset(关节变量偏移量) L1=Link([0 d1 a1 alpha1 0 ],'modified'); L2=Link([0 d2 a2 alpha2 0 ],'modified'); L3=Link([0 d3 a3 alpha3 0 ],'modified'); %限制机器人的关节空间 L1.qlim = [(-165/180)*pi,(165/180)*pi]; L2.qlim = [(-95/180)*pi, (70/180) *pi]; L3.qlim = [(-85/180)*pi, (95/180) *pi]; %连接连杆,机器人取名平面连杆 robot=SerialLink([L1 L2 L3],'name','平面连杆'); robot.plot([0,0,0]); %输出机器人模型,后面的三个角为输出时的theta姿态 robot.teach()
1234567891011121314151617181920 1. 可达工作空间的代码表示可达工作空间表达的是给定一个位置的集合,机械臂末端至少有一个方向(解)可以到达该集合中的位置,那么该集合就是机械臂的可达空间。
对于上述的平面连杆机构,其可达工作空间如下:
代码如下:
theta1min = -165;theta1max = 165; theta2min = -95 ;theta2max = 70 ; theta3min = -85 ;theta3max = 95 ; n = 3000; x = zeros;y = zeros;z = zeros; for i = 1:n theta1 = theta1min*(pi/180) + (theta1max-theta1min)*(pi/180)*rand; theta2 = theta2min*(pi/180) + (theta2max-theta2min)*(pi/180)*rand; theta3 = theta3min*(pi/180) + (theta3max-theta3min)*(pi/180)*rand; Tws = robot.fkine([theta1,theta2,theta3]); x(i) = Tws.t(1,1); y(i) = Tws.t(2,1); z(i) = Tws.t(3,1); end figure('color',[1 1 1]); plot3(x,y,z,'b.','MarkerSize',0.5) hold on xlabel('x轴(millimeter)','color','k','fontsize',15); ylabel('y轴(millimeter)','color','k','fontsize',15); zlabel('z轴(millimeter)','color','k','fontsize',15); grid on
1234567891011121314151617181920212223 2. 灵活工作空间的代码表示灵活工作空间表达的是给定一个位置的集合,机械臂末端有任意个方向(解)可以到达该集合中的位置,那么该集合就是机械臂的次要工作空间。
对于上述的平面连杆机构,对于某个位置点 [ x , y ] [x,y] [x,y]的灵活工作空间公式推导如下:
注意: 该位置点 [ x , y ] [x,y] [x,y]为已知条件
{ L 1 = 120 L 2 = 60 x = L 1 c o s Θ 1 + L 2 c o s ( Θ 1 + Θ 2 ) y = L 1 s i n Θ 1 + L 2 s i n ( Θ 1 + Θ 2 ) \left\{
L1=120L2=60x=L1cosΘ1+L2cos(Θ1+Θ2)y=L1sinΘ1+L2sin(Θ1+Θ2)" role="presentation">L1=120L2=60x=L1cosΘ1+L2cos(Θ1+Θ2)y=L1sinΘ1+L2sin(Θ1+Θ2)
\right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧L1L2xy=120=60=L1cosΘ1+L2cos(Θ1+Θ2)=L1sinΘ1+L2sin(Θ1+Θ2)
对上述公式使用 solve 函数进行求解,解得theta1,theta2对应的值
代码如下:
syms theta1 theta2 l1 = 120; l2 = 60; eq1 = x == l1*cos(theta1)+l2*cos(theta1+theta2); eq2 = y == l1*sin(theta1)+l2*sin(theta1+theta2); s = solve(eq1,eq2,[theta1,theta2]); s1 = [s.theta1(1) s.theta2(1)]; s2 = [s.theta1(2) s.theta2(2)]; 12345678
解得:
s 1 = { t h e t a 1 = 2 ∗ a t a n ( ( 240 ∗ y − ( 3600 ∗ ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) ) / ( x 2 + y 2 − 3600 ) + ( x 2 ∗ ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) ) / ( x 2 + y 2 − 3600 ) + ( y 2 ∗ ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) ) / ( x 2 + y 2 − 3600 ) ) / ( x 2 + 240 ∗ x + y 2 + 10800 ) ) t h e t a 2 = − 2 ∗ a t a n ( ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) / ( x 2 + y 2 − 3600 ) ) s1=\left\{
theta1=2∗atan((240∗y−(3600∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)+(x2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)+(y2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600))/(x2+240∗x+y2+10800))theta2=−2∗atan((−(x2+y2−3600)∗(x2+y2−32400))(1/2)/(x2+y2−3600))" role="presentation">theta1=2∗atan((240∗y−(3600∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)+(x2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)+(y2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600))/(x2+240∗x+y2+10800))theta2=−2∗atan((−(x2+y2−3600)∗(x2+y2−32400))(1/2)/(x2+y2−3600))
\right. s1={theta1theta2=2∗atan((240∗y−(3600∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)+(x2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)+(y2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600))/(x2+240∗x+y2+10800))=−2∗atan((−(x2+y2−3600)∗(x2+y2−32400))(1/2)/(x2+y2−3600))
s 2 = { t h e t a 1 = 2 ∗ a t a n ( ( 240 ∗ y + ( 3600 ∗ ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) ) / ( x 2 + y 2 − 3600 ) − ( x 2 ∗ ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) ) / ( x 2 + y 2 − 3600 ) − ( y 2 ∗ ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) ) / ( x 2 + y 2 − 3600 ) ) / ( x 2 + 240 ∗ x + y 2 + 10800 ) ) t h e t a 2 = 2 ∗ a t a n ( ( − ( x 2 + y 2 − 3600 ) ∗ ( x 2 + y 2 − 32400 ) ) ( 1 / 2 ) / ( x 2 + y 2 − 3600 ) ) s2=\left\{
theta1=2∗atan((240∗y+(3600∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)−(x2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)−(y2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600))/(x2+240∗x+y2+10800))theta2=2∗atan((−(x2+y2−3600)∗(x2+y2−32400))(1/2)/(x2+y2−3600))" role="presentation">theta1=2∗atan((240∗y+(3600∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)−(x2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)−(y2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600))/(x2+240∗x+y2+10800))theta2=2∗atan((−(x2+y2−3600)∗(x2+y2−32400))(1/2)/(x2+y2−3600))
\right. s2={theta1theta2=2∗atan((240∗y+(3600∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)−(x2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600)−(y2∗(−(x2+y2−3600)∗(x2+y2−32400))(1/2))/(x2+y2−3600))/(x2+240∗x+y2+10800))=2∗atan((−(x2+y2−3600)∗(x2+y2−32400))(1/2)/(x2+y2−3600))总结
以上就是关于灵活工作空间与可达工作空间的的内容,本文详细介绍了如何理解工作空间定义及区别,并以图文及代码进行辅助理解。
参考文献
工作空间分析机械臂主要工作空间和灵活工作空间 Primary WorkSpace and Secondary WorkSpace机械臂的两种工作空间理解 Matlab解方程组solve网址:【Matlab 六自由度机器人】关于灵活工作空间与可达工作空间的理解(附MATLAB推导代码) https://www.yuejiaxmz.com/news/view/333087
相关内容
机械臂速成小指南(十):可达工作空间对matlab中的sparse()深刻理解
MATLAB图像处理(包括图像类型转换)
【优化调度】基于多时间尺度的电动汽车光伏充电站联合分层优化调度附Matlab代码
Matlab的for循环优化
matlab中for循环的简单使用
现代控制理论(机器人方向)考核要求与Matlab(Octave)简明教程
Matlab代码实践——BP神经网络
【创新未发表】基于鱼鹰OOA求解带时间窗的骑手外卖配送路径规划问题,最优路径成本附Matlab代码
基于MATLAB语音识别系统GUI界面