Difference between revisions of "Inverse Dynamic Model/zh-hans"

From SoftMC-Wiki
Jump to: navigation, search
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Languages}}
+
{{Languages|Inverse_Dynamic_Model}}
 
<div id="BackToTop"  class="noprint" style="background-color:; position:fixed; bottom:32px; left:95%; z-index:9999; padding:0; margin:0;">
 
<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; ">
 
<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; ">
Line 112: Line 112:
 
<center> <math> TFac = \frac{1000000*SL}{MKT*MICONT*GR} </math></center>
 
<center> <math> TFac = \frac{1000000*SL}{MKT*MICONT*GR} </math></center>
  
When '''SL''' stands for Screw Lead or an equivalent parameter. figure 4 shows an example of a lead-screw lead. <br>
+
'''SL'''代表丝杆导程或等效参数。 图4为一个丝杆导程的例子。<br>
  
 
   
 
   
[[file: DM_4.png|center|300px|frame|<big><center>''figure 4 - An example of a lead-screw (top) and a lead-screw lead (bottom)'' </center></big>]]  
+
[[file: DM_4.png|center|300px|frame|<big><center>''4 - 丝杆 (顶部)和丝杆(底部)例子'' </center></big>]]  
  
  
  
===Linear Motors===
+
===直线电机===
This type is treated the same as the regular rotary axes, but the '''MKT''' is switched with the '''MKF''' property, which is in units of [N/A] and there is no gear, therefore the TorqueFactor would be: <br>  
+
这种类型与普通旋转轴的处理方式相同,但用 '''MKT''' 替换'''MKF'''属性,单位为[N/A],没有减速比, 因此TorqueFactor为: <br>  
 
<center> <math> TFac = \frac{1000000}{MKF*MICONT}\ </math></center>
 
<center> <math> TFac = \frac{1000000}{MKF*MICONT}\ </math></center>
  
  
===Operation Mode and PDOs===
+
===操作模式和PDO===
The operation mode of the drives while using the dynamic model should be '''cyclic synchronous position'''. The dynamic model is used to compute the required torque (or current) for each motor, however the results are never precise. The additive torque command is used only as a feed forward signal as mentioned in section 3. <br>
+
驱动器在使用动力学模型时的操作模式应该是'''周期同步位置模式'''。 动力学模型用于计算每台电机所需的转矩(或电流),但结果从来都不精确。 附加转矩指令仅用作第3节所述的前馈信号。 <br>
Here is the list of additional PDOs (additional to the ‘cyclic synchronous position’ PDOs) that are necessary to use the dynamic model: <br>  
+
以下是使用动力学模型所必需的其他PDO(‘周期同步位置模式’PDO之外)的列表。: <br>  
 
{| class = "wikitable" style="text-align: center"  
 
{| class = "wikitable" style="text-align: center"  
!PDO index
+
!PDO 索引
!Description
+
!描述
 
|-
 
|-
 
|RX: 0x60B2
 
|RX: 0x60B2
|Torque Offset – the additive torque signal
+
|转矩偏置 –附加转矩信号
 
|-
 
|-
 
|TX 0x6078
 
|TX 0x6078
|Current Actual Value the torque feedback signal
+
|实际电流值 转矩反馈信号
 
|}
 
|}
  
=How to perform the dynamic model parameters identification=
+
=如何进行动力学模型参数识别=
==Data acquisition==
+
==数据采集==
The process of identification is done by moving the robot while recording the movement parameters and internal motors torques. Then, the recorded data is used to extract the dynamic model parameters based on the robot model and the measurements.
+
识别过程是通过移动机器人来记录运动参数和内部电机转矩。然后,根据机器人模型和测量结果,使用记录的数据来提取动力学模型参数。
  
  
A good-quality data is important for obtaining good identification results. A high-quality data contains data points that are scattered over the movement space of the robot with varying velocities and accelerations. The scattered data yields a better fit of the parameters for a wide range of movements of the robot, allowing to predict the additive torque command with good accuracy.
 
  
 +
高质量的数据对于获得良好的识别结果非常重要。高质量数据包含以不同速度和加速度分布在机器人运动空间的数据点。分散的数据为机器人的各种运动提供更好的参数拟合,从而可以高精度地预测附加转矩指令。
 +
 +
 +
 +
推荐的移动类型是使用正弦波命令。该命令以指定的幅度和频率移动机器人的每个关节。为了获得良好的离散数据,每个关节的振幅应接近其全部位置范围,每个关节的频率应与其他关节不同。每个关节的频率决定了关节之间运动的相关性。如果两个或多个关节具有相同的频率,则它们总是处于相同的相位,这将导致非离散的数据。此外,如果某个关节的频率是另一个关节的频率的倍数,那么在更快的关节的几个周期(更确切地说,乘法因子)之后将会重复相同的运动。实际上,对于任何合理的频率值,运动将在几个周期后重复。但是,为了获得良好的结果,建议每个关节至少获得三个周期的数据。因此,只要运动在这个记录时间内不重复,频率就选择好了。 以下是三种关节机器人的一些示例:
  
The recommended type of movement is using the sinewave command. This command moves each joint of the robot in a specified amplitude and frequency. In order to receive a good scattered data, the amplitude of each joint should be close to its full position range and the frequency of each joint should be different from the other joints. The frequency of each joint determined the correlation of movement between the joints. If two or more joints have the same frequency, they will always be in the same phase together and this will result in a non-scattered data. Furthermore, if the frequency of some joint is a multiplication of the frequency of another joint, the same motion will be repeated after a few cycles (more precisely, the factor of multiplication) of the faster joint. Actually, the motion will be repeated after a few cycles for any rational frequency values. However, in order to obtain good result, it is recommended to obtain data for at least three cycles for each joint. Therefore, as long as the motion does not repeat itself in this recorded time, the frequency selections is just fine. Here are some examples for a three joints robot:
 
  
 
{| class = "wikitable" |style:align-text="center"
 
{| class = "wikitable" |style:align-text="center"
Line 152: Line 155:
 
!J<sub>2</sub>
 
!J<sub>2</sub>
 
!J<sub>3</sub>
 
!J<sub>3</sub>
!comment
+
!注释
!Quality
+
!质量
 
|-
 
|-
 
|1
 
|1
 
|2
 
|2
 
|1.2
 
|1.2
|j<sub>1</sub> and j<sub>2</sub> will repeat after 1 cycle o j<sub>1</sub> and 2 cycles of j<sub>2</sub>
+
|j<sub>1</sub>和j<sub>2</sub>将在j<sub>1</sub>的1个周期和j<sub>2</sub>的2个周期之后重复
 
|Bad
 
|Bad
 
|-
 
|-
Line 164: Line 167:
 
|1.2
 
|1.2
 
|1.2
 
|1.2
|j<sub>2</sub> and j<sub>3</sub> will repeat after 3 cycles of j<sub>2</sub> and 2 cycles of j<sub>3</sub>
+
|j<sub>2</sub>和j<sub>3</sub>将在j<sub>2</sub>的3个周期和j<sub>3</sub>的2个周期之后重复
 
|Medium
 
|Medium
 
|-
 
|-
Line 170: Line 173:
 
|1.3
 
|1.3
 
|1.5
 
|1.5
|j<sub>1</sub>, j<sub>2</sub> and j<sub>3</sub> will repeat after 11 cycles of j<sub>1</sub>, 13 cycles of j<sub>2</sub> and 15 cycles of j<sub>3</sub>
+
|j<sub>1</sub>,j<sub>2</sub>和j<sub>3</sub> 将在j<sub>1</sub>的11个周期,j<sub>2</sub>的13个周期和j<sub>3</sub>的15个周期之后重复
 
|Good
 
|Good
  
Line 176: Line 179:
  
  
The first example is not a good choice of frequencies, the second example is fine, and the last example is a good choice of parameters. Graphs showing these combinations of sinewaves are presented in Figure 5. <br>
+
第一个例子不是一个好的频率选择,第二个例子是好的,最后一个例子是很好的参数选择。 显示这些正弦波组合的图表如图5所示。 <br>
  
  
Finally, the velocities of the joints are also important. The peak velocity during the motion should be close to the maximum velocity of each joint. In high velocities, the acceleration and velocity objects of the dynamic model are significant, thus allowing more accurate identification process. The peak velocities of the joints can be managed by the amplitude and frequency of the movement. It is more convenient to first define the amplitude of each joint, then set some arbitrary frequencies, for example {1.1,1.3,1.5}, and multiply the frequencies vector by a scalar factor: factor*{1.1,1.3,1.5}. '''By changing the factor, one can control the velocities of the joints.'''  
+
最后,关节的速度也很重要。运动过程中的峰值速度应该接近每个关节的最大速度。在高速度下,动力学模型的加速度和速度对象是显着的,从而允许更准确的识别过程。关节的峰值速度可以通过运动的幅度和频率来调节。首先定义每个关节的振幅,然后设置一些任意的频率,例如{1.1,1.3,1.5},然后用一个标量因子乘以频率矢量:factor * {1.1,1.3,1.5}'''通过改变因子,可以控制关节的速度。'''
  
[[file: DM_5.png|700px|center|frame|<center><big>''Figure 5 – Graphs of different combinations of sinewaves corresponding to Table 2. In each graph, the location where the sinewaves start repeating themselves (as mentioned in Table 2) is pointed out with an orange circle (the last graph has no repetitions)''</big></center>]]
 
  
==Example of an identification task==
+
[[file: DM_5.png|700px|center|frame|<center><big>''图 5 – 在每个图中正弦波的不同频率组合的图表对应于表2,正弦波开始重复的位置(如表2中所述)用橙色圆圈指出(最后的图没有重复)''</big></center>]]
  
Figure 6 shows a schematic graph of the identification procedure. <br>
+
==识别任务的示例==
  
 +
图6显示了识别过程的示意图。 <br>
  
Example of a program that executes the identification process, this program is for a delta robot:
+
 
 +
执行识别过程的程序示例,该程序用于delta机器人:
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
 
1.  program
 
1.  program
Line 237: Line 241:
  
 
</syntaxhighlight>  
 
</syntaxhighlight>  
Here is an explanation of the program shown: <br>  
+
这里是对示例程序的解释: <br>  
 
{|class="wikitable"
 
{|class="wikitable"
!Line
+
!行号
!Description
+
!描述
 
|-
 
|-
 
|6
 
|6
|Defines the starting position of each joint of the system
+
|定义系统每个关节的起始位置
 
|-
 
|-
 
|7
 
|7
|Defines the ending position
+
|定义结束位置
 
|-
 
|-
 
|8
 
|8
|Defines the frequency of the sinewave of each joint (note that the frequencies are multiplied by a factor of 0.3). Overall, these are the joints location in time:<br>  
+
|定义每个关节的正弦波的频率(注意频率乘以因子0.3)。总的来说,这些是关节在某一时刻的位置:<br>  
 
{{{!}} class = "wikitable"
 
{{{!}} class = "wikitable"
!Joints
+
!关节
!Location in time <sub>[deg]</sub>
+
!在某时刻的位置 <sub>[deg]</sub>
 
{{!}}-
 
{{!}}-
 
{{!}}J<sub>1</sub>
 
{{!}}J<sub>1</sub>
Line 269: Line 273:
 
|-
 
|-
 
|15
 
|15
|Defines the appropriate dynamic model of the robot, this will be discussed later on. '''Note, this parameter can be modified only when the robot is disabled'''.  
+
|定义适合机器人的动力学模型,这将在稍后讨论。 '''请注意,只有在禁用机器人的情况下,才能修改此参数'''.  
 
|-
 
|-
 
|21
 
|21
|Moves the robot to the starting position
+
|将机器人移动到起始位置
 
|-
 
|-
 
|26
 
|26
|Starts the sinewave movement with the target – sineTarget and freque  ncy – SWfreq
+
|开始向目标点正弦波运动
 
|-
 
|-
 
|29
 
|29
|starts the recording of the data with the IdentificationStart command. At this line, one can also set a low pass filter over the collected data (over pfb and tfb) with a cutoff frequency set to IdentFilterFreq. The cutoff frequency must be larger than the largest sinewave frequency. One can try several cutoff frequencies and compare between the raw and filtered data, then choose the one that filters most of the noise without changing the real data. Please look for the identification wiki page for more information regarding the parameters that could be set for IdentificationStart command
+
|用IdentificationStart命令开始记录数据。在这行上,还可以设置一个将截止频率设置为IdentFilterFreq收集数据(通过pfb和tfb)的低通滤波器。截止频率必须大于最大正弦波频率。可以尝试多个截止频率,并在原始数据和滤波数据之间进行比较,然后选择过滤大部分噪声而不改变实际数据的数据。请查看识别wiki页面,以获取有关可以为IdentificationStart命令设置的参数的更多信息。
 
|-
 
|-
 
|31
 
|31
|sets a sleeping time the recording time
+
|设置休眠时间 记录时间
 
|-
 
|-
 
|32
 
|32
|stops the recording and apply the dynamic model parameters identification
+
|停止记录并应用动力学模型参数识别
  
 
|}
 
|}
Line 290: Line 294:
  
  
[[file: DM_6.png|600px|thumb|<center><big>''Figure 6 - Schematic graph showing the identification process''</big></center>]]
+
[[file: DM_6.png|600px|thumb|<center><big>''图6 - 识别过程的示意图''</big></center>]]
  
At the end of this task, a files named IDNT<group num>.PRG and IDNT<group num>.REC will be created in the MC folder. <br>
+
在此任务结束时,将在MC文件夹中创建一个名为IDNT<group num>.PRG和IDNT<group num>.REC的文件。<br>
The PRG file contains the identified parameters and the REC file contains the recorded data used for the identification. <br>
+
PRG文件包含识别的参数,REC文件包含用于识别的记录数据。 <br>
The following subsections explain how to apply the identification for different robot models.
+
以下小节介绍如何将识别应用于不同的机器人模型。
  
==Identification process for different robot models==
+
==不同机器人模型的识别过程==
===Single axis model===
+
===单轴模型===
There are two types of single axis joints, linear and rotary. Each of these types has several different dynamic models as can be viewed in the Dynamic Models wiki page (and in section 5.4). Here are the different models in short:
+
有两种类型的单轴关节,直线和旋转。这些类型中的每一个都有几个不同的动力学模型,可以在动力学模型wiki页面(和第5.4节)中查看。 简而言之,这些是不同的模型:
====Linear axis====
+
====直线轴====
The linear axis type has 2 dynamic model types: <br>
+
直线轴类型有2个动力学模型类型:<br>
# Horizontal axis
+
# 水平轴
# Tilted axis an axis with angle α relative to the vertical axis, ranging between 0 and 90 degrees (figure 7). When α = 0 the axis is vertical, and when α = 90 the axis is horizontal (the α parameter is found by the identification (i.e. it is not a user input). [[file: DM_8.png|200px|right|thumb|<center><big>''figure 7 - tilted linear axis''</big></center>]]
+
# 倾斜轴 相对于垂直轴线具有角度α的轴,范围在0和90度之间(图7)。当α= 0时,轴是垂直的,当α= 90时,轴是水平的(α参数是通过识别找到的(即,它不是用户输入)。 [[file: DM_8.png|200px|right|thumb|<center><big>''图7 - 倾斜的线性轴''</big></center>]]
  
====Rotary axis====
+
====旋转轴====
The rotary axis type has 3 dynamic model types: <br>  
+
旋转轴类型有3种动力学模型: <br>  
# Simple rotary axis - which its center of mass is located on the rotation axis.
+
# 简单的旋转轴 - 其质心位于旋转轴上。
# Horizontal crank-arm axis (figure 8 left).
+
# 水平曲柄臂轴(图8左)。
# Vertical crank-arm axis (figure 8 right).
+
# 垂直曲柄臂轴(图8右)。
  
[[file:DM_9.png|400px|thumb|right|<center><big>''figure 8 - (left) Horizontal crank-arm axis, (right) vertical crank-arm axis''</big></center>]]
+
[[file:DM_9.png|400px|thumb|right|<center><big>''图8 - (左)水平曲柄臂轴,(右)垂直曲柄臂轴''</big></center>]]
  
  
Example for an identification task that will work for all types mentioned above:
+
适用于上述所有类型的识别任务示例:
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
 
1.  program
 
1.  program
Line 363: Line 367:
  
  
To reuse this code, remember to use frequency and amplitude values that are suited for the application, and also use the suitable dynamic model type.
+
要重复使用此代码,请记住使用适合于应用程序的频率和振幅值,并使用合适的动力学模型类型。
  
===SCARA robot===
+
===SCARA机器人===
The SARA robot has two kinematic models, one with 3 axes (XYZ) and the other with four axes (XYZR). <br>
+
SARA机器人有两个运动学模型,一个有三个轴(XYZ),另一个有四个轴(XYZR)。<br>
However, there is only one type of dynamic model which fits both of these kinematics models.
+
但是,只有一种适合这两种运动学模型的动力学模型。
Example for an identification task that will work for 3 axes SCARA:
+
用于3轴SCARA的识别任务示例:
  
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
Line 417: Line 421:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Example for an identification task that will work for 4 axes SCARA:
+
用于4轴SCARA的识别任务示例:
  
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
Line 467: Line 471:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
To reuse this code, remember to use frequency and amplitude values that are suited for the application. <br>
+
要重复使用此代码,请记住使用适合于应用程序的频率和幅度值。 <br>
Some SCARA robots have coupled joints, usually the 3rd and 4th joints. Currently, the dynamic model of the SCARA robot does not take the coupling into account. Therefore, there may be large errors for coupled joints
+
一些SCARA机器人具有耦合关节,通常是第三和第四关节。目前,SCARA机器人的动力学模型没有考虑耦合。因此,耦合关节可能会有很大的误差。
  
  
===DELTA robot===
+
===DELTA机器人===
The Delta robot has two kinematic models, one with 3 axes (XYZ) and the other with four axes (XYZR).<br>  
+
Delta机器人有两个运动学模型,一个有三个轴(XYZ),另一个有四个轴(XYZR)。<br>  
However, there is only one type of dynamic model which fits both of these kinematics models.
+
但是,只有一种适合这两种运动学模型的动态模型。
Example for an identification task that will work for 3 axes Delta:  
+
用于3轴Delta的识别任务示例:  
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
 
1.  program
 
1.  program
Line 525: Line 529:
  
  
Example for an identification task that will work for 4 axes Delta:
+
适用于4轴Delta的识别任务示例:
  
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
Line 576: Line 580:
  
  
To reuse this code, remember to use frequency and amplitude values that are suited for the application.
+
要重复使用此代码,请记住使用适合于应用程序的频率和幅度值。
  
===PUMA robot===
+
===PUMA机器人===
The PUMA robot has only one kinematic model but it has two different dynamic models. <br>
+
PUMA机器人只有一个运动学模型,但它有两个不同的动力学模型。 <br>
The first dynamic model is a regular model like the other robots.<br>  
+
第一个动力学模型是像其他机器人一样的常规模型。<br>  
The second model is a semi-static model, meaning it will work only for slow movements and static positions. This model takes into account only the gravity and friction forces / torques.
+
第二个模型是一个半静态模型,这意味着它只适用于慢动作和静态位置。该模型仅考虑重力和摩擦力/扭矩。
====Full regular model====
+
This model identification rules are just like the previous models. <br>
+
====完整常规模式====
Example for an identification task that will work for PUMA:
+
该模型识别规则和之前的模型一样。 <br>
 +
PUMA工作的识别任务示例:
 
<syntaxhighlight lang='Vb'>
 
<syntaxhighlight lang='Vb'>
 
1.  program
 
1.  program
Line 633: Line 638:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
To reuse this code, remember to use frequency and amplitude values that are suited for the application.
+
要重复使用此代码,请记住使用适合于应用程序的频率和幅度值。
  
====Semi-static model====
+
====半静态模型====
The semi-static model identification is a little bit different from all of the examples so far. This model takes into account only gravity and friction forces, in other words it neglects dynamic forces. Therefore, the measurement should include negligible dynamic forces, and this is possible by moving slow.<br>
+
到目前为止,半静态模型识别与所有的例子都有一点不同。 这个模型只考虑重力和摩擦力,换句话说它忽略了动力。 因此,测量应该包括可以忽略不计的动态力,这可以通过缓慢运动来实现。<br>
This identification process is longer than the usual identification progress, it takes approximately 2-3 minutes. In addition, it is advised to perform less than 3 cycles, 1 cycle should be enough.<br>
+
这个识别过程比通常的识别过程更长,大约需要2-3分钟。另外,建议执行少于3个周期,1个周期就足够了。.<br>
Also, similar to the previous examples, the semi-static model threshold the velocity of the data points. But unlike the previous examples, here there are two thresholds, one for avoiding very low velocities avoiding numeric errors) and the other for avoiding high velocities (avoiding significant dynamic forces).
+
另外,类似于前面的例子,半静态模型阈值数据点的速度。但是与前面的例子不同,这里有两个阈值,一个用于避免非常低的速度,避免数字误差),另一个用于避免高速度(避免显着的动态力)。 这种识别过程的例子:
Example for such an identification process:
 
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
 
1.  program
 
1.  program
Line 690: Line 694:
  
  
Note the significant low frequencies which cause slow movement.
+
请注意造成慢速运动的重要低频。
  
[[file:DM_17.png|1100px|center|thumb|<center><big>''Figure 9 – An example of the path made by a puma robot during the identification process'' </big></center>]]
+
[[file:DM_17.png|1100px|center|thumb|<center><big>''图9 - 识别过程中puma机器人的运动路径示例'' </big></center>]]
  
==The Dynamic Models Parameters==
+
==动力学模型参数==
This section lists the dynamic parameters for each type of dynamic model.
+
本节列出了每种类型的动力学模型的动力学参数。
===Rotary Axis===
+
===旋转轴===
====Dynamic Model 1 – simple rotary axis====
+
====动力学模型1 - 简单的旋转轴====
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
 
|<math>I</math>
 
|<math>I</math>
|Total moment of inertia around the rotation axis of the moved part
+
|运动部件的旋转轴周围的总转动惯量
 
|}
 
|}
;Model equation
+
;模型方程
 
: <math>T = (I + I_{payload}) \cdot acc</math>
 
: <math>T = (I + I_{payload}) \cdot acc</math>
 
<br style="clear: both" />
 
<br style="clear: both" />
====Dynamic Model 2 - horizontal crank-arm axis ====
+
====动力学模型2 - 水平曲柄臂轴 ====
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
 
!Comments
 
!Comments
 
|-
 
|-
 
|1
 
|1
 
|<math>I</math>
 
|<math>I</math>
|Total moment of inertia around the rotation axis of the moved part
+
|运动部件的旋转轴周围的总转动惯量
 
|-
 
|-
 
|2
 
|2
 
|<math>L^2</math>
 
|<math>L^2</math>
|Square of length of crank arm (axis to payload)
+
|曲柄臂的长度的平方(轴到有效载荷)
 
|}
 
|}
;Model equation
+
;模型方程
 
: <math>T = (I + I_{payload} + L^2 \cdot M_{payload}) \cdot acc</math>
 
: <math>T = (I + I_{payload} + L^2 \cdot M_{payload}) \cdot acc</math>
  
 
<br style="clear: both" />
 
<br style="clear: both" />
==== Dynamic Model 3 - vertical crank-arm axis ====
+
==== 动力学模型3 - 垂直曲柄臂轴 ====
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
 
|<math>I</math>
 
|<math>I</math>
|Total moment of inertia around the rotation axis of the moved part
+
|运动部件的旋转轴周围的总转动惯量
 
|-
 
|-
 
|2
 
|2
 
|<math>L^2</math>
 
|<math>L^2</math>
|Square of length of crank arm (axis to payload)
+
|曲柄臂的长度的平方(轴到有效载荷)
 
|-
 
|-
 
|3
 
|3
 
|<math>M \cdot g \cdot A</math>
 
|<math>M \cdot g \cdot A</math>
|Mass (without payload) * Gravity * Distance to center of mass
+
|质量(无有效载荷)* 重力加速度* 到质心的距离
 
|-
 
|-
 
|4
 
|4
 
|<math>g \cdot L</math>
 
|<math>g \cdot L</math>
|Gravity * Distance to Payload
+
|重力加速度 * 到有效负载的距离
 
|}
 
|}
;Model equation
+
;模型方程
 
: <math>T = (I + I_{payload} + L^2 \cdot M_{payload}) \cdot acc - (M \cdot g \cdot A + M_{payload} \cdot g \cdot L) \cdot \sin(pos)</math>
 
: <math>T = (I + I_{payload} + L^2 \cdot M_{payload}) \cdot acc - (M \cdot g \cdot A + M_{payload} \cdot g \cdot L) \cdot \sin(pos)</math>
  
===Linear Axis===
+
===线性轴===
  
==== Dynamic Model 1 - horizontal axis ====
+
==== 动力学模型1 - 水平轴====
[[File:Axystems;Motion Dynamics - Horizontal Axis.png|''Figure 10 - Horizontal linear axis''|thumb]]
+
[[File:Axystems;Motion Dynamics - Horizontal Axis.png|''图10 - 水平线性轴''|thumb]]
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
 
|<math>M</math>
 
|<math>M</math>
|Total mass of the moved part.
+
|运动部分的总质量。
 
|}
 
|}
;Model equation
+
;模型方程
 
: <math>T = (M + M_{payload}) \cdot acc</math>
 
: <math>T = (M + M_{payload}) \cdot acc</math>
  
 
<br style="clear: both" />
 
<br style="clear: both" />
==== Dynamic Model 2 - vertical or tilted axis ====
+
==== 动力学模型2 - 垂直或倾斜的轴 ====
[[File:Axystems;Motion Dynamics - Vertical Axis.png|''Figure 11 - Vertical linear axis''|thumb]]
+
[[File:Axystems;Motion Dynamics - Vertical Axis.png|''图11 - 垂直线性轴''|thumb]]
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
 
|<math>M</math>
 
|<math>M</math>
|Total mass of the moved part.
+
|运动部分的总质量.
 
|-
 
|-
 
|2
 
|2
 
|<math>M \cdot g \cdot \cos(\alpha)</math>
 
|<math>M \cdot g \cdot \cos(\alpha)</math>
|Constant force due to gravity.
+
|由重力产生的恒力
 
|-
 
|-
 
|3
 
|3
 
|<math>g \cdot \cos(\alpha)</math>
 
|<math>g \cdot \cos(\alpha)</math>
|Gravity coefficient used to consider payload mass. ('''g = 9.80665''')
+
|用于考虑有效载荷质量的重力系数。('''g = 9.80665''')
 
|}
 
|}
;Model equation
+
;模型方程
 
: <math>T = (M + M_{payload}) \cdot acc + M \cdot g \cdot \cos(\alpha) + M_{payload} \cdot g \cdot \cos(\alpha)</math>
 
: <math>T = (M + M_{payload}) \cdot acc + M \cdot g \cdot \cos(\alpha) + M_{payload} \cdot g \cdot \cos(\alpha)</math>
  
===SCARA robot===
+
===SCARA 机器人===
  
==== Dynamic Model 1 ====
+
====动力学模型1 ====
[[File:scara.PNG|''Figure 12 - scara robot''|thumb]]
+
[[File:scara.PNG|''12 - scara机器人''|thumb]]
  
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
Line 827: Line 831:
 
|}
 
|}
  
===DELTA robot===
+
===DELTA 机器人===
  
==== Dynamic Model 1 ====
+
==== 动力学模型1 ====
[[File:Control;Rod forces model for Delta kinematics - Introduction.png|''Figure 13 - Delta robot''|thumb]]
+
[[File:Control;Rod forces model for Delta kinematics - Introduction.png|''13 - Delta 机器人''|thumb]]
  
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
Line 890: Line 894:
 
|}
 
|}
  
===PUMA robot===
+
===PUMA 机器人===
==== Dynamic Model 1 ====
+
==== 动力学模型1 ====
[[File:puma.PNG|''Figure 14 - Puma robot''|thumb]]
+
[[File:puma.PNG|''14 - Puma机器人''|thumb]]
  
 
Description:
 
Description:
:* <math> g </math> - Gravity constant
+
:* <math> g </math> - 重力常数
:* <math> m_{i} </math> - Mass of the i<sup>th</sup> link
+
:* <math> m_{i} </math> - i<sup>th</sup>个连杆的质量
:* <math> a_{i} </math> - length of the common normal between the i<sup>th</sup> and i<sup>th+1</sup> joints  
+
:* <math> a_{i} </math> - 第i<sup>th</sup>和第i<sup>th+1</sup>关节之间的公共法线的长度  
:* <math> d_{i} </math> - offset along z axis between the i<sup>th</sup> and i<sup>th+1</sup> joints 
+
:* <math> d_{i} </math> - 在第i<sup>th</sup>个和第i<sup>th+1</sup>个关节之间沿z轴偏移
:* <math> l_{i} </math> - The distance from the i<sup>th</sup> joint to the center of mass of the i<sup>th</sup> link
+
:* <math> l_{i} </math> - 从第i<sup>th</sup>个关节到第i<sup>th+1</sup> 个关节质量中心的距离
  
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
Line 999: Line 1,003:
 
|}
 
|}
  
==== Dynamic Model 2 - Gravity ====
+
==== 动力学模型2 - 重力 ====
  
 
{|border="1" width="80%"
 
{|border="1" width="80%"
!width="100"|Number
+
!width="100"|序号
!width="250"|Parameter
+
!width="250"|参数
!Comments
+
!注释
 
|-
 
|-
 
|1
 
|1
Line 1,024: Line 1,028:
 
|}
 
|}
  
==Identification with a Payload==
+
==带有有效载荷的参数识别==
The IdentificationStart command has a boolean parameter called ‘IdentPayload’. If this parameter is set to false, the identification process is performed regularly. If this parameter is set to true, the identification process identifies only the payload mass or inertia.<br>
+
IdentificationStart命令有一个名为‘IdentPayload’的布尔参数。如果此参数设置为false,则会定期执行识别过程。如果此参数设置为true,则识别过程仅识别有效载荷质量或惯性。<br>
  
 +
为了识别有效载荷,必须遵循这些步骤:
 +
# 执行识别过程没有有效载荷。
 +
# 设置动力学模型参数(通过运行identification PRG文件)。
 +
# 将‘IdentPayload’设置为true,并对有效负载执行识别过程。
  
In order to identify the payload, one must follow these steps:
+
{{Note| 在对有效载荷执行识别过程并将“IdentPayload”设置为true之后,identification PRG文件将包含步骤1中的动态模型参数以及步骤3中的有效载荷参数。}}
# Perform an identification process without the payload.
 
# Set the dynamic model parameters (by running the identification PRG file).
 
# Set ‘IdentPayload’ to true and perform an identification process with the payload.
 
  
{{Note| After performing an identification process with the payload and setting ‘IdentPayload’ to true, the identification PRG file will contain the dynamic model parameters form step 1, and the payload parameters from step 3}}
 
  
 +
{{Note| 该程序适用于所有动态模型除PUMA机器人的动力学模型1外}}
  
{{Note| This procedure is valid to all dynamic models except dynamic model 1 of the PUMA robot.}}
+
=识别输出文件的说明=
 
+
识别输出PRG文件的示例。该文件在识别过程结束时生成,命名为:IDNT <group num> .PRG: <br>  
=Explanation of the identification output file=
 
Example of an identification output PRG file. The file is generated at the end of the identification process, and is named: IDNT<group num>.PRG: <br>  
 
  
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
Line 1,086: Line 1,089:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 1-7 give information about the identification process. Line 1 reports if the identification was successful or not.
+
1-7行提供了有关识别过程的信息。第1行报告识别是否成功。
  
 
<syntaxhighlight lang='VB'>  
 
<syntaxhighlight lang='VB'>  
Line 1,095: Line 1,098:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 2 reports the date and time the identification was made.<br>
+
第2行报告识别的日期和时间.<br>
Line 3 reports the recorded max relative torque error. The torque error is taken as the TorqueAdditiveCommand (Taddcmd) minus the measured TorqueFeedback. The Taddcmd for this calculation is taken as the Taddcmd that would have been calculated with the identified dynamic parameters as if this movement was performed. In other words, the error is the difference between the real data and the fitted model. The relative torque error is calculated as the torque error divided by the max measured TorqueFeedback (each joint and its max TorqueFeedback value). The max relative torque error, is the maximum value of the relative value for each joint. The formula for the max relative torque error is: <br>  
+
第3行报告记录的最大相对扭矩误差。扭矩误差作为TorqueAdditiveCommand(Taddcmd)减去测量的TorqueFeedback。这个计算的Taddcmd被当作Taddcmd,这个Taddcmd可以用已经确定的动力学参数进行计算,就好像这个运动已经完成了一样。 换句话说,误差是真实数据和拟合模型之间的差异。 相对转矩误差的计算方法是转矩误差除以最大测量转矩反馈(每个关节及其最大转矩反馈值)。 最大相对转矩误差是每个关节相对值的最大值。最大相对转矩误差的公式是:<br>  
  
  
Line 1,102: Line 1,105:
 
<center> <math> max relative torque error  =max(\frac{TaddCMD-Tfb}{max(Tfb)}\ </math></center>
 
<center> <math> max relative torque error  =max(\frac{TaddCMD-Tfb}{max(Tfb)}\ </math></center>
  
If this value is larger than 50% for one of the joints than the identification is regarded as failed.
+
如果其中一个关节的这个值大于50%,则认定为失败。
  
  
Line 1,113: Line 1,116:
  
  
Line 4 reports the mean relative torque error, the mean of the relative torque error over all of the recorded time is taken and displayed for each joint.<br>  
+
第4行报告平均相对转矩误差,所有记录时间的相对转矩误差平均值被记录并显示在每个关节上。<br>  
Line 5 reports the cutoff frequency that was used for the low pass filter.<br>  
+
第5行报告用于低通滤波器的截止频率。<br>  
Line 6 reports how many data points were recorded.
+
第6行报告记录了多少个数据点。
  
  
Line 1,125: Line 1,128:
  
  
Line 7 reports how many data points from each joint were taken for the model fitting. Some data points are discarded if the velocity of the joint in these point is below some threshold (the threshold for each joint is also reported in this line). This is done because the data points with low velocities are causing numerical errors to the model fitting. Therefore, all of the relative errors explained above are calculated only for those points which are taken into account for the model fitting.
+
第7行报告每个关节有多少数据点用于模型拟合。 如果这些点中的关节速度低于某个阈值(每个关节的阈值也在该行中报告),则丢弃一些数据点。这是因为低速数据点导致模型拟合的数值误差。 因此,上面解释的所有相对误差只是针对模型拟合所考虑的那些点来计算的。
  
  
Line 1,139: Line 1,142:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Lines 10-15 (for this file) sets the fitted dynamic model parameters.
+
第10-15行(为此文件)设置拟合的动力学模型参数。
  
  
Line 1,159: Line 1,162:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Lines 16-27 (for this file) sets the fitted friction parameters.
+
第16-27行(用于此文件)设置拟合的摩擦参数。
 
 
  
 
<syntaxhighlight lang='VB'>
 
<syntaxhighlight lang='VB'>
Line 1,168: Line 1,170:
  
  
Line 29 (for this file) sets the dynamic model that was used for this identification process.
+
第29行(为此文件)设置用于此识别过程的动力学模型。
 +
 
 +
 
 +
==成功条件==
 +
成功的条件是基于相对扭矩误差。每个轴应具有低于50%的最大相对扭矩误差值,以便将识别视为成功。
  
  
==Success condition==
+
扭矩误差作为TorqueAdditiveCommand(Taddcmd)减去测量的TorqueFeedback。 这个计算的Taddcmd被当作Taddcmd,这个Taddcmd可以用已经确定的动力学参数进行计算,就好像这个运动已经完成了一样。 换句话说,误差是真实数据和拟合模型之间的差异。
The success condition is based on the relative torque error. Each axis should have a max relative torque error value below 50% in order for the identification to be considered as successful.
 
  
  
The torque error is taken as the TorqueAdditiveCommand (Taddcmd) minus the measured TorqueFeedback. The Taddcmd for this calculation is taken as the Taddcmd that would have been calculated with the identified dynamic parameters as if this movement was performed. In other words, the error is the difference between the real data and the fitted model.
+
相对转矩误差的计算方法是转矩误差除以最大测量转矩反馈(每个关节及其最大转矩反馈值)。 最大相对转矩误差是每个关节相对值的最大值。 如果其中一个关节的这个值大于50%,则认定为失败。 第4行报告平均相对转矩误差,所有记录时间的相对转矩误差平均值被记录并显示在每个关节上。 请注意,相对扭矩误差仅针对处于最小速度限制的点进行评估。
  
  
The relative torque error is calculated as the torque error divided by the max measured TorqueFeedback (each joint and its max TorqueFeedback value). The max relative torque error, is the maximum value of the relative value for each joint. If this value is larger than 50% for one of the joints than the identification is regarded as failed. Line 4 reports the mean relative torque error, the mean of the relative torque error over all of the recorded time is taken and displayed for each joint. Please note that the relative torque error is evaluated only for the points that stand in a minimum velocity limitation.
 
  
 +
不同关节之间的最大相对扭矩误差可能会有所不同。通常,小型关节(小型电机)具有较大的相对误差。这是因为这些电机所施加的转矩很小,测量中的噪音与所施加的转矩处于相同的数量级。
  
The max relative torque error may vary between the different joint. Typically, small joints (with small motors) have larger relative error. This is because the applied torque for these motors is small and the noise in measurement is in the same order of magnitude of the applied torque.
 
  
  
'''For example:''' Let’s assume that for a certain point j1.TorqueFeedback = 80 and the  j1.TorqueAdditiveCommand = 100. For this point, the j1.TorqueError = 20. Let’s assume that the maximum j1.TorqueFeedback during the recording was 160, then the relative torque error for this point would be: j1.TorqueError/max(j1.TorqueFeedback) = 20/160 = 0.125 = 12.5%
+
'''例如:''' 我们假设对于某个点j1.TorqueFeedback = 80和j1.TorqueAdditiveCommand = 100.对于这一点,j1.TorqueError = 20.假设在记录过程中最大j1.TorqueFeedback是160,那么对于这一点相对转矩误差将是:j1.TorqueError/max(j1.TorqueFeedback) = 20/160 = 0.125 = 12.5%
  
==Parameters==
 
Robot models which are supported for dynamic model, have at least one type of dynamic model. These models can be found in the wiki page Dynamic Models. Each model is based on some parameters which are composed of the mass, length and inertia of the different parts of the robot. These are the parameters that are being evaluated with the help of the identification process. The parameters are saved as robot.DynamicParameter[i], where robot is the robot name and i is the number of the parameter as stated in the Dynamic Models page. Each model may have different number of parameters.
 
  
 +
==参数==
 +
支持的机器人模型的动力学模型至少有一种动力学模型。 这些模型可以在wiki 页面中 Dynamic Models找到。 每个模型都基于一些由机器人不同部分的质量,长度和惯性组成的参数。 这些是借助识别过程正在评估的参数。 参数保存为robot.DynamicParameter [i],其中robot是机器人名称,i是Dynamic Models页面中所述参数的编号。 每个模型可能有不同数量的参数。
  
After the dynamic parameter, appear the viscous friction and coulomb friction parameters: axis.ViscousFriction, axis.CoulombFriction . Each joint of the robot has these two parameters which define its friction coefficients.
 
  
 +
在动力学参数后,出现粘性摩擦和库仑摩擦参数:轴。摩擦摩擦,轴线。库仑摩擦。 机器人的每个关节都有这两个参数来定义它的摩擦系数。
  
In addition to these parameters, the user should consider to set the maximum allowed value  for the additive torque command. This could be set with the property TorqueThreshold, e.g. a1.TorqueThreshold = 200. If the Taddcmd exceeds this value, than the softMC reports an error.
 
  
 +
除了这些参数之外,用户还应该考虑设置附加转矩指令的最大允许值。 这可以通过属性TorqueThreshold来设置,例如, a1.TorqueThreshold = 200.如果Taddcmd超过此值,则会给softMC报告错误。
  
==Including the identification output file in setup==
 
In order for the dynamic model to take effect you should simply run the IDNT<group num>.PRG file while the robot is disabled (en = 0). Note that this should come after the robot setup. In order to automatically load the dynamic model configuration during the system initialization and robot setup, simply add the line:<br>
 
  
Load IDNT<group num>.PRG
 
To the end of your AUTOEXEC.PRG or STARTPRG.PRG file, '''after''' the robot setup.
 
  
=Explanation of the identification process recording file=
+
==在设置中包含标识输出文件==
Another file that is generated at the end of the identification process is the data recording file. This file is named: IDNT<group num>.REC. This file contains all of the relevant data that was used by the identification process. Here are the parameters which are displayed for each joint:<br>  
+
为了使动力学模型生效,只需在禁用机器人(en = 0)时运行IDNT<group num>.PRG文件。 请注意,这应该在机器人设置之后。 为了在系统初始化和机器人设置期间自动加载动态模型配置,只需添加该行:<br>
  
* tfbRaw – The raw recorded data of the TorqueFeedback (tfb) property.
 
* pfbRaw – The raw recorded data of the PositionFeedback (pfb) property.
 
* tfb – The filtered recorded data of the TorqueFeedback (tfb) property.
 
* pfb – The filtered recorded data of the PositionFeedback (pfb) property.
 
* vfb – The filtered recorded data of the VelocityFeedback (vfb) property.
 
* afb – The filtered recorded data of the AccelerationFeedback (afb) property.
 
* tcmd – The torque command generated by the fitted model. The found dynamic parameters and the collected data are used to calculate this property. In regular mode, this property will actually be TorqueAdditiveCommand (Taddcmd).
 
* te – The TorqueError (te) calculated by the difference of the tcmd and tfb data.
 
  
 +
Load IDNT<group num>.PRG到机器人设置'''后''的AUTOEXEC.PRG或START PRG.PRG文件的末尾。
  
This file can be used for better debugging and troubleshooting, as well as for better understanding the identification process. At figure 15 you can find example of an identification output REC file:  
+
=识别过程记录文件的说明=
 +
在识别过程结束时生成的另一个文件是数据记录文件。文件名称为: IDNT<group num>.REC。该文件包含识别过程使用的所有相关数据。以下是为每个关节显示的参数:<br>
 +
 
 +
* tfbRaw – TorqueFeedback(tfb)属性的原始记录数据。
 +
* pfbRaw – PositionFeedback(pfb)属性的原始记录数据。
 +
* tfb – 经过滤波的TorqueFeedback(tfb)属性的记录数据。
 +
* pfb – 经过滤波的PositionFeedback(pfb)属性的记录数据。
 +
* vfb – 经过滤波的VelocityFeedback (vfb)属性的记录数据。
 +
* afb – 经过滤波的AccelerationFeedback (afb)属性的记录数据。
 +
* tcmd –拟合模型生成的扭矩指令。识别的动力学参数和收集的数据用于计算此属性。 在常规模式下,这个属性实际上是TorqueAdditiveCommand(Taddcmd)。
 +
* te – TorqueError(te)由tcmd和tfb数据的差值计算得出。
 +
 
 +
该文件可用于更好的调试和故障排除,以及更好地理解识别过程。在图15中,您可以找到识别输出REC文件的示例:
  
 
[[file: DM_19.png|1000px|thumb|center|<center><big>''Figure 15 - An example of an identification output REC file of a semi-static PUMA model''</big></center>]]
 
[[file: DM_19.png|1000px|thumb|center|<center><big>''Figure 15 - An example of an identification output REC file of a semi-static PUMA model''</big></center>]]
  
=Demonstration of tracking improvements (settling, position error)=
+
=跟踪改进的示例(整定,位置误差)=
==SCARA Robot==
+
==SCARA机器人==
An experiment was made for a 4 axes scara robot with and without dynamic model. The robot was commanded to move 600[mm] in a straight line with linear velocity of 900[mm/s]. The cartesian velocity of the robot and the ISSETTLED property were recorded during this motion (figure 16 and 17, the ISSETTLED property is scaled by 3000). <br>
+
有和没有动力学参数的4轴scara机器人的实验。机器人以900[mm/s]的线速度运动600[mm],在这个运动中记录机器人的笛卡尔速度和ISSETTLED属性(图16和17,ISSETTLED属性缩放3000倍)<br>
The ISSETTLED property indicates whether the actual element position is within the specified settling range. The settling range is defined by the PESETTLE property and is further qualified by the TIMESETTLE property. When the motion profiler has completed, the absolute value of the position error (Target Position – Actual Position) is compared to the PESETTLE property. When the result is less than or equal to this property for the time given by TIMESETTLE, the ISSETTLED flag is set. For this example, the PESETTLE was taken as 0.001.
 
Therefore, one could expect that a shorter settling time indicates on better performance. <br>
 
Figures 16 and 17 display the recorded data from the experiment. The results are that the settling time for this motion without dynamic model is 300 ms, and the settling time with dynamic model is 260 ms – ~86.7% of the original settling time. <br>
 
  
[[file:DM_20.png|850px|thumb|center|<center><big>''Figure 15 - An example of settling time improvement for SCARA robot. This graph is for the case without dynamic model, the settling time is 300[ms]''</big></center>]]
+
ISSETTLED属性指示实际运动元素位置是否在指定的整定范围内。整定范围由PESETTLE属性定义,并由TIMESETTLE属性进一步限定。当运动分析器完成后,位置误差(目标位置 - 实际位置)的绝对值将与PESETTLE属性进行比较。当结果小于或等于此属性的TIMESETTLE给定的时间时,ISSETTLED标志被设置。对于这个例子,PESETTLE被认为是0.001。因此,可以预期较短的整定时间表示较好的性能。<br>
 +
图16和17显示了来自实验的记录数据。结果表明,无运力学模型的运动的整定时间为300 ms,有动力学模型的整定时间为260 ms〜原整定时间的86.7%。<br>
  
  
[[file:DM_21.png|850px|thumb|center|<center><big>''Figure 16 - An example of settling time improvement for Delta robot. This graph is for the case with dynamic model, the settling time is reduced to 260[ms]''</big></center>]]
+
[[file:DM_20.png|850px|thumb|center|<center><big>''图 15 - SCARA机器人整定时间的一个例子。该图是针对没有动力学模型的情况,整定时间为300 [ms]''</big></center>]]
  
==DELTA Robot==
 
An experiment was made for a 3 axes delta robot with and without dynamic model. The robot was commanded to move 550[mm] in a straight line with linear velocity of 3000[mm/s]. The cartesian velocity of the robot and the ISSETTLED property were recorded during this motion (figure 17 and 18, the ISSETTLED property is scaled by 3000). <br>
 
  
 +
[[file:DM_21.png|850px|thumb|center|<center><big>''图 16 - Delta机器人整定时间改进的一个例子。该图是针对动力学模型的情况,整定时间减少到260 [ms]''</big></center>]]
  
The ISSETTLED property indicates whether the actual element position is within the specified settling range. The settling range is defined by the PESETTLE property and is further qualified by the TIMESETTLE property. When the motion profiler has completed, the absolute value of the position error (Target Position – Actual Position) is compared to the PESETTLE property. When the result is less than or equal to this property for the time given by TIMESETTLE, the ISSETTLED flag is set. For this example, the PESETTLE was taken as 0.05.<br>  
+
==DELTA 机器人==
 +
有和没有动力学参数的3轴Delta机器人的实验。机器人以3000[mm/s]的线速度运动550[mm],在这个运动中记录机器人的笛卡尔速度和ISSETTLED属性(图17和18,ISSETTLED属性缩放3000倍)<br>  
  
 +
ISSETTLED属性指示实际元素位置是否在指定的整定范围内。整定范围由PESETTLE属性定义,并由TIMESETTLE属性进一步限定。当运动分析器完成后,位置误差(目标位置 - 实际位置)的绝对值将与PESETTLE属性进行比较。当结果小于或等于此属性的TIMESETTLE给定的时间时,ISSETTLED标志被设置。对于这个例子,PESETTLE被设置为0.05。<br>
  
Therefore, one could expect that a shorter settling time indicates on better performance. <br>
 
  
 +
因此,可以预期较短的建立时间表示较好的性能。<br>
  
Figures 17 and 18 display the recorded data from the experiment. The results are that the settling time for this motion without dynamic model is 268 ms, and the settling time with dynamic model is 44 ms – ~16.5% of the original settling time.
 
  
 +
图17和18显示了来自实验的记录数据。结果表明,无动力学模型的这种运动的整定时间为268ms,动力学模型的整定时间44ms〜为原始建立时间的16.5%。
  
[[file:DM_22.png|850px|thumb|center|<center><big>''Figure 17 - An example of settling time improvement for Delta robot. This graph is for the case without dynamic model, the settling time is 268[ms]''</big></center>]]
 
  
  
[[file:DM_23.png|850px|thumb|center|<center><big>''Figure 18 - An example of settling time improvement for Delta robot. This graph is for the case with dynamic model, the settling time is reduced to 44[ms]''</big></center>]]
+
[[file:DM_22.png|850px|thumb|center|<center><big>''图 17 - Delta机器人整定时间改进的一个例子。该图是针对没有动力学模型的情况,整定时间为268 [ms]''</big></center>]]
  
==PUMA Robot==
 
An experiment was made with and without dynamic model. Axis 3 was commanded to oscillate with the SineWave command while axis 2 was commanded to stay at 0.<br>
 
Figure 19 shows axis 2 position error for the cases with (top) and without (bottom) dynamic model. The peak to peak amplitude for the cases with and without dynamic model are ~0.6e-3 and ~1e-3 correspondingly. It means that using the dynamic model reduced ~40% of the error for this example.
 
  
[[file:DM_24.png|850px|thumb|center|<center><big>''Figure 19 - An example of tracking improvement for PUMA robot. Top - case with dynamic model 0.627e-3 peak to peak amplitude, Bottom - case without dynamic model 1.04e-3 peak to peak amplitude''</big></center>]]
+
[[file:DM_23.png|850px|thumb|center|<center><big>''图 18 - Delta机器人整定时间改进的一个例子。 该图是针对有动力学模型的情况,整定时间减少到44 [ms]''</big></center>]]
  
=Collision detection=
+
==PUMA 机器人==
The dynamic model allows to enable a more delicate collision detection feature. Without the dynamic model, the softMC can detect a collision by thresholding the position error of the robot or joints. However, when using the dynamic model of the robot, a collision can be detected by thresholding the torque error. The torque error reacts quicker than the position error, hence enabling a more delicate collision detection.<br>
+
有和没有动力学模型的实验。3轴以SineWave命令运动,而2轴停留在0。
 +
图19显示了(顶部)和无(底部)动力学模型情况下的2轴位置误差。有和无动力学模型的峰峰值幅度分别为〜0.6e-3和〜1e-3。这意味着在这个例子中,使用动力学模型减少了约40%的误差。
  
  
In order to activate the thresholding over the torque error for a certain joint, set the property TorqueErrorEnable (Teen) to 1, e.g. a1.Teen = 1. One more property to set is the TorqueErrorMax (Temax), e.g. a1.Temax = 10. This property set the maximum allowed torque error which above it softMC reports an error. Note that the Temax property may vary between joints, usually the bigger the joint’s motor the bigger Temax that the user should allow. Also note that as the dynamic model identification results get more accurate, the Temax can be decreased as the torque error gets smaller.<br>  
+
[[file:DM_24.png|850px|thumb|center|<center><big>''图 19 - PUMA机器人跟踪改进的一个例子。顶部案例动力学模型峰峰幅度为0.627e - 3,底部案例无动力学模型峰峰幅度1.04e - 3''</big></center>]]
  
 +
=碰撞检测=
 +
动力学模型允许启用更精细的碰撞检测功能。 如果没有动力学模型,softMC可以通过机器人或关节的位置误差的阈值来检测碰撞。 然而,当使用机器人的动力学模型时,可以通过对转矩误差的阈值进行检测碰撞。扭矩误差比位置误差反应更快,因此可以实现更精细的碰撞检测。<br>
  
One last property to consider is the TorqueErrorFilter property. If the torque feedback is noisy, the Temax value can be exceed due to noise which causes false collision triggering. Filtering this noise helps to achieve better collision detection procedure. This property gets values in the range of 0.0 to 1.0. The filter is a very simple averaging filter, it performs as follows:<br>  
+
 
 +
为了激活特定关节的转矩误差的阈值,将TorqueErrorEnable(Teen)属性设置为1,例如, a1.Teen = 1。要设置的另一个属性是TorqueErrorMax(Temax),例如, a1.Temax = 10。这个属性设置了在softMC之上的最大允许转矩误差,如果超过该转矩误差,则报告一个错误。 请注意,Temax属性可能会在不同的关节之间有所不同,通常关节的电机越大,用户应该允许的更大的Temax。 还要注意,随着动力学模型识别结果变得更加准确,Temax可以随着扭矩误差变小而减小。<br>
 +
 
 +
 
 +
最后一个要考虑的属性是TorqueErrorFilter属性。 如果扭矩反馈有噪声,则会由于噪声导致错误的碰撞检测的而超过Temax值。过滤这些噪音有助于实现更好的碰撞检测程序。 此属性设置的值范围在0.0到1.0之间。 滤波器是一个非常简单的平均滤波器,它的执行过程如下:<br>  
  
 
<center><math>TE=TEF*TE_{current} +(1-TEF)*TE_{previous}</math></center>
 
<center><math>TE=TEF*TE_{current} +(1-TEF)*TE_{previous}</math></center>
  
when TE is the TorqueError property, and TEF is the TorqueErrorFilter property.<br>  
+
TE是TorqueError属性,TEF是TorqueErrorFilter属性。<br>
 +
 
 +
 
 +
请注意,通常最大的误差发生在运动的开始,结束或改变方向。 因此,在这些情况下,误差的大小决定了Temax值的大小。 尽管如此,这些案例的特点是速度非常低。 因此,可以编写一个监视扭矩误差和关节速度的应用程序,忽略速度较小的情况,或者可能仅仅为这些情况增加Temax。 因此,碰撞检测功能可能变得非常灵敏。
 +
 
 +
 
 +
=检测识别失败的可能原因=
 +
本节回顾可能导致不良结果或识别过程失败的一些可能的原因。 下一节讨论如何识别这些原因。
 +
==运动太慢==
 +
如第3节所述,动态识别模型要求机器人关节高速运动。当关节低速运动时,关节内产生的扭矩主要克服与关节摩擦力和重力扭矩,加速度和惯性相对较小。因此,动态模型参数识别性能较差。 此外,识别过程忽略了一定速度下的数据,所以缓慢运动也会导致数据不足。<br>
 +
 
 +
 
 +
也就是说,在这种情况下,输出的PRG识别文件可以报告识别过程是成功的,并且所得到的最大相对误差可以很小。 然而,稍后当试图以比在识别过程中使用的速度更高的速度移动时,附加转矩指令预测将很可能表现不佳。<br>
 +
 
 +
 
 +
图20显示了识别期间运动速度较慢的三轴Delta机器人识别输出REC文件的示例。值得注意的是数据非常嘈杂,其原因是运动速度慢,因此产生的转矩小,相对噪音大
 +
 
 +
 
 +
 
 +
[[file:DM_25.png|900px|thumb|center|<center><big>''图 20 - 3轴Delta机器人慢速识别输出REC文件的示例''</big></center>]]
 +
 
 +
 
 +
图21显示了相同的Delta机器人和相同运动的扭矩误差。最上面的图是使用从慢速识别过程中检索到的参数的运动的结果,底部图是使用从良好识别过程中检索到的参数的运动的结果。可以看出,对于慢速的识别过程的情况,扭矩误差显着增加。
  
 +
[[file:DM_26.png|900px|thumb|center|<center><big>''图21 - 上图 - 使用从慢速识别过程中检索的动力学参数的Delta机器人的三个轴的扭矩误差。 下图 - Delta机器人3轴的转矩误差,使用从良好的识别过程中检索到的动态参数。''</big></center>]]
  
Note that usually the largest error occurs in the beginning, ending or direction changing of the movement. Therefore, the magnitude of the errors in these cases determine what the Temax value will be. Nevertheless, these cases are also characterized with very low velocities. Hence, it is possible to write an application that monitors the torque error and joint velocities, and ignore the cases when the velocity is small, or perhaps increase the Temax just for these cases. As a result, the collision detection feature can become very sensitive
+
==运动太快==
 +
这个问题不太可能发生,但仍然可能导致较差的结果或识别过程失败。<br>
 +
如果机器人关节达到极限,则电机转矩可达到饱和值。目前的动力学模型没有考虑到饱和度,因此如果发生饱和,将导致较差的识别结果。
  
=Review of the possible reasons for an identification failure=
+
==运动持续时间太短==
This section reviews some possible reasons that may cause poor results or a failure of the identification process. The next section reviews how to identify these reasons.
+
识别是基于在机器人移动过程中记录的收集数据。如果没有足够的数据,则识别可能过度拟合数据,并且将仅针对所收集的数据的区域而准确地进行预测。在这种情况下,识别可能报告为成功,因此用户必须判断所收集的数据是否足够。经验法则是每个关节至少应该完成3个周期。
==Movement is too slow==
 
The dynamic identification model requires that the robot joints will move in a high velocity, as mentioned in section 3. When the joints move at a low velocity, the developed torque in the joints opposes mainly the joints friction and gravity torques, and the acceleration and inertia terms are relatively small. Therefore, the dynamic model parameters identification will perform poorly. Furthermore, the identification process ignores data that is under certain minimal velocity, so moving slowly can also cause for lack of data.<br>
 
  
  
That being said, in such a case, the output PRG identification file may report that the identification process was successful and the resulting max relative errors can be small. However, later, when attempting to move at higher velocities than the velocities used during the identification process, the additive torque command predictions will most likely perform poorly.<br>  
+
==运动区域太小==
 +
识别是基于在机器人移动过程中记录的收集数据。 如果数据不是分散在机器人的整个工作区域,那么识别可能会过度地拟合数据,并且仅针对所收集的数据的区域来准确地进行预测。<br>
 +
在这种情况下,识别可能被报告为成功,因此用户必须判断所收集的数据是否足够。 一个经验法则是每个关节都应该达到位置值,与其正负位置极限接近。
  
 +
==TorqueFactor属性未配置好==
 +
每个机器人的动力学模型是基于MKS单位系统,因此转矩反馈值应该以[Nm]为单位。 如果TorqueFactor特性配置不当,扭矩反馈将不会有合适的值,并且模型方程将会出错。<br>
 +
在这种情况下,识别过程将表现不佳,所识别的模型参数将不正确。
  
Figure 20 shows an example for an identification output REC file for a 3 axes delta robot where the motion was slow during the identification. It is noticeable that the data is very noisy. The reason for that is that the movement is slow, hence the developed torques are small and the relative noise is large
+
==错误的DynamicModel属性的类型==
 +
一些运动学模型被分配了多种类型的动力学模型。这些不同的型号是为了处理不同的配置。例如,一个线性轴可以是水平的,垂直的或者倾斜一定的角度,这些配置中的每一个具有不同的动力学模型和不同的DynamicModel属性值。<br>
 +
如果设置了错误的DynamicModel值,识别过程将表现不佳。
  
 +
=如何根据输出文件来评估失败原因=
 +
本节回顾生成的识别文件和识别过程的一些可能的失败结果。失败的原因可能是识别过程失败,或者识别过程成功,效果不佳。
  
[[file:DM_25.png|900px|thumb|center|<center><big>''Figure 20 - An example of a slow identification output REC file for a 3 axes delta robot''</big></center>]]
+
==识别过程失败==
 +
识别失败是其中一个关节导致最大相对误差大于50%的情况。 以下是可能导致此结果的一些原因:<br>
 +
* 一个或多个关节运动太慢。这可以在第6行和第7行的输出PRG文件中找到。第6行报告为每个关节收集了多少个数据点。 第7行报告有多少点的速度大于速度阈值。 如果一个或多个关节阈值之后的数据点数量明显小于收集点的总数,则意味着该关节运动太慢。<br>
 +
* 一个或多个关节达到饱和。这可以在输出REC文件中识别。打开输出REC文件,只观察标题中关节的以下属性:tfb,tcmd和te。饱和度可以通过观察tfb突然到达峰值,而tdcmd持续稳定。
 +
* 对于小关节噪音很大。对于某些系统,噪声可能与工作的平均电流的数量级相同。在这种情况下,虽然净转矩误差很小,但相对转矩误差可能非常大。 在这种情况下,即使识别失败(考虑到没有更多问题),仍建议使用输出PRG文件中接收到的动力学的参数结果。为了表明这个问题,请打开输出REC文件,只观察标题中关节的以下属性:tfb,tcmd和te。 然后可以观察是否由于噪声而出现大的误差。 图22显示了工作平均电流的相同数量级的噪声示例,图23显示了相对较小噪声大小的示例
  
 +
[[file:DM_27.png|800px|thumb|center|<center><big>''图 22 - 一个噪声幅度相对大的例子。 <br>图例: 黄色 – TFb, 橙色 – TCmd, 蓝绿色 - TE''</big></center>]]
  
Figure 21 shows the torque error for the same delta robot and the same motion. The top figure is the result of the motion using the retrieved parameters from a slow identification process and the bottom figure is the result of the motion using the retrieved parameters from a good identification process. One can see that the torque errors increase dramatically for the case with slow identification process
 
  
[[file:DM_26.png|900px|thumb|center|<center><big>''Figure 21 – top – the torque error for the 3 axes of the delta robot using the retrieved dynamic parameters from a slow identification process. Botoom – the torque error for the 3 axes of the delta robot using the retrieved dynamic parameters from a slow identification process.''</big></center>]]
 
  
==Movement is too fast==
+
[[file:DM_28.png|800px|thumb|center|<center><big>''图 23 - 一个噪声幅度相对小的例子。 <br>图例: 红 – TFb, 橙色 – TCmd, 绿色 – TE''</big></center>]]
This problem is less likely to happen, but still, it can cause poor results or a failure of the identification process.<br>
 
If the robot joints are brought to their limits, the motor torque can reach to a saturation value. The current dynamic model does not take saturation into account, therefore, if saturation occurred, it will cause poor identification results
 
  
==Movement duration is too short==
+
==识别过程成功但实时预测结果不佳==
The identification is based on the collected data that is recorded during the robot movement. If there is not enough data, the identification may overfit the data and will predict accurately just for the region of the collected data.  In such case the identification may be reported as successful, hence the user has to judge if the collected data is sufficient. A rule of thumb is that each joint should complete at least 3 cycles.
 
  
==Movement region is too small==
+
识别过程可以报告成功,但实时执行效果不佳。由于某种原因,该模型能够很好地拟合数据,但是对于正常操作中的其他运动,该模型还不够好。这通常是因为机器人在识别过程中没有覆盖其工作空间的主要部分。以下是可能导致此结果的一些原因:<br>
The identification is based on the collected data that is recorded during the robot movement. If the data is not scattered over the entire work area of the robot, the identification may overfit the data and will predict accurately just for the region of the collected data.<br>
+
* 一个或多个关节的振幅不够大,不能覆盖关节的运动范围。 这可以在输出REC文件中查看,或者只是重新检查关节的幅度是否足够大。
In such case the identification may be reported as successful, hence the user has to judge if the collected data is sufficient. A rule of thumb is that each joint should reach position values closely to its negative and positive position limits.
+
* 识别过程持续时间太短(相对于关节速度)。可以通过查看输出REC文件来识别。 看看每个关节的pfb属性。如果一个或多个关节不能完成至少3个周期,增加识别持续时间(或关节速度)应该有所帮助。
 +
* 所选择的频率是重叠的或不容许的位置足够多样性。可以通过查看输出REC文件来识别。可以查看所有关节的pfb属性。如果两个或多个关节似乎一起振荡,或在少量周期后重叠,或者非常类似地振荡,则尝试更改有问题的关节的频率。
  
==TorqueFactor properties are not configured well==
 
The dynamic model of each robot is based on the MKS system of units defines, hence the torque feedback values should be in units of [Nm]. If the TorqueFactor properties are not configured well than the torque feedback will not have suitable values and the model equations will be wrong.<br>
 
In such a case, the identification process will perform poorly and the identified model parameters will not be correct.
 
  
==Wrong type of DynamicModel property==
+
=测试规格=
Some kinematic models are assigned with more than one type of dynamic model. These different models are in order to deal with different configurations. For example, a linear axis may be horizontal, vertical, or tilted in a certain angle, each of those configurations has a different dynamic model and different DynamicModel property value.<br>  
+
本节介绍如何测试动力学模型功能并检查其是否正常工作。测试过程包括记录特定属性,同时执行某种机器人运动。记录的最低要求属性是Tfb,Taddcmd,Te。 测试可以分为两种类型:一种是检查扭矩预测的准确性对于所有类型的运动是合理的; 另一个是检查机器人性能(例如整定时间,振动等)是否随着动力学模型的激活而有所改善。<br>  
If a wrong DynamicModel value is set, the identification process will perform poorly.
 
  
=How to assess what is the failure reason based on the output files=
 
This section reviews some possible failure results of the generated identification files and the identification process. The failures may be the failure of the identification process, or successful identification process with poor performance results.
 
  
==Identification process failure==
+
测试精度等同于测试转矩误差。为了测试扭矩误差,只需生成一个任务,在运行时产生一些运动变化并记录所需的属性。 或者,如果机器人应用程序任务已知,则可以使用此任务来执行此测试。 只需在记录Tfb,Taddcmd和Te属性的同时运行任务。 然后,观察记录(特别是Te属性),并确定是否达到满意的精度。
An identification failure is the case where one of the joints results with a max relative error larger than 50%. Here are some reasons that may cause this result:<br>
 
* One or more of the joints moved too slow. This can be identified in the output PRG file in lines 6 and 7. Line 6 reports how many data points were collected for each joint. Line 7 reports how many points are with a velocity larger than the velocity threshold. If the data points number after thresholding for one or more of the joints is significantly smaller than the total number of collected points, then it means that this joint moved too slow.<br>
 
* One or more of the joints reached saturation. This can be identified in the output REC file. Open the output REC file and observe only the following properties of the joint in subject: tfb, tcmd and te. Saturation can be identified by seeing that the tfb reaches a sudden plateau while the tdcmd continues regularly.
 
* Large noise for small joints. For some systems, the noise can be in the same order of magnitude of the mean operation currents. In such cases, the
 

Latest revision as of 06:35, 22 January 2018

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

TOP2.png


Contents

简介 - 它是如何工作以及优势

逆动力学模型(IDM)功能用于补偿运动元素的摩擦和动态效应,否则会导致定位误差和次优的定位和跟踪行为。


IDM功能的动机是使用关于运动的额外知识,而不仅仅是位置(即速度和扭矩)来抵消扭矩控制器的命令值,以便使它们反应更快,从而减少最终的定位误差并改善到位行为。



术语逆动力学模型(通常称为“转矩计算控制”)意味着softMC负责运动元素的笛卡尔运动,不仅计算下一个笛卡尔设定点的关节位置,还计算运动所需的关节力矩。 为了能够做到这一点,它需要一个动态模型–即运动元素的质量和惯性的模型。 关节速度和扭矩然后作为附加的扭矩命令数据发送到驱动器(见图1)。



在大多数情况下,用户没有动力学模型的参数。在这种情况下,可以使用softMC识别过程来估算这些参数。 softMC可以通过测量并估算一些常用机器人模型的动力学模型参数。 识别过程如下进行:当机器人被命令执行一定的运动时,记录运动参数和机器人内部马达扭矩。 然后,根据机器人模型和测量结果生成机器人的动力学模型的参数。


图 1 - Taddcmd的控制系统和前馈部分的示意图

力矩单位

MKS单位制将力矩单位定义为[Nm](牛顿*米)。当涉及电机时,电机转矩通常建模为与电流成比例。因此,可以在每个系统中以不同的单位来定义力矩。本节介绍每个系统的力矩单位以及它们如何相互关联。


softMC通过驱动器读取电机的转矩,但不是[Nm]单位。 因此,softMC包含一个名为TorqueFactor(TFac)的轴属性,它将电机的转矩参数分开,以便将其转换为所需的单位。 该操作的结果存储在名为 TorqueFeedback的轴属性中。


CDHD驱动器设置

CDHD驱动器具有以下参数来定义电机的电流特性:

  • MICONT – 以安培[A]为单位, 但是以毫安[mA]为单位读取,定义了电机的连续电流。这是长运行周期的最大允许值。
  • MIPEAK – 以安培[A]为单位,但是以毫安[mA]为单位来读取,定义了电动机的峰值电流。 这是非常短的运行周期的最大允许值。
  • MKT – 对旋转电机, 以[Nm/A]为单位读取, 定义了转矩常数,即电机每安培单位电机输出多少转矩。
  • MKF – 对直线电机, 以[N/A]为单位读取, 定义了转矩常数,即电机每安培单位电机输出多少转矩。
  • I – 以milli-MICONT [0.001 * MICONT]为单位读取。 它表示电流的实际值。它对应于电机中的电流。


TorqueFeedback属性计算如下:

因此,应该适当地设置TorqueFactor属性,以便将TorqueFeedback值转换为[Nm]:


100万是为了补偿MICONT单位是[mA],当前实际值是以[0.001 * MICONT]为单位。 通过这种方式定义TorqueFactor会将当前实际值转换为[Nm]的单位(并将该值分配给TorqueFeedback)。 在设置Tfac后,所有的扭矩值(Tfb,TCmd,Tmax,TorqueThreshold,Te)将始终以[Nm](线性轴为[N])为单位。 图2给出了在MC-Basic中这个计算的例子。

EtherCAT和CANopen标准(DS402)

EtherCAT标准定义了与上述参数等效的以下参数:

CDHD 参数 EtherCAT 参数 EtherCat 索引
MICONT 电机额定电流 0x6075
MIPEAK 电机峰值电流 0x2036
MKT 力矩常数 0x2039
MKF 直线电机推力常数 0x2038
I 实际电流值 0x6078

softMC转矩相关属性

softMC具有以下转矩相关的属性:

  • <axis>.TorqueThreshold - 轴转矩阈值,用于定义TADDCOMMAND值的限制。如果超过此值,softMC引发一个错误。可以将此值设置为用户所需的某个值,或设置为与驱动器MICONT或MIPEAK匹配的值。

例如,将TorqueThreshold设置为与MICONT匹配的值:

将TorqueThreshold设置为与MIPEAK匹配的值:

  • <axis>.AdditiveTorqueDelay - 计算出的附加转矩指令基于pcmdvcmd。由于命令与轴的实际位置和速度之间存在延迟,所以相同的延迟应该被提供给附加转矩。AdditiveTorqueDelay用于此目的。该属性以循环时间为单位,它接受正整数值。AdditiveTorqueDelay工作如下:计算出的一定时间的附加转矩指令后只发送AdditiveTorqueDelay给驱动器。此属性的默认值是3。

如何包含传动比

通常,电机通过齿轮系统连接到关节。齿轮系统会影响电机所承受的扭矩负载,因此扭矩系数应该得到适当的补偿。经过补偿后,TorqueFactor参数将电流实际值参数从电机内部的电流([mMICONT]单位)转换为关节所承受的扭矩(单位[Nm])。

这里GR代表传动比。 图3显示了一个传动比的例子。

图 2 - 在MC-Basic中为EtherCAT驱动器设置所有轴的扭矩系数(TFac)属性


图3 - 齿轮比为1:2的齿轮机构的示例

线性轴

以上所有都是指旋转轴。线性轴和旋转轴相比,是力而不是转矩。这些力以牛顿[N]为单位进行测量。因此,在处理线性轴时应进行一些修改。基本上有两种类型的直线轴 - 带有丝杠/滑轮/其他的旋转电机和直线电机。

带有丝杠/滑轮的旋转电机或用于将旋转运动转换为直线运动的不同类型的机构

这种类型的处理与常规旋转轴一样进行单一修改。用于将旋转运动转换为线性运动的机制将由电机承载的扭矩负载转换为线性轴上的力负载。因此,TorqueFactor应该乘以另一个因子。此参数应包含旋转电机每转一圈(经过齿轮后)的直线运动量。对于丝杆,它将是丝杆导程[毫米/转]。对于一个滑轮,它将是滑轮的半径乘以2π[mm / rev]。TorqueFactor为:

SL代表丝杆导程或等效参数。 图4为一个丝杆导程的例子。


图 4 - 丝杆 (顶部)和丝杆(底部)例子


直线电机

这种类型与普通旋转轴的处理方式相同,但用 MKT 替换MKF属性,单位为[N/A],没有减速比, 因此TorqueFactor为:


操作模式和PDO

驱动器在使用动力学模型时的操作模式应该是周期同步位置模式。 动力学模型用于计算每台电机所需的转矩(或电流),但结果从来都不精确。 附加转矩指令仅用作第3节所述的前馈信号。
以下是使用动力学模型所必需的其他PDO(‘周期同步位置模式’PDO之外)的列表。:

PDO 索引 描述
RX: 0x60B2 转矩偏置 –附加转矩信号
TX 0x6078 实际电流值 – 转矩反馈信号

如何进行动力学模型参数识别

数据采集

识别过程是通过移动机器人来记录运动参数和内部电机转矩。然后,根据机器人模型和测量结果,使用记录的数据来提取动力学模型参数。


高质量的数据对于获得良好的识别结果非常重要。高质量数据包含以不同速度和加速度分布在机器人运动空间的数据点。分散的数据为机器人的各种运动提供更好的参数拟合,从而可以高精度地预测附加转矩指令。


推荐的移动类型是使用正弦波命令。该命令以指定的幅度和频率移动机器人的每个关节。为了获得良好的离散数据,每个关节的振幅应接近其全部位置范围,每个关节的频率应与其他关节不同。每个关节的频率决定了关节之间运动的相关性。如果两个或多个关节具有相同的频率,则它们总是处于相同的相位,这将导致非离散的数据。此外,如果某个关节的频率是另一个关节的频率的倍数,那么在更快的关节的几个周期(更确切地说,乘法因子)之后将会重复相同的运动。实际上,对于任何合理的频率值,运动将在几个周期后重复。但是,为了获得良好的结果,建议每个关节至少获得三个周期的数据。因此,只要运动在这个记录时间内不重复,频率就选择好了。 以下是三种关节机器人的一些示例:


J1 J2 J3 注释 质量
1 2 1.2 j1和j2将在j1的1个周期和j2的2个周期之后重复 Bad
1 1.2 1.2 j2和j3将在j2的3个周期和j3的2个周期之后重复 Medium
1.1 1.3 1.5 j1,j2和j3 将在j1的11个周期,j2的13个周期和j3的15个周期之后重复 Good


第一个例子不是一个好的频率选择,第二个例子是好的,最后一个例子是很好的参数选择。 显示这些正弦波组合的图表如图5所示。


最后,关节的速度也很重要。运动过程中的峰值速度应该接近每个关节的最大速度。在高速度下,动力学模型的加速度和速度对象是显着的,从而允许更准确的识别过程。关节的峰值速度可以通过运动的幅度和频率来调节。首先定义每个关节的振幅,然后设置一些任意的频率,例如{1.1,1.3,1.5},然后用一个标量因子乘以频率矢量:factor * {1.1,1.3,1.5}。通过改变因子,可以控制关节的速度。


图 5 – 在每个图中正弦波的不同频率组合的图表对应于表2,正弦波开始重复的位置(如表2中所述)用橙色圆圈指出(最后的图没有重复)

识别任务的示例

图6显示了识别过程的示意图。


执行识别过程的程序示例,该程序用于delta机器人:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-30,-30,-30,-200}
7.      sineTarget = {70,70,70,200}
8.      SWfreq = 0.3*{1,1.27,1.43,1.13} 
9.	
10.     with robot	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program

这里是对示例程序的解释:

行号 描述
6 定义系统每个关节的起始位置
7 定义结束位置
8 定义每个关节的正弦波的频率(注意频率乘以因子0.3)。总的来说,这些是关节在某一时刻的位置:
关节 在某时刻的位置 [deg]
J1
J2
J3
J4
15 定义适合机器人的动力学模型,这将在稍后讨论。 请注意,只有在禁用机器人的情况下,才能修改此参数.
21 将机器人移动到起始位置
26 开始向目标点正弦波运动
29 用IdentificationStart命令开始记录数据。在这行上,还可以设置一个将截止频率设置为IdentFilterFreq收集数据(通过pfb和tfb)的低通滤波器。截止频率必须大于最大正弦波频率。可以尝试多个截止频率,并在原始数据和滤波数据之间进行比较,然后选择过滤大部分噪声而不改变实际数据的数据。请查看识别wiki页面,以获取有关可以为IdentificationStart命令设置的参数的更多信息。
31 设置休眠时间 – 记录时间
32 停止记录并应用动力学模型参数识别


图6 - 识别过程的示意图

在此任务结束时,将在MC文件夹中创建一个名为IDNT<group num>.PRG和IDNT<group num>.REC的文件。
PRG文件包含识别的参数,REC文件包含用于识别的记录数据。
以下小节介绍如何将识别应用于不同的机器人模型。

不同机器人模型的识别过程

单轴模型

有两种类型的单轴关节,直线和旋转。这些类型中的每一个都有几个不同的动力学模型,可以在动力学模型wiki页面(和第5.4节)中查看。 简而言之,这些是不同的模型:

直线轴

直线轴类型有2个动力学模型类型:

  1. 水平轴
  2. 倾斜轴 – 相对于垂直轴线具有角度α的轴,范围在0和90度之间(图7)。当α= 0时,轴是垂直的,当α= 90时,轴是水平的(α参数是通过识别找到的(即,它不是用户输入)。
    图7 - 倾斜的线性轴

旋转轴

旋转轴类型有3种动力学模型:

  1. 简单的旋转轴 - 其质心位于旋转轴上。
  2. 水平曲柄臂轴(图8左)。
  3. 垂直曲柄臂轴(图8右)。
图8 - (左)水平曲柄臂轴,(右)垂直曲柄臂轴


适用于上述所有类型的识别任务示例:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = -350
7.      sineTarget = 350
8.      SWfreq = 1.5 
9.	
10.     with axis	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 2
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq Abs = 1
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 	
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program


要重复使用此代码,请记住使用适合于应用程序的频率和振幅值,并使用合适的动力学模型类型。

SCARA机器人

SARA机器人有两个运动学模型,一个有三个轴(XYZ),另一个有四个轴(XYZR)。
但是,只有一种适合这两种运动学模型的动力学模型。 用于3轴SCARA的识别任务示例:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-160,-160,0}
7.      sineTarget = {160,160,150}
8.      SWfreq = 0.3*{1,1.27,1.43} 
9.	
10.     with SCARA	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program

用于4轴SCARA的识别任务示例:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-160,-160,0,-350}
7.      sineTarget = {160,160,150,350}
8.      SWfreq = 0.3*{1,1.27,1.43,1.13} 
9.	
10.     with SCARA	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program

要重复使用此代码,请记住使用适合于应用程序的频率和幅度值。
一些SCARA机器人具有耦合关节,通常是第三和第四关节。目前,SCARA机器人的动力学模型没有考虑耦合。因此,耦合关节可能会有很大的误差。


DELTA机器人

Delta机器人有两个运动学模型,一个有三个轴(XYZ),另一个有四个轴(XYZR)。
但是,只有一种适合这两种运动学模型的动态模型。 用于3轴Delta的识别任务示例:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-30,-30,-30}
7.      sineTarget = {70,70,70}
8.      SWfreq = 0.3*{1,1.27,1.43} 
9.	
10.     with DELTA	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program


适用于4轴Delta的识别任务示例:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-30,-30,-30,-350}
7.      sineTarget = {70,70,70,350}
8.      SWfreq = 0.3*{1,1.27,1.43,1.13} 
9.	
10.     with DELTA	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program


要重复使用此代码,请记住使用适合于应用程序的频率和幅度值。

PUMA机器人

PUMA机器人只有一个运动学模型,但它有两个不同的动力学模型。
第一个动力学模型是像其他机器人一样的常规模型。
第二个模型是一个半静态模型,这意味着它只适用于慢动作和静态位置。该模型仅考虑重力和摩擦力/扭矩。

完整常规模式

该模型识别规则和之前的模型一样。
PUMA工作的识别任务示例:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-100,-170,100,-60,-60,-100}
7.      sineTarget = {100,-40,235,60,60,100}
8.      SWfreq = 0.15*{1.56,1,1.31,1.47,1.21,1.17}
9.	
10.     with PUMA	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program

要重复使用此代码,请记住使用适合于应用程序的频率和幅度值。

半静态模型

到目前为止,半静态模型识别与所有的例子都有一点不同。 这个模型只考虑重力和摩擦力,换句话说它忽略了动力。 因此,测量应该包括可以忽略不计的动态力,这可以通过缓慢运动来实现。
这个识别过程比通常的识别过程更长,大约需要2-3分钟。另外,建议执行少于3个周期,1个周期就足够了。.
另外,类似于前面的例子,半静态模型阈值数据点的速度。但是与前面的例子不同,这里有两个阈值,一个用于避免非常低的速度,避免数字误差),另一个用于避免高速度(避免显着的动态力)。 这种识别过程的例子:

1.  program
2.      dim startPoint as generic joint
3.      dim sineTarget as generic joint
4.      dim SWfreq as generic joint
5. 
6.      startPoint = {-100,-170,100,-60,-60,-100}
7.      sineTarget = {100,-40,235,60,60,100}
8.      SWfreq = 0.02*{1.56,1,1.31,1.47,1.21,1.17}
9.	
10.     with PUMA	
11.         attach
11.	    En = 0
12.	    while En
13.	        sleep 100
14.	    end while
15.	    DynamicModel = 1
16.	    En = 1
17.	    while not En
18.	        sleep 100
19.	    end while
20. 
21.	    Move startPoint Abs = 1
22.	    while IsMoving 
23.	        sleep 100
24.	    end while
25.
26.	    SineWave sineTarget SineWaveFreq = SWfreq
27.	    sleep 2000
28.	' IdentFilterFreq is a Low pass filter.Frequency should be below 125 Hz
29.	    IdentificationStart IdentFilterFreq = 80 
30.	' the time of the identification, you can change time.		           
31.	    sleep 20000 
32.	    IdentificationFinish
33. 
34.	    stop
35.	    while IsMoving 
36.	        sleep 100
37.	    end while
38.	    proceed
39.	    En = 0
40.
41.	    detach
42.     end with
43. end program


请注意造成慢速运动的重要低频。

图9 - 识别过程中puma机器人的运动路径示例

动力学模型参数

本节列出了每种类型的动力学模型的动力学参数。

旋转轴

动力学模型1 - 简单的旋转轴

序号 参数 注释
1 运动部件的旋转轴周围的总转动惯量
模型方程


动力学模型2 - 水平曲柄臂轴

序号 参数 Comments
1 运动部件的旋转轴周围的总转动惯量
2 曲柄臂的长度的平方(轴到有效载荷)
模型方程


动力学模型3 - 垂直曲柄臂轴

序号 参数 注释
1 运动部件的旋转轴周围的总转动惯量
2 曲柄臂的长度的平方(轴到有效载荷)
3 质量(无有效载荷)* 重力加速度* 到质心的距离
4 重力加速度 * 到有效负载的距离
模型方程

线性轴

动力学模型1 - 水平轴

图10 - 水平线性轴
序号 参数 注释
1 运动部分的总质量。
模型方程


动力学模型2 - 垂直或倾斜的轴

图11 - 垂直线性轴
序号 参数 注释
1 运动部分的总质量.
2 由重力产生的恒力
3 用于考虑有效载荷质量的重力系数。(g = 9.80665)
模型方程

SCARA 机器人

动力学模型1

图 12 - scara机器人
序号 参数 注释
1
2
3
4
5
6
7
8

DELTA 机器人

动力学模型1

图 13 - Delta 机器人
序号 参数 注释
1 kg*m2
2 kg*m2/sec2
3 kg
4 kg*m2
5 kg
6 kg
7 kg*m2
8 kg*m2
9 m
10 m
11
12
13
14

PUMA 机器人

动力学模型1

图 14 - Puma机器人

Description:

  • - 重力常数
  • - 第 ith个连杆的质量
  • - 第ith和第ith+1关节之间的公共法线的长度
  • - 在第ith个和第ith+1个关节之间沿z轴偏移
  • - 从第ith个关节到第ith+1 个关节质量中心的距离
序号 参数 注释
1
kg/m^2
2 kg/m^2
3 kg/m^2
4 kg/m^2
5 kg/m^2
6 kg/m^2
7 kg/m^2
8 kg/m^2
9 kg/m^2
10 kg/m^2
11 kg/m^2
12 kg/m^2
13 kg/m^2
14 kg/m^2
15 kg/m^2
16 kg/m^2
17 kg/m^2
18 kg/m^2
19 kg/m^2
20 kg/m^2
21 kg/m^2
22 kg/m^2
23 kg/m^2

动力学模型2 - 重力

序号 参数 注释
1 kg*m^2/s^2
2 kg*m^2/s^2
3 kg*m^2/s^2
4 kg*m^2/s^2

带有有效载荷的参数识别

IdentificationStart命令有一个名为‘IdentPayload’的布尔参数。如果此参数设置为false,则会定期执行识别过程。如果此参数设置为true,则识别过程仅识别有效载荷质量或惯性。

为了识别有效载荷,必须遵循这些步骤:

  1. 执行识别过程没有有效载荷。
  2. 设置动力学模型参数(通过运行identification PRG文件)。
  3. 将‘IdentPayload’设置为true,并对有效负载执行识别过程。
NOTE-Info.svgNOTE
在对有效载荷执行识别过程并将“IdentPayload”设置为true之后,identification PRG文件将包含步骤1中的动态模型参数以及步骤3中的有效载荷参数。


NOTE-Info.svgNOTE
该程序适用于所有动态模型除PUMA机器人的动力学模型1外

识别输出文件的说明

识别输出PRG文件的示例。该文件在识别过程结束时生成,命名为:IDNT <group num> .PRG:

1. 'Dynamic parameter identification for PUMA succeeded!
2. 'Identification date and time: 29/03/17 08:17:08
3. 'Max relative torque error: axis 1 = 13.86 %; axis 2 = 8.70 %; axis 3 = 7.79 %; axis 4 = 17.87 %; axis 5 = 23.87 %; axis 6 = 43.85 %; (maximal allowed = 50.00 %)
4. 'Mean relative torque error: axis 1 = 3.18 %; axis 2 = 1.71 %; axis 3 = 1.88 %; axis 4 = 3.59 %; axis 5 = 5.88 %; axis 6 = 12.41 %;
5. 'Signal filter cutoff frequency = 20.000 Hz
6. 'Signal data length = 49876 samples (raw record length = 50000 samples)
7. 'Moving data length: axis 1 = 35998 samples (threshold = 0.038770 rad/s); axis 2 = 35405 samples (threshold = 0.031481 rad/s); axis 3 = 36032 samples (threshold = 0.039294 rad/s); axis 4 = 36785 samples (threshold = 0.041069 rad/s); axis 5 = 34931 samples (threshold = 0.038757 rad/s); axis 6 = 29759 samples (threshold = 0.062830 rad/s); 

8.  PROGRAM CONTINUE
9.  ATTACH PUMA

10. PUMA.DynamicParameter[1] = 8.759309007e+01
11. PUMA.DynamicParameter[2] = 1.021832253e+01
12. PUMA.DynamicParameter[3] = 3.042091725e+01
13. PUMA.DynamicParameter[4] = 1.560383089e+00
14. PUMA.DynamicParameter[5] = 0.000000000e+00
15. PUMA.DynamicParameter[6] = 0.000000000e+00

16. A1.ViscousFriction = -1.547427791e+02
17. A1.CoulombFriction = -2.018153298e+01

18. A2.ViscousFriction = -1.603287029e+02
19. A2.CoulombFriction = -4.658045702e+01

20. A3.ViscousFriction = -1.085257604e+02
21. A3.CoulombFriction = -1.961987594e+01

22. A4.ViscousFriction = -1.142833743e+01
23. A4.CoulombFriction = -9.124446870e+00

24. A5.ViscousFriction = -2.468491129e+01
25. A5.CoulombFriction = -3.713111266e+00

26. A6.ViscousFriction = -2.173025205e+00
27. A6.CoulombFriction = -9.724658207e-01

29. PUMA.DynamicModel = 2

30. DETACH PUMA
31. TERMINATE PROGRAM

1-7行提供了有关识别过程的信息。第1行报告识别是否成功。

 
2. 'Identification date and time: 29/03/17 08:17:08
3. 'Max relative torque error: axis 1 = 13.86 %; axis 2 = 8.70 %; axis 3 = 7.79 %; axis 4 = 17.87 %; axis 5 = 23.87 %; axis 6 = 43.85 %; (maximal allowed = 50.00 %)

第2行报告识别的日期和时间.
第3行报告记录的最大相对扭矩误差。扭矩误差作为TorqueAdditiveCommand(Taddcmd)减去测量的TorqueFeedback。这个计算的Taddcmd被当作Taddcmd,这个Taddcmd可以用已经确定的动力学参数进行计算,就好像这个运动已经完成了一样。 换句话说,误差是真实数据和拟合模型之间的差异。 相对转矩误差的计算方法是转矩误差除以最大测量转矩反馈(每个关节及其最大转矩反馈值)。 最大相对转矩误差是每个关节相对值的最大值。最大相对转矩误差的公式是:


如果其中一个关节的这个值大于50%,则认定为失败。


4. 'Mean relative torque error: axis 1 = 3.18 %; axis 2 = 1.71 %; axis 3 = 1.88 %; axis 4 = 3.59 %; axis 5 = 5.88 %; axis 6 = 12.41 %;
5. 'Signal filter cutoff frequency = 20.000 Hz
6. 'Signal data length = 49876 samples (raw record length = 50000 samples)


第4行报告平均相对转矩误差,所有记录时间的相对转矩误差平均值被记录并显示在每个关节上。
第5行报告用于低通滤波器的截止频率。
第6行报告记录了多少个数据点。


7. 'Moving data length: axis 1 = 35998 samples (threshold = 0.038770 rad/s); axis 2 = 35405 samples (threshold = 0.031481 rad/s); axis 3 = 36032 samples (threshold = 0.039294 rad/s);
'axis 4 = 36785 samples (threshold = 0.041069 rad/s); axis 5 = 34931 samples (threshold = 0.038757 rad/s); axis 6 = 29759 samples (threshold = 0.062830 rad/s);


第7行报告每个关节有多少数据点用于模型拟合。 如果这些点中的关节速度低于某个阈值(每个关节的阈值也在该行中报告),则丢弃一些数据点。这是因为低速数据点导致模型拟合的数值误差。 因此,上面解释的所有相对误差只是针对模型拟合所考虑的那些点来计算的。


 
10. PUMA.DynamicParameter[1] = 8.759309007e+01
11. PUMA.DynamicParameter[2] = 1.021832253e+01
12. PUMA.DynamicParameter[3] = 3.042091725e+01
13. PUMA.DynamicParameter[4] = 1.560383089e+00
14. PUMA.DynamicParameter[5] = 0.000000000e+00
15. PUMA.DynamicParameter[6] = 0.000000000e+00

第10-15行(为此文件)设置拟合的动力学模型参数。


16. A1.ViscousFriction = -1.547427791e+02
17. A1.CoulombFriction = -2.018153298e+01
18. A2.ViscousFriction = -1.603287029e+02
19. A2.CoulombFriction = -4.658045702e+01
20. A3.ViscousFriction = -1.085257604e+02
21. A3.CoulombFriction = -1.961987594e+01
22. A4.ViscousFriction = -1.142833743e+01
23. A4.CoulombFriction = -9.124446870e+00
24. A5.ViscousFriction = -2.468491129e+01
25. A5.CoulombFriction = -3.713111266e+00
26. A6.ViscousFriction = -2.173025205e+00
27. A6.CoulombFriction = -9.724658207e-01

第16-27行(用于此文件)设置拟合的摩擦参数。

29. PUMA.DynamicModel = 2


第29行(为此文件)设置用于此识别过程的动力学模型。


成功条件

成功的条件是基于相对扭矩误差。每个轴应具有低于50%的最大相对扭矩误差值,以便将识别视为成功。


扭矩误差作为TorqueAdditiveCommand(Taddcmd)减去测量的TorqueFeedback。 这个计算的Taddcmd被当作Taddcmd,这个Taddcmd可以用已经确定的动力学参数进行计算,就好像这个运动已经完成了一样。 换句话说,误差是真实数据和拟合模型之间的差异。


相对转矩误差的计算方法是转矩误差除以最大测量转矩反馈(每个关节及其最大转矩反馈值)。 最大相对转矩误差是每个关节相对值的最大值。 如果其中一个关节的这个值大于50%,则认定为失败。 第4行报告平均相对转矩误差,所有记录时间的相对转矩误差平均值被记录并显示在每个关节上。 请注意,相对扭矩误差仅针对处于最小速度限制的点进行评估。


不同关节之间的最大相对扭矩误差可能会有所不同。通常,小型关节(小型电机)具有较大的相对误差。这是因为这些电机所施加的转矩很小,测量中的噪音与所施加的转矩处于相同的数量级。


例如: 我们假设对于某个点j1.TorqueFeedback = 80和j1.TorqueAdditiveCommand = 100.对于这一点,j1.TorqueError = 20.假设在记录过程中最大j1.TorqueFeedback是160,那么对于这一点相对转矩误差将是:j1.TorqueError/max(j1.TorqueFeedback) = 20/160 = 0.125 = 12.5%


参数

支持的机器人模型的动力学模型至少有一种动力学模型。 这些模型可以在wiki 页面中 Dynamic Models找到。 每个模型都基于一些由机器人不同部分的质量,长度和惯性组成的参数。 这些是借助识别过程正在评估的参数。 参数保存为robot.DynamicParameter [i],其中robot是机器人名称,i是Dynamic Models页面中所述参数的编号。 每个模型可能有不同数量的参数。


在动力学参数后,出现粘性摩擦和库仑摩擦参数:轴。摩擦摩擦,轴线。库仑摩擦。 机器人的每个关节都有这两个参数来定义它的摩擦系数。


除了这些参数之外,用户还应该考虑设置附加转矩指令的最大允许值。 这可以通过属性TorqueThreshold来设置,例如, a1.TorqueThreshold = 200.如果Taddcmd超过此值,则会给softMC报告错误。


在设置中包含标识输出文件

为了使动力学模型生效,只需在禁用机器人(en = 0)时运行IDNT<group num>.PRG文件。 请注意,这应该在机器人设置之后。 为了在系统初始化和机器人设置期间自动加载动态模型配置,只需添加该行:


Load IDNT<group num>.PRG到机器人设置'的AUTOEXEC.PRG或START PRG.PRG文件的末尾。

识别过程记录文件的说明

在识别过程结束时生成的另一个文件是数据记录文件。文件名称为: IDNT<group num>.REC。该文件包含识别过程使用的所有相关数据。以下是为每个关节显示的参数:

  • tfbRaw – TorqueFeedback(tfb)属性的原始记录数据。
  • pfbRaw – PositionFeedback(pfb)属性的原始记录数据。
  • tfb – 经过滤波的TorqueFeedback(tfb)属性的记录数据。
  • pfb – 经过滤波的PositionFeedback(pfb)属性的记录数据。
  • vfb – 经过滤波的VelocityFeedback (vfb)属性的记录数据。
  • afb – 经过滤波的AccelerationFeedback (afb)属性的记录数据。
  • tcmd –拟合模型生成的扭矩指令。识别的动力学参数和收集的数据用于计算此属性。 在常规模式下,这个属性实际上是TorqueAdditiveCommand(Taddcmd)。
  • te – TorqueError(te)由tcmd和tfb数据的差值计算得出。

该文件可用于更好的调试和故障排除,以及更好地理解识别过程。在图15中,您可以找到识别输出REC文件的示例:

Figure 15 - An example of an identification output REC file of a semi-static PUMA model

跟踪改进的示例(整定,位置误差)

SCARA机器人

有和没有动力学参数的4轴scara机器人的实验。机器人以900[mm/s]的线速度运动600[mm],在这个运动中记录机器人的笛卡尔速度和ISSETTLED属性(图16和17,ISSETTLED属性缩放3000倍)。

ISSETTLED属性指示实际运动元素位置是否在指定的整定范围内。整定范围由PESETTLE属性定义,并由TIMESETTLE属性进一步限定。当运动分析器完成后,位置误差(目标位置 - 实际位置)的绝对值将与PESETTLE属性进行比较。当结果小于或等于此属性的TIMESETTLE给定的时间时,ISSETTLED标志被设置。对于这个例子,PESETTLE被认为是0.001。因此,可以预期较短的整定时间表示较好的性能。
图16和17显示了来自实验的记录数据。结果表明,无运力学模型的运动的整定时间为300 ms,有动力学模型的整定时间为260 ms〜原整定时间的86.7%。


图 15 - SCARA机器人整定时间的一个例子。该图是针对没有动力学模型的情况,整定时间为300 [ms]


图 16 - Delta机器人整定时间改进的一个例子。该图是针对动力学模型的情况,整定时间减少到260 [ms]

DELTA 机器人

有和没有动力学参数的3轴Delta机器人的实验。机器人以3000[mm/s]的线速度运动550[mm],在这个运动中记录机器人的笛卡尔速度和ISSETTLED属性(图17和18,ISSETTLED属性缩放3000倍)。

ISSETTLED属性指示实际元素位置是否在指定的整定范围内。整定范围由PESETTLE属性定义,并由TIMESETTLE属性进一步限定。当运动分析器完成后,位置误差(目标位置 - 实际位置)的绝对值将与PESETTLE属性进行比较。当结果小于或等于此属性的TIMESETTLE给定的时间时,ISSETTLED标志被设置。对于这个例子,PESETTLE被设置为0.05。


因此,可以预期较短的建立时间表示较好的性能。


图17和18显示了来自实验的记录数据。结果表明,无动力学模型的这种运动的整定时间为268ms,动力学模型的整定时间44ms〜为原始建立时间的16.5%。


图 17 - Delta机器人整定时间改进的一个例子。该图是针对没有动力学模型的情况,整定时间为268 [ms]


图 18 - Delta机器人整定时间改进的一个例子。 该图是针对有动力学模型的情况,整定时间减少到44 [ms]

PUMA 机器人

有和没有动力学模型的实验。3轴以SineWave命令运动,而2轴停留在0。 图19显示了(顶部)和无(底部)动力学模型情况下的2轴位置误差。有和无动力学模型的峰峰值幅度分别为〜0.6e-3和〜1e-3。这意味着在这个例子中,使用动力学模型减少了约40%的误差。


图 19 - PUMA机器人跟踪改进的一个例子。顶部案例动力学模型峰峰幅度为0.627e - 3,底部案例无动力学模型峰峰幅度1.04e - 3

碰撞检测

动力学模型允许启用更精细的碰撞检测功能。 如果没有动力学模型,softMC可以通过机器人或关节的位置误差的阈值来检测碰撞。 然而,当使用机器人的动力学模型时,可以通过对转矩误差的阈值进行检测碰撞。扭矩误差比位置误差反应更快,因此可以实现更精细的碰撞检测。


为了激活特定关节的转矩误差的阈值,将TorqueErrorEnable(Teen)属性设置为1,例如, a1.Teen = 1。要设置的另一个属性是TorqueErrorMax(Temax),例如, a1.Temax = 10。这个属性设置了在softMC之上的最大允许转矩误差,如果超过该转矩误差,则报告一个错误。 请注意,Temax属性可能会在不同的关节之间有所不同,通常关节的电机越大,用户应该允许的更大的Temax。 还要注意,随着动力学模型识别结果变得更加准确,Temax可以随着扭矩误差变小而减小。


最后一个要考虑的属性是TorqueErrorFilter属性。 如果扭矩反馈有噪声,则会由于噪声导致错误的碰撞检测的而超过Temax值。过滤这些噪音有助于实现更好的碰撞检测程序。 此属性设置的值范围在0.0到1.0之间。 滤波器是一个非常简单的平均滤波器,它的执行过程如下:

TE是TorqueError属性,TEF是TorqueErrorFilter属性。


请注意,通常最大的误差发生在运动的开始,结束或改变方向。 因此,在这些情况下,误差的大小决定了Temax值的大小。 尽管如此,这些案例的特点是速度非常低。 因此,可以编写一个监视扭矩误差和关节速度的应用程序,忽略速度较小的情况,或者可能仅仅为这些情况增加Temax。 因此,碰撞检测功能可能变得非常灵敏。


检测识别失败的可能原因

本节回顾可能导致不良结果或识别过程失败的一些可能的原因。 下一节讨论如何识别这些原因。

运动太慢

如第3节所述,动态识别模型要求机器人关节高速运动。当关节低速运动时,关节内产生的扭矩主要克服与关节摩擦力和重力扭矩,加速度和惯性相对较小。因此,动态模型参数识别性能较差。 此外,识别过程忽略了一定速度下的数据,所以缓慢运动也会导致数据不足。


也就是说,在这种情况下,输出的PRG识别文件可以报告识别过程是成功的,并且所得到的最大相对误差可以很小。 然而,稍后当试图以比在识别过程中使用的速度更高的速度移动时,附加转矩指令预测将很可能表现不佳。


图20显示了识别期间运动速度较慢的三轴Delta机器人识别输出REC文件的示例。值得注意的是数据非常嘈杂,其原因是运动速度慢,因此产生的转矩小,相对噪音大


图 20 - 3轴Delta机器人慢速识别输出REC文件的示例


图21显示了相同的Delta机器人和相同运动的扭矩误差。最上面的图是使用从慢速识别过程中检索到的参数的运动的结果,底部图是使用从良好识别过程中检索到的参数的运动的结果。可以看出,对于慢速的识别过程的情况,扭矩误差显着增加。

图21 - 上图 - 使用从慢速识别过程中检索的动力学参数的Delta机器人的三个轴的扭矩误差。 下图 - Delta机器人3轴的转矩误差,使用从良好的识别过程中检索到的动态参数。

运动太快

这个问题不太可能发生,但仍然可能导致较差的结果或识别过程失败。
如果机器人关节达到极限,则电机转矩可达到饱和值。目前的动力学模型没有考虑到饱和度,因此如果发生饱和,将导致较差的识别结果。

运动持续时间太短

识别是基于在机器人移动过程中记录的收集数据。如果没有足够的数据,则识别可能过度拟合数据,并且将仅针对所收集的数据的区域而准确地进行预测。在这种情况下,识别可能报告为成功,因此用户必须判断所收集的数据是否足够。经验法则是每个关节至少应该完成3个周期。


运动区域太小

识别是基于在机器人移动过程中记录的收集数据。 如果数据不是分散在机器人的整个工作区域,那么识别可能会过度地拟合数据,并且仅针对所收集的数据的区域来准确地进行预测。
在这种情况下,识别可能被报告为成功,因此用户必须判断所收集的数据是否足够。 一个经验法则是每个关节都应该达到位置值,与其正负位置极限接近。

TorqueFactor属性未配置好

每个机器人的动力学模型是基于MKS单位系统,因此转矩反馈值应该以[Nm]为单位。 如果TorqueFactor特性配置不当,扭矩反馈将不会有合适的值,并且模型方程将会出错。
在这种情况下,识别过程将表现不佳,所识别的模型参数将不正确。

错误的DynamicModel属性的类型

一些运动学模型被分配了多种类型的动力学模型。这些不同的型号是为了处理不同的配置。例如,一个线性轴可以是水平的,垂直的或者倾斜一定的角度,这些配置中的每一个具有不同的动力学模型和不同的DynamicModel属性值。
如果设置了错误的DynamicModel值,识别过程将表现不佳。

如何根据输出文件来评估失败原因

本节回顾生成的识别文件和识别过程的一些可能的失败结果。失败的原因可能是识别过程失败,或者识别过程成功,效果不佳。

识别过程失败

识别失败是其中一个关节导致最大相对误差大于50%的情况。 以下是可能导致此结果的一些原因:

  • 一个或多个关节运动太慢。这可以在第6行和第7行的输出PRG文件中找到。第6行报告为每个关节收集了多少个数据点。 第7行报告有多少点的速度大于速度阈值。 如果一个或多个关节阈值之后的数据点数量明显小于收集点的总数,则意味着该关节运动太慢。
  • 一个或多个关节达到饱和。这可以在输出REC文件中识别。打开输出REC文件,只观察标题中关节的以下属性:tfb,tcmd和te。饱和度可以通过观察tfb突然到达峰值,而tdcmd持续稳定。
  • 对于小关节噪音很大。对于某些系统,噪声可能与工作的平均电流的数量级相同。在这种情况下,虽然净转矩误差很小,但相对转矩误差可能非常大。 在这种情况下,即使识别失败(考虑到没有更多问题),仍建议使用输出PRG文件中接收到的动力学的参数结果。为了表明这个问题,请打开输出REC文件,只观察标题中关节的以下属性:tfb,tcmd和te。 然后可以观察是否由于噪声而出现大的误差。 图22显示了工作平均电流的相同数量级的噪声示例,图23显示了相对较小噪声大小的示例
图 22 - 一个噪声幅度相对大的例子。
图例: 黄色 – TFb, 橙色 – TCmd, 蓝绿色 - TE


图 23 - 一个噪声幅度相对小的例子。
图例: 红 – TFb, 橙色 – TCmd, 绿色 – TE

识别过程成功但实时预测结果不佳

识别过程可以报告成功,但实时执行效果不佳。由于某种原因,该模型能够很好地拟合数据,但是对于正常操作中的其他运动,该模型还不够好。这通常是因为机器人在识别过程中没有覆盖其工作空间的主要部分。以下是可能导致此结果的一些原因:

  • 一个或多个关节的振幅不够大,不能覆盖关节的运动范围。 这可以在输出REC文件中查看,或者只是重新检查关节的幅度是否足够大。
  • 识别过程持续时间太短(相对于关节速度)。可以通过查看输出REC文件来识别。 看看每个关节的pfb属性。如果一个或多个关节不能完成至少3个周期,增加识别持续时间(或关节速度)应该有所帮助。
  • 所选择的频率是重叠的或不容许的位置足够多样性。可以通过查看输出REC文件来识别。可以查看所有关节的pfb属性。如果两个或多个关节似乎一起振荡,或在少量周期后重叠,或者非常类似地振荡,则尝试更改有问题的关节的频率。


测试规格

本节介绍如何测试动力学模型功能并检查其是否正常工作。测试过程包括记录特定属性,同时执行某种机器人运动。记录的最低要求属性是Tfb,Taddcmd,Te。 测试可以分为两种类型:一种是检查扭矩预测的准确性对于所有类型的运动是合理的; 另一个是检查机器人性能(例如整定时间,振动等)是否随着动力学模型的激活而有所改善。


测试精度等同于测试转矩误差。为了测试扭矩误差,只需生成一个任务,在运行时产生一些运动变化并记录所需的属性。 或者,如果机器人应用程序任务已知,则可以使用此任务来执行此测试。 只需在记录Tfb,Taddcmd和Te属性的同时运行任务。 然后,观察记录(特别是Te属性),并确定是否达到满意的精度。