一种触碰检测方法、装置、电子设备和计算机可读介质
技术领域
本申请涉及仿生手技术领域,尤其涉及一种触碰检测方法、装置、电子设备和计算机可读介质。
背景技术
五指仿生手是残疾人或者类人机器人的末端执行机构,为实现对物体的有效抓取,首先需要让手指在抓取物体的过程中实时判定是否碰触到物体,在触碰到物体后再进行决策完成抓取行为,目前仿生手一般通过检测指端内部安装的压力传感器的压力值,判断手指在运动过程中是否碰触到物体。
如果被抓取物体的形状不规则,或者五指抓取物体的姿态不合适时,会出现手指内表面其他部位碰触到物体而位于指端的压力传感器碰触不到物体的情况,手指已触碰到物体但无法检测出来,导致无法抓取物体。
发明内容
本申请实施例的目的在于提供一种触碰检测方法,以解决触碰检测不准确,无法抓取物体的问题。具体技术方案如下:
第一方面,提供一种触碰检测方法,所述方法应用于仿生手设备,所述仿生手设备上具有驱动装置,所述方法包括:
获取当前占空比、以及当前电流值;
计算所述驱动装置在所述当前占空比下工作时的最大电流值;
根据所述最大电流值确定预设电流阈值,其中,所述预设电流阈值不小于所述最大电流值;
判断所述当前电流值是否大于所述预设电流阈值;
若判定所述当前电流值大于所述预设电流阈值,则确定触碰到物体。
可选的,所述方法还包括:
若判定所述当前电流值不大于所述预设电流阈值,则重新获取当前占空比,并计算所述驱动装置在当前占空比下工作时的最大电流值,直至所述当前电流值大于预设电流阈值。
可选的,所述根据所述最大电流值确定预设电流阈值包括:
确认所述最大电流为预设电流阈值。
可选的,所述根据所述最大电流值确定预设电流阈值包括:
计算所述驱动装置在所述当前占空比下的堵转电流值;
根据所述最大电流值和所述堵转电流值确定预设电流阈值,其中,所述预设电流阈值不小于所述最大电流值、且小于所述堵转电流值。
可选的,所述根据所述最大电流值和所述堵转电流值确定预设电流阈值包括:
计算所述最大电流值与所述堵转电流值的平均值;
确定所述平均值为预设电流阈值。
可选的,所述根据所述最大电流值和所述堵转电流值确定预设电流阈值,包括:
获取预设的噪声阈值;
基于所述预设的噪声阈值、所述最大电流值和所述堵转电流值确定预设电流阈值。
可选的,所述根据所述最大电流值和所述堵转电流值确定预设电流阈值包括:
计算所述最大电流值与预设噪声阈值的和值;
在不小于所述和值、且小于所述堵转电流值的预设范围内,确定预设电流阈值。
可选的,所述根据所述最大电流值和所述堵转电流值确定预设电流阈值包括:
计算所述堵转电流值与预设噪声阈值的差值;
在不小于所述最大电流值、且小于所述差值的数值范围内,确定预设电流阈值。
可选的,所述根据所述最大电流值和所述堵转电流值确定预设电流阈值包括:
计算所述堵转电流值与预设噪声阈值的差值;
计算所述堵转电流值与预设噪声阈值的差值;
在不小于所述和值、且小于所述差值的预设范围内,确定预设电流阈值。
第二方面,提供了一种触碰检测装置,所述装置应用于仿生手设备,所述仿生手设备上具有驱动装置,所述触碰检测装置包括:
获取模块,用于获取当前占空比、以及当前电流值;
计算模块,用于计算所述驱动装置在所述当前占空比下工作时的最大电流值;
第一确定模块,用于根据所述最大电流值确定预设电流阈值,其中,所述预设电流阈值不小于所述最大电流值;
判断模块,用于判断所述当前电流值是否大于所述预设电流阈值;
第二确定模块,用于若判定所述当前电流值大于所述预设电流阈值,则确定触碰到物体。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述的方法步骤。
本申请实施例有益效果:
本申请实施例提供了一种触碰检测方法,仿生手获取当前占空比、以及当前电流值,并计算驱动装置在当前占空比下工作时的最大电流值,根据最大电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值,若仿生手判定当前电流值大于预设电流阈值,则确定触碰到物体。本申请适用于各种形状的被抓取物体,无需在仿生手上安装压力传感器,降低仿生手的复杂性,节约成本,还提高了检测准确性。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种触碰检测的方法流程图;
图2为本申请实施例提供的不同的占空比下当前电流与时间的关系示意图;
图3为本申请实施例提供的控制器控制仿生手运动的原理框图;
图4为本申请实施例提供的确定预设电流阈值的方法流程图;
图5为本申请实施例提供的堵转电流值与占空比的关系示意图;
图6为本申请实施例提供的当前电流与时间的关系示意图;
图7为本申请实施例提供的一种触碰检测装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供了一种触碰检测方法,可以应用于仿生手设备,仿生手设备上具有驱动装置,仿生手设备用于检测机器人是否触碰到物体。
下面将结合具体实施方式,对本申请实施例提供的一种触碰检测方法进行详细的说明,如图1所示,具体步骤如下:
步骤101:获取当前占空比、以及当前电流值。
在本申请实施例中,仿生手手指根部设有驱动装置,用于带动手指做屈伸和旋转运动,仿生手在运动过程中,驱动装置在不停转动,由于驱动装置的负载不同,因此电流值并不是恒定的。图2为不同的占空比下,当前电流Ic与时间的关系图,从图2中可以看出,图中包含四种占空比,分别为pwm=40%,pwm=60%,pwm=80%,pwm=100%。不同的占空比下,当前电流Ic的变化曲线是不同的,按照pwm从高到低的顺序,当前电流Ic的变化曲线不相同,而且不同的变化曲线,最大电流值也是有从高到低的顺序。即使在同一占空比下,当前电流Ic的值也是不同的,可以看到,当前电流上下波动,并且具有最大电流值。因此,仿生手要获取当前电流值。
驱动装置的占空比与仿生手的控制器有关,而且占空比也可以是实时变化的,因此仿生手获取当前占空比。本申请实施例中,驱动装置可以为电机。
电机驱动是目前应用最广的驱动方式之一。外形相对小,成本适中,调速范围广,控制简单方便,精度高,可靠性好。在仿生手使用过程中,电机驱动是较多的选择方式。电机体积小、输出力大、驱动器小,因此可将电机很适合仿生手手指。
图3控制器控制仿生手运动的原理框图,控制器输出占空比指令至电机驱动电路,电机驱动电流根据占空比,输出相应的电流至电机以使电机转动,电机转动过程中通过齿轮带动仿生手的手指运动,具体可以带动手指做屈伸和旋转运动。
本申请实施例中,控制器采用PLC(Programmable Logic Controller,可编程逻辑控制器),PLC能在恶劣的环境如电磁干扰、电源电压波动、机械振动、温度变化等中可靠地工作,PLC的平均无故障间隔时间高;PLC控制系统构成简单、通用性强,由于PLC是采用软件编程来实现控制功能,对同一控制对象,当控制要求改变需改变控制系统的功能时,不必改变PLC的硬件设备,只需相应改变软件程序;编程简单、使用、维护方便;组合方便、功能强、应用范围广,PLC既可用于开关量的控制又可用于模拟量的控制;既可用单片机控制,又可用于组成多级控制系统;既可控制简单系统,又可控制复杂系统。因此,PLC应用范围很广、体积小、重量轻、功耗低。
步骤102:计算驱动装置在当前占空比下工作时的最大电流值。
在本申请实施例中,由于仿生手在运动过程中,电流值是不断波动的,因此,仿生手计算驱动装置在当前占空比下工作时的最大电流值Imax。
其中,最大电流值的计算公式为Imax=f1(pwm),其中,Imax为最大电流值,f1()为函数表达式,pwm(pulse width modulation,脉冲宽度调制)为占空比。
函数表达式f1()的具体函数表达式与仿生手结构、驱动装置、驱动电流等因素有关,不同的仿生手结构、驱动装置、驱动电流,会出现不同的函数表达式。现有技术中通过pwm计算最大电流值的方法均可以应用于本申请实施例,因此本申请不再给出具体的函数表达式。
步骤103:根据最大电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值。
在本申请实施例中,仿生手根据最大电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值,也就是仿生手确定的预设电流阈值不小于最大电流值。
步骤104:判断当前电流值是否大于预设电流阈值。
在本申请实施例中,仿生手判断当前电流值是否大于预设电流阈值,若仿生手判定当前电流值大于预设电流阈值,则执行步骤105;若仿生手判定当前电流值不大于预设电流阈值,则执行步骤106。
步骤105:确定触碰到物体。
在本申请实施例中,仿生手在未触碰到物体的运动过程中,由于驱动装置的负载发生变化,所以驱动装置的电流也会发生波动,波动过程中会产生最大电流。当仿生手触碰到物体时,当前电流会远高于最大电流值。因此,由于预设电流阈值不小于最大电流值,仿生手判定当前电流值大于预设电流阈值,即判定当前电流值大于最大电流值,则确定仿生手触碰到物体。
步骤106:重新获取当前占空比,并计算驱动装置在当前占空比下工作时的最大电流值,直至当前电流值大于预设电流阈值。
在本申请实施例中,若仿生手判定当前电流值不大于预设电流阈值,表明当前电流值可能还未达到最大电流值,还没触碰到物体,则返回步骤101,重新获取当前占空比和当前电流值,直至当前电流值大于预设电流阈值。
可选的,根据最大电流值确定预设电流阈值包括:确认最大电流为预设电流阈值。
在本申请实施例中,确认最大电流为预设电流阈值,由于仿生手在未触碰到物体时具有最大电流,因此仿生手判定当前电流值大于预设电流阈值时,即当前电流值大于最大电流时,表示当前仿生手触碰到物体,当前电流值达到或即将达到堵转电流。
可选的,如图4所示,根据最大电流值确定预设电流阈值包括:
步骤401:计算驱动装置在当前占空比下的堵转电流值。
在本申请实施例中,当仿生手触碰到物体时,由于驱动装置负载过大、拖动的机械故障、轴承损坏扫堂等原因引起的电动机无法启动或停止转动的现象,会导致转速为0但仍然输出扭矩的情况,出现堵转电流,堵转电流远大于最大电流。
如图5所示,堵转电流值与占空比成线型关系,占空比越大,堵转电流值越大,因此,要获取驱动装置的堵转电流值,则要计算驱动装置在当前占空比下的堵转电流值。
其中,堵转电流值的计算公式为Is=f2(pwm),其中,Is为堵转电流值,f2()为函数表达式,pwm为占空比。
函数表达式f2()为线性函数表达式,具体与仿生手结构、驱动装置、驱动电流等因素有关,不同的仿生手结构、驱动装置、驱动电流,会出现不同的函数表达式,现有技术中通过pwm计算堵转电流值的方法均可以应用于本申请实施例,因此本申请不再给出具体的函数表达式。
步骤402:根据最大电流值和堵转电流值确定预设电流阈值。
其中,预设电流阈值不小于最大电流值、且小于堵转电流值。
在本申请实施例中,本申请根据最大电流值和堵转电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值、且小于堵转电流值。具体的,预设电流阈值可以为一个随机值,即在不小于最大电流值、且小于堵转电流值的范围内选取一个随机值;也可以为一个平均值,即预设电流阈值为最大电流值与堵转电流值的平均值。本申请不对预设电流阈值的选取方式作具体限制。
图6为当前占空比为60%时,当前电流Ic与时间的关系图。从图4中可以看出,时间从0至t1过程中,当前电流Ic处于波动状态,在t1时达到最大电流值Imax,从t1之后,电流开始急速上升并在t2时达到稳定状态,此时为堵转电流Is。因此,当预设电流阈值不小于最大电流值、且小于堵转电流值时,也就是预设电流阈值是时间处于t1和t2之间时的电流值,通过最大电流值和堵转电流值确定预设电流阈值,会使确定结果更精确。
可选的,根据最大电流值和堵转电流值确定预设电流阈值包括:计算最大电流值与堵转电流值的平均值;确定平均值为预设电流阈值。
在本申请实施例中,计算最大电流值与堵转电流值的平均值,并确定平均值为预设电流阈值,这样使预设电流阈值精确。
举例来说,在图6中,最大电流值为125mA,堵转电流值为350mA,预设电流阈值为最大电流值125mA和堵转电流值350mA的平均值,为237.5mA。
可选的,根据最大电流值和堵转电流值确定预设电流阈值,包括:获取预设的噪声阈值;基于预设的噪声阈值、最大电流值和堵转电流值确定预设电流阈值。
驱动装置会由于定、转子偏心、槽配合不当,转子不平衡等原因引起噪声,并具有噪声阈值,噪声发生在仿生手运动中的每个阶段,包括未触碰到物体时和触碰到物体时,因此仿生手可以基于预设的噪声阈值、最大电流值和堵转电流值确定预设电流阈值。
具体的,基于预设的噪声阈值、最大电流值和堵转电流值确定预设电流阈值,可以包括多种方式,本申请提供了三种方式:
方式一:计算最大电流值与预设噪声阈值的和值;在不小于和值、且小于堵转电流值的预设范围内,确定预设电流阈值。
仿生手计算最大电流值与预设噪声阈值的和值,并在不小于和值、且小于堵转电流值的预设范围内,确定预设电流阈值,也就是,预设电流阈值不小于最大电流值与预设噪声阈值的和值,并小于堵转电流值。
具体的,预设电流阈值既可以是一个随机值,即在不小于最大电流值与预设噪声阈值的和值、并小于堵转电流值的数值范围内,随机选取一个数值作为预设电流阈值;也可以设定预设电流阈值为最大电流值与预设噪声阈值的和值和堵转电流值的平均值。
举例来说,预设噪声阈值为25mA,最大电流值为125mA,堵转电流值为350mA,最大电流值与预设噪声阈值的和值为150mA,预设电流阈值不小于最大电流值与预设噪声阈值的和值,并小于堵转电流值,也就是,预设电流阈值在150mA~350mA范围内。
举例来说,预设噪声阈值为25mA,最大电流值为125mA,堵转电流值为350mA,最大电流值与预设噪声阈值的和值为150mA,预设电流阈值为最大电流值与预设噪声阈值的和值和堵转电流值的平均值,也就是,预设电流阈值是150mA和350mA的平均值,为250mA。
方式二:计算堵转电流值与预设噪声阈值的差值;在不小于最大电流值、且小于差值的数值范围内,确定预设电流阈值。
仿生手计算堵转电流值与预设噪声阈值的差值,并在不小于最大电流值、且小于差值的数值范围内,确定预设电流阈值,也就是,预设电流阈值不小于最大电流值、且小于堵转电流值与预设噪声阈值的差值。
具体的,预设电流阈值既可以是一个随机值,即在不小于最大电流值、且小于堵转电流值与预设噪声阈值的差值的数值范围内,随机选取一个数值作为预设电流阈值;也可以设定预设电流阈值为最大电流值和堵转电流值与预设噪声阈值的差值的平均值。
举例来说,预设噪声阈值为25mA,最大电流值为125mA,堵转电流值为350mA,堵转电流值与预设噪声阈值的差值为325mA,预设电流阈值不小于最大电流值、且小于堵转电流值与预设噪声阈值的差值,,也就是,预设电流阈值在125mA~325mA范围内。
举例来说,预设噪声阈值为25mA,最大电流值为125mA,堵转电流值为350mA,堵转电流值与预设噪声阈值的差值为325mA,预设电流阈值为最大电流值和堵转电流值与预设噪声阈值的差值的平均值,也就是,预设电流阈值为125mA与325mA的平均值,为225.5mA。
方式三:计算堵转电流值与预设噪声阈值的差值;在不小于和值、且小于差值的预设范围内,确定预设电流阈值。
仿生手计算堵转电流值与预设噪声阈值的差值;在不小于和值、且小于差值的预设范围内,确定预设电流阈值,也就是,预设电流阈值不小于最大电流值与预设噪声阈值的和值,并小于堵转电流值与预设噪声阈值的差值。这样,既能排除电机电流噪声的影响,又使碰触检测具备一定的灵敏度和稳定性。
举例来说,预设噪声阈值为25mA,最大电流值为125mA,堵转电流值为350mA,最大电流值与预设噪声阈值的和值为150mA,堵转电流值与预设噪声阈值的差值为325mA,预设电流阈值不小于最大电流值与预设噪声阈值的和值,并小于堵转电流值与预设噪声阈值的差值,也就是,预设电流阈值在150mA~325mA范围内。
具体的,预设电流阈值为第一电流值与第二电流值的平均值,其中,第一电流值为最大电流值与噪声阈值的和值,第二电流值为堵转电流值与噪声阈值的差值。
举例来说,预设噪声阈值为25mA,最大电流值为125mA,堵转电流值为350mA,最大电流值与预设噪声阈值的和值为150mA,堵转电流值与预设噪声阈值的差值为325mA,预设电流阈值为该和值与该差值的平均值,即237.5mA。
基于相同的技术构思,本申请实施例还提供了一种触碰检测装置,如图7所示,该装置包括:
获取模块701,用于获取当前占空比、以及当前电流值;
计算模块702,用于计算驱动装置在当前占空比下工作时的最大电流值;
第一确定模块703,用于根据最大电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值;
判断模块704,用于判断当前电流值是否大于预设电流阈值;
第二确定模块705,用于若判定当前电流值大于预设电流阈值,则确定触碰到物体。
可选的,该装置还包括:
第三确定模块,用于若判定当前电流值不大于预设电流阈值,则重新获取当前占空比,并计算驱动装置在当前占空比下工作时的最大电流值,直至当前电流值大于预设电流阈值。
可选的,第一确定模块703具体用于:
确认最大电流为预设电流阈值。
可选的,第一确定模块703具体用于:
计算驱动装置在当前占空比下的堵转电流值;
根据最大电流值和堵转电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值、且小于堵转电流值。
可选的,第一确定模块703具体用于:
计算最大电流值与堵转电流值的平均值;
确定平均值为预设电流阈值。
可选的,第一确定模块703具体用于:
获取预设的噪声阈值;
基于预设的噪声阈值、最大电流值和堵转电流值确定预设电流阈值。
可选的,第一确定模块703具体用于:
计算最大电流值与预设噪声阈值的和值;
在不小于和值、且小于堵转电流值的预设范围内,确定预设电流阈值。
可选的,第一确定模块703具体用于:
计算堵转电流值与预设噪声阈值的差值;
在不小于最大电流值、且小于差值的数值范围内,确定预设电流阈值。
可选的,第一确定模块703具体用于:
计算堵转电流值与预设噪声阈值的差值;
在不小于和值、且小于差值的预设范围内,确定预设电流阈值。
本申请实施例提供了一种触碰检测方法,仿生手获取当前占空比、以及当前电流值,并计算驱动装置在当前占空比下工作时的最大电流值,根据最大电流值确定预设电流阈值,其中,预设电流阈值不小于最大电流值,若仿生手判定当前电流值大于预设电流阈值,则确定触碰到物体。本申请适用于各种形状的被抓取物体,无需在仿生手上安装压力传感器,降低仿生手的复杂性,节约成本,还提高了检测准确性。
基于相同的技术构思,本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现上述步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如“”和“”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。