CN112799947B - 一种检测运动控制器算法可靠性的方法及系统 - Google Patents
一种检测运动控制器算法可靠性的方法及系统 Download PDFInfo
- Publication number
- CN112799947B CN112799947B CN202110134163.9A CN202110134163A CN112799947B CN 112799947 B CN112799947 B CN 112799947B CN 202110134163 A CN202110134163 A CN 202110134163A CN 112799947 B CN112799947 B CN 112799947B
- Authority
- CN
- China
- Prior art keywords
- track
- track section
- motion
- average speed
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 178
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012360 testing method Methods 0.000 claims abstract description 264
- 238000004891 communication Methods 0.000 claims description 17
- 238000010998 test method Methods 0.000 claims description 11
- 238000005259 measurement Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 10
- 230000003993 interaction Effects 0.000 claims description 8
- 238000013461 design Methods 0.000 abstract description 6
- 230000007547 defect Effects 0.000 abstract 1
- 230000008859 change Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000005507 spraying Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000003466 welding Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/008—Reliability or availability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Control Of Electric Motors In General (AREA)
- Control Of Position Or Direction (AREA)
Abstract
本发明公开了一种检测运动控制器算法可靠性的方法,将终端设备在单自由度上的运动转化为对控制电机旋转角度范围,将实际运行中各种运动场景转化为运动轨迹,并将运动轨迹分解为若干单方向运行的基础轨迹段,以轨迹段为基本元素,对各类运动场景进行总结、提炼,生成若干具有代表性的测试用例及其对应的初始条件,然后将控制电机移动到符合初始条件的位置进行测试,从而检验运动控制器算法是否可靠。本发明的检测运动控制器算法可靠性的方法根据应用场景自动生成全方位的测试用例及预期数据,避免了人工设计测试用例耗时、不全面、易出错、难寻故障原因等弊端。本发明还公开了一种检测运动控制器算法可靠性的系统。
Description
技术领域
本发明涉及测试领域,尤其涉及一种检测运动控制器算法可靠性的方法及系统。
背景技术
随着经济的快速增长,自动化设备越来越普及,而运动控制器是设备实现自动化必不可少的一个组成部分,全自动焊接机器人、喷漆机器人、机械手、打磨机等等设备均需要依赖运动控制器的控制才能实现自动化。运动控制器的可靠性是市场竞争的关键指标,而决定运动控制器可靠性的,是运动控制器速度前瞻性算法的可靠性,故对这一指标的测试显得尤为重要。
目前,对运动控制器速度前瞻性算法可靠性的测试一般有以下3种方法:
第一:在办公室环境搭建好运动控制器测试环境后,用网络助手调试软件发送协议中的指令内容;控制相应电机进行动作,观察电机的运动状态以及对比查看反馈的起始位置信号;
第二:根据上位机和运动控制器的通信协议开发好调试软件,通过调试软件控制相应电机进行动作,观察电机的运动状态以及对比查看反馈的起始位置信号;
第三:是将运动控制器安装在实际工作环境中,在实际环境中通过上位机控制运动控制器执行相关指令动作,观察实际运行轨迹是否与期望值一致,各轴实际运行过程是否存在卡顿等异常现象。
第一、二种方法虽然可以测试实际输出与设计是否吻合,但是均为手工测试,测试环境的搭建、测试用例的设计、测试数据的准备、测试结果的对比等等每个阶段均需要不同的专业开发或测试工程师实施,将要耗费大量的人力、时间成本,而且不同人员的实施势必存在测试不全面、测试冗余、测试无效、测试质量不高等等一系列问题。
第三种方法虽然可以一目了然的看到各轴实际运行过程是否存在卡顿等异常,但仅仅可以测试大致的轨迹是否与期望值是否一致,无法测试精确的轨迹,且受具体的操作环境的影响,很多轨迹段无法在特定操作环境进行测试,而且测试中遇到问题不方便定位发生的原因。
发明内容
本发明所要解决的技术问题是提供一种检测运动控制器算法可靠性的方法及系统。
为解决上述技术问题,本发明所采用的技术方案是:
一种检测运动控制器算法可靠性的方法,包括:
S1、确定终端设备在单自由度上的运动范围,将运动范围内的任意位置与控制终端设备运动的电机的角度进行匹配,将运动范围的两个端点所对应的角度定义为最小位置点Dismin和最大位置点Dismax,将电机在观测时间Ti内所旋转经过的角度范围定义为轨迹段;
S2、按照轨迹段在运动轨迹中的位置关系将轨迹段分为首轨迹段、中轨迹段和末轨迹段三类;
S3、按照运动轨迹中是否包含首轨迹段、末轨迹段及包含的中轨迹段的数量,生成代表性运动场景;
S4、生成覆盖上述代表性运动场景的若干个测试用例,并生成测试用例对应的初始条件;
S5、获取终端设备当前所在位置,定义为起始位置;
S6、对于未执行的测试用例,根据该测试用例中路径所包含的轨迹段,基于终端设备当前所在空间位置,判断在起始位置基础上是否能够运行相应测试用例,对于可以运行的测试用例,生成对应的测试数据以及期望结果值,对于不能运行的,给出指示;
S7、获取执行测试用例的指令,向运动控制器传输测试用例执行指令,运动控制器控制终端设备执行测试用例;
S8、获取终端设备的实际运行情况,获得实测结果值;
S9、对比实测结果值与期望结果值的差值是否在允许的误差范围内,若是,相应测试用例测试通过,否则相应测试用例测试不通过。
S10、判断当前是否有未执行过的测试用例,若是,返回步骤S5,否则执行步骤S11。
S11、结束。
与现有技术相比,本发明具有如下技术效果:
节省了开发人员或测试人员开发调试软件的时间。不仅降低了测试人员的技术要求,而且节省了测试人员准备测试用例、测试数据、手动执行测试、整理测试记录的时间。可以自动生成测试用例、测试数据、测试记录。
2)确保了测试的全面性。本方法自动生成的测试用例达到了正交试验法所涉及的最全因素组合覆盖级别,全面覆盖了所有路径所有轨迹段受运动前瞻性算法影响的运动属性。
3)避免了测试冗余、测试无效、测试质量不高的问题。
4)提高了测试效率。一个人可以高效高质量完成所有测试工作且针对问题项可以很快定位到问题发生的原因。
在上述技术方案的基础上,本发明还可以做如下改进。
优选地,所述步骤S4中生成测试用例过程中,将轨迹段的运动状态按照运动速度分为快速运动、慢速运动,按照运动方向分为正向运动、反向运动,在具体的代表性运动场景下,按照首轨迹段、末轨迹段、中轨迹段的运动状态生成测试用例。
其中,电机从Dismin跑到Dismax的过程中所能获取的最高平均速度定义为最高均速Vmax-avg,电机从Dismin跑到Dismax的过程中所能获取的最小平均速度定义为最小均速Vmin-avg,且上述过程中电机在Dismin处及Dismax处的速度均为0;
电机跑出最高均速的过程对应耗时为Tmin,电机跑出最小均速的过程对应的耗时为Tmax;最大均速与最小均速的算术平均值定义为电机的平均均速Vavg-avg=(Vmax-avg+Vmin-avg)/2,
电机在轨迹段中实际运行的平均速度定义为轨迹段均速Vavg-i,
步骤S4中所述的快速运动、慢速运动是相对于平均均速Vavg-avg而言,轨迹段均速Vavg-i大于等于平均均速Vavg-avg则定义该轨迹段的运动状态为快速运动,轨迹段均速Vavg-i低于平均均速Vavg-avg则定义该轨迹段的运动状态为慢速运动。将Dismin指向Dismax的方向定义为正向,反之为反向。
优选地,步骤S3中,所述代表性运动场景包括以下五种情况:
场景一、从起始位置至首轨迹段;
场景二、从起始位置至首轨迹段至末轨迹段;
场景三、从起始位置至首轨迹段至第1中轨迹段至末轨迹段;
场景四、从起始位置至首轨迹段至第1中轨迹段至第2中轨迹段至末轨迹段;
场景五、首从起始位置至首轨迹段至第1中轨迹段至第2中轨迹段至第3中轨迹段至末轨迹段。
采用上述进一步方案的有益效果是上述5类场景进行测试便可覆盖存在于所有路径中的所有轨迹段的正常运动状态。
优选地,所述代表性运动场景还包括以下情况:
场景六、从起始位置至首轨迹段,然后依次至大于100个中轨迹段至末轨迹段;
场景七、轨迹中任意轨迹段均速超过最大均速;
场景八、轨迹中任意轨迹段均速低于最小均速;
场景九、末轨迹段越过极限位置点,即越过Dismin和/或Dismax。
采用上述进一步方案的有益效果是涵盖实际应用中可靠性测试及异常运行状态的场景,测试项目更完善。
优选地,步骤S4中,是采用判定表法生成具体的覆盖代表性运动场景的所有测试用例。
采用上述进一步方案的有益效果是判定表法操作简单,在涉及到的轨迹段较少时可以快速生成测试用例。
优选地,步骤S4中,是采用组合测试法生成具体的覆盖代表性运动场景的所有测试用例。
采用上述进一步方案的有益效果是组合测试法操作简单,在涉及到的轨迹段较少时,可以快速生产测试用例。
优选地,步骤S4中,是采用正交试验法生成具体的覆盖代表性运动场景的所有测试用例。
采用上述进一步方案的有益效果是生成的测试用例达到了正交试验法所涉及的最全因素组合覆盖级别,全面覆盖了所有路径所有轨迹段受运动前瞻性算法影响的运动属性。
一种检测运动控制器算法可靠性的系统,其特征在于,包括控制模块、通讯模块、驱动模块、电机模块、位置传感器模块、测试用例生成模块、人机交互模块、基础参数设置模块、测试结果判定模块;
所述控制模块通讯连接基础参数设置模块、测试用例生成模块、测试结果判定模块及通讯模块;
所述通讯模块通讯连接待测运动控制器,所述待测运动控制器电连接驱动器模块和位置传感器模块,所述驱动器模块电连接电机模块;
所述测试结果判定模块、基础参数设置模块、测试用例生成模块电连接人机交互模块;
所述驱动模块用于驱动电机模块运行;
所述电机模块用于作为终端设备实施测试任务;
所述位置传感器模块用于获取电机模块的位置信息并传输给待测运动控制器;
所述通讯模块用于实现控制模块与待测运动控制器之间的数据通讯;
所述基础参数设置模块用于设定测试项目的基础数据;
所述测试用例生成模块用于根据基础参数设置模块设置的参数、代表性运动场景生成测试用例;
所述控制模块用于根据电机模块的位置信息判断测试用例的可执行性、生成测试用例的期望结果值,经通讯模块向待测运动控制器下发执行测试用例指令、从待测运动控制器处获取电机模块的位置信息,生成测试用例的实测结果值;
所述测试结果判定模块用于对比实测结果值与期望结果值之间的差异,判断测试用例的测试结论;
所述人机交互模块用于实现人机交互。
附图说明
图1为本发明的检测运动控制器算法可靠性的方法的流程图;
图2为生成场景一测试用例中轨迹段均速的思路图;
图3为生成场景二测试用例中轨迹段均速的思路图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
请参照图1所示,一种检测运动控制器算法可靠性的方法,包括:
S1、确定终端设备在单自由度上的运动范围,将运动范围内的任意位置与控制终端设备运动的电机的角度进行匹配,将运动范围的两个端点所对应的角度定义为最小位置点Dismin和最大位置点Dismax,将电机在观测时间Ti内所旋转经过的角度范围定义为轨迹段,由此将终端设备单自由度上的运动转化为对电机旋转角度的控制;
S2、按照轨迹段在完整的运动轨迹中的位置关系将轨迹段分为首轨迹段、中轨迹段和末轨迹段三类;
S3、按照运动轨迹中是否包含首轨迹段、末轨迹段及包含的中轨迹段的数量,生成代表性运动场景;
S4、生成覆盖上述代表性运动场景的若干个测试用例,并生成测试用例对应的初始条件;
S5、获取终端设备当前所在位置;
S6、对于未执行的测试用例,根据该测试用例中路径所包含的轨迹段,基于终端设备当前所在空间位置,判断在起始位置基础上是否能够运行相应测试用例,对于可以运行的测试用例,生成对应的测试数据以及期望结果值,对于不能运行的,给出指示;
S7、获取执行测试用例的指令,向运动控制器传输测试用例执行指令,运动控制器控制终端设备执行测试用例;
S8、获取终端设备的实际运行情况,获得实测结果值;
S9、对比实测结果值与期望结果值的差值是否在允许的误差范围内,若是,相应测试用例测试通过,否则相应测试用例测试不通过。
S10、判断当前是否有未执行过的测试用例,若是,返回步骤S5,否则执行步骤S11。
S11、结束。
步骤S3中,所述代表性运动场景包括以下情况:
场景一、从起始位置至首轨迹段;
场景二、从起始位置至首轨迹段至末轨迹段;
场景三、从起始位置至首轨迹段至第1中轨迹段至末轨迹段;
场景四、从起始位置至首轨迹段至第1中轨迹段至第2中轨迹段至末轨迹段;
场景五、首从起始位置至首轨迹段至第1中轨迹段至第2中轨迹段至第3中轨迹段至末轨迹段。
场景六、从起始位置至首轨迹段,然后依次至大于100个中轨迹段至末轨迹段;
场景七、轨迹中任意轨迹段均速超过最大均速;
场景八、轨迹中任意轨迹段均速低于最小均速;
场景九、末轨迹段越过Dismin或Dismax
所述轨迹段均速,是指电机在对应轨迹段内的平均速度。
所述步骤S4中生成测试用例过程中,将轨迹段的运动状态按照运动速度分为快速运动、慢速运动,按照运动方向分为正向运动、反向运动,在具体的代表性运动场景下,按照首轨迹段、末轨迹段、中轨迹段的运动状态生成测试用例。
更具体的:
首先,确定终端设备单自由度上的运动范围,并将此运动范围转化为实际控制电机的旋转角度范围,此范围的两个端点分别定义为最小位置点Dismin和最大位置点Dismax,例如,在实际运行中沿x方向的移动,移动范围为3米,即最小位置点Dismin对应0处,最大位置点Dismax对应3米处。若电机控制终端设备从0处出发运动到3米处时,需要旋转3000转,意味着电机的每一转对应终端设备在x轴上移动1mm,电机每旋转1°对应终端设备在x轴上移动1/360mm,由此,将控制电机到达0-3米范围内的任意位置的任务转化为控制电机旋转至0°-(3000×360=1080000°)之间的某个角度。进一步地,电机转一圈对应1310720个脉冲,则1310720/360为电机旋转1°对应的控制脉冲数;
针对具体的应用场景会设定检测时间Ti,默认2000ms,则电机在2000ms内旋转经过的角度范围就是某一个具体的轨迹段,比如,如果电机初始速度在0处,也就是对应角度0°,若2000ms内电机旋转了360°,则0°~360°为一个具体的轨迹段,若电机初始位置在360°处,若2000ms内电机旋转了720°,则360°~1080°为一个具体的轨迹段。任何一条完整的轨迹,由至少1个轨迹段组成。
用等价类法对轨迹段进行分类,具体地,按照轨迹段在具体轨迹中的位置关系不同,将轨迹中的轨迹段分为首轨迹段、中轨迹段和末轨迹段。首轨迹段是从初始位置出发后,在轨迹中经过的第一个轨迹段,电机在首轨迹段内的初始速度为零;末轨迹段是轨迹中最后经过的轨迹段,电机在末轨迹段内的终止速度为零;轨迹中介于首轨迹段和末轨迹段之间的轨迹段统称为中轨迹段,中轨迹段的初始速度和终止速度至少有一个不为零,电机在一个轨迹段内速度不换向,一条轨迹中可能包含多个中轨迹段,故后续描述中,为了区分,会以第n中轨迹段的形式加以区分。
至于具体的一个轨迹段的长短,则取决于电机在轨迹段内的运动速度(轨迹段均速)及针对具体场景中设定的测试单位时间Ti决定。
然后,利用场景法对所有待测路径进行分类。
由于每条路径均可以由无数个轨迹段组成,想全面覆盖每条路径每个轨迹段的所有运动特性测试是不现实的。所以需要寻找出具有代表性的轨迹来进行测试。
鉴于任何路径都是由上述划分的三类轨迹段组成,若以路径规划来表示,轨迹段在路径中的先后次序为:首轨迹段→中轨迹段→末轨迹段。此条路径(此场景)即为场景法测试中的基本流。
分析总结出三类轨迹段在路径走向图中的特征如下:
首轨迹段的左侧无轨迹段,右侧有三种情况:无轨迹段、中轨迹段、末轨迹段。注意,此处所说“左侧”“右侧”是指路径规划中的“左”和“右”,是表示时间的先后,“左侧”表示时间在前,“右侧”表示时间在后,其与实际路径中轨迹段的位置关系无关。
即首轨迹段在路径中有如下场景:
①首轨迹段
②首轨迹段→中轨迹段
③首轨迹段→末轨迹段
中轨迹段的左侧有两种情况:首轨迹段、中轨迹段。
中轨迹段的右侧有两种情况:中轨迹段、末轨迹段。
因此中轨迹段在路径中有如下场景:
①首轨迹段→中轨迹段→末轨迹段
②中轨迹段→中轨迹段→末轨迹段
③中轨迹段→中轨迹段→中轨迹段
末轨迹段的左侧有两种情况:
首轨迹段、中轨迹段;右侧无轨迹段。
因此末轨迹段在路径中有如下场景:
①首轨迹段→末轨迹段
②中轨迹段→末轨迹段
将上述情况进行组合后,去掉重复的场景,剩余如下场景:
①首轨迹段
②首轨迹段→末轨迹段
③首轨迹段→中轨迹段→末轨迹段
④中轨迹段→中轨迹段→末轨迹段
⑤中轨迹段→中轨迹段→中轨迹段
根据路径的特性:一条完整的路径起始位置为首轨迹段,结束点为末轨迹段,所以补充完整后,上述5个场景实际所经轨迹段如下:
①场景1:首轨迹段(也是末轨迹段)
②场景2:首轨迹段→末轨迹段
③场景3:首轨迹段→中轨迹段→末轨迹段
④场景4:首轨迹段→中轨迹段→中轨迹段→末轨迹段
⑤场景5:首轨迹段→(第1)中轨迹段→(第2)中轨迹段→(第3)中轨迹段→末轨迹段
针对上述5类场景进行测试便可覆盖存在于所有路径中的所有轨迹段的正常运动状态。
另外根据经验,补充可靠性测试场景处理流程:
场景6:大数据量--多轨迹段(在场景5中追加若干个中轨迹段,比如追加2000个中轨迹段)的路径)
补充异常运动状态的场景处理流程:
场景7:速度过快(任意轨迹段均速超过最大均速)
场景8:速度过慢(任意轨迹段均速低于最小均速)
场景9:到达低、高限位(末轨迹段越过低限位或高限位)
由此,获得了具有代表性的9大运动场景。
一个场景内,电机的电气特性是固定不变的,故在确定了单自由度上的运动范围后(即Dismax和Dismin确定)后,可以测量电机的最大均速Vmax-avg和最小均速Vmin-avg:
即将电机的初始位置设置在Dismin处,初速度为零,然后下发指令给电机,使其移动到Dismax处,并且要求电机到达Dismax处时能减速到零,电机完成上述路径过程中能够获得的最高平均速度即为最大均速Vmax-avg,所能获得的最小平均速度为最小均速Vmin-avg,之所有会有最小速度,也是基于保护电机的安全,因为过慢的运行速度,电机线圈会发热严重。
电机的平均均速Vavg-avg=(Vmax-avg+Vmin-avg)/2,由此可知,此平均匀速取决于具体的应用场景,场景变换,Dismin、Dismax会变,Vmax-avg、Vmin-avg跟着变,Vavg-avg也会变。
轨迹段均速Vavg-i大于平均均速Vavg-avg且小于等于最大均速Vmax-avg,则定义该轨迹段的运动状态为快速运动;
轨迹段均速Vavg-i小于等于平均均速Vavg-avg,且大于等于最小均速Vmin-avg则定义该轨迹段的运动状态为慢速运动;
任意轨迹中,轨迹段的运动状态可以分为多种不同状态。
1.1获取轨迹段运动速度:0、非0,非0又分为快速运动和慢速运动,鉴于多个轨迹段间的运动衔接只有在加速或减速时带来的冲击比较大,所以仅仅考虑运动状态为快速、慢速两种情况。因此,此步实际简化为获取轨迹段运动速度是快速运动或者慢速运动。
1.1.1当轨迹段运动状态为快速运动时,分以下情况:
1.1.1.1首轨迹段快速运动:首轨迹段的轨迹段均速比平均均速快。
1.1.1.2后一个轨迹段快速运动:轨迹段同向运动,后一个轨迹段的轨迹段均速比前一个轨迹段的轨迹段均速更快;
1.1.1.3前一个轨迹段快速运动:轨迹段反向运动,前一个轨迹段的轨迹段均速为最大均速。
1.1.2当轨迹段运动状态为慢速运动时,分以下情况:
1.1.2.1首轨迹段慢速运动:首轨迹段的轨迹段均速比平均均速慢。
1.1.2.2后一个轨迹段慢速运动:轨迹段同向运动,后一个轨迹段的轨迹段均速比前一个轨迹段的轨迹段均速慢;
1.1.2.3前一个轨迹段慢速运动:轨迹段反向运动,前一个轨迹段的轨迹段均速为最小均速。
1.2获取轨迹段运动方向:正向或者反向。
1.2.1当轨迹段的运动方向为正向时:
1.2.1.1首轨迹段正向运动:首轨迹段的位置比电机的起始位置大,即电机是向最大位置点Dismax方向运转;此处所说位置的“大”“小”,是基于在先将运动范围转化成了电机的角度,以电机角度值来表征位置关系,如位置X对应360°,位置Y对应120°,则位置X大于位置Y。
1.2.1.2后一个轨迹段正向运动:后一个轨迹段的运动方向跟前一个轨迹段的运动方向相同。
1.2.2当轨迹段的运动方向为反向时:
1.2.2.1首轨迹段反向运动:首轨迹段的位置比电机的起始位置小,即电机是向最小位置点Dismin方向运转;
1.2.2.2后一个轨迹段反向运动:后一个轨迹段的运动方向跟前一个轨迹段的运动方向相反。
对于场景一:
由于其只有一个轨迹段,根据1.1、1.2总结可得场景一中轨迹段的运动状态,得到判定表结果如下:
根据判定表法得出结论:场景一中包括正向速度快、反向速度快、正向速度慢、反向速度慢四种情况,因此,针对这四种情况进行测试便可覆盖所有轨迹段的正常运动状态。
由上述判定表可设计如下4个测试用例。生成以下测试用例及确定轨迹段的轨迹段均速的思路如图2所示,其中每个判断分支的内容是由测试用例的初始条件决定的。
场景一测试用例1:正向速度快
基于测试理论中等价类、边界值法,设置电机以最大均速正向运转;
路径规划cur_loc→a1中轨迹段之间的相对位置为:
Dismin | cur_loc | a1 | Dismax |
测试数据取值为:a1的轨迹段均速为最大均速
场景一测试用例2:反向速度快
设置电机以最大均速反向运转。
路径规划cur_loc→a1中轨迹段之间的相对位置为:
Dismin | a1 | cur_loc | Dismax |
测试数据取值为:a1的轨迹段均速为最大均速
场景一测试用例3:反向速度慢
设置电机以最小均速反向运转。
路径规划cur_loc→a1中轨迹段之间的相对位置为:
Dismin | a1 | cur_loc | Dismax |
测试数据取值为:a1的轨迹段均速为最小均速
场景一测试用例4:正向速度慢
设置电机以最小均速正向运转。
路径规划cur_loc→a1中轨迹段之间的相对位置为:
Dismin | cur_loc | a1 | Dismax |
测试数据取值为:a1的轨迹段均速为最小均速
接下来需要确定,基于电机的起始位置,确定上述具体场景一各测试用例中轨迹段a1的位置,判断对应测试用例是否能够在基于当前的初始位置执行。由于轨迹段a1是一段轨迹,在确认其是否超过极限点时,其实是在判断轨迹段a1的末端点A1是否越过了极限点,A1越过了极限点,则a1不存在,故若A1存在,则a1存在,其末端A1应在Dismin至Dis_max范围内:
|A1-cur_loc|/Vi>=Ti
其中,A1为期望轨迹段a1的末端点,cur_loc为电机的起始位置,Vi为轨迹段均速(本场景下,快速运动对应最大均速,慢速运动对应最小均速),Ti为设定的最短测试时间(可调),由此可得到场景一测试用例中的输入数据:目标位置A1、耗时Ti。根据测试需求可知场景一测试用例中的期望结果为:目标位置A1±误差。
若期望轨迹段的末端点位置>电机起始位置,则期望轨迹段需要同时满足以下两个条件:
①(期望轨迹段的末端点位置位置-电机起始位置)/轨迹段均速>=测试时间Ti
②期望轨迹段末端点位置<=Dismax。
若期望轨迹段的末端点位置<电机起始位置,则期望轨迹段需要同时满足以下条件:
③(电机起始位置-期望轨迹段末端点位置)/轨迹段均速>=测试时间
④期望轨迹段末端点位置>=Dismin。
默认任意轨迹段的测试时间Ti为2000ms,用户也可以自行输入测试时间Ti,Ti的取值范围满足以下条件:
若期望轨迹段末端点位置>电机起始位置,则用户可输入的最长测试时间为:(电机最大位置-电机起始位置)/轨迹段均速。
若期望轨迹段末端点位置<电机起始位置,则用户可输入的最长测试时间为:(电机起始位置-电机最小位置)/轨迹段均速。
以场景一测试用例1为例说明生成场景一测试用例数据的具体实施步骤:
首先,根据场景一测试用例1的命题,可知:A1-cur_loc>0,即期望轨迹段末端点位置>电机起始位置;A1<=Dismax,即期望轨迹段不会超过最大位置点Dismax;
然后,根据如下不等式组,求解a1的位置:
A1-cur_loc>0;
A1<=Dismax;
(A1-cur_loc)/(Vmax-avg)>=realtime;
其中realtime为测试观察时间,本例中要求至少为2000ms,Vmax-avg对应就是电机的最大均速。
若满足上述不等式组的A1值存在,则电机当前所在位置(即起始位置)可以执行该场景一测试用例1;
场景一测试用例1的数据为:
A1:cur_loc+2000×(Vmax-avg);realtime:2000
场景一测试用例1的期望结果为:
A1:cur_loc+2000×(Vmax-avg)±误差
若用户想手动输入测试时间,则用户可输入的realtime最大时间为:(Dismax-cur_loc)/(Vmax-avg)
若没有满足上述不等式组的A1,则该位置不可以执行该场景一测试用例,提示用户调整电机的起始位置。
对于场景二
其包含两个轨迹段,及首轨迹段和末轨迹段,由于任何一个轨迹段的运动状态均为正向速度快、反向速度快、正向速度慢、反向速度慢四种状态,利用组合测试法对其进行组合,可得4×4=16种不同的组合,具体如下表所示:
序号 | a2 | b2 |
1 | 正向速度快 | 正向速度快 |
2 | 正向速度快 | 反向速度快 |
3 | 正向速度快 | 正向速度慢 |
4 | 正向速度快 | 反向速度慢 |
5 | 反向速度快 | 正向速度快 |
6 | 反向速度快 | 反向速度快 |
7 | 反向速度快 | 正向速度慢 |
8 | 反向速度快 | 反向速度慢 |
9 | 正向速度慢 | 正向速度快 |
10 | 正向速度慢 | 反向速度快 |
11 | 正向速度慢 | 正向速度慢 |
12 | 正向速度慢 | 反向速度慢 |
13 | 反向速度慢 | 正向速度快 |
14 | 反向速度慢 | 反向速度快 |
15 | 反向速度慢 | 正向速度慢 |
16 | 反向速度慢 | 反向速度慢 |
根据上表生成如下16个测试用例,其中a2为场景二下的首轨迹段,b2为场景二下的末轨迹段。在a2、b2同向运动的情况下,生成测试用例及确定各轨迹段的轨迹段均速的思路如图3所示,图中n表示当前所求轨迹段为在路径规划中的第n个轨迹段。
场景二测试用例1:正向速度快/正向速度快:表示两个轨迹段同向运动,首轨迹段快速运动,末轨迹段的轨迹段均速比首轨迹段的轨迹段均速快,即此轨迹为加速运动状态。
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | cur_loc | a2 | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为[正向最大均速-(最大均速-平均速度)/2],b2的轨迹段均速为正向最大均速。
注意,此位置示意表仅示意路径规划中相邻轨迹段之间的运动方向,与实际路径中轨迹段之间坐标的关系无关,下同。
场景二测试用例2:正向速度快/反向速度快:表示两个轨迹段反向运动,首轨迹段正向快速运动,末轨迹段反向快速运动。
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | cur_loc | a2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最大均速,b2的轨迹段均速为反向最大均速。
由于此位置示意表仅示意路径规划中相邻轨迹段之间的运动方向,及仅表示电机从cur_loc处出发,先向右运动至a2,再从a2处向左运动至b2,上表中a2、b2、cur_loc的位置关系与实际路径中轨迹段之间的位置关系无关,所以本测试用例2中,轨迹段b2的末端点B2可能与初始位置cur_loc重合。
场景二测试用例3:正向速度快/正向速度慢:表示两个轨迹段同向运动,首轨迹段快速运动,末轨迹段的轨迹段均速比首轨迹段的轨迹段均速慢。此为同向减速运动。
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | cur_loc | a2 | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最大均速,b2的轨迹段均速为正向最小均速。
场景二测试用例4:正向速度快/反向速度慢:表示两个轨迹段反向运动,首轨迹段快速运动,末轨迹段反向慢速运动。
路径b2→cur_loc→a2中轨迹段之间的相对位置为:
Dismin | b2 | cur_loc | a2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最大均速,b2的轨迹段均速为反向最小均速。
场景二测试用例5:反向速度快/正向速度快:表示首轨迹段电机以最大均速反转,末轨迹段电机以最大均速正转
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | a2 | cur_loc | Dismax |
测试数据取值为:a2的轨迹段均速为反向最大均速,b2的轨迹段均速为正向最大均速。
场景二测试用例6:反向速度快/反向速度快
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | a2 | cur_loc | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为反向最大均速,b2的轨迹段均速为反向最大均速。
场景二测试用例7:反向速度快/正向速度慢
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | a2 | cur_loc | Dismax |
测试数据取值为:a2的轨迹段均速为反向最大均速,b2的轨迹段均速为正向最小均速。
场景二测试用例8:反向速度快/反向速度慢
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | a2 | cur_loc | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为反向最大均速,b2的轨迹段均速为反向最小均速。
场景二测试用例9:正向速度慢/正向速度快
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | cur_loc | a2 | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最小均速,b2的轨迹段均速为正向最大均速。
场景二测试用例10:正向速度慢/反向速度快
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | cur_loc | a2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最小均速,b2的轨迹段均速为反向最大均速。
场景二测试用例11:正向速度慢/正向速度慢
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | cur_loc | a2 | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最小均速+1×(平均均速-最小均速)/2,b2的轨迹段均速为正向最小均速。
场景二测试用例12:正向速度慢/反向速度慢
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | cur_loc | a2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最小均速,b2的轨迹段均速为反向最小均速。
场景二测试用例13:反向速度慢/正向速度快
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | a2 | cur_loc | Dismax |
测试数据取值为:a2的轨迹段均速为反向最小均速,b2的轨迹段均速为正向最大均速。
场景二测试用例14:反向速度慢/反向速度快
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | a2 | cur_loc | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为正向最小均速,b2的轨迹段均速为反向最大均速。
场景二测试用例15:反向速度慢/正向速度慢
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | b2 | a2 | cur_loc | Dismax |
测试数据取值为:a2的轨迹段均速为反向最小均速+1×(平均均速-最小均速)/2,b2的轨迹段均速为正向最小均速。
场景二测试用例16:反向速度慢/反向速度慢
路径规划cur_loc→a2→b2中轨迹段之间的相对位置为:
Dismin | a2 | cur_loc | b2 | Dismax |
测试数据取值为:a2的轨迹段均速为反向最小均速,b2的轨迹段均速为反向最小均速。
根据上述具体的场景二测试用例中期望的轨迹段的位置关系,分别构造不等式组,通过求解不等式组获得具体场景二测试用例中的a2、b2的具体值:
如场景二测试用例1中,a2的末端点A2需要满足如下不等式组:
A2-cur_loc>0;
A2<=Dismax;
(A2-cur_loc)/[Vmax-avg-(Vmax-avg-Vavg-avg)/2]>=realtime
b2的末端点B2需要满足如下不等式组:
B2-A2>0;
B2<=Dismax;
|B2-A2|/(Vmax-avg)>=realtime
在上述不等式组中A2、B2均存在时,即可得到场景二测试用例1的相关数据:
A2:
cur_loc+[Vmax-avg-(Vmax-avg-Vavg-avg)]×2000±误差
B2:2000×(Vmax-avg)+A2±误差
若用户想手动输入a2、b2的测试时间,因为b2至少要观测2000ms,则a2可输入的realtime最大时间为:
[Dismax-2000×Vmax-avg-cur_loc]/[(Vmax-avg+Vavg-avg)/2]。
因为a2至少要观测2000ms,b2可输入的realtime最大时间为:[Dismax-1000*(Vmax-avg+Vavg-avg)-cur_loc]/Vmax-avg
若a2、b2值不存在,则电机当前所处位置不可以执行该场景二测试用例,提示用户调整电机位置。
针对场景三、四、五:
场景三中包括3个轨迹段,每个轨迹段包括4种运动状态,共有4×4×4=64种排列;
场景四包括4个轨迹段,每个轨迹段包括4种运动状态,共有4×4×4×4=256种排列;
场景五包括5个轨迹段,每个轨迹段包括4种运动状态,共有4×4×4×4×4=1024种排列;
可见上述三个场景下,要针对每一种情况进行测试,工程量非常非常巨大,所以,选择基于场景的正交试验法来生成测试用例。以场景五为例具体阐述如下:
针对场景五,包含5个轨迹段,每个轨迹段包括4中运动状态,转化成正交实验法的描述即:
5个因素,分别记为X1、X2、X3、X4、X5
4个属性,分别记为Y1、Y2、Y3、Y4
得到如下正交实验法表:
X1 | X2 | X3 | X4 | X5 |
Y1 | Y1 | Y1 | Y1 | Y1 |
Y1 | Y2 | Y2 | Y2 | Y2 |
Y1 | Y3 | Y3 | Y3 | Y3 |
Y1 | Y4 | Y4 | Y4 | Y4 |
Y2 | Y1 | Y2 | Y3 | Y4 |
Y2 | Y2 | Y1 | Y4 | Y3 |
Y2 | Y3 | Y4 | Y1 | Y2 |
Y2 | Y4 | Y3 | Y2 | Y1 |
Y3 | Y1 | Y3 | Y4 | Y2 |
Y3 | Y2 | Y4 | Y3 | Y1 |
Y3 | Y3 | Y1 | Y2 | Y4 |
Y3 | Y4 | Y2 | Y1 | Y3 |
Y4 | Y1 | Y4 | Y2 | Y3 |
Y4 | Y2 | Y3 | Y1 | Y4 |
Y4 | Y3 | Y2 | Y4 | Y1 |
Y4 | Y4 | Y1 | Y3 | Y2 |
根据上述正交试验法表生成如下16个测试用例:
场景五中的轨迹段:a5为首轨迹段,b5、c5、d5为中轨迹段,e5为末轨迹段
属性:正向速度快、正向速度慢、反向速度快、反向速度慢
测试用例 | a5 | b5 | c5 | d5 | e5 |
1 | 正向速度快 | 正向速度快 | 正向速度快 | 正向速度快 | 正向速度快 |
2 | 正向速度快 | 正向速度慢 | 正向速度慢 | 正向速度慢 | 正向速度慢 |
3 | 正向速度快 | 反向速度快 | 反向速度快 | 反向速度快 | 反向速度快 |
4 | 正向速度快 | 反向速度慢 | 反向速度慢 | 反向速度慢 | 反向速度慢 |
5 | 正向速度慢 | 正向速度快 | 正向速度慢 | 反向速度快 | 反向速度慢 |
6 | 正向速度慢 | 正向速度慢 | 正向速度快 | 反向速度慢 | 反向速度快 |
7 | 正向速度慢 | 反向速度快 | 反向速度慢 | 正向速度快 | 正向速度慢 |
8 | 正向速度慢 | 反向速度慢 | 反向速度快 | 正向速度慢 | 正向速度快 |
9 | 反向速度快 | 正向速度快 | 反向速度快 | 反向速度慢 | 正向速度慢 |
10 | 反向速度快 | 正向速度慢 | 反向速度慢 | 反向速度快 | 正向速度快 |
11 | 反向速度快 | 反向速度快 | 正向速度快 | 正向速度慢 | 反向速度慢 |
12 | 反向速度快 | 反向速度慢 | 正向速度慢 | 正向速度快 | 反向速度快 |
13 | 反向速度慢 | 正向速度快 | 反向速度慢 | 正向速度慢 | 反向速度快 |
14 | 反向速度慢 | 正向速度慢 | 反向速度快 | 正向速度快 | 反向速度慢 |
15 | 反向速度慢 | 反向速度快 | 正向速度慢 | 反向速度慢 | 正向速度快 |
16 | 反向速度慢 | 反向速度慢 | 正向速度快 | 反向速度快 | 正向速度慢 |
由上述场景五测试用例表格和基于场景的正交试验法场景五测试用例设计流程图可生成如下场景五测试用例。
场景五测试用例1:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | cur_loc | a5 | b5 | c5 | d5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最大均速-(最大均速-平均均速)×4/5,
b5的轨迹段均速为正向最大均速-(最大均速-平均均速)×3/5,
c5的轨迹段均速为正向最大均速-(最大均速-平均均速)×2/5,
d5的轨迹段均速为正向最大均速-(最大均速-平均均速)×1/5,
e5的轨迹段均速为正向最大均速。
场景五测试用例2:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | cur_loc | a5 | b5 | c5 | d5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最大均速,
b5的轨迹段均速为正向最大均速-(最大均速-平均均速)×1/5,
c5的轨迹段均速为正向最大均速-(最大均速-平均均速)×2/5,
d5的轨迹段均速为正向最大均速-(最大均速-平均均速)×3/5,
e5的轨迹段均速为正向最大均速-(最大均速-平均均速)×4/5。
场景五测试用例3:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | d5 | b5 | cur_loc | a5 | c5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最大均速,
b5的轨迹段均速为反向最大均速,
c5的轨迹段均速为反向最大均速,
d5的轨迹段均速为反向最大均速,
e5的轨迹段均速为反向最大均速。
场景五测试用例4:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | d5 | b5 | cur_loc | a5 | c5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最大均速,
b5的轨迹段均速为反向最小均速,
c5的轨迹段均速为反向最小均速,
d5的轨迹段均速为反向最小均速,
e5的轨迹段均速为反向最小均速。
场景五测试用例5:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | d5 | cur_loc | a5 | b5 | c5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最小均速,
b5的轨迹段均速为正向最小均速+1×(平均均速-最小均速)/5,
c5的轨迹段均速为正向最小均速,
d5的轨迹段均速为反向最大均速,
e5的轨迹段均速为反向最小均速。
场景五测试用例6:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | d5 | cur_loc | a5 | b5 | c5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最小均速+1×(平均均速-最小均速)/5,
b5的轨迹段均速为正向最小均速,
c5的轨迹段均速为正向最大均速,
d5的轨迹段均速为反向最小均速,
e5的轨迹段均速为反向最大均速。
场景五测试用例7:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | b5 | c5 | d5 | cur_loc | a5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最小均速,
b5的轨迹段均速为反向最大均速,
c5的轨迹段均速为反向最小均速,
d5的轨迹段均速为正向最大均速,
e5的轨迹段均速为正向最小均速。
场景五测试用例8:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | b5 | c5 | d5 | cur_loc | a5 | e5 | Dismax |
测试数据取值为:
a5的轨迹段均速为正向最小均速,
b5的轨迹段均速为反向最小均速,
c5的轨迹段均速为反向最大均速,
d5的轨迹段均速为正向最小均速,
e5的轨迹段均速为正向最大均速。
场景五测试用例9:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | e5 | d5 | b5 | c5 | a5 | cur_loc | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最大均速-1×(最大均速-平均均速)/5,
b5的轨迹段均速为正向最大均速,
c5的轨迹段均速为反向最大均速,
d5的轨迹段均速为反向最小均速+1×(平均均速-最小均速)/5,
e5的轨迹段均速为正向最小均速。
场景五测试用例10:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | e5 | d5 | b5 | c5 | a5 | cur_loc | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最大均速,
b5的轨迹段均速为正向最小均速,
c5的轨迹段均速为反向最小均速,
d5的轨迹段均速为反向最大均速-1×(最大均速-平均均速)/5,
e5的轨迹段均速为正向最大均速。
场景五测试用例11:
路径规划cur_loc→a5→b5→c5→d5→e5中轨迹段之间的相对位置为:
Dismin | e5 | a5 | b5 | c5 | cur_loc | d5 | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最大均速,
b5的轨迹段均速为反向最大均速-1×(最大均速-平均均速)/5,
c5的轨迹段均速为正向最大均速,
d5的轨迹段均速为正向最小均速,
e5的轨迹段均速为反向最小均速。
场景五测试用例12:
路径规划cur_loc→a5→b5→c5→d5→e5轨迹段之间的相对位置为:
Dismin | e5 | a5 | b5 | cur_loc | c5 | d5 | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最大均速,
b5的轨迹段均速为反向最小均速+1×(平均均速-最小均速)/5,
c5的轨迹段均速为正向最小均速,
d5的轨迹段均速为正向最大均速,
e5的轨迹段均速为反向最大均速。
场景五测试用例13:
路径规划cur_loc→a5→b5→c5→d5→e5轨迹段之间的相对位置为:
Dismin | e5 | b5 | a5 | c5 | cur_loc | d5 | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最小均速,
b5的轨迹段均速为正向最大均速,
c5的轨迹段均速为反向最小均速+1×(平均均速-最小均速)/5,
d5的轨迹段均速为正向最小均速,
e5的轨迹段均速为反向最大均速。
场景五测试用例14:
路径规划cur_loc→a5→b5→c5→d5→e5轨迹段之间的相对位置为:
Dismin | e5 | b5 | a5 | c5 | cur_loc | d5 | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最小均速+1×(平均均速-最小均速)/5,
b5的轨迹段均速为正向最小均速,
c5的轨迹段均速为反向最大均速-1×(最大均速-平均均速)/5,
d5的轨迹段均速为正向最大均速,
e5的轨迹段均速为反向最小均速。
场景五测试用例15:
路径规划cur_loc→a5→b5→c5→d5→e5轨迹段之间的相对位置为:
Dismin | e5 | d5 | a5 | b5 | cur_loc | c5 | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最小均速,
b5的轨迹段均速为反向最大均速,
c5的轨迹段均速为正向最小均速,
d5的轨迹段均速为反向最小均速,
e5的轨迹段均速为正向最大均速。
场景五测试用例16:
路径规划cur_loc→a5→b5→c5→d5→e5轨迹段之间的相对位置为:
Dismin | e5 | d5 | a5 | b5 | cur_loc | c5 | Dismax |
测试数据取值为:
a5的轨迹段均速为反向最小均速,
b5的轨迹段均速为反向最小均速,
c5的轨迹段均速为正向最大均速,
d5的轨迹段均速为反向最大均速,
e5的轨迹段均速为正向最小均速。
以场景五测试用例1为例说明生成测试数据的具体实施步骤:
由如下不等式组求解a5的末端点A5:
A5-cur_loc>0
A5-cur_loc)/Va>=realtime
A5<=Dismax
得:A5=2000×Va+cur_loc,其中Va为轨迹段a5处的轨迹段均速,realtime
设2000ms,
由如下不等式组求解B5的末端点B5:
B5-A5>0
(B5-A5)>=2000×Vb
B5<=Dismax
得:B5=2000×Vb+A5,其中Vb为轨迹段b5处的轨迹段均速;
由如下不等式组求解C5:
C5-B5>0
(C5-B5)>=2000×Vc
C5<=Dismax得:C5
得:C5=2000×Vc+B5,其中Vc为轨迹段c5处的轨迹段均速;
由如下不等式组求解D5:
D5-C5>0
(D5-C5)>=2000×Vd
D5<=Dismax
得:D5=2000×Vd+C5,其中Vd为轨迹段d5处的轨迹段均速;
由如下不等式组求解E5:
E5-D5>0
(E5-D5)>=2000×Ve
E5<=Dismax
得:E5=2000×Ve+D5,其中Ve为轨迹段e5处的轨迹段均速。
最终场景五测试用例1的测试数据为:
A5:2000×Va+cur_loc;realtime:2000;
B5:2000×Vb+A5;realtime:2000;
C5:2000×Vc+B5;realtime:2000;
D5:2000×Vd+C5;realtime:2000;
E5:2000×Ve+D5;realtime:2000;
期望结果为:测试数据±误差
若a2、b2、c2、d2、e2中任意一个不存在,则该位置不可以执行该场景五测试用例,提示用户更改电机位置。
场景六可采用如场景五的方式生成测试用例,
根据场景七、场景八采用如场景一的方式生成测试用例,
场景九设计测试用例的方式采用场景二测试用例1和场景二测试用例6的设计方式,区别是场景二测试用例1的是,末轨迹段的位置满足:(末轨迹段末端点位置-前中轨迹段末端点位置)>(电机最大位置-前中轨迹段末端点位置);场景二测试用例6末轨迹段的位置满足:(前中轨迹段末端点位置-末轨迹段末端点位置)>(前中轨迹段末端点位置-电机最小位置)。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种检测运动控制器算法可靠性的方法,其特征在于,包括:
S1、确定终端设备在单自由度上的运动范围,将运动范围内的任意位置与控制终端设备运动的电机的角度进行匹配,将运动范围的两个端点所对应的角度定义为最小位置点Dismin和最大位置点Dismax,将电机在观测时间Ti内旋转经过的角度范围定义为轨迹段;
S2、按照轨迹段在运动轨迹中的位置关系将轨迹段分为首轨迹段、中轨迹段和末轨迹段三类;
S3、按照运动轨迹中是否包含首轨迹段、末轨迹段及包含的中轨迹段的数量,生成代表性运动场景;
S4、生成覆盖上述代表性运动场景的若干个测试用例,并生成测试用例对应的初始条件;
S5、获取终端设备当前所在位置,定义为起始位置;
S6、对于未执行的测试用例,根据该测试用例中路径所包含的轨迹段,基于终端设备当前所在空间位置,判断在起始位置基础上是否能够运行相应测试用例,对于可以运行的测试用例,生成对应的测试数据以及期望结果值,对于不能运行的,给出指示;
S7、获取执行测试用例的指令,向运动控制器传输测试用例执行指令,运动控制器控制终端设备执行测试用例;
S8、获取终端设备的实际运行情况,获得实测结果值;
S9、对比实测结果值与期望结果值的差值是否在允许的误差范围内,若是,相应测试用例测试通过,否则相应测试用例测试不通过;
S10、判断当前是否有未执行过的测试用例,若是,返回步骤S5,否则执行步骤S11;
S11、结束。
2.根据权利要求1所述的检测运动控制器算法可靠性的方法,其特征在于,所述步骤S4中生成测试用例过程中,将轨迹段的运动状态按照运动速度快慢分为快速运动、慢速运动,按照运动方向为正向运动、反向运动,在具体的代表性运动场景下,按照首轨迹段、末轨迹段、中轨迹段的运动状态生成测试用例。
3.根据权利要求1或2所述的检测运动控制器算法可靠性的方法,其特征在于,步骤S3中,所述代表性运动场景包括以下五种情况:
场景一、从起始位置至首轨迹段;
场景二、从起始位置至首轨迹段至末轨迹段;
场景三、从起始位置至首轨迹段至中轨迹段至末轨迹段;
场景四、从起始位置至首轨迹段至第1中轨迹段至第2中轨迹段至末轨迹段;
场景五、首从起始位置至首轨迹段至第1中轨迹段至第2中轨迹段至第3中轨迹段至末轨迹段。
4.根据权利要求1或2所述的检测运动控制器算法可靠性的方法,其特征在于,所述代表性运动场景还包括以下情况:
场景六、从起始位置至首轨迹段依次至大于100个中轨迹段至末轨迹段;
场景七、轨迹中任意轨迹段均速超过最大均速;
场景八、轨迹中任意轨迹段均速低于最小均速;
场景九、末轨迹段越过极限位置点。
5.根据权利要求1或2所述的检测运动控制器算法可靠性的方法,其特征在于,步骤S4中,是采用判定表法生成具体的覆盖代表性运动场景的测试用例。
6.根据权利要求1或2所述的检测运动控制器算法可靠性的方法,其特征在于,步骤S4中,是采用组合测试法生成具体的覆盖代表性运动场景的测试用例。
7.根据权利要求1或2所述的检测运动控制器算法可靠性的方法,其特征在于,步骤S4中,是采用正交试验法生成具体的覆盖代表性运动场景的测试用例。
8.一种用于实现权利要求1至7任一项所述的检测运动控制器算法可靠性的方法的系统,其特征在于,包括控制模块、通讯模块、驱动模块、电机模块、位置传感器模块、测试用例生成模块、人机交互模块、基础参数设置模块、测试结果判定模块;
所述控制模块通讯连接基础参数设置模块、测试用例生成模块、测试结果判定模块及通讯模块;
所述通讯模块还通讯连接待测运动控制器,所述待测运动控制器电连接驱动器模块和位置传感器模块,所述驱动器模块电连接电机模块;
所述测试结果判定模块、基础参数设置模块、测试用例生成模块电连接人机交互模块;
所述驱动模块用于驱动电机模块运行;
所述电机模块用于作为终端设备实施测试任务;
所述位置传感器模块用于获取电机模块的位置信息并传输给待测运动控制器;
所述通讯模块用于实现控制模块与待测运动控制器之间的数据通讯;
所述基础参数设置模块用于设定测试项目的基础数据;
所述测试用例生成模块用于根据基础参数设置模块设置的参数、代表性运动场景生成测试用例;
所述控制模块用于根据电机模块的位置信息判断测试用例的可执行性、生成测试用例的期望结果值,经通讯模块向待测运动控制器下发执行测试用例指令、从待测运动控制器处获取电机模块的位置信息,生成测试用例的实测结果值;
所述测试结果判定模块用于对比实测结果值与期望结果值之间的差异,判断测试用例的测试结论;
所述人机交互模块用于实现人机交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110134163.9A CN112799947B (zh) | 2021-01-30 | 2021-01-30 | 一种检测运动控制器算法可靠性的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110134163.9A CN112799947B (zh) | 2021-01-30 | 2021-01-30 | 一种检测运动控制器算法可靠性的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112799947A CN112799947A (zh) | 2021-05-14 |
CN112799947B true CN112799947B (zh) | 2023-12-05 |
Family
ID=75813280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110134163.9A Active CN112799947B (zh) | 2021-01-30 | 2021-01-30 | 一种检测运动控制器算法可靠性的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799947B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909206B (zh) * | 2023-09-11 | 2023-12-22 | 上海泛腾半导体技术有限公司 | 一种嵌入式plc运动控制系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1228142A (en) * | 1984-05-21 | 1987-10-13 | Hiroshi Ogawa | System for automatically controlling movement of unmanned vehicle and method therefor |
CN103217973A (zh) * | 2013-04-18 | 2013-07-24 | 山东大学 | 一种总线式运动控制系统的性能测试方法和装置 |
CN103699128A (zh) * | 2013-12-27 | 2014-04-02 | 长沙理工大学 | 一种电磁轨道式移动机器人的运动控制系统及控制方法 |
CN110362198A (zh) * | 2018-06-18 | 2019-10-22 | 蓝枸杞有限公司 | 一种用于混合或虚拟现实增强型固定式运动自行车的系统和方法 |
CN110553649A (zh) * | 2019-08-19 | 2019-12-10 | 广东中凯智慧政务软件有限公司 | 一种轨迹优化算法及储存介质、监管系统 |
CN112034282A (zh) * | 2020-08-19 | 2020-12-04 | 湖南海智机器人技术有限公司 | 一种基于加速因子的运动控制器加速退化试验方法 |
-
2021
- 2021-01-30 CN CN202110134163.9A patent/CN112799947B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1228142A (en) * | 1984-05-21 | 1987-10-13 | Hiroshi Ogawa | System for automatically controlling movement of unmanned vehicle and method therefor |
CN103217973A (zh) * | 2013-04-18 | 2013-07-24 | 山东大学 | 一种总线式运动控制系统的性能测试方法和装置 |
CN103699128A (zh) * | 2013-12-27 | 2014-04-02 | 长沙理工大学 | 一种电磁轨道式移动机器人的运动控制系统及控制方法 |
CN110362198A (zh) * | 2018-06-18 | 2019-10-22 | 蓝枸杞有限公司 | 一种用于混合或虚拟现实增强型固定式运动自行车的系统和方法 |
CN110553649A (zh) * | 2019-08-19 | 2019-12-10 | 广东中凯智慧政务软件有限公司 | 一种轨迹优化算法及储存介质、监管系统 |
CN112034282A (zh) * | 2020-08-19 | 2020-12-04 | 湖南海智机器人技术有限公司 | 一种基于加速因子的运动控制器加速退化试验方法 |
Non-Patent Citations (4)
Title |
---|
基于IRM-COM的列车运行控制系统测试用例生成方法;张雁鹏;梁春燕;谢迎锋;张振海;;铁道科学与工程学报(07);全文 * |
基于路径夹角的加加速度可变前瞻算法研究;潘海鸿;刘梦;易健;梁旭斌;陈琳;;组合机床与自动化加工技术(10);全文 * |
基于运行剖面的列控系统测试用例生成研究;古俐;徐中伟;梅萌;;计算机技术与发展(05);全文 * |
改进的可靠性测试用例自动生成方法;杨杰;王兴起;;杭州电子科技大学学报(自然科学版)(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112799947A (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
McCarragher et al. | The discrete event modeling and trajectory planning of robotic assembly tasks | |
CN104698974B (zh) | 一种数控机床及其调试方法 | |
Helwa et al. | Multi-robot transfer learning: A dynamical system perspective | |
US20110118866A1 (en) | Method and Device for Composite Machining | |
CN112799947B (zh) | 一种检测运动控制器算法可靠性的方法及系统 | |
McCarragher et al. | The discrete event control of robotic assembly tasks | |
Ma et al. | ROS-based multi-robot system simulator | |
CN107908191A (zh) | 一种串并联机器人的运动控制系统和方法 | |
CN105856225A (zh) | 用于运行多轴机器、特别是机器人的方法和系统 | |
CN110815226B (zh) | 一种机器人任意姿态任意位置下回初始位置的方法 | |
CN104679945B (zh) | 基于有色Petri网的系统综合评估方法 | |
CN108490916A (zh) | 一种测试电机控制器功能的仿真方法、装置及设备 | |
CN111734669A (zh) | 一种多源信息分层融合的离心鼓风机故障诊断方法 | |
CN108469778A (zh) | 一种伺服控制mbd开发平台 | |
CN112327804A (zh) | 牵引控制单元的故障诊断方法、装置、系统和列车 | |
CN112123333A (zh) | 一种多关节机器人碰撞检测方法及其装置 | |
Takahashi et al. | A method for analyzing human assembly operations for use in automatically generating robot commands | |
Sharan et al. | Plan Diffuser: Grounding LLM Planners with Diffusion Models for Robotic Manipulation | |
CN110053045A (zh) | 工件表面轮廓线获取方法、干涉检测方法和相关装置 | |
CN112428263B (zh) | 机械臂控制方法、装置及聚类模型训练方法 | |
JPH05119815A (ja) | 神経回路網を用いた障害物回避方法 | |
CN207571581U (zh) | 一种串并联机器人的运动控制系统 | |
Mehar et al. | Diagnostic by Fault Tree and Petri Nets of a Robotic Machining Cell | |
CN113946139A (zh) | 数控系统的速度预测、数控系统的控制方法及数控系统 | |
JP2004215455A (ja) | 多軸電動機制御装置の共振周波数検出装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |