机器人的控制方法及装置、可读存储介质与流程
本申请涉及机器人控制技术领域,具体而言,涉及一种机器人的控制方法及装置、可读存储介质。
背景技术:
目前,商业化的工业机器人普遍采用一种专用化的机器人伺服控制器,其端口开放程度相对较低,且内部多采用dsp(digitalsignalprocessing,数字信号处理)或者其他的专用芯片作为控制器核心,相对较低的端口开放度不利于用户进行二次开发,无法达到更加灵活的控制,对机器人控制过程中的实时性有一定的影响。因此,现有的机器人控制的实时性和适用性较差。
技术实现要素:
本申请实施例的目的在于提供一种机器人的控制方法及装置、可读存储介质,用以提高机器人控制的实时性和适用性。
第一方面,本申请提供一种机器人的控制方法,应用于基于fpga的机器人控制器,所述控制方法包括:当接收到机器人的控制指令时,获取机器人各个关节的编码器信息和所述机器人的配置参数;所述控制指令中包括所述机器人的目标位置;基于所述编码器信息和所述配置参数计算所述各个关节的当前所处的角度;根据所述各个关节的当前所处的角度计算所述机器人的起始位置;根据所述目标位置和所述起始位置确定所述各个关节的目标角度;所述目标角度为所述机器人在所述目标位置时所述各个关节所到达的角度;基于所述各个关节的目标角度对所述各个关节进行驱动,以实现所述各个关节到达所述目标角度。
在本申请实施例中,利用fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)来进行机器人的控制,在控制时,机器人的控制指令可以由外部发起(可以是用户,也可以是其他控制设备),当接收到控制指令后,获取机器人的相关信息,然后利用这些相关信息进行计算,最终确定机器人在目标位置时各个关节所需要到达的目标角度,然后利用目标角度来驱动机器人的各个关节,实现机器人的控制。由于fpga的灵活性,所以可以在外围扩展多种通讯接口来接收控制指令,另外,因fpga内部固有的架构,可以在同一时间同时处理多个运算,因此可以大大缩减机器人控制过程中因各种运算而带来的时间消耗,提高机器人控制过程中的实时性,而且在控制过程中获取机器人的配置参数,利用配置参数来进行控制,可以适用于不同型号的机器人控制,提高适用性。
作为一种可能的实现方式,所述基于所述各个关节的目标角度对所述各个关节进行驱动,包括:根据所述各个关节的目标角度确定所述各个关节的控制脉冲;将所述各个关节的控制脉冲发送给所述各个关节的驱动器,以使所述驱动器根据所述控制脉冲对所述各个关节进行驱动。
在本申请实施例中,在对各个关节进行驱动时,可以先确定各个关节的控制脉冲,然后将控制脉冲发送给各个关节的驱动器,驱动器便能快速且准确地基于控制脉冲对各个关节进行驱动,提高机器人控制的实时性。
作为一种可能的实现方式,在所述基于所述各个关节的目标角度对所述各个关节进行驱动之前,所述方法还包括:将所述驱动器的状态从准备状态引导为使能状态,以使所述驱动器能够对所述各个关节进行驱动。
在本申请实施例中,机器人控制器还可以对机器人的驱动器的状态进行引导,当驱动器的状态为使能状态时,可以接收脉冲信号对各个关节进行驱动控制,提高机器人控制的实时性。
作为一种可能的实现方式,在将所述驱动器的状态引导为使能状态之前,所述方法还包括:将所述驱动器的状态从初始化状态引导为所述准备状态。
在本申请实施例中,对驱动器的状态引导可以分为两个阶段,使驱动器能够更稳定地进入使能状态,提高机器人控制的稳定性。
作为一种可能的实现方式,所述基于所述编码器信息和所述配置参数计算所述各个关节的当前所处的角度,包括:根据所述各个关节的编码器信息确定所述各个关节的当前控制脉冲;根据所述各个关节的当前控制脉冲和所述配置参数计算所述各个关节的当前所处的角度。
在本申请实施例中,在计算各个关节当前所处的角度时,可以先基于编码器信息来确定各个关节的当前控制脉冲,当确定各个关节的当前控制脉冲后,便可以利用配置参数对当前所处的角度进行准确地计算。
作为一种可能的实现方式,所述根据所述各个关节的当前所处的角度计算所述机器人的起始位置,包括:根据所述各个关节的当前所处的角度确定当前所述机器人末端所处的空间位置,所述末端所处的空间位置为所述起始位置。
在本申请实施例中,在计算机器人的起始位置时,可以以机器人末端的位置作为机器人的起始位置,使起始位置更准确。
作为一种可能的实现方式,所述根据所述目标位置和所述起始位置确定所述各个关节的目标角度,包括:根据所述目标位置和所述起始位置确定所述各个关节的初始目标角度;根据所述各个关节的角度限位信息和所述初始目标角度确定所述各个关节的最终目标角度。
在本申请实施例中,在确定各个关节的目标角度时,可以先确定初始目标角度,然后基于角度限位信息来对初始目标角度进行筛选,确定出更优的目标角度,提高机器人控制的稳定性。
作为一种可能的实现方式,所述配置参数包括:所述机器人的当前dh模型参数、所述各个关节的角度限位信息、所述各个关节的轴角度和所述控制脉冲之间的对应关系、dh参数建模和所述各个关节的转动方向的对应关系。
在本申请实施例中,配置参数中包括各个与机器人的关节相关的配置参数,能够实现对机器人的精准控制。
第二方面,本申请实施例提供一种机器人的控制装置,应用于基于fpga的机器人控制器,所述控制装置包括用于实现第一方面以及第一方面的任意一种可能的实现方式中所述的方法的功能模块。
第三方面,本申请实施例提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如第一方面以及第一方面的任意一种可能的实现方式中所述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的机器人的控制方法的流程图;
图2为本申请实施例提供的机器人的控制装置的功能模块结构框图。
图标:200-机器人的控制装置;201-机器人编码器读取及角度转换模块;202-运动控制模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供的机器人的控制方法可以应用于各类商业化的工业机器人的控制,比如:4轴、5轴和6轴工业机器人。不同轴设计的工业机器人的关节的内部结构基本一致,只是大小有区别。以常见的每一个关节中都包含了电机、伺服驱动器、电机端编码器。其中,伺服驱动器通过驱动电机,电机带动各个关节运作,进而实现各个关节的驱动。因此,机器人的各个关节都对应有各自的伺服驱动器。电机端编码器用于记录各个伺服驱动器的编码信息,该编码信息能够用于伺服驱动器实现不同的角度的驱动控制。
进一步地,本申请实施例所提供的机器人的控制方法应用于基于fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)的机器人控制器,fpga器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。fpga的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块ram(randomaccessmemory,随机存取存储器),布线资源,内嵌专用硬核,底层内嵌功能单元。fpga的设计流程包括算法设计、代码仿真以及设计、板机调试,设计者以及实际需求建立算法架构,利用eda(electronicdesignautomation,电子设计自动化)建立设计方案或编写设计代码,通过代码仿真保证设计方案符合实际要求,最后进行板级调试,利用配置电路将相关文件下载至fpga芯片中,验证实际运行效果。
对于本申请实施例来说,将机器人的控制方法对应的软件程序进行设计编写并写入fpga控制器后,可存储在fpga控制器中,当完成调试,确保能够满足控制要求后,将fpga控制器与机器人建立通讯连接,以及与外部建立通讯连接后,当fpga运行对应的软件程序时,便能够实现对机器人的控制。
基于上述应用场景,接下来请参照图1,为本申请实施例提供的应用于基于fpga的机器人控制器的机器人的控制方法的流程图,该控制方法包括:
步骤101:当接收到机器人的控制指令时,获取机器人各个关节的编码器信息和机器人的配置参数;控制指令中包括机器人的目标位置。
步骤102:基于编码器信息和配置参数计算各个关节的当前所处的角度。
步骤103:根据各个关节的当前所处的角度计算机器人的起始位置。
步骤104:根据目标位置和起始位置确定各个关节的目标角度;目标角度为机器人在目标位置时各个关节所到达的角度。
步骤105:基于各个关节的目标角度对各个关节进行驱动,以实现各个关节到达目标角度。
在本申请实施例中,利用fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)来进行机器人的控制,在控制时,机器人的控制指令可以由外部发起(可以是用户,也可以是其他控制设备),当接收到控制指令后,获取机器人的相关信息,然后利用这些相关信息进行计算,最终确定机器人在目标位置时各个关节所需要到达的目标角度,然后利用目标角度来驱动机器人的各个关节,实现机器人的控制。由于fpga的灵活性,所以可以在外围扩展多种通讯接口来接收控制指令,另外,因fpga内部固有的架构,可以在同一时间同时处理多个运算,因此可以大大缩减机器人控制过程中因各种运算而带来的时间消耗,提高机器人控制过程中的实时性,而且在控制过程中获取机器人的配置参数,利用配置参数来进行控制,可以适用于不同型号的机器人控制,提高适用性。
接下来对步骤101-步骤105的实施方式以及该控制方法的实施方式进行详细地介绍。
在步骤101中,机器人的控制指令可以是用户通过fpga控制器设置的输入输出模块输入的控制指令;也可以是fpga控制器上设置有外部通讯接口,用户所在的用户端或者其他设备通过该外部通讯接口与fpga控制器之间通信连接,然后用户端或者其他设备将接收到的控制指令或者在控制流程中触发的控制指令发送给fpga控制器。其中,对于在控制流程中触发的控制指令,可以理解,在一些工业机器人的自动化运作流程中,各个机器人的运作具有配合性,比如:当1号工业机器人完成其对应的运作任务后,就会触发2号工业机器人开始其对应的运作任务,在这种情况下,控制指令就具有自动触发性。当然,在实际应用时,由于fpga控制器的通讯接口的可扩展性,可以根据实际需求采取更多地控制指令触发形式,在此不作限定。
此外,步骤101中的机器人指的是待控制的机器人,一个fpga控制器可以用于对多个机器人的控制,也可以仅用于对一个机器人的控制。当用于对多个机器人的控制时,该控制指令中还包括机器人对应的身份信息,进而控制器可以根据身份信息读取对应的待控制机器人的信息,以及对其进行控制。
进一步地,在接收到控制指令时,fpga控制器获取机器人各个关节的编码器信息和机器人的配置参数,可以理解,fpga控制器与机器人之间建立有通讯连接,fpga控制器可以实时地读取机器人的相关数据。在本申请实施例中,fpga控制器上可以设置有用于与机器人建立通讯连接的通讯接口,该通讯接口可以是:ethercat(以太网)通讯接口、canopen(controllerareanetwork,控制局域网络)通讯接口或者其他的通讯接口。举例来说,机器人与fpga控制器之间交互的数据可以包括:各伺服驱动器的信息,比如:当前所处的伺服状态字、伺服控制字、编码器的值、电机当前的工作电压、电流、扭矩等以及其他和对象字典相关的各种状态参数和控制参数。
进一步地,在控制指令中,包含机器人的目标位置,对于机器人的目标位置,可以理解为机器人预到达的位置。对于该目标位置,可以随着控制指令进行更新,即在执行步骤101-步骤105的过程中,若有新的目标位置,也可以发起对应的控制指令,此时fpga控制器可以结合新的目标位置信息再次执行步骤101-步骤105,但是此时其中的某些信息以实时的信息为准,比如:起始位置会随着机器人位置的变化而变化。
在本申请实施例中,对于编码器信息,可以理解为编码器的控制脉冲信息,为实时的控制脉冲信息。对于配置信息,可以包括:机器人的当前dh模型(由denavit和hartenberg提出的一种自由度机械臂模型,用于对机器人的机械臂进行建模)参数、各个关节的角度限位信息、各个关节的轴角度和控制脉冲之间的对应关系、dh参数建模和各个关节的转动方向的对应关系。
其中,各个关节的角度限位信息代表各个关节所能到达的最大角度信息;各个关节的轴角度和控制脉冲之间的对应关系可以理解为控制脉冲与关节的角度之间的比例关系,可以用于基于其中任何的一个已知项确定另一项。dh是一种模型,基于模型中的参数,可以实现对机器人的各个关节的运动的建模,进而对各个关节的角度等信息进行计算。各个关节的转动方向,可以理解为关节在运动过程中的运动方向,比如顺时针、逆时针等。dh参数建模和各个关节的转动方向的对应关系,可以用于基于相关的信息对各个关节的转动进行建模,进而实现基于建立的模型对各个关节的角度等信息进行计算。
对于这些配置参数,当fpga控制器与机器人建立连接且系统上电后,便可以对这些配置参数进行读取,当读取后,一方面将其进行存储,另一方面将其配置到fpga控制器中的各个对应的控制模块,进而使得fpga控制器可以利用这些配置参数实现与当前待控制的机器人的脉冲匹配的精准控制。
在本申请实施例中,配置参数中包括各个与机器人的关节相关的配置参数,能够实现对机器人的精准控制。
进一步地,在步骤101以后,执行步骤102,基于编码器信息和配置参数计算各个关节的当前所处的角度,作为一种可选的实施方式,步骤102包括:根据各个关节的编码器信息确定各个关节的当前控制脉冲;根据各个关节的当前控制脉冲和配置参数计算各个关节的当前所处的角度。
在这种实施方式中,由于各个关节的编码器信息中包含了当前控制脉冲信息,在配置信息中包含有各个关节的轴角度和控制脉冲之间的对应关系(可以理解为角度与控制脉冲之间的比例关系),当确定当前控制脉冲后,便可以根据控制脉冲与角度之间的比例关系确定出各个关节当前所处的角度。
在本申请实施例中,在计算各个关节当前所处的角度时,可以先基于编码器信息来确定各个关节的当前控制脉冲,当确定各个关节的当前控制脉冲后,便可以利用配置参数对当前所处的角度进行准确地计算。
进一步地,在步骤102中确定各个关节当前所处的角度后,执行步骤103,根据各个关节的当前所处的角度计算机器人的起始位置。其中,起始位置可以理解为到达目标位置的调整过程中的调整开始时刻所对应的初始位置,即要从起始位置到达目标位置。作为一种可选的实施方式,步骤103包括:根据各个关节的当前所处的角度确定当前机器人末端所处的空间位置,末端所处的空间位置为起始位置。
在这种实施方式中,相当于将机器人末端的所处的控制位置作为机器人的位置。在根据各个关节当前所处的角度确定末端的位置时,由于各个关节相对于末端的位置是已知的,在各个关节的角度已知的情况下,通过各个关节与末端之间的位置关系便能够确定末端的位置。
在实际应用中,通常都是将机器人的末端的位置作为机器人的位置基准,但是在某些特殊的情况下,也可以存在着将机器人除末端外的其他位置作为的位置判断基准的情况,因此,在确定机器人的位置时,可以根据实际需求选择机器人的位置的基准,进而来确定机器人的位置。
在本申请实施例中,在计算机器人的起始位置时,可以以机器人末端的位置作为机器人的起始位置,使起始位置更准确。
进一步地,在步骤103中得到机器人的起始位置后,执行步骤104,根据目标位置和起始位置确定各个关节的目标角度;目标角度为机器人在目标位置时各个关节所到达的角度。
其中,在确定各个关节的目标角度时,可以先基于起始位置和目标位置规划不同的从起始位置到目标位置的轨迹,针对这些轨迹,计算各个关节沿这些轨迹运作后最终应该到达的角度,该应该到达的角度即为各个关节的目标角度。
由于起始位置到目标位置之间,可能存在着不同的轨迹,这些轨迹有些是可行的,有些是不可行的,最终得到的目标角度也存在着多种情况,因此,作为一种可选的实施方式,步骤104包括:根据目标位置和起始位置确定各个关节的初始目标角度;根据各个关节的角度限位信息和初始目标角度确定各个关节的最终目标角度。
在这种实施方式中,初始目标角度即为利用基于起始位置和目标位置所规划的不同的轨迹所计算得到的多个目标角度。在配置信息中,包含有各个关节的角度限位信息(最大角度限制),在得到的多个目标角度中,如果不满足关节的角度限位,便可以直接排除。对于各个关节来说,每个关节所对应的最大角度限制是不同的,通过对每个关节的目标角度进行角度限位判断,便可以得到一组较优的符合各个关节的角度限位的解,该组解中的各个目标角度即为各个关节的目标角度。
在本申请实施例中,在确定各个关节的目标角度时,可以先确定初始目标角度,然后基于角度限位信息来对初始目标角度进行筛选,确定出更优的目标角度,提高机器人控制的稳定性。
进一步地,在步骤104中确定各个关节的目标角度后,可以执行步骤105,基于各个关节的目标角度对各个关节进行驱动,以实现各个关节到达目标角度,可以理解,当各个关节到达目标角度后,那么机器人的位置也到达目标位置。
作为一种可选的实施方式,步骤104包括:根据各个关节的目标角度确定各个关节的控制脉冲;将各个关节的控制脉冲发送给各个关节的驱动器,以使驱动器根据控制脉冲对各个关节进行驱动。
在这种实施方式中,在确定各个关节的控制脉冲时,可以基于配置信息中存储的各个关节的控制脉冲与角度之间的比例关系进行确定,在比例关系已知,且角度已知的情况下,便能够确定控制脉冲。其中,驱动器可以为伺服驱动器,且每个关节对应一个伺服驱动器。进一步地,在将控制脉冲发送给各个关节对应的驱动器后,驱动器便可以根据对应的控制脉冲对各个关节进行驱动,以控制各个关节到达指定的目标角度。
在本申请实施例中,在对各个关节进行驱动时,可以先确定各个关节的控制脉冲,然后将控制脉冲发送给各个关节的驱动器,驱动器便能快速且准确地基于控制脉冲对各个关节进行驱动,提高机器人控制的实时性。
在本申请实施例中,fpga控制器还可以对机器人的驱动器的状态进行引导,以便于驱动器快速地进行驱动控制。因此,在执行步骤105之前,该方法还包括:将驱动器的状态从准备状态引导为使能状态,以使驱动器能够对各个关节进行驱动。
在这种实施方式中,如果驱动器的状态为准备状态,那么在执行步骤105之前,即驱动器开始驱动之前,可以将其状态引导为使能状态,使能状态代表可以接收fpga控制器发送的脉冲信号,那么驱动器便能够接收控制脉冲,进行驱动。
在本申请实施例中,机器人控制器还可以对机器人的驱动器的状态进行引导,当驱动器的状态为使能状态时,可以接收脉冲信号对各个关节进行驱动控制,提高机器人控制的实时性。
进一步地,驱动器的准备状态,可以代表着即将进行驱动控制,在实际应用时,在准备状态之前,驱动器还会有初始状态,在这种情况下,该方法还包括:将驱动器的状态从初始化状态引导为准备状态。对于初始化状态,可以理解为刚启动的状态。
在本申请实施例中,对驱动器的状态引导可以分为两个阶段,使驱动器能够更稳定地进入使能状态,提高机器人控制的稳定性。
在实际应用时,对于fpga控制器来说,当系统上电后,在读取到机器人的配置参数后,便可以将机器人的驱动器的状态从初始化状态引导到准备状态后,然后开始等待控制指令,当接收到控制指令后,再将机器人的驱动器的状态从准备状态引导为使能状态,使其可以接收控制脉冲对各个关节的转动进行驱动。
基于fpga的机器人控制器采用fpga作为核心处理器不仅提高了机器人控制过程的实时性,而且可以扩展多种外围接口供用户选择和使用,并且通过基于配置参数的控制逻辑使得控制器能够适配不同型号的机器人。
基于同一发明构思,请参照图2,本申请实施例中还提供一种机器人的控制装置200,该机器人的控制装置200应用于基于fpga的机器人控制器(即前述实施例中所述的fpga控制器),机器人的控制装置200包括:机器人编码器读取及角度转换模块201和运动控制模块202。
机器人编码器读取及角度转换模块201,用于:当接收到机器人的控制指令时,获取机器人各个关节的编码器信息和所述机器人的配置参数;所述控制指令中包括所述机器人的目标位置;基于所述编码器信息和所述配置参数计算所述各个关节的当前所处的角度。运动控制模块202,用于:根据所述各个关节的当前所处的角度计算所述机器人的起始位置;根据所述目标位置和所述起始位置确定所述各个关节的目标角度;所述目标角度为所述机器人在所述目标位置时所述各个关节所到达的角度;基于所述各个关节的目标角度对所述各个关节进行驱动,以实现所述各个关节到达所述目标角度。
可选的,机器人的控制装置200还包括:脉冲转换模块,用于根据所述各个关节的目标角度确定所述各个关节的控制脉冲;机器人通讯模块,用于将所述各个关节的控制脉冲发送给所述各个关节的驱动器,以使所述驱动器根据所述控制脉冲对所述各个关节进行驱动。
可选的,机器人通讯模块还用于:将所述驱动器的状态从准备状态引导为使能状态,以使所述驱动器能够对所述各个关节进行驱动。
可选的,机器人通讯模块还用于:将所述驱动器的状态从初始化状态引导为所述准备状态。
可选的,机器人编码器读取及角度转换模块201具体用于根据所述各个关节的编码器信息确定所述各个关节的当前控制脉冲;根据所述各个关节的当前控制脉冲和所述配置参数计算所述各个关节的当前所处的角度。
可选的,运动控制模块202具体用于:据所述各个关节的当前所处的角度确定当前所述机器人末端所处的空间位置,所述末端所处的空间位置为所述起始位置。
可选的,运动控制模块202具体还用于根据所述目标位置和所述起始位置确定所述各个关节的初始目标角度;根据所述各个关节的角度限位信息和所述初始目标角度确定所述各个关节的最终目标角度。
前述实施例中的机器人的控制方法中的各实施方式和具体实例同样适用于图2的装置,通过前述对机器人的控制方法的详细描述,本领域技术人员可以清楚地知道图2中的机器人的控制装置200的实施方式,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,本申请实施例还提供了一种可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被计算机运行时执行上述任一实施方式的机器人的控制方法。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除