Difference between revisions of "Robot Kinematics Models/zh-hans"

From SoftMC-Wiki
Jump to: navigation, search
(Created page with "{{Languages}} = 介绍 = 本文件是根据作为附加发展要求收到的运动学提案文件编写的。 <!-- Following the proposal, this document is divided according t...")
 
(BackToTop button)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Languages}}
+
<div id="BackToTop"  class="noprint" style="background-color:; position:fixed; bottom:32px; left:95%; z-index:9999; padding:0; margin:0;">
 +
<span style="color:blue; font-size:8pt; font-face:verdana,sans-serif; border:0.2em outset:#ceebf7; padding:0.1em; font-weight:bolder; -moz-border-radius:8px; ">
 +
[[Image:TOP2.png|50px|link=#top]] </span></div>
 +
 
 +
{{Languages|Robot_Kinematics_Models}}
 
= 介绍 =
 
= 介绍 =
本文件是根据作为附加发展要求收到的运动学提案文件编写的。 <!-- Following the proposal, this document is divided according to the development phases: -->
+
本文件是根据运动学方案文件编写的并作为额外开发需求。 <!-- Following the proposal, this document is divided according to the development phases: -->
 
   
 
   
* PUMA Kinematics
+
* PUMA 运动学
* DELTA Kinematics
+
* DELTA运动学
* Tool, base and compound operator
+
* 工具, 基座标和复合操作
 
 
始终保持PUMA和DELTA机器人的新运动学模型,保持对SCARA机器人的实行。 Therefore if not explicitly stated different, all robotics features that were developed and implemented for the SCARA model will be available for the two models also. Therefore all the capabilities, methods and definitions of the features are common to all three models. The common robotics features for the above robots are:
 
 
 
* Straight-line motion
 
* Circular movements
 
* VIA (Pass-Through) movements.
 
* Continuous-Path – blending.
 
* Conveyor tracking (Moving Frames).
 
  
These features are not described in this document.
+
始终保持PUMA和DELTA机器人的新运动学模型,保持对SCARA机器人的应用。如果没有明确说明不同,那么为SCARA模型开发和实现的所有机器人功能也将适用于两种型号。因此所有的功能,方法和定义的特征对所有三个模型都是相同的。上述机器人共同的功能是::
  
= Overview =
+
* 直线运动
This document describes a general kinematics implementation in the softMC system with the following kinematics models (and growing):
+
* 圆运动
 +
* VIA (Pass-Through) 运动
 +
* 连续路径-混合
 +
* 传送带跟踪(Moving Frames).
  
* SCARA kinematics of '''4''' degrees of freedom.
+
这些功能在本文档中没有描述。
* PUMA kinematics of classical PUMA robots of '''6''' degrees of freedom.
 
* DELTA kinematics of DELTA parallel robots of '''4''' degrees of freedom.
 
* TARN kinematics of SpeedPicker robots of '''4''' degrees of freedom.
 
* USER kinematics for general user-defined robot kinematics of up-to '''6''' DOF systems.
 
  
== Definitions ==
+
= 概述 =
 +
本文档描述了softMC系统中具有以下运动学模型(增加中)的一般运动学实现:
  
* '''DOF''' – “degrees of freedom” of a robot, usually a number of motors in the robot.
+
* '''4'''自由度SCARA机器人运动学
 +
* '''6'''自由度典型PUMA机器人的PUMA运动学
 +
* '''4'''自由度DELTA并联机器人的DELTA运动学
 +
* '''4'''自由度SpeedPicker机器人的TARN运动学
 +
* '''6'''自由度系统的一般用户自定义机器人运动学的USER运动学。
  
* '''DH''' – Denavit Hartenberg parameters of robot describing robot geometry set of  (θ<sub> i</sub>, α<sub> i</sub>, a<sub>i</sub>, d<sub>i</sub>) numbers for each robot segment.
+
== 定义 ==
  
* '''“Tool-Center-Point” - '''point in the middle of the last robot segment. Initially in the center of the sixth segment flange if a gripper is mounted it coordinates are displaced by the tool property (will be described in phase 3).
+
* '''DOF''' – 机器人的“自由度”, 通常是机器人中的电机数量。
  
* In the whole of the document we use term “'''point'''” for a vector describing position and orientation of the robot’s tool center. Depending on the robot type the point can be element of different vector spaces (two, three or six dimensional).  
+
* '''DH''' – 描述机器人几何形状的DH参数,每个机器人连杆的(θ<sub> i</sub>, α<sub> i</sub>, a<sub>i</sub>, d<sub>i</sub>)
 +
* '''“Tool-Center-Point” - '''末端机器人连杆的中心点.默认位于第六连杆法兰的中心,如果安装有夹具,则坐标由工具属性替代(将在阶段3中描述).
  
* A '''“location”''' is softMC data-type containing cartesian coordinates of a point.
+
*在整个文档中,我们使用术语“'''点'''”来描述机器人工具中心的位置和方向矢量。根据机器人类型,该点可以是不同向量空间(二,三维或六维)的元素。
 +
* '''“location”'''是包含点的笛卡尔坐标的softMC数据类型
  
* A '''“joint location”''' or '''“joint” '''is softMC data-type containing joint coordinates of a point.
+
* '''“joint location”''' or '''“joint” '''是包含点的关节坐标的softMC数据类型。
  
= Coordinates Systems =
+
= 坐标系 =
== Cartesian coordinates and Euler Angles ==
+
== 笛卡尔坐标和欧拉角 ==
In this section a method of robot point definition is shown. The presented method is given for a six-dimensional space defining both position and orientation, each having three degrees of freedom. For systems with more or less dimensions other coordinates systems will be used.
+
目前的方法是定义位置和方向的六维空间,每个具有三个自由度。对于具有或多或少维度的系统,将使用其他坐标系。
  
  
Each robot type is described with different group model. This is expressed in softMC Basic-Moves language in two domains. One is when the group is defined, and then the different model values are used. The other issue is the use of location or joint robot-type with a dedicated token values (XYZ, XYZR, …). Each robot (group) model has different robot type depending on the number of axes and the model code:
+
每个机器人类型用不同的组型进行描述,这在两个域中的softMC Basic-Moves语言中表达。一个是定义组,然后使用不同的模型值。 另一个问题是使用具有专用特征值(XYZ,XYZR,...)的位置或关节机器人类型。 每个机器人(组)型号有着不同的机器人类型,具体取决于轴数和型号代码:
  
  
Line 52: Line 54:
 
{{robot_model_table}}
 
{{robot_model_table}}
  
== Examples ==
+
== 例子 ==
  
  
=== PUMA robot definition ===
+
=== PUMA机器人定义 ===
  
  
Line 61: Line 63:
  
  
A location of PUMA robot:  '''common shared ''lct'' as location of XYZYPR'''
+
PUMA机器人位置:  '''common shared ''lct'' as location of XYZYPR'''
  
===DELTA robot definition:===
+
===DELTA机器人定义===
  
  
Line 69: Line 71:
  
  
A location of DELTA robot: '''common shared ''lct'' as location of XYZR'''
+
DELTA机器人位置: '''common shared ''lct'' as location of XYZR'''
  
  
 
=== XYZYPR vs. XYZR ===
 
=== XYZYPR vs. XYZR ===
The XYZYPR token for PUMA stands for: X-Y-Z-Yaw-Pitch-Roll coordinates and the XYZR for SCARA and DELTA robots stands for X-Y-Z-Roll. In both cases the roll angle defines the same thing - it is the angle of rotation about Z-axis. This is to be remembered later when the compound operator is defined then the following relation is true:
+
PUMA的XYZYPR代表:X-Y-Z-Yaw-Pitch-Roll坐标,SCARA和DELTA机器人的XYZR代表X-Y-Z-Roll。 在这两种情况下,旋转角定义了相同的事情 - 它是围绕Z轴的旋转角度。 稍后当复合操作符被定义时,这将被记录,以下关系为真:
  
  
Line 79: Line 81:
  
  
Cartesian coordinates describe robot locations defining position and orientation of the declared robot tool center point. A location can be expressed in at least three ways representing all 6 degrees of freedom encountered in the cartesian space:
+
笛卡尔坐标描述了机器人位置,定义了所声明的机器人工具中心点的位置和方向。 一个位置可以用至少三种方式表达,表示在笛卡尔空间中的所有6个自由度:
  
  
 
* X Y Z Yaw Pitch Roll
 
* X Y Z Yaw Pitch Roll
* Homogenous transformation matrix
+
* 齐次变换矩阵
* X Y Z Quaternion
+
* X Y Z 四元数
  
Common to all methods is the duality between location and transformation. Note that cartesian location gives coordinates of the tool center point which can be always interpreted as a transformation form the WORLD base point (space origin) to the tool center point.
+
所有方法的共同点是位置和转换之间的对偶性。 注意,笛卡尔位置给出了工具中心点的坐标,该坐标可以始终被解释为从WORLD基点(空间原点)到工具中心点的转换。
  
 
==XYZ Yaw Pitch Roll==
 
==XYZ Yaw Pitch Roll==
  
This coordinates representation is mostly used in robotics. The softMC system uses it for user-related inputs and outputs (constant assignments and prints).
+
该坐标表示主要用于机器人。 softMC系统将其用于用户相关的输入和输出(常规分配和打印)。
  
  
* '''3''' degrees of freedom in translation (X, Y, Z) expressed in mm, defining the position of the tool center point relative to the robot base.
+
* 平移中的'''3'''个自由度(X,Y,Z)以mm表示,定义工具中心点相对于机器人底座的位置。
  
* ''' 3''' degrees of freedom in rotation (yaw, pitch and roll defined below) expressed in degrees, defining the orientation of the tool tip. Yaw, Pitch, and Roll are the modified Euler angles and correspond to the sequential rotations around Z, Y, Z axes respectively.
+
*在旋转''' 3'''个自由度(下文定义偏航,俯仰和横滚)以度表示,定义工具尖端的方向。 Yaw,Pitch and Roll是修正的欧拉角,分别对应于Z,Y,Z轴周围的顺序旋转。
  
  
Line 101: Line 103:
  
 
<gallery widths = 250px heights = 250px>
 
<gallery widths = 250px heights = 250px>
Image:AXY;YawDefinition.png| ''Yaw definition ''<br> Yaw is rotation around the Z-axis in relation to the previous frame. The previous frame is the starting coordinate system we are rotating. The figure illustrates a yaw rotation of 30°. Rotation about the Yaw angle yields new coordinate system (X<sub>1</sub>, Y<sub>1</sub>, Z<sub>1</sub>).
+
Image:AXY;YawDefinition.png| ''偏航定义 ''<br> 偏航是围绕Z轴相对于前一坐标系的旋转。 前一坐标系是我们旋转的起始坐标系。 该图示出了30°的偏航旋转。 围绕偏角旋转产生新的坐标系(X<sub>1</sub>, Y<sub>1</sub>, Z<sub>1</sub>)
Image:AXY;PitchDefinition.png|''Pitch definition ''Pitch is rotation around the Y-axis in relation to the previous frame '''after yaw rotation''' has been applied. It means the rotation is made around newly obtained Y<sub>1</sub> axis. The figure below illustrates a pitch rotation of 40°. Rotation about the Pitch angle yields new coordinate system (X<sub>2</sub>, Y<sub>2</sub>, Z<sub>2</sub>).
+
Image:AXY;PitchDefinition.png|''俯仰定义 '偏转旋转后,俯仰是相对于前一坐标系的Y轴旋转。 这意味着围绕新获得的Y1轴进行旋转。下图显示了40°的俯仰旋转。俯仰角的旋转产生新的坐标系(X<sub>2</sub>, Y<sub>2</sub>, Z<sub>2</sub>)
Image:AXY;RollDefinition.png|''Roll Definition '' Roll is rotation around the Z-axis in relation to the previous frame, after the '''yaw and pitch''' rotations have been applied. It means the Roll rotation is around Z<sub>2</sub> axis. The figure below illustrates a roll rotation of 20°. Rotation about the Roll angle yields new coordinate system (X<sub>3</sub>, Y<sub>3</sub>, Z<sub>3</sub>).
+
Image:AXY;RollDefinition.png|''翻滚定义 '' 翻滚是在应用偏航和俯仰旋转之后,围绕Z轴相对于前一坐标系旋转。这意味着翻滚绕Z2轴旋转。 下图显示了20°的横滚旋转。翻滚旋转产生新的坐标系(X<sub>3</sub>, Y<sub>3</sub>, Z<sub>3</sub>)
 
</gallery>
 
</gallery>
  
  
{{Note|Note that the order of the yaw, pitch and roll sequence is important!}}
+
{{Note|请注意,偏航,俯仰和翻滚顺序的顺序很重要!}}
  
==Homogenous Transformation Matrix:==
+
==齐次变换矩阵==
  
 
+
位置表示的这种方法不是在内部使用的,而是在softMC的用户接口中使用,但它主要用在机器人文献中。 因此,本文档仅供参考,仅供演示和解释之用。 位置变量表示为(4×4)矩阵:
This method of location representation is not used internally or in a user interface of the softMC but it is mostly used in the robotics literature. Therefore the representation is given in this document for demonstration and explanation purposes only. Location variable is represented as a (4 X 4) matrix:
 
  
  
Line 118: Line 119:
  
  
Where: x<sub>x_axis</sub>, y<sub>x_axis</sub>, z<sub>x_axis</sub> are normalized values defining the change of the x axis in relation to its initial position, etc ...
+
这里,x<sub>x_axis</sub>, y<sub>x_axis</sub>, z<sub>x_axis</sub>是定义x轴相对于其初始位置等的变化的归一化值,等...
  
X, Y, Z are the position values of the tool center point relative to the robot base.
+
X,Y,Z是工具中心点相对于机器人底座的位置值。
  
The last line (0 0 0 1) is used for normalization.
+
最后一行(0 0 0 1)用于归一化。
  
  
=== Example 1 ===
+
=== 示例 1 ===
  
  ''if loc coordinates are ''{100, 80, 150, 45, 0, 0}
+
  ''if loc坐标为 ''{100, 80, 150, 45, 0, 0}
  
''loc'' written as a transformation matrix will be :
+
''loc''作为转换矩阵将被写入 :
  
  
Line 135: Line 136:
  
  
as there is only 45° of yaw rotation (rotation around Z axis) as it is illustrated.
+
因为如图所示,只有45°的偏航旋转(围绕Z轴旋转)。
  
 +
通常softMC系统中程序中是{X,Y,Z,Yaw,Pitch,Roll}格式。 这里使用齐次转换矩阵矩阵变换仅用于说明目的。
  
The normal softMC system representation in programs is the {X,Y,Z, Yaw, Pitch, Roll} format. The homogenous matrix transformation is used here only for illustration purposes.
+
==X Y Z Q (四元数)==
  
==X Y Z Q (quaternions)==
+
* 平移中的<nowiki>3</nowiki>个自由度(X,Y,Z)以mm表示,定义工具中心点相对于机器人底座的位置。
 +
* 使用归一化四元数Q表示的<nowiki>3</nowiki>个旋转自由度,其被描述为围绕矢量'''''n''''' 的旋转的角度'''''phi''''': '''<nowiki>[cos(phi/2), sin(phi/2)*n]</nowiki>'''
  
* <nowiki>3</nowiki> degrees of freedom in translation (X, Y, Z) expressed in mm, defining the position of the tool center point relative to the robot base.
+
四元数旋转的描述由系统内部使用,但不能直接用于用户。 然而,在用户运动学的情况下,必须考虑到这一点。 四元数仅用于说明的目的,softMC系统对所有用户输入和输出使用欧拉角。
* <nowiki>3</nowiki> degrees of freedom in rotation, expressed using the normalized quaternion Q described as a rotation around vector '''''n''''' for the angle '''''phi''''': '''<nowiki>[cos(phi/2), sin(phi/2)*n]</nowiki>'''
 
  
 +
==关节坐标==
  
The quaternion rotation presentation is used internally by the system but is not directly available for the user. However in cases of user-kinematics, this must be taken into account. The quaternions are used only for illustration purposes, the softMC system uses Euler angles for all user inputs and outputs.
 
  
==Joint coordinates==
+
对于关节坐标,位置变量由'''''n'''''个分量定义表示每个轴的度(或mm)的值的(n数自由度根据运动学模型的零位置)。
  
  
For joint coordinates, a location variable is defined by '''''n''''' components representing the values in degrees (or mm) of each axis (n-number degrees of freedom according to the zero position of the kinematics model.
+
关节坐标中的位置是n个关节值的数组:
 
 
 
 
A location in joint coordinates is an array of n joint values:
 
  
  
Line 160: Line 159:
  
  
Individual coordinates can be accessed via index definition in the form {i}: '''Jnt_loc{1}, Jnt_loc{2}, …'''
+
可以通过索引定义以{i}的形式访问各个坐标: '''Jnt_loc{1}, Jnt_loc{2}, …'''
  
  
The above definition allows us to perform computation on locations in joint coordinates, for instance addition, subtraction, etc ...
+
上述定义允许我们对关节坐标中的位置执行计算,例如加法,减法等...
  
 
==Cartesian coordinates==
 
==Cartesian coordinates==
  
  
For cartesian coordinates, a location variable is defined by 6 components representing the values:'' X, Y, Z, Yaw, Pitch, Roll.''  
+
对于笛卡尔坐标,位置变量由6个组件定义,表示值:'' X, Y, Z, Yaw, Pitch, Roll.''
 
 
  
Cartesian system variables: '''''here, setpoint'''''  
+
笛卡尔系统变量: '''''here, setpoint'''''  
  
  
''loc'''''<nowiki> = <robot>.here</nowiki>''' system maintained variable which returns the current transformation of the tool tip referred to the WORLD reference frame of the arm.
+
''loc'''''<nowiki> = <robot>.here</nowiki>'''系统维护变量,返回工具尖端参考机械臂参考的WORLD坐标系的当前变换。
  
  
Cartesian location definition:
+
笛卡尔位置定义:
  
The curly brackets preceded by the "#" sign are used by the system to differentiate between joint and location positions.
+
系统使用前面带有"#"符号的大括号来区分关节位置和位置位置
  
 
''<nowiki>#{x_value, y_value, z_value, yaw_value, pitch_value, roll_value</nowiki>''}
 
''<nowiki>#{x_value, y_value, z_value, yaw_value, pitch_value, roll_value</nowiki>''}
  
  
===Example 1 ===  
+
===示例 1 ===  
 
 
If "''r''" is the radius of a circle and "''angle''" is the angle of rotation about the circle, then the transformation :
 
  
 +
如果"''r''" 是圆的半径,"''angle''"是围绕圆的旋转角度,则变换为 :
 
  '''<nowiki>#{r*COS(''angle''),'' r''*SIN(''angle''), 0, 0, 0, 0</nowiki>}'''
 
  '''<nowiki>#{r*COS(''angle''),'' r''*SIN(''angle''), 0, 0, 0, 0</nowiki>}'''
  
will yield points on that circle.
+
将在该圆上得到点。.
  
== Point Manipulations ==
+
== 点操作 ==
  
===Compound operator===
+
===复合操作===
  
  
A compound operator between two cartesian points is defined. The compound operator is defined using the '''':'''' sign.
+
定义两个笛卡尔点之间的复合运算符。 复合运算符使用'''':''''符号定义。
  
Thus, a compound transformation is written:
+
因此,复合变换写为:
  
 
''location'' = ''loc1'' : ''loc2''
 
''location'' = ''loc1'' : ''loc2''
  
which means that ''loc2'' is defined in relation to ''loc1''.
+
这意味着 ''loc2'' 是相对于''loc1''定义的
  
  
A compound transformation is the result of the multiplication of the corresponding homogeneous transformation matrix by another homogeneous transformation matrix:
+
复合变换是相应的齐次变换矩阵乘以另一个齐次变换矩阵的结果:
  
  
Line 229: Line 226:
  
  
Or using quaternions: <!-- [[Image:AXY;Qcompound.png]] -->
+
或使用四元数: <!-- [[Image:AXY;Qcompound.png]] -->
  
 
<math>[(X,Y,Z) + Rot_Q1(X',Y',Z') ;Q_1 \cdot Q_2 ]  = [X,Y,Z, Q_1]:[X',Y',Z', Q_2] </math>
 
<math>[(X,Y,Z) + Rot_Q1(X',Y',Z') ;Q_1 \cdot Q_2 ]  = [X,Y,Z, Q_1]:[X',Y',Z', Q_2] </math>
  
=== Example ===
+
=== 例子 ===
  
  
Line 239: Line 236:
  
  
''point_name3'' is the compound transformation of ''point_name1'' and ''point_name2'' and is defined in the basic frame (WORLD).
+
''point_name3''''point_name1''''point_name2''的复合变换,并在基坐标系(WORLD)中定义。
  
 
[[Image:AXY;BaseFrame.png]]
 
[[Image:AXY;BaseFrame.png]]
  
  
Note that the sequence of a compound transformation has to be respected (operator is not commutative).
+
请注意,必须尊重复合转化的顺序(操作符不可交换)。
  
=== Example ===
+
=== 例子 ===
  
 
''hop'' =''<nowiki>#{20,130,45,30,0,90</nowiki>}:point_name''
 
''hop'' =''<nowiki>#{20,130,45,30,0,90</nowiki>}:point_name''
  
  
does not define the same transformation as:
+
没有定义相同的转换:
  
  
 
''hop ''<nowiki>=</nowiki> ''point_name:<nowiki>#{20,130,45,30,0,90</nowiki>}''
 
''hop ''<nowiki>=</nowiki> ''point_name:<nowiki>#{20,130,45,30,0,90</nowiki>}''
  
===Inverse of a location===
+
===位置逆解===
 
 
  
Inverse transformations are of prime importance in robotics when manipulating trajectories in space. This notion is mainly used in relation to frames to move a trajectory into another place without re-teaching the points. The function which defines the inverse is called '''INVERSE'''.
 
  
 +
当在空间中控制轨迹时,逆变换对于机器人技术至关重要。 这个概念主要用于坐标系,以将轨迹移动到另一个地方,而无需重新示教点。 定义逆解的函数称为 '''INVERSE'''。
  
The inverse of a transformation is the computation of the inverse of the transformation matrix.
 
  
 +
逆变换是计算变换矩阵的逆。
  
 
'''INVERSE'''''(loc)'' = [[Image:AXY;InverseMatrix.png]]
 
'''INVERSE'''''(loc)'' = [[Image:AXY;InverseMatrix.png]]
Line 269: Line 265:
 
[[Image:AXY;Inverse.png]]
 
[[Image:AXY;Inverse.png]]
  
Or using quaternions:
+
或使用四元数:
  
 
'''INVERSE'''(loc) =  [[Image:AXY;InverseQuat.png]]
 
'''INVERSE'''(loc) =  [[Image:AXY;InverseQuat.png]]
  
Example: benefit of inverse transformations
+
示例: 逆变换的好处
  
===Example 2  ===
+
===示例 2  ===
  
  
If "''frame''" is a transformation defining the position of the center of the circle and the plane in which it lies, the following program segment will move the robot toll point around the circle in steps of 1 degree.
+
如果"''坐标系''"是定义圆的中心位置和其所在的平面的变换,则以下程序段将以1度的步长围绕圆周移动机器人终点。
  
  
Line 291: Line 287:
  
  
Location assignments
+
位置分配
  
  
Line 297: Line 293:
  
  
A NULL transformation corresponds to the identity matrix.
+
NULL变换对应于单位矩阵
  
  
Line 303: Line 299:
  
  
'''Example'''  
+
'''例子'''  
  
  
 
''loc2'' = ''loc1:loc''
 
''loc2'' = ''loc1:loc''
  
where ''loc'' is a NULL transformation
+
这里''loc''是一个NULL转换
  
  
Line 317: Line 313:
  
  
Inverse transformations and NULL transformations
+
逆变换和NULL变换
  
==Direct coordinate transformation==
+
==正坐标系变换==
  
  
The direct coordinate transformation translates joint variables (in degrees) into location variables (in mm) of the tool point center (modal value), referenced to the robot base (modal value). The system function used in this case is: '''<nowiki><location> = ToCart(<robot>, <joint position>) </nowiki>'''It converts a set of joint coordinates to an equivalent transformation value using the geometric data of the robot given as a function argument. The computed location represents the position and orientation of the end of the tool in the World coordinate system taking into consideration the current TOOL transformation and BASE offset.
+
直接坐标变换将关节变量(以度为单位)转换为工具点中心(模态值)参考机器人基准(模态值)的位置变量(以mm为单位)。在这种情况下使用的系统功能是: '''<nowiki><location> = ToCart(<robot>, <joint position>) </nowiki>'''它使用以函数参数给出的机器人的几何数据将一组关节坐标转换为等效变换值。计算出的位置代表世界坐标系中工具末端的位置和方位,考虑到当前的TOOL变换和BASE偏移。
  
  
Application :
+
应用:
  
  
Line 332: Line 328:
 
'''input''' : ''jtloc '': joint  
 
'''input''' : ''jtloc '': joint  
  
'''output''': ''trans '': computed location based on the given joint values of ''jtloc''
+
'''output''': ''trans '': 基于''jtloc''的给定关节值计算位置
  
See Also: [[MC-Basic:TOCART|TOCART]]
+
参见: [[MC-Basic:TOCART|TOCART]]
  
=== Example ===
+
===例子===
  
  
The series of instructions below computes the position and orientation that the robot will be moved to if its current location is altered by rotating joint 1 by 10 degrees.
+
以下一系列说明如果通过将关节1旋转10度来改变其当前位置,则计算机器人将移动到的位置和方位。
  
  
Line 348: Line 344:
 
''trans = ToCart(jtloc)''
 
''trans = ToCart(jtloc)''
  
==Inverse coordinate transformation==
+
==逆坐标变换==
  
  
The inverse coordinate transformation translates robot locations into joint positions according to configuration flags and the modal tool & base values.
+
逆坐标转换根据配置标志和模态工具和基值将机器人位置转换为关节位置。
  
The system function used in this case is: '''<nowiki><joint position> = ToJoint(<robot>, <location>, <cfg. Flags>)</nowiki>'''
+
在这种情况下使用的系统功能是: '''<nowiki><joint position> = ToJoint(<robot>, <location>, <cfg. Flags>)</nowiki>'''
See Also: [[MC-Basic:TOJOINT|TOJOINT]]
+
参见: [[MC-Basic:TOJOINT|TOJOINT]]
  
{{Note | The conversion from cartesian into joint coordinates can result in several configuration solutions linked to a cartesian position. The desired configuration can be forced by altering configuration flags. }
+
{{Note | 从笛卡尔转换为关节坐标可以导致与笛卡尔位置相关联的多种配置解决方案。可以通过更改配置标志强制转换为所需的配置。 }
  
  
The number and type of configuration flags depends on each robot type. The following table defines configuration flags of each supported robot type:
+
配置标志的数量和类型取决于每种机器人类型。 下表定义了每种支持的机器人类型的配置标志:
  
  
Line 407: Line 403:
 
|}
 
|}
  
The configuration flag argument of the '''tojoint''' function is defined as:
+
'''tojoint'''函数的配置标志参数定义为:
  
  
Line 413: Line 409:
  
  
Note! Constants '''lefty, righty, above, below, flip''' and '''noflip''' are defined as built-in constants of the MC-Basic language.
+
注意!常量'''lefty, righty, above, below, flip''''''noflip'''被定义为MC-Basic语言的内置常量。
  
  
=== Example ===
+
=== 示例 ===
  
  
In PUMA RX90 manipulator the following joint point: '''{0 , -45 , 135 , 0 , 90 , 0}''' corresponds to the Cartesian coordinates:  
+
在PUMA RX90机械手中,以下关节点: '''{0 , -45 , 135 , 0 , 90 , 0}''' 对应于笛卡尔坐标:  
  
 
'''<nowiki>#{768.198 , 0 , 233.198 , 0 , 180 , 0} </nowiki>'''
 
'''<nowiki>#{768.198 , 0 , 233.198 , 0 , 180 , 0} </nowiki>'''
  
  
and the following configuration: lefty, above, noflip. Therefore the configuration flags of the ToJoint function will be expressed as: (1-0)*2<sup>0 </sup>+ (2-1)*2<sup>1 </sup>+ (1-1)*2<sup>2 </sup><nowiki>= 2. So the opposite direction will be:</nowiki>
+
和以下配置:lefty, above, noflip。 因此,ToJoint函数的配置标志将被表示为(1-0)*2<sup>0 </sup>+ (2-1)*2<sup>1 </sup>+ (1-1)*2<sup>2 </sup><nowiki>= 2。所以相反的方向是:</nowiki>
  
 
'''-->?ToJoint(#{768.198 , 0 , 233.198 , 0 , 180 , 0},0b010)'''
 
'''-->?ToJoint(#{768.198 , 0 , 233.198 , 0 , 180 , 0},0b010)'''
Line 436: Line 432:
  
  
= Trajectory Interpolation =
+
= 轨迹插值 =
Joint interpolated (natural) motion MOVE
+
关节插值(固有)运动MOVE
 
 
  
The MOVE instruction causes a joint-interpolated motion. That is, intermediate command points between the initial and final robot locations are computed by interpolating linearly between the initial and final joint positions. Any changes in configuration requested by the program are executed during the motion. If the MOVE is given on joint coordinates then the command configuration (acmd, ecmd, wcmd) flags must agree (be the same or “auto”) with the configuration flags of the given target point. Joint interpolated movement is determined by the regular MC group parameters (vcruise, acc, dec, jerk).
 
  
==Linear interpolated motion MOVES==
+
MOVE指令为关节插补运动。 也就是说,机器人初始和最终位置之间的中间命令点通过在初始和最终关节位置之间线性插值来计算。运动期间执行程序请求的配置的任何更改。如果在关节坐标上给出了MOVE,则命令配置(acmd,ecmd,wcmd)标志必须与给定目标点的配置标志一致(相同或“自动”)。 关节插值运动由常规MC组参数(vcruise,acc,dec,jerk)确定。
  
 +
==线性插值运动MOVES==
  
The MOVES instruction causes a straight-line motion. During such a motion, the tool center point is moved along a straight-line path and is smoothly rotated to its final orientation. Changes of configuration are not allowed during straight-line motions, except in cases when the commanded configuration flags are given with “auto” value and the movement allows it. Straight-line movement is determined by the pairs of translation/rotation parameters for velocity, acceleration and jerk: (vtran, atran, dtran, vrot, arot, jrot).
 
  
 +
MOVES指令为直线运动。在这样的运动过程中,工具中心点沿着直线路径移动并平滑地旋转到其最终方位。在直线运动期间不允许更改配置,除非在命令配置标志以“自动”值给出的情况下,运动允许。直线运动由速度,加速度和加速度的平移/旋转参数对决定:(vtran,atran,dtran,vrot,arot,jrot)。
  
==Circular (arc) interpolated motion MOVES==
+
==圆(弧)插值运动CIRCLE==
  
  
The CIRCLE instruction causes a circular or arc motion. During such a motion, the tool center point is moved along a arc (or circle) path and is smoothly rotated to its final orientation. Changes of configuration are not allowed during circular-line motions, except in cases when the commanded configuration flags are given with “auto” value and the movement allows it. Note that in cases of circular interpolation tool orientation is rotated around vector normal on the circle plane from its initial to its final value. Circular movement is determined by the pairs of translation/rotation parameters for velocity, acceleration and jerk: (vtran, atran, dtran, vrot, arot, jrot).
+
CIRCLE指令为圆或圆弧运动。在这样的运动过程中,工具中心点沿圆弧(或圆)路径移动并平滑地旋转到其最终方位。在圆弧-线运动期间不允许更改配置,除非在命令配置标志以“auto”值给出的情况下,并且运动允许。注意,在圆弧插补的情况下,工具方向将圆形平面上的矢量法线从其初始值旋转到其最终值。圆弧运动由速度,加速度和加速度的转换/旋转参数对决定:(vtran,atran,dtran,vrot,arot,jrot)。
  
  
==''ORIENTATION INTERPOLATION DESCRIPTION''==
+
==''方位插值说明''==
  
  
Having the initial and final orientation expressed as quaternions (Q<sub>i</sub>, Q<sub>f</sub>) the orientation interpolation will be done according to the formula:
+
初始和最终方向以四元数(Q<sub>i</sub>, Q<sub>f</sub>) 表示,方向插值将根据公式进行:
  
 
<math>Q(t) = [cos(\phi(t)/2), sin(\phi(t)/2) \cdot n] Q_i</math>
 
<math>Q(t) = [cos(\phi(t)/2), sin(\phi(t)/2) \cdot n] Q_i</math>
  
  
Where vector '''r'''  and angle <math>\phi</math> are defined from:
+
其中矢量'''r'''  和角度 <math>\phi</math> 由以下定义:
  
  
 
<math>[cos(\phi(t)/2), sin(\phi(t)/2) \cdot r] =Q_f \cdot Q_i^{-1}</math>
 
<math>[cos(\phi(t)/2), sin(\phi(t)/2) \cdot r] =Q_f \cdot Q_i^{-1}</math>
  
The rate of change of angle <math>\phi</math> is proportional to the rate of change of the WORLD position (X,Y,Z) of the robot movement.
+
角度<math>\phi</math>的变化率与机器人运动的WORLD位置(X,Y,Z)的变化率成比例。
  
  
The angle phi of the above formula can be always changed in two directions: positive & negative. One will be shorter the other longer, but this does not necessary give shorter movements in joint space. Therefore the user has the ability to influence orientation interpolation using the '''OrientationFollowing''' property of the robot. The values of the orientation-following property are:
+
上述公式的角度phi可以总是在两个方向上改变:正和负。一个会比另一个更短一些,但这并不需要在关节空间中给出更短的移动。 因此,用户可以使用机器人的OrientationFollowing属性来影响方位插值。 方向跟随属性的值为:
  
  
0 – Shortest path in world coordinates ( shortest orientation path)
+
0 – 世界坐标下最短路径(最短方位路径)
  
1 – Shortest path in joint coordinates (shortest movement of fourth joint for SCARA).
+
1 – 关节坐标最短路径(SCARA第四关节最短运动)
  
2 - longer path in world space
+
2 - 在世界空间更长的路径
 +
3 - 在关节空间更惨的路径
 +
4 –世界空间的正方向
  
3 - longer path in joint space
+
5 – 关节空间的正方向  ''''' - 最后关节标志'''''
  
4 Positive direction in world space
+
6 世界空间负方向
  
5 Positive direction in joint space ''''' - sign of last joint'''''  
+
7 关节空间负方向 ''''' - 最后关节标志'''''
  
6 – Negative direction in world space
 
  
7 – Negative direction in joint space  ''''' - sign of last joint'''''
+
参见:
 
 
 
 
See Also:
 
 
*[[Orientation_Following_Flag|Orientation_Following_Flag]]
 
*[[Orientation_Following_Flag|Orientation_Following_Flag]]
 
*[[MC-Basic:robot.ORIENTATIONFOLLOWING|<robot>.ORIENTATIONFOLLOWING]]
 
*[[MC-Basic:robot.ORIENTATIONFOLLOWING|<robot>.ORIENTATIONFOLLOWING]]
 
*[[MC-Basic:robot.ORIENTATIONCOMPLEMENT|<robot>.ORIENTATIONCOMPLEMENT]]
 
*[[MC-Basic:robot.ORIENTATIONCOMPLEMENT|<robot>.ORIENTATIONCOMPLEMENT]]
  
==''GENERAL REMARKS ABOUT MOVEMENTS''==
+
==''关于运动的一般注释''==
  
  
There are four different combinations of interpolation type and target points. The target point can be given in world or in joint coordinates and the interpolation can be straight-line or joint-interpolated (natural). For both cases of '''straight-line''' (cartesian interpolation) motion the following rules apply:
+
插值类型和目标点有四种不同的组合。 目标点可以以世界或关节坐标中给出,并且插值可以是直线或关节插值(固有)。 对于 '''直线 '''(笛卡尔插值)运动的两种情况,适用以下规则:
  
  
* The actual value of Arm - flag (afbk) does not change during the motion. It’s initial and final value must be the same, except the case when the motion starts form an “auto” value of the flag.
+
* 运动中Arm-flag(afbk)的实际值不会改变。 它的初始值和最终值必须相同,除非运动开始形成标志的“自动”值。
* The actual value of Elbow - flag (efbk) does not change during the motion. It’s initial and final value must be the same, except the case when the motion starts form an “auto” value of the flag.
+
* 在运动过程中,Elbow - flag(efbk)的实际值不会改变。它的初始值和最终值必须相同,除非运动开始形成标志的“自动”值。
* The actual value of Wrist –flag (wfbk) does not change during the motion it’s initial and final value must be the same, except two cases:  when the motion starts form an “auto” value of the flag. when the wcmd is given with an “auto” value and the motion passes through wrist singularity ('''pcmd{5} =0''') not affecting the fourth and the sixth joint.
+
* 在运动过程中Wrist –flag(afbk)的实际值不会改变。它的初始和最终值必须相同,除了两种情况:一是运动开始时形成标志的“自动”值。二是当wcmd具有“自动”值,并且运动通过手腕奇异性(pcmd {5} = 0)时,不影响第四和第六关节。
  
Straight line motion with joint target ('''MOVES {…,…,…}''')movement is interpolated in Cartesian space so the changes of XYZ coordinates are linear. User can specify configuration command flags (acmd, ecmd, wcmd) but they must comply with the given target point. If from some reason (usually it is the orientation-following ) the given target point is not reached in joint space (in world space it is always reached!) an error will be generated. Typically the last three joints are reached in other values which differ for ±360 degrees, but the Cartesian point is the same.
+
使用关节目标('''MOVES {…,…,…}''')的直线运动在笛卡尔空间插值,因此XYZ坐标的变化是线性的。 用户可以指定配置命令标志(acmd,ecmd,wcmd),但它们必须符合给定的目标点。 如果由于某种原因(通常是方向跟随),在关节空间(在世界空间中始终达到!)不会达到给定的目标点!将会生成错误。 通常,最后三个关节可以达到±360度不同的其他值,但笛卡尔点是相同的。
  
  
In this case the '''OrientationFollwing''' flag is ignored and all computation will be done as the user set the value of '''1''' (closest path in joint space).
+
在这种情况下,'''OrientationFollwing'''标志将被忽略,并且所有的计算都将在用户设置值1(关节空间中的最近路径)的情况下完成。
  
Straight line motion with Cartesian target ('''MOVES #{…,…,…}''')movement is interpolated in Cartesian space so the changes of XYZ coordinates are linear. User can specify configuration command flags (acmd, ecmd, wcmd), only the proper setup will be allowed, else an error will be returned.
+
使用笛卡儿目标('''MOVES #{…,…,…}''')的直线运动在笛卡尔空间插值,因此XYZ坐标的变化是线性的。 用户可以指定配置命令标志(acmd,ecmd,wcmd),只允许正确设置,否则将返回错误。
  
Joint –interpolated motion with joint target ('''MOVE {…,…,…}''')movement is interpolated in Cartesian space so the changes of j1,…,j6 are linear. The configuration flags are ignored.
+
关节 –具有关节目标('''MOVE {…,…,…}''')的关节插值运动在笛卡尔空间插值,所以j1,...,j6的变化是线性的。 配置标志被忽略。
  
Joint –interpolated motion with Cartesian target ('''MOVE #{…,…,…}''')movement is interpolated in Cartesian space so the changes of j1,…,j6 are linear. The configuration flags are taken into account when computing target coordinates. If “auto” configuration flag is selected the point closest to the target will be chosen.
+
关节 –用笛卡尔目标('''MOVE #{…,…,…}''')的关节插值运动在笛卡尔空间插值,所以j1,...,j6的变化是线性的。 计算目标坐标时考虑配置标志。 如果选择“自动”配置标志,则将选择最接近目标的点。
  
  
===Case of invalid selection of configuration flags.===
+
===配置标志选择无效的情况===
  
  
Normally the system does not allow configuration flag change during cartesian-interpolated motions (MOVES, CIRCLE, PASSTHROUGH) if such a change is commanded an error will be returned and the motion will be not started. This occurs when the command configuration flags (acmd, ecmd, wcmd) differs from the feedback configuration flags at the start point (afbk,efbk,wfbk). However exceptions exist when the command flags are given with “'''auto(0)'''” value, depending on the specific robot model, the system chooses the same configuration as in the start position.
+
通常,系统不允许在笛卡尔插值运动(MOVES,CIRCLE,PASSTHROUGH)期间进行配置标志更改,如果此类命令更改将返回错误,并且运动将不会启动。 当命令配置标志(acmd,ecmd,wcmd)与起始点(afbk,efbk,wfbk)上的反馈配置标志不同时,会发生这种情况。 但是,根据特定的机器人型号,当命令标志为“'''auto(0)'''” 值时,系统将选择与起始位置相同的配置,但存在异常。
  
  
In '''PUMA''' kinematics, there are special cases when the configuration flags can change during the cartesian-interpolated motion.
+
'''PUMA'''运动学中,有些特殊情况下笛卡尔插值运动期间配置标志可以改变
  
 +
当wcmd设置为“'''auto(0)'''”并发出直线运动之一时,'''WRIST''' 标志可以更改。 如果这样的动作通过第五关节角度的全部零,那么手腕标记就会改变。 然而,这可能会引起关节4和6的相反旋转。如果此旋转太快,将返回错误信息,并且将取消运动。为了防止用户在这些点附近命令低笛卡尔速度(vrot,vtran)。
  
A change of the '''WRIST''' flag can be obtained when the '''wcmd''' is set to “'''auto(0)'''” and issuing one of the straight line motions. If such a motion passes thorough zero of the fifth joint angle there is a possibility that the wrist flag is changed. However, this can sometimes introduce opposite rotations of joints 4 and 6. If this rotation is too fast an error message will be returned and the motion will be canceled. In order to prevent it user can command low Cartesian speed (vrot, vtran) near these points.
 
  
 
+
在直线运动(MOVES)通过臂点奇点的情况下,可以获得 '''ARM''''''ARM'''标志的改变,在PUMA机器人d2 = 0的情况下,点X = 0,Y = 0,Z = a2 + d4 + d6,或者在d2≠0的情况下(RX60)为圆X = d2cosα,Y = d2sinα,Z = a2 + d4 + d6。
A change of the '''ARM''' and '''ELBOW''' flags can be obtained in the case of straight-line motion (MOVES) going through the arm point singularity which in case of PUMA robot with d2=0 is point X = 0, Y = 0, Z =a2+d4+d6 , or in case d2≠0 (RX60) is a circle X = d2 cos α, Y = d2 sin α, Z = a2+d4+d6.
 
  
 
<center>[[Image:AXY;ShoulderChange.png]]</center>
 
<center>[[Image:AXY;ShoulderChange.png]]</center>
  
  
Movements with the target point given in '''joint''' coordinates are treated differently. In these cases target joint coordinates and command configuration flags must comply (be the same or have auto value). If this is not the case motion will be not executed and an error will be returned.
+
'''关节'''坐标给出的目标点的运动受到不同的对待。 在这些情况下,目标关节坐标和命令配置标志必须符合(相同或具有自动值)。 如果不是这样,运动将不被执行,并且将返回错误。
  
= User Frame system =
+
= 用户坐标系 =
The softMC system is enriched with a set of user-definable working frames. All working frames are available both modally and nodally. All user frames must have the same location type (XYZ, XYZR, XYZYPR …) as the parent robot.  
+
oftMC系统丰富了一组用户可定义的工作坐标系。 所有工作坐标系模式和节点都可用。 所有用户坐标系必须具有与父机器人相同的位置类型(XYZ,XYZR,XYZYPR ...)。
  
Working with robots the following user-definable frames are provided:
+
使用机器人提供以下用户可定义的坐标系:
  
  
* World frame.Default Cartesian coordinate system. This frame is usually located at the robot base.
+
* 世界坐标系。缺省笛卡尔坐标系。 这个坐标系通常位于机器人底座。
* Base frame.The frame of the robot from the user-point of view. Normally used to correct rotation or inclination of robot mounting. (Usable for ceiling mounted robots).
+
* 基坐标系。从用户角度来看机器人坐标系。 通常用于校正安装旋转或倾斜机器人。(可用于吊装的机器人)。
* Tool frame.Frame attached to the tool mounted on the robot, closely related to the tool geometry. Useful for describing tasks made by the attached tool (grinding, debarring, screwing, …)
+
* 工具坐标系。坐标系连接到安装在机器人上的工具,与工具几何形状密切相关。 用于描述所附工具所做的任务(磨削,去毛刺,拧紧,...)
* Machine-Table Frame.Frame related to the machine robot is working with.
+
* 工作台坐标系 机器人使用的工作台坐标系
* Work-Piece Frame.Frame related to the work-piece mounted on the machine robot is working with.
+
* 工件坐标系。机器人使用的工作台上工件的坐标系
  
 
[[Image:USERFRAME.PNG]]
 
[[Image:USERFRAME.PNG]]
  
All location properties of the robot are always expressed using the whole user-frame system, therefore always in the Work-Piece Frame defined by the whole user-frame chain. Using the previously defined compound transformation we have:
+
机器人的所有位置属性始终以整个用户坐标系表示,因此始终位于整个用户坐标系链所定义的工件坐标系中。 使用之前定义的复合变换,我们有:
  
 
<center>'''here=MachineTable<sup>-1</sup>:WorkPiece<sup>-1</sup>:Base: here<sub>world</sub>:Tool'''</center>
 
<center>'''here=MachineTable<sup>-1</sup>:WorkPiece<sup>-1</sup>:Base: here<sub>world</sub>:Tool'''</center>
  
  
{{Note|Setting new values the '''tool''' property can cause a significant increase of position error ('''pe'''). The value of '''pe''' is always calculated at the tool-tip point, so increased tool length and small orientation errors can lead to an increased '''pe'''. This is obvious when putting '''pe''' into above equation: }}
+
{{Note|设置新值时, '''工具 '''属性会导致位置误差('''pe''')的显着增加。'''pe''' 的值始终在工具尖端计算,因此增加工具具长度和小方向误差可导致'''pe'''增加。 将'''pe'''置于以下的方程式中是很明显的: }}
  
 
<center>'''pe=MachineTable<sup>-1</sup>:WorkPiece<sup>-1</sup>:Base: pe<sub>world</sub>:Tool'''</center>
 
<center>'''pe=MachineTable<sup>-1</sup>:WorkPiece<sup>-1</sup>:Base: pe<sub>world</sub>:Tool'''</center>
  
  
== TOOL ==
+
== 工具 ==
Tool is a Robot property which informs the system to use the specified location as the '''tool''' transformation. It defines the position and orientation of the tool tip in relation to the center of the tool flange. The default tool transformation is the NULL transformation, which can be expressed as TOOL = #{0,0,0,0,0,0}
+
工具是一个Robot属性,它通知系统使用指定的位置作为''' 工具''' 转换。它定义工具尖端相对于工具法兰中心的位置和方向。 默认的工具转换是NULL转换,可以表示为TOOL = #{0,0,0,0,0,0}
  
  
'''Example'''
+
'''例子'''
  
  
Line 570: Line 562:
  
  
== BASE ==
+
== 基座标 ==
Base is a Robot property which informs the system to use the specified location as the '''base''' transformation. It defines the position and orientation of the arm in the cell according to the WORLD reference.
+
基座标是一个Robot属性,它通知系统使用指定的位置作为'''base'''转换。 它根据WORLD参考来定义机械臂连杆的位置和方向。
 
 
  
The default base transformation is the NULL transformation, which can be expressed as Puma.base = #{0,0,0,0,0,0}
 
  
== MachineTable ==
+
默认的基坐标变换是NULL变换,可以表示为Puma.base =#{0,0,0,0,0,0}
'''MachineTable''' is a Robot property which informs the system to use the specified location as the '''machinetable''' transformation. It defines the position and orientation machine working frame relative to the BASE reference.
 
  
 +
== 工作台 ==
 +
'''工作台'''是一个Robot属性,它通知系统使用指定的位置作为'''工作台'''变换。 它定义了相对于BASE参考的位置和方向机床工作坐标系。
  
The default machinetable transformation is the NULL transformation, which can be expressed as Puma.MachineTable = #{0,0,0,0,0,0}
 
  
 +
默认的工作台变换是NULL变换,可以表示为Puma.MachineTable =#{0,0,0,0,0,0}
  
== WorkPiece ==
 
WorkPiece is a Robot property which informs the system to use the specified location as the '''workpiece''' transformation. It defines the position and orientation of work-piece relative to the MACHINE TABLE reference.
 
  
 +
== 工件 ==
 +
工件是一种Robot属性,通知系统使用指定位置作为'''工件'''变换。 它定义了参考MACHINE TABLE的工件的位置和方向。
  
The default base transformation is the NULL transformation, which can be expressed as Puma.WorkPiece = #{0,0,0,0,0,0}
+
默认的基本变换是NULL变换,可以表示为Puma.WorkPiece ={0,0,0,0,0,0}
  
  
Line 596: Line 587:
 
[[Image:AXY;Robot Working Farmes.png]]  
 
[[Image:AXY;Robot Working Farmes.png]]  
  
So we have:
+
因此有:
  
  
Line 604: Line 595:
  
  
For the given setup user frames will be:
+
对于给定的设置用户坐标系将是:
  
 
'''Base = #{300,200,1000,0,180,180}'''
 
'''Base = #{300,200,1000,0,180,180}'''
Line 615: Line 606:
  
  
Therefore we have:
+
因此有:
  
 
'''P<sub>WP</sub><nowiki>= WorkPiece</nowiki><sup>-1</sup>: MachineTable<sup>-1</sup>:Base:P<sub>World</sub>:Tool'''
 
'''P<sub>WP</sub><nowiki>= WorkPiece</nowiki><sup>-1</sup>: MachineTable<sup>-1</sup>:Base:P<sub>World</sub>:Tool'''
  
== Side effects ==
+
== 副作用 ==
Setting the any of the user frames '''modally (tool, base, machinetable, workpiece),''' have an immediate effect on all the position computations:
+
'''模态(工具,基座,工作台,工件'''设置任何用户框架,可立即对所有位置计算产生影响::
  
 
* Setpoint
 
* Setpoint
Line 628: Line 619:
 
* ToJoint
 
* ToJoint
  
but doesn’t affect the current motion.
+
但不影响目前的运动。

Latest revision as of 06:04, 10 August 2017

TOP2.png
语言: English  • 中文(简体)‎

介绍

本文件是根据运动学方案文件编写的并作为额外开发需求。

  • PUMA 运动学
  • DELTA运动学
  • 工具, 基座标和复合操作

始终保持PUMA和DELTA机器人的新运动学模型,保持对SCARA机器人的应用。如果没有明确说明不同,那么为SCARA模型开发和实现的所有机器人功能也将适用于两种型号。因此所有的功能,方法和定义的特征对所有三个模型都是相同的。上述机器人共同的功能是::

  • 直线运动
  • 圆运动
  • VIA (Pass-Through) 运动
  • 连续路径-混合
  • 传送带跟踪(Moving Frames).

这些功能在本文档中没有描述。

概述

本文档描述了softMC系统中具有以下运动学模型(增加中)的一般运动学实现:

  • 4自由度SCARA机器人运动学
  • 6自由度典型PUMA机器人的PUMA运动学
  • 4自由度DELTA并联机器人的DELTA运动学
  • 4自由度SpeedPicker机器人的TARN运动学
  • 6自由度系统的一般用户自定义机器人运动学的USER运动学。

定义

  • DOF – 机器人的“自由度”, 通常是机器人中的电机数量。
  • DH – 描述机器人几何形状的DH参数,每个机器人连杆的(θ i, α i, ai, di)
  • “Tool-Center-Point” - 末端机器人连杆的中心点.默认位于第六连杆法兰的中心,如果安装有夹具,则坐标由工具属性替代(将在阶段3中描述).
  • 在整个文档中,我们使用术语“”来描述机器人工具中心的位置和方向矢量。根据机器人类型,该点可以是不同向量空间(二,三维或六维)的元素。
  • “location”是包含点的笛卡尔坐标的softMC数据类型
  • “joint location” or “joint” 是包含点的关节坐标的softMC数据类型。

坐标系

笛卡尔坐标和欧拉角

目前的方法是定义位置和方向的六维空间,每个具有三个自由度。对于具有或多或少维度的系统,将使用其他坐标系。


每个机器人类型用不同的组型进行描述,这在两个域中的softMC Basic-Moves语言中表达。一个是定义组,然后使用不同的模型值。 另一个问题是使用具有专用特征值(XYZ,XYZR,...)的位置或关节机器人类型。 每个机器人(组)型号有着不同的机器人类型,具体取决于轴数和型号代码:



 

softMC robot-model codes:
Description robot-model code point-type
no model -1  
Cartesian 1  
Cartesian (Pitch & Roll) 1 PR
Cartesian ( X and Y) 1 XY
Cartesian (X , Y and Roll) 1 XYR
Cartesian (X , Y and Z) 1 XYZ
Cartesian (X , Y , Z and Roll) 1 XYZR
Cartesian (X , Y , Z , Roll and Pitch) 1 XYZRP
Cartesian (X , Y , Z ,Yaw , Roll and Pitch) 1 XYZYPR
Puma 2 XYZYPR
No Coupling 3  
SCARA (X, Y, Z and Roll) 4 XYZR
SCARA (X, Y, Z ) 4 XYZ
User Defined 5  
Delta(Flex Picker) (X, Y, Z and Roll) 6 XYZR
Delta(Flex Picker) (X, Y, Z ) 6 XYZ
Traverse Arm (Speed Picker) (X, Y, Z and Roll) 7 XYZR
Traverse Arm (Speed Picker) (X, Y, Z ) 7 XYZ
Scissor Kinematics (X, Y, Z and Roll) 8 XYZR
Scissor Kinematics (X, Y, Z ) 8 XYZ
Chair Side Engine - 5ON 9 XYZAB
Chair Side Engine - 5OFF 10 XYZAB
3PPPR 11 XYR
Lab Side Engine - 5ON 12 XYZAB
Lab Side Engine - 5OFF 13 XYZAB
4 Bar linkage 14 XY
GSR 15 XYZPR
EVEREST - 5ON 16 XYZPR
EVEREST - 5OFF 17 XYZPR
PALLETIZING ROBOT 18 XYZR
Linear Delta robot 21 XYZR

例子

PUMA机器人定义

common shared puma as group axnm = a1 axnm = a2 axnm = a3 axnm = a4 axnm = a5 axnm = a6 model = 2


PUMA机器人位置: common shared lct as location of XYZYPR

DELTA机器人定义

common shared delta as group axnm = a1 axnm = a2 axnm = a3 axnm = a4 model = 6


DELTA机器人位置: common shared lct as location of XYZR


XYZYPR vs. XYZR

PUMA的XYZYPR代表:X-Y-Z-Yaw-Pitch-Roll坐标,SCARA和DELTA机器人的XYZR代表X-Y-Z-Roll。 在这两种情况下,旋转角定义了相同的事情 - 它是围绕Z轴的旋转角度。 稍后当复合操作符被定义时,这将被记录,以下关系为真:


X,Y,Z, ,Roll corresponds to X,Y,Z,Roll with Yaw & Pitch equals zero.


笛卡尔坐标描述了机器人位置,定义了所声明的机器人工具中心点的位置和方向。 一个位置可以用至少三种方式表达,表示在笛卡尔空间中的所有6个自由度:


  • X Y Z Yaw Pitch Roll
  • 齐次变换矩阵
  • X Y Z 四元数

所有方法的共同点是位置和转换之间的对偶性。 注意,笛卡尔位置给出了工具中心点的坐标,该坐标可以始终被解释为从WORLD基点(空间原点)到工具中心点的转换。

XYZ Yaw Pitch Roll

该坐标表示主要用于机器人。 softMC系统将其用于用户相关的输入和输出(常规分配和打印)。


  • 平移中的3个自由度(X,Y,Z)以mm表示,定义工具中心点相对于机器人底座的位置。
  • 在旋转 3个自由度(下文定义偏航,俯仰和横滚)以度表示,定义工具尖端的方向。 Yaw,Pitch and Roll是修正的欧拉角,分别对应于Z,Y,Z轴周围的顺序旋转。




NOTE-Info.svgNOTE
请注意,偏航,俯仰和翻滚顺序的顺序很重要!

齐次变换矩阵

位置表示的这种方法不是在内部使用的,而是在softMC的用户接口中使用,但它主要用在机器人文献中。 因此,本文档仅供参考,仅供演示和解释之用。 位置变量表示为(4×4)矩阵:


loc = AXY;HMatrix.png


这里,xx_axis, yx_axis, zx_axis是定义x轴相对于其初始位置等的变化的归一化值,等...

X,Y,Z是工具中心点相对于机器人底座的位置值。

最后一行(0 0 0 1)用于归一化。


示例 1

if loc坐标为 {100, 80, 150, 45, 0, 0}

loc作为转换矩阵将被写入 :


loc = AXY;HomogenousMatrix.png


因为如图所示,只有45°的偏航旋转(围绕Z轴旋转)。

通常softMC系统中程序中是{X,Y,Z,Yaw,Pitch,Roll}格式。 这里使用齐次转换矩阵矩阵变换仅用于说明目的。

X Y Z Q (四元数)

  • 平移中的3个自由度(X,Y,Z)以mm表示,定义工具中心点相对于机器人底座的位置。
  • 使用归一化四元数Q表示的3个旋转自由度,其被描述为围绕矢量n 的旋转的角度phi[cos(phi/2), sin(phi/2)*n]

四元数旋转的描述由系统内部使用,但不能直接用于用户。 然而,在用户运动学的情况下,必须考虑到这一点。 四元数仅用于说明的目的,softMC系统对所有用户输入和输出使用欧拉角。

关节坐标

对于关节坐标,位置变量由n个分量定义表示每个轴的度(或mm)的值的(n数自由度根据运动学模型的零位置)。


关节坐标中的位置是n个关节值的数组:


Jnt_loc = {jnt1, jnt2, jnt3, jnt4, jnt5, jnt6}


可以通过索引定义以{i}的形式访问各个坐标: Jnt_loc{1}, Jnt_loc{2}, …


上述定义允许我们对关节坐标中的位置执行计算,例如加法,减法等...

Cartesian coordinates

对于笛卡尔坐标,位置变量由6个组件定义,表示值: X, Y, Z, Yaw, Pitch, Roll.

笛卡尔系统变量: here, setpoint


loc = <robot>.here系统维护变量,返回工具尖端参考机械臂参考的WORLD坐标系的当前变换。


笛卡尔位置定义:

系统使用前面带有"#"符号的大括号来区分关节位置和位置位置

#{x_value, y_value, z_value, yaw_value, pitch_value, roll_value}


示例 1

如果"r" 是圆的半径,"angle"是围绕圆的旋转角度,则变换为 :

#{r*COS(''angle''),'' r''*SIN(''angle''), 0, 0, 0, 0}

将在该圆上得到点。.

点操作

复合操作

定义两个笛卡尔点之间的复合运算符。 复合运算符使用':'符号定义。

因此,复合变换写为:

location = loc1 : loc2

这意味着 loc2 是相对于loc1定义的


复合变换是相应的齐次变换矩阵乘以另一个齐次变换矩阵的结果:



或使用四元数:

例子

point_name3 = point_name1:point_name2


point_name3point_name1point_name2的复合变换,并在基坐标系(WORLD)中定义。

AXY;BaseFrame.png


请注意,必须尊重复合转化的顺序(操作符不可交换)。

例子

hop =#{20,130,45,30,0,90}:point_name


没有定义相同的转换:


hop = point_name:#{20,130,45,30,0,90}

位置逆解

当在空间中控制轨迹时,逆变换对于机器人技术至关重要。 这个概念主要用于坐标系,以将轨迹移动到另一个地方,而无需重新示教点。 定义逆解的函数称为 INVERSE


逆变换是计算变换矩阵的逆。

INVERSE(loc) = AXY;InverseMatrix.png

AXY;Inverse.png

或使用四元数:

INVERSE(loc) = AXY;InverseQuat.png

示例: 逆变换的好处

示例 2

如果"坐标系"是定义圆的中心位置和其所在的平面的变换,则以下程序段将以1度的步长围绕圆周移动机器人终点。


FOR angle = 0 TO 360

MOVE frame:#{r*COS(angle*pi/180), r*SIN(angle*pi/180), 0, 0, 0, 0}

END


MOVE #{10,0,20,0,0,0):HERE:point = HERE is used as a location


位置分配


loc =#{0,0,0,0,0,0}


NULL变换对应于单位矩阵


NULL = AXY;NullMatrix.png


例子


loc2 = loc1:loc

这里loc是一个NULL转换


loc2 = AXY;NullTrans.png


  • loc2 is equal to loc1


逆变换和NULL变换

正坐标系变换

直接坐标变换将关节变量(以度为单位)转换为工具点中心(模态值)参考机器人基准(模态值)的位置变量(以mm为单位)。在这种情况下使用的系统功能是: <location> = ToCart(<robot>, <joint position>) 它使用以函数参数给出的机器人的几何数据将一组关节坐标转换为等效变换值。计算出的位置代表世界坐标系中工具末端的位置和方位,考虑到当前的TOOL变换和BASE偏移。


应用:


trans = ToCart (jtloc)

input : jtloc : joint

output: trans : 基于jtloc的给定关节值计算位置

参见: TOCART

例子

以下一系列说明如果通过将关节1旋转10度来改变其当前位置,则计算机器人将移动到的位置和方位。


jtloc = pfb

jtloc {1} = jtloc {1} +10

trans = ToCart(jtloc)

逆坐标变换

逆坐标转换根据配置标志和模态工具和基值将机器人位置转换为关节位置。

在这种情况下使用的系统功能是: <joint position> = ToJoint(<robot>, <location>, <cfg. Flags>) 参见: TOJOINT

{{Note | 从笛卡尔转换为关节坐标可以导致与笛卡尔位置相关联的多种配置解决方案。可以通过更改配置标志强制转换为所需的配置。 }


配置标志的数量和类型取决于每种机器人类型。 下表定义了每种支持的机器人类型的配置标志:


Robot type Flag Values Bit No. (ToJoint)
1 2
PUMA Arm lefty righty 0
Elbow below above 1
Wrist noflip flip 2
SCARA Arm lefty righty 0
DELTA - - -

tojoint函数的配置标志参数定义为:



注意!常量lefty, righty, above, below, flipnoflip被定义为MC-Basic语言的内置常量。


示例

在PUMA RX90机械手中,以下关节点: {0 , -45 , 135 , 0 , 90 , 0} 对应于笛卡尔坐标:

#{768.198 , 0 , 233.198 , 0 , 180 , 0}


和以下配置:lefty, above, noflip。 因此,ToJoint函数的配置标志将被表示为(1-0)*20 + (2-1)*21 + (1-1)*22 = 2。所以相反的方向是:

-->?ToJoint(#{768.198 , 0 , 233.198 , 0 , 180 , 0},0b010)

{0 , -45 , 135 , 0 , 90 , 0}

-->



轨迹插值

关节插值(固有)运动MOVE


MOVE指令为关节插补运动。 也就是说,机器人初始和最终位置之间的中间命令点通过在初始和最终关节位置之间线性插值来计算。运动期间执行程序请求的配置的任何更改。如果在关节坐标上给出了MOVE,则命令配置(acmd,ecmd,wcmd)标志必须与给定目标点的配置标志一致(相同或“自动”)。 关节插值运动由常规MC组参数(vcruise,acc,dec,jerk)确定。

线性插值运动MOVES

MOVES指令为直线运动。在这样的运动过程中,工具中心点沿着直线路径移动并平滑地旋转到其最终方位。在直线运动期间不允许更改配置,除非在命令配置标志以“自动”值给出的情况下,运动允许。直线运动由速度,加速度和加速度的平移/旋转参数对决定:(vtran,atran,dtran,vrot,arot,jrot)。

圆(弧)插值运动CIRCLE

CIRCLE指令为圆或圆弧运动。在这样的运动过程中,工具中心点沿圆弧(或圆)路径移动并平滑地旋转到其最终方位。在圆弧-线运动期间不允许更改配置,除非在命令配置标志以“auto”值给出的情况下,并且运动允许。注意,在圆弧插补的情况下,工具方向将圆形平面上的矢量法线从其初始值旋转到其最终值。圆弧运动由速度,加速度和加速度的转换/旋转参数对决定:(vtran,atran,dtran,vrot,arot,jrot)。


方位插值说明

初始和最终方向以四元数(Qi, Qf) 表示,方向插值将根据公式进行:


其中矢量r 和角度 由以下定义:


角度的变化率与机器人运动的WORLD位置(X,Y,Z)的变化率成比例。


上述公式的角度phi可以总是在两个方向上改变:正和负。一个会比另一个更短一些,但这并不需要在关节空间中给出更短的移动。 因此,用户可以使用机器人的OrientationFollowing属性来影响方位插值。 方向跟随属性的值为:


0 – 世界坐标下最短路径(最短方位路径)

1 – 关节坐标最短路径(SCARA第四关节最短运动)

2 - 在世界空间更长的路径 3 - 在关节空间更惨的路径 4 –世界空间的正方向

5 – 关节空间的正方向 - 最后关节标志

6 – 世界空间负方向

7 – 关节空间负方向 - 最后关节标志


参见:

关于运动的一般注释

插值类型和目标点有四种不同的组合。 目标点可以以世界或关节坐标中给出,并且插值可以是直线或关节插值(固有)。 对于 直线 (笛卡尔插值)运动的两种情况,适用以下规则:


  • 运动中Arm-flag(afbk)的实际值不会改变。 它的初始值和最终值必须相同,除非运动开始形成标志的“自动”值。
  • 在运动过程中,Elbow - flag(efbk)的实际值不会改变。它的初始值和最终值必须相同,除非运动开始形成标志的“自动”值。
  • 在运动过程中Wrist –flag(afbk)的实际值不会改变。它的初始和最终值必须相同,除了两种情况:一是运动开始时形成标志的“自动”值。二是当wcmd具有“自动”值,并且运动通过手腕奇异性(pcmd {5} = 0)时,不影响第四和第六关节。

使用关节目标(MOVES {…,…,…})的直线运动在笛卡尔空间插值,因此XYZ坐标的变化是线性的。 用户可以指定配置命令标志(acmd,ecmd,wcmd),但它们必须符合给定的目标点。 如果由于某种原因(通常是方向跟随),在关节空间(在世界空间中始终达到!)不会达到给定的目标点!将会生成错误。 通常,最后三个关节可以达到±360度不同的其他值,但笛卡尔点是相同的。


在这种情况下,OrientationFollwing标志将被忽略,并且所有的计算都将在用户设置值1(关节空间中的最近路径)的情况下完成。

使用笛卡儿目标(MOVES #{…,…,…})的直线运动在笛卡尔空间插值,因此XYZ坐标的变化是线性的。 用户可以指定配置命令标志(acmd,ecmd,wcmd),只允许正确设置,否则将返回错误。

关节 –具有关节目标(MOVE {…,…,…})的关节插值运动在笛卡尔空间插值,所以j1,...,j6的变化是线性的。 配置标志被忽略。

关节 –用笛卡尔目标(MOVE #{…,…,…})的关节插值运动在笛卡尔空间插值,所以j1,...,j6的变化是线性的。 计算目标坐标时考虑配置标志。 如果选择“自动”配置标志,则将选择最接近目标的点。


配置标志选择无效的情况

通常,系统不允许在笛卡尔插值运动(MOVES,CIRCLE,PASSTHROUGH)期间进行配置标志更改,如果此类命令更改将返回错误,并且运动将不会启动。 当命令配置标志(acmd,ecmd,wcmd)与起始点(afbk,efbk,wfbk)上的反馈配置标志不同时,会发生这种情况。 但是,根据特定的机器人型号,当命令标志为“auto(0)” 值时,系统将选择与起始位置相同的配置,但存在异常。


PUMA运动学中,有些特殊情况下笛卡尔插值运动期间配置标志可以改变

当wcmd设置为“auto(0)”并发出直线运动之一时,WRIST 标志可以更改。 如果这样的动作通过第五关节角度的全部零,那么手腕标记就会改变。 然而,这可能会引起关节4和6的相反旋转。如果此旋转太快,将返回错误信息,并且将取消运动。为了防止用户在这些点附近命令低笛卡尔速度(vrot,vtran)。


在直线运动(MOVES)通过臂点奇点的情况下,可以获得 ARMARM标志的改变,在PUMA机器人d2 = 0的情况下,点X = 0,Y = 0,Z = a2 + d4 + d6,或者在d2≠0的情况下(RX60)为圆X = d2cosα,Y = d2sinα,Z = a2 + d4 + d6。

AXY;ShoulderChange.png


关节坐标给出的目标点的运动受到不同的对待。 在这些情况下,目标关节坐标和命令配置标志必须符合(相同或具有自动值)。 如果不是这样,运动将不被执行,并且将返回错误。

用户坐标系

oftMC系统丰富了一组用户可定义的工作坐标系。 所有工作坐标系模式和节点都可用。 所有用户坐标系必须具有与父机器人相同的位置类型(XYZ,XYZR,XYZYPR ...)。

使用机器人提供以下用户可定义的坐标系:


  • 世界坐标系。缺省笛卡尔坐标系。 这个坐标系通常位于机器人底座。
  • 基坐标系。从用户角度来看机器人坐标系。 通常用于校正安装旋转或倾斜机器人。(可用于吊装的机器人)。
  • 工具坐标系。坐标系连接到安装在机器人上的工具,与工具几何形状密切相关。 用于描述所附工具所做的任务(磨削,去毛刺,拧紧,...)
  • 工作台坐标系 机器人使用的工作台坐标系
  • 工件坐标系。机器人使用的工作台上工件的坐标系

USERFRAME.PNG

机器人的所有位置属性始终以整个用户坐标系表示,因此始终位于整个用户坐标系链所定义的工件坐标系中。 使用之前定义的复合变换,我们有:

here=MachineTable-1:WorkPiece-1:Base: hereworld:Tool


NOTE-Info.svgNOTE
设置新值时, 工具 属性会导致位置误差(pe)的显着增加。pe 的值始终在工具尖端计算,因此增加工具具长度和小方向误差可导致pe增加。 将pe置于以下的方程式中是很明显的:
pe=MachineTable-1:WorkPiece-1:Base: peworld:Tool


工具

工具是一个Robot属性,它通知系统使用指定的位置作为 工具 转换。它定义工具尖端相对于工具法兰中心的位置和方向。 默认的工具转换是NULL转换,可以表示为TOOL = #{0,0,0,0,0,0}


例子


Puma.tool = #{25,0,100,0,45,0}


基座标

基座标是一个Robot属性,它通知系统使用指定的位置作为base转换。 它根据WORLD参考来定义机械臂连杆的位置和方向。


默认的基坐标变换是NULL变换,可以表示为Puma.base =#{0,0,0,0,0,0}

工作台

工作台是一个Robot属性,它通知系统使用指定的位置作为工作台变换。 它定义了相对于BASE参考的位置和方向机床工作坐标系。


默认的工作台变换是NULL变换,可以表示为Puma.MachineTable =#{0,0,0,0,0,0}


工件

工件是一种Robot属性,通知系统使用指定位置作为工件变换。 它定义了参考MACHINE TABLE的工件的位置和方向。

默认的基本变换是NULL变换,可以表示为Puma.WorkPiece =#{0,0,0,0,0,0}


AXY;PumaTool.png


AXY;Robot Working Farmes.png

因此有:


Pbase=Base:Pworld:Tool

Pbase=MachineTable:WorkPiece:PWorkP


对于给定的设置用户坐标系将是:

Base = #{300,200,1000,0,180,180}

Tool = #{50,0,0,90,45,0}

MachineTable = #{400,100,0,0,0,0}

WorkPiece = #{20,70,150,0,90,-90}


因此有:

PWP= WorkPiece-1: MachineTable-1:Base:PWorld:Tool

副作用

模态(工具,基座,工作台,工件设置任何用户框架,可立即对所有位置计算产生影响::

  • Setpoint
  • Here
  • Start
  • Dest
  • ToJoint

但不影响目前的运动。