首页 > 五金工具 专利正文
并联机器人的多线程控制器的制作方法

时间:2022-01-23 阅读: 作者:专利查询

并联机器人的多线程控制器的制作方法

1.本技术涉及机器人技术领域,尤其涉及一种并联机器人的多线程控制器。


背景技术:

2.机器人运动控制是一个相对复杂的过程,机器人的控制对实时性要求较高,需要保证控制器与硬件的通讯的时效性,而同时,机器人运动规划的过程中又需要读写文件、通讯、数学计算等一些耗时操作,这些操作既需要提供运动必要的数据,又不能影响与硬件的通讯的实时性,所以就有了区分线程的必要。
3.但是对于多线程程序,线程之间的配合和交互一直是程序的难点,比如现有方案针对多线程之间的数据交换和任务推送的处理不够灵活,导致整体控制流程实时性和安全性不够。


技术实现要素:

4.本技术提供一种并联机器人的多线程控制器,以解决现有的多线程控制方案的实时性和安全性不够的问题。
5.本技术的上述目的是通过以下技术方案实现的:本技术实施例提供一种并联机器人的多线程控制器,其包括:主线程、实时线程、预处理线程和后台线程;其中,所述主线程、实时线程、预处理线程和后台线程之间存在互相调度,通过创建线程任务、存放数据到缓冲区列表被其他进程调用的方式,以线程的安全队列方式来保障线程正常的调用及执行;所述主线程用于进行初始化和线程调用,以实现并联机器人的运动逻辑的控制;其中,所述初始化包括:初始化硬件通信、初始化日志管理工具、初始化报警管理工具、初始化自定义的tcp通信协议、初始化时钟和初始化机器人参数;所述线程调用包括:接收修改变量指令、接收执行指令、进行异步操作和控制通信;所述实时线程用于实现与硬件设备的通讯和界面交互,其中包括:获取机器人硬件参数、计算机器人动平台实时位置、向硬件发送控制信号和实时触发i/o设备;所述预处理线程用于实现运动规划,其中包括:变量指令解析、机器人运动规划和最新指令规划;所述后台线程用于文件读写和耗时计算。
6.可选的,各线程中的任务以任务列表的形式存放在内存中,每个生成的任务都包含一个具体的时钟信号,且任务按时钟的时序顺序排列,各线程调用任务列表的任务时,按时钟顺序先后调用。
7.可选的,在进行变量修改时,各线程执行的调用逻辑包括:所述主线程创建后台缓存线程并将修改变量指令对应的任务添加到后台任务列表,以及创建预处理线程,并将修改变量指令对应的数据包发送给预处理线程;所述预处理线程获取到主线程发送的数据包后,进行指令解析,以及创建获取机
器人末端位置的实时线程任务;所述实时线程根据所述预处理线程创建的任务读取机器人硬件参数,计算实时平台位置参数,以及创建预处理线程,以进行下次位置更新规划;所述后台线程进行必要的文件读取。
8.可选的,在进行拖动示教时,各线程执行的调用逻辑包括:所述实时线程,一方面,读取机器人硬件参数,计算实时平台位置参数,以及创建预处理线程以对轨迹点进行路径处理;另一方面,读取机器人末端力矩传感器参数,将力矩参数转化为控制信号,并将控制信号发送到驱动器;所述预处理线程,一方面,获取实时线程发送的机器人位置列表,进行路径规划和指令解析,并将位置参数序列化为可视化程序格式,以及创建主线程任务和实时更新hmi界面指令;另一方面,获取实时线程发送的机器人实时位置,并创建实时进程,更新hmi仿真显示;所述主线程,一方面,获取预处理线程发送的可视化程序格式的数据包,并向hmi发送更新显示信息;另一方面,创建后台进程,使其将程序运行日志信息存储到文件中;所述后台进程进行必要的文件读取。
9.可选的,在进行机器人运行控制时,各线程执行的调用逻辑包括:所述预处理线程,一方面,获取机器人运行程序列表,进行序列化解析得到可视化文本格式的数据包,并将数据包发送给主线程任务;另一方面,获取实时线程发送的机器人实时位置,计算机器人下一次到达的位置参数,以及创建实时线程任务执行此次操作;所述实时线程,一方面,读取机器人硬件参数,计算实时动平台的位置参数,以及创建预处理线程进行下次位置更新规划;另一方面,获取预处理线程更新的位置参数,将位置参数转化为控制信号,并将控制信号发送到驱动器;所述主线程,一方面,获取预处理线程发送的可视化文本格式的数据包,向hmi发送更新显示信息;另一方面,创建后台线程,将程序运行日志信息存储到文件中;所述后台进程进行必要的文件读取。
10.本技术的实施例提供的技术方案可以包括以下有益效果:本技术的实施例提供的技术方案中,将所有任务集中在分层次的主线程、实时线程、预处理线程和后台线程这四个线程中,并将不同优先级的任务放在不同级别的线程中,优先保证运动逻辑,其次是运动规划,再次是通讯与界面交互,最后是文件读取和耗时计算,并使各种运算严格的在各自线程中运行,以及,通过在各个线程之间提供进行数据交互的线程安全队列,以及线程时钟调用和相互推送任务机制,从而实现线程之间的通讯调用的安全性与数据交互的灵活性。
11.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
12.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
13.图1为本技术实施例提供的一种并联机器人的多线程控制器的结构示意图;
图2为主线程的初始化流程示意图;图3为各线程的任务列表推送过程示意图;图4为获取到hmi下发的修改变量指令后的各线程调用逻辑示意图;图5为拖动示教时各线程调用逻辑示意图;图6为运行控制时各线程调用逻辑示意图。
具体实施方式
14.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
15.现有的控制器的线程管理方式存在如表1所示的缺点:表1:
线程管理方式缺点不区分线程如果不区分线程,会导致系统实时性下降,影响运动的实时性。不分配线程如果线程混乱,线程过多,会导致线程的开关频繁消耗资源。分配但不整合如果分配线程之后只简单使用编程语言中的多线程,又不能实现多线程之间灵活的数据交换和任务推送。其他现有平台采用其他现有的机器人控制平台,一般能通过其他方式保证安全性和实时性,但是往往不能按照用户的想法灵活的区分线程,而且一定程序上靠用户自己考虑线程分配。
为了解决上述问题,本技术提供一种多线程控制的分配、整合方案。以下通过实施例进行详细说明。
16.实施例参照图1,图1为本技术实施例提供的一种并联机器人的多线程控制器的结构示意图。如图1所示,该多线程控制器包括:主线程、实时线程、预处理线程和后台线程。其中,实时线程与驱动器(比如电机)和传感器进行实时通讯。实时线程需要尽可能减少复杂的计算,以此来保证每个实时线程周期计算不会超时。为了减轻实时线程的负担,将大计算量任务交由预处理线程,预处理线程将计算结果发送到实时线程。每个线程有明确的任务类型划分,具体任务如表2所示。
17.结合表2,对各线程的主要任务的详细说明如下:表2:
主线程实时线程预处理线程后台线程初始化初始化硬件通信日志管理报警模块管理tcp通信初始化时钟机器人参数配置初始化其他线程任务修改变量指令接收执行异步操作获取机器人硬件参数计算机器人动平台实施位置向硬件发送控制信号变量指令解析机器人运动规划文件读写耗时计算
时钟初始化时钟池对象实时触发i/o规划最新指令循环hmi通信tcp通信 一、主线程主线程执行过程中主要分为两部分:进行初始化和线程调用,以实现并联机器人的运动逻辑的控制;其中,初始化是在程序进程启动时完成,用于通信、日志、时钟等工具的初始化及机器人硬件参数的读取,具体包括:1.初始化硬件通信,初始化基于以太网的开发构架的实时工业现场总线通讯协议ethercat,使其获得具有分布时钟特点的抖动小、更精准的时钟,完成基于硬件设备完成数据交互;2.初始化日志管理工具,使其能够在各个线程被调用时使用该工具,记录线程执行的所有行为,并按照某种规范表达出来,并能够以文本形式存储在文件中;3.初始化报警管理工具,使其能够在用户交互中检查程序进程的运行时可能出现的异常问题,减少程序崩溃,提高程序稳定性;4.初始化自定义的tcp通信协议,线程之间的通信、hmi(human machine interface,人机界面)与运动控制系统之间的通信都是通过tcp协议完成的;5.初始化时钟,每个线程周期性执行,通过一种不随系统时间变化而受影响的时间间隔的计数方式,保障线程在周期执行完毕;6.初始化机器人参数,运动控制系统是一种并联机器人通用控制系统,能够根据机器人实际参数完成适配,因此在程序进程启动时要先进行机器人参数的配置,便于后续计算。
18.所有的子线程都在主线程中创建并运行,因此,在主线程中需要将系统的硬件通信协议、日志管理及报警等进行初始化,在注册主线程之后,需要对系统时钟池对象进行初始化,保证各个线程运行时的时钟响应能正常进行。接着初始化tcp通信协议,保证运动控制系统与hmi、运动控制系统与设备之间的通信。每次进行主线程任务响应时,都需初始化机器人参数,保证机器人运动的安全性、稳定性。具体过程如图2所示。
19.此外,线程调用是创建子线程,并负责管理子线程的调用。在每个子线程完成单例实例相关对象后将控制权还给主线程,子线程周期性的反馈运行状态,并接受主线程的中断调度。线程调用具体包括:1.接收修改变量指令,也即在hmi修改变量指令时,被主线程中的hmi通信循环侦听,接收hmi数据包,唤醒后台进程进行缓存操作,实时更新hmi界面,创建预处理线程任务,并将数据包发送给预处理线程;2.接收执行指令,也即接收hmi执行指令的数据包,并将其发送给预处理指令,实时显示指令执行情况;3.进行异步操作,也即在程序执行的时候同时执行报警、hmi界面更新等异步操作,支持线程之间通信的同时执行程序;4.控制通信,也即控制hmi通信、tcp控制通信周期性的执行,保障系统的实时性和稳定性。
20.二、实时线程实时线程需要保证严格的实时性,这样才能使机械手的运动更稳定。实时线程是优先级最高的线程,需要严格保证每次进入的时间,并在每次循环开始将上一周期的运算结果写入硬件(也即发送到驱动器,比如电机),并将传感器等的反馈数据读入控制系统,也即实现与硬件设备的通讯和界面交互,具体如下:1.获取机器人硬件参数,也即实时读取机器人关节角度、位置等硬件参数,创建预处理线程,并将数据包发送给预处理线程;2.计算机器人动平台实时位置,也即根据机器人硬件参数计算机器人末端(动平台)位置,这里可根据指令要到达的位置计算机器人硬件位姿参数,硬件发送控制信号;也可以根据实时位姿参数向预处理线程发送数据包,进行指令的生成;3.向硬件发送控制信号,也即将接收的预处理线程指令转化成具体的电机(驱动器)控制信号;4.实时触发i/o设备,也即实时向运动控制系统发送i/o响应信号。对于大于100微秒的任务就需要格外小心,应考虑放到预处理线程或其他线程进行处理。
21.三、预处理线程预处理线程负责对hmi变量指令的解析与机器人运行程序做指令规划,也即实现运动规划。具体包括:1.变量指令解析,也即接收主线程发送的hmi变量指令修改数据包,通过解析器反序列化成可执行程序,并创建实时线程去执行;2.机器人运动规划,也即获取实时线程位姿参数,进行路径规划,并进行指令序列化成可视化指令变量,以数据包形式发送给主线程;3.最新指令规划,也即规划指令的先后顺序。
22.预处理线程中关于运动规划是个非常复杂的过程,包括路径规划、速度规划、工作空间、坐标系转换等,本实施例只介绍关于指令调用的逻辑部分,具体执行细节不进行详述。
23.四、后台线程后台线程执行需要等待的操作,主要执行文件的读写、耗时计算及系统操作任务,后台线程优先级最低,防止对其他线程产生干扰,保证时效性高的计算优先进行。具体包括:1.文件读写,也即主线程接收hmi变量指令修改时创建后台存取进程,在执行过程中可随时被其他线程中断。
24.2.耗时计算,也即当程序需要大容量计算时,放在后台计算,提高控制器实时性,避免影响系统性能。
25.此外,实际应用中,主线程、实时线程、预处理线程和后台线程之间存在互相调度,通过创建线程任务、存放数据到缓冲区列表被其他进程调用的方式,以线程的安全队列方式来保障线程正常的调用及执行。线程安全队列是一个程序层面上的队列,数据只能从一个线程写入,从而确保从其他线程读出时,不会读取到异常数据和错误数据。程序使用时需要将准备好的数据结构体添加到队列末端,使用时则从队列中弹出最早存入的结构。程序通过封装这两个接口提供给所有线程间数据交互的调用。这里的数据通过智能指针的形式
管理内存,避免出现系统资源的浪费。通过线程安全队列,一个线程可以将所需数据添加到队列,安全的交给另一个线程做后续处理。
26.在保证时钟准确的前提下,需要线程的安全队列机制来保障程序的稳定执行。各线程中的任务以任务列表的形式存放在内存中,每个生成的任务都包含一个具体的时钟信号,且任务按时钟的时序顺序排列,因此推送到各任务列表除支持fifo规则外还支持插入。各线程调用任务列表的任务时,按时钟顺序先后调用。线程在执行周期内调用系统资源,执行完毕或周期完毕则释放系统资源,避免系统资源的闲置,具体如图3所示。
27.此外,如上述实施例所述,每个线程都有明确的任务类型划分,但实际应用中每个线程不需要将所有能执行命令执行一遍,只需要有一个明确的执行步骤,并返回下一个线程的执行命令。例如,一个实时线程可能只计算机器人动平台实时位置,并将其发送给预处理线程,由预处理线程继续响应行该命令;另一个实时线程可以是获取机器人硬件参数,并将其发送给预处理线程,用于机器人运动规划等计算。为了更好地理解,通过以下几个示例对上述各线程执行的调用逻辑进行举例说明。
28.①
修改变量,也即用户通过hmi下发修改变量指令,进行变量修改。其中各线程的主要调用逻辑可参照图4,主要包括:主线程创建后台缓存线程并将修改变量指令对应的任务添加到后台任务列表,以及创建预处理线程,并将修改变量指令对应的数据包发送给预处理线程;预处理线程获取到主线程发送的数据包后,进行指令解析,以及创建获取机器人末端位置的实时线程任务;实时线程根据所述预处理线程创建的任务读取机器人硬件参数,计算实时平台位置参数,以及创建预处理线程,以进行下次位置更新规划;后台线程进行必要的文件读取。
29.②
拖动示教,也即操作员直接拖着机器人各关节运动到理想的姿态,并由机器人记录下来的过程。其中各线程的主要调用逻辑可参照图5,主要包括:实时线程,一方面,读取机器人硬件参数,计算实时平台位置参数,以及创建预处理线程以对轨迹点进行路径处理;另一方面,读取机器人末端力矩传感器参数,将力矩参数转化为控制信号,并将控制信号发送到驱动器;预处理线程,一方面,获取实时线程发送的机器人位置列表,进行路径规划和指令解析,并将位置参数序列化为可视化程序格式,以及创建主线程任务和实时更新hmi界面指令;另一方面,获取实时线程发送的机器人实时位置,并创建实时进程,更新hmi仿真显示;主线程,一方面,获取预处理线程发送的可视化程序格式的数据包,并向hmi发送更新显示信息;另一方面,创建后台进程,使其将程序运行日志信息存储到文件中;后台进程进行必要的文件读取。
30.③
运行控制,也即控制器控制机器人按照指令运行。其中各线程的主要调用逻辑可参照图6,主要包括:预处理线程,一方面,获取机器人运行程序列表,进行序列化解析得到可视化文本格式的数据包,并将数据包发送给主线程任务;另一方面,获取实时线程发送的机器人实时位置,计算机器人下一次到达的位置参数,以及创建实时线程任务执行此次操作;实时线程,一方面,读取机器人硬件参数,计算实时动平台的位置参数,以及创建
预处理线程进行下次位置更新规划;另一方面,获取预处理线程更新的位置参数,将位置参数转化为控制信号,并将控制信号发送到驱动器;主线程,一方面,获取预处理线程发送的可视化文本格式的数据包,向hmi发送更新显示信息;另一方面,创建后台线程,将程序运行日志信息存储到文件中;后台进程进行必要的文件读取。
31.基于上述各实施例,本技术的方案中,将所有任务集中在分层次的主线程、实时线程、预处理线程和后台线程这四个线程中,并将不同优先级的任务放在不同级别的线程中,优先保证运动逻辑,其次是运动规划,再次是通讯与界面交互,最后是文件读取和耗时计算,并使各种运算严格的在各自线程中运行,以及,通过在各个线程之间提供进行数据交互的线程安全队列,以及线程时钟调用和相互推送任务机制,从而实现线程之间的通讯调用的安全性与数据交互的灵活性。
32.可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
33.需要说明的是,在本技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本技术的描述中,除非另有说明,“多个”的含义是指至少两个。
34.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
35.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
36.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
37.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
38.上述提到的存储介质可以是只读存储器,磁盘或光盘等。
39.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
40.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。