机器人仿真方法、装置、电子设备及存储介质与流程

文档序号:30302051发布日期:2022-06-05 00:47阅读:167来源:国知局
机器人仿真方法、装置、电子设备及存储介质与流程

1.本技术实施例涉及机器人仿真领域,特别涉及机器人仿真方法、装置、电子设备及存储介质。


背景技术:

2.随着机器人技术的广泛应用,对机器人系统的智能性和灵活性要求越来越高。机器人仿真系统作为机器人技术研究的工具,它在验证机器人系统性能方面发挥着越来越重要的作用。在机器人仿真系统中,节拍仿真是非常重要的一个功能,节拍仿真准确性有时直接决定了方案的设计是否合理,机型的选择是否正确。其中,节拍仿真越准确,实现虚拟仿真过程的时间与实现实机运行过程的时间越一致。
3.虚拟仿真与实机运行主要区别在于程序运行环境不一样,虚拟仿真需要借助虚拟控制器,虚拟控制器需要运行在通用的pc软件平台上,一般实机运行的控制器轨迹插补程序运行在实时操作系统上,插补周期波动非常小,即运行时间稳定;而通用pc软件平台通常运行通用的操作系统如windows、linux,通用操作系统一般是一个高吞吐量系统,但实时性并不好,这会导致虚拟仿真与实机运行在运行同一份机器人应用程序时执行时间不一致,进而影响仿真节拍准确性。


技术实现要素:

4.本技术实施方式的目的在于提供一种机器人仿真方法、装置、电子设备及存储介质,使得提高机器人仿真系统中节拍仿真的准确性。
5.为解决上述技术问题,本技术的实施方式提供了一种机器人仿真方法,包括以下步骤:获取虚拟线程已运行的实际总时间;根据所述虚拟线程的执行次数、插补周期和所述实际总时间确定休眠时间,所述休眠时间为所述机器人仿真过程中执行所述虚拟线程的时间间隔,所述插补周期为所述虚拟线程运行一次的期望时间;根据确定的休眠时间执行休眠。
6.本技术的实施方式还提供了一种机器人仿真装置,包括:获取模块,用于获取虚拟线程已运行的实际总时间;确定模块,用于根据所述虚拟线程的执行次数、插补周期和所述实际总时间确定休眠时间,所述休眠时间为所述机器人仿真过程中执行所述虚拟线程的时间间隔,所述插补周期为所述虚拟线程运行一次的期望时间;休眠模块,用于根据确定的休眠时间执行休眠。
7.本技术的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的机器人仿真方法。
8.本技术的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的机器人仿真方法。
9.本技术实施方式中,通过对于机器人仿真中的虚拟线程增加休眠机制,并对于休眠时间进行动态调整,动态调整后的休眠时间能够调整所述机器人虚拟仿真过程中的时间,使得所述机器人虚拟仿真过程不受操作系统等因素对于实际运行时间的影响,提高机器人仿真节拍准确性。
附图说明
10.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
11.图1是根据本技术一个实施方式所提供的机器人仿真方法的流程图;
12.图2是根据本技术一个实施方式所提供的机器人仿真方法的示意图一;
13.图3是根据本技术一个实施方式所提供的机器人仿真方法的示意图二;
14.图4是根据本技术一个实施方式所提供的机器人仿真装置的示意图;
15.图5是根据本技术一个实施方式所提供的电子设备的示意图。
具体实施方式
16.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本技术各实施方式中,为了使读者更好地理解本技术而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本技术所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本技术的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
17.本技术实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。本技术的描述中,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列部件或单元的系统、产品或设备没有限定于已列出的部件或单元,而是可选地还包括没有列出的部件或单元,或可选地还包括对于这些产品或设备固有的其它部件或单元。本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
18.本技术的一个实施方式涉及一种机器人仿真方法。具体流程如图1所示。
19.步骤101,获取虚拟线程已运行的实际总时间;
20.步骤102,根据虚拟线程的执行次数、插补周期和实际总时间确定休眠时间,休眠时间为机器人仿真过程中执行虚拟线程的时间间隔,插补周期为虚拟线程运行一次的期望时间;
21.步骤103,根据确定的休眠时间执行休眠。
22.本实施例中,通过对于机器人仿真中的虚拟线程增加休眠机制,并对于休眠时间进行动态调整,动态调整后的休眠时间能够调整所述机器人虚拟仿真过程中的时间,使得所述机器人虚拟仿真过程不受操作系统等因素对于实际运行时间的影响,提高机器人仿真节拍准确性。
23.下面对本实施方式的机器人仿真方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
24.在步骤101中,获取虚拟线程已运行的实际总时间。机器人仿真的过程即将实机运行的流程通过虚拟线程进行模拟实施,在本步骤中,首先获取已运行虚拟线程的实际总时间;其中,虚拟线程可以运行多次,本步骤中获取所述运行多次的实际总时间。
25.在一个例子中,获取虚拟线程已运行的实际总时间,包括:在首次虚拟线程运行开始时记录第一时间节点;在虚拟线程运行结束后记录第二时间节点;第一时间节点与第二时间节点的时间差为已运行的实际总时间。即获取虚拟线程运行的所有时间,例如虚拟线程运行了n次,则获取所述虚拟线程从最初到所述运行n次后的总时间,该实际总时间中还可包括所述n次虚拟线程中的每次执行的时间间隔,即n-1次的休眠时间。该实际总时间用于判断所述机器人仿真的过程所实际使用的时间与实机运行时间的差值。
26.在一个例子中,在所述虚拟线程运行结束后记录第二时间节点,包括:在每次运行所述虚拟线程后,更新所述第二时间节点。即,由于虚拟线程运行不限于一次,在每次运行后可以根据运行后的实际时间更新所述虚拟线程已运行的总时间,用于对应调整本次虚拟线程运行后的休眠时间。
27.在步骤102中,根据虚拟线程的执行次数、插补周期和实际总时间确定休眠时间,休眠时间为机器人仿真过程中执行虚拟线程的时间间隔,插补周期为虚拟线程运行一次的期望时间。其中,插补周期的期望时间还可以为实机运行过程中执行一次的时间,即通过实机运行一次的时间、执行次数和虚拟线程的实际总执时间,调整本次虚拟线程执行后的休眠时间。
28.在一个例子中,根据虚拟线程的执行次数、插补周期和实际总时间确定休眠时间,包括:根据虚拟线程的执行次数和插补周期,确定虚拟线程执行的预期时间;在预期时间小于实际总时间的情况下,休眠时间为0;在预期时间不小于实际总时间的情况下,休眠时间为实际总时间与预期时间的差值的绝对值。即,若虚拟线程运行的实际总时间小于预期时间,则通过增长休眠时间使得下一次虚拟线程开始执行的时间与根据执行次数和插补周期计算的预期时间一致,也就是与实机运行过程中下次执行的开始时间一致;若虚拟线程运行的实际总时间大于预期时间,证明仿真过程存在超时现象,则不进行休眠,即将休眠时间设置为0,直接进入下一次的虚拟线程执行,以缩小仿真过程与实机运行过程的时间差。
29.在一个例子中,根据虚拟线程的执行次数、插补周期和实际总时间确定休眠时间,还包括:在休眠时间大于插补周期的情况下,将休眠时间更新为插补周期。即,对于休眠时间存在阈值,该阈值的取值可以为一个插补周期,也就是休眠时间不得超过一个插补周期的时间,使得休眠时间具有上限,避免出现长期休眠、暂停或停止仿真过程,从而影响仿真效率并且降低仿真节拍准确性的情况。
30.在一个例子中,每次运行虚拟线程后,执行次数加1。即,所述执行次数用于体现虚拟线程的执行过程,在虚拟线程执行完成后,更新所述执行次数,也就是改变了虚拟线程执行的预期时间;虚拟线程执行的预期时间由执行次数和插补周期得到,即将执行次数的个数与插补周期的时间相乘,得到的即为虚拟线程执行的预期时间。
31.在步骤103中,根据确定的休眠时间执行休眠。即,根据动态确定的休眠时间执行休眠,调整下一次虚拟线程的执行时间;使得仿真过程中虚拟线程已运行的实际总时间与
所述确定的休眠之间之和能够与预期时间相同,从而下一次虚拟线程开始执行的时间与实机运行过程中的下一次开始执行时间相当,以此提升仿真节拍准确性。
32.具体地,如图2所示为机器人实机运行中控制器程序的运行逻辑流程简易框图,实机控制器的操作系统一般为实时操作系统,机器人控制程序一般运行在“任务”中,任务可以设定周期及优先级,机器人轨迹规划一般运行在“插补任务”中,此插补任务特点一般是优先级高,周期抖动小,任务周期抖动大小会直接影响机器人轨迹精度、抖动。整个程序流程类似可编程逻辑控制器(plc,programmable logic controller)程序流程,首先是机器人输入(刷新)过程,此过程会将外部输入信息更新到机器人系统内部,外部输入信息包括:实际伺服关节位置、状态、io、寄存器信息等;然后是运行机器人状态机,机器人状态机部分会根据前述的机器人输入跳转状态,执行用户输入的命令,调用轨迹规划算法等;最后是机器人输出(刷新)过程,此过程是将状态机输出信息更新到外部设备上。
33.图3所示为一个例子中机器人仿真过程,机器人虚拟控制器程序的运行逻辑流程简易框图,用于仿真的虚拟控制器操作系统一般为通用非实时操作系统,机器人程序一般运行在“线程”中,“线程”与“任务”区别在于任务是周期调度的,线程执行一次就结束了,因此若要实现程序循环执行,需要在控制程序中自行写一个循环程序,并在本实施方式中通过休眠来控制程序运行周期,并且本实施方式中的休眠支持动态调整,能够动态计算分配每次循环需要休眠时间,从而保证虚拟仿真节拍准确性。其中,图3“插补时间”即为上述的插补周期的时间,机器人输入、机器人状态机、机器人输出共同构成上述需要执行的虚拟线程。
34.本实施方式中的仿真过程例如:在程序初始化过程中,周期循环任务执行最开始,记录一个初始时间t0,循环次数cyclenuber置为0;每次机器人输出后循环次数cyclenuber加1;更新记录当前时间t1;更新程序已运行时间t2,公式为t2=t1-t0;更新期望程序运行时间t3,公式为t3=cyclenuber*cycletime。cycletime为插补周期时间;判断t3与t2大小,若t3《t2,设定休眠时间t4为0,执行休眠,结束一个循环过程;反之休眠时间设定为t4=t3-t2,并判断休眠时间t4与插补周期cycletime大小,若t4》cycletime,设定休眠时间t4=cycletime,反之休眠时间不变;然后执行休眠过程,结束一次循环过程;休眠执行结束进入下一次循环。
35.对于一个实施方式的实现过程,例如:在通用windows系统上搭建一个c++工程,编译器为mingw,目标机为x86架构,按照图3在主程序函数中依次实现程序数据初始化过程,程序循环运行过程;循环运行过程中分别实现机器人输入(刷新调用)、机器人状态机的调用、机器人输出(刷新调用)、机器人程序循环休眠计算、程序休眠执行等步骤。
36.此外,对于算法效果验证可以采用如下两种方式:程序中时刻监视t2与t3差值数据变化,观察此数据是否会发散,数据差值最大值是否能够维持在一个稳定数据范围内,若数值稳定且较小(如不超过10个插补周期),就能验证此算法有效。或写多个运行的运行时间不同的机器人应用程序,然后分别在虚拟控制器和实机控制器中运行此程序,记录分析对比运行时间差别,若数值较小(如不超过10个插补周期),就能验证此算法有效。
37.通过本技术的实施方式,可以使虚拟控制器仿真节拍与实机运行节拍基本一致,提高机器人仿真系统节拍仿真准确性。机器人仿真过程中的节拍仿真基本不受运行操作系统实时性、任务调度特性影响;并且节拍仿真无累积误差,由于休眠时间的调整使用了运行
总时间,所以仿真过程中程序运行时间越久,体现出的节拍仿真准确度越高。同时节拍仿真不会出现卡顿情况,因为设定最长休眠时间为插补周期,保证了机器人不会出现长时间休眠情况。
38.上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
39.本技术的一个实施方式涉及一种机器人仿真装置,如图4所示,包括:
40.获取模块201,用于获取虚拟线程已运行的实际总时间;
41.确定模块202,用于根据所述虚拟线程的执行次数、插补周期和所述实际总时间确定休眠时间,所述休眠时间为所述机器人仿真过程中执行所述虚拟线程的时间间隔,所述插补周期为所述虚拟线程运行一次的期望时间;
42.休眠模块203,用于根据确定的休眠时间执行休眠。
43.对于所述获取模块201,在一个例子中,所述获取虚拟线程已运行的实际总时间,包括:在首次所述虚拟线程运行开始时记录第一时间节点;在所述虚拟线程运行结束后记录第二时间节点;所述第一时间节点与所述第二时间节点的时间差为所述已运行的实际总时间。
44.在一个例子中,在所述虚拟线程运行结束后记录第二时间节点,包括:在每次运行所述虚拟线程后,更新所述第二时间节点。
45.对于所述确定模块202,在一个例子中,所述根据所述虚拟线程的执行次数、插补周期和所述实际总时间确定休眠时间,包括:根据所述虚拟线程的执行次数和所述插补周期,确定所述虚拟线程执行的预期时间;在所述预期时间小于所述实际总时间的情况下,所述休眠时间为0;在所述预期时间不小于所述实际总时间的情况下,所述休眠时间为所述实际总时间与所述预期时间的差值的绝对值。
46.在一个例子中,所述根据所述虚拟线程的执行次数、插补周期和所述实际总时间确定休眠时间,还包括:在所述休眠时间大于所述插补周期的情况下,将所述休眠时间更新为所述插补周期。
47.在一个例子中,每次运行所述虚拟线程后,所述执行次数加1。
48.通过本技术的实施方式,可以使虚拟控制器仿真节拍与实机运行节拍基本一致,提高机器人仿真系统节拍仿真准确性。机器人仿真过程中的节拍仿真基本不受运行操作系统实时性、任务调度特性影响;并且节拍仿真无累积误差,由于休眠时间的调整使用了运行总时间,所以仿真过程中程序运行时间越久,体现出的节拍仿真准确度越高。同时节拍仿真不会出现卡顿情况,因为设定最长休眠时间为插补周期,保证了机器人不会出现长时间休眠情况。
49.不难发现,本实施方式为与上述实施方式相对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
50.值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一
个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本技术的创新部分,本实施方式中并没有将与解决本技术所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
51.本技术的一个实施方式涉及一种电子设备,如图5所示,包括至少一个处理器301;以及,与所述至少一个处理器301通信连接的存储器302;其中,所述存储器302存储有可被所述至少一个处理器301执行的指令,所述指令被所述至少一个处理器301执行,以使所述至少一个处理器301能够执行上述的机器人仿真方法。
52.其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
53.处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
54.本技术的一个实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
55.即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
56.本领域的普通技术人员可以理解,上述各实施方式是实现本技术的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本技术的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1