一种碰撞检测方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及机器人领域,特别涉及一种碰撞检测方法、装置、电子设备及存储介质。
背景技术
伴随着机器人技术的日益成熟,核心零部件成本的逐步降低,仿人形服务机器人产品不再是遥不可及。机器人服务于人,除了能够满足不同人群所提出的技术需求以及合理的售价外,安全的人机交互也成为仿人形服务机器人产品落地的重中之重。比如,当机器人的手臂正在工作时,碰到突然闯入的人或物,如果机器人无法及时检测到碰撞,则会对人或物造成伤害,也会对机器人手臂的电机产生损害。
然而,发明人发现现有技术中至少存在如下问题:目前,为对机器人的碰撞检测方案主要是在机器人手臂的肩、肘、腕处,分别添加6自由度力矩传感器,虽然可以达到碰撞检测效果,但是成本过高,而且还会增加手臂的空间占用。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施方式的目的在于提供一种碰撞检测方法、装置、电子设备及存储介质,使得可以在不添加辅助设备的情况下,对机械臂碰撞进行检测,降低了机器人的成本,节省了机械臂的空间占用。
为解决上述技术问题,本发明的实施方式提供了一种碰撞检测方法,包括以下步骤:确定在当前位置点机械臂的每个电机的期望电流值和实际电流值;根据每个电机的期望电流值和实际电流值,确定机械臂是否发生碰撞。
本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上述实施方式提及的碰撞检测方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的碰撞检测方法。
本发明实施方式相对于现有技术而言,当机械臂发生碰撞时,机械臂上的电机为使机械臂达到期望速度,会加大功率输出,此时,电机输出的实际电流值和预先计算的期望电流值存在偏差。电子设备能够根据期望电流值和实际电流值的数值关系,来确定机械臂是否发生碰撞,无需在机械臂上安装其他设备,降低了机器人的成本,节省了机械臂的空间占用。
另外,根据每个电机的期望电流值和实际电流值,确定机械臂是否发生碰撞,具体包括:判断所有电机中,是否存在期望电流值和实际电流值满足预设约束关系的电机;若确定是,确定机械臂发生碰撞。
另外,机械臂包括M个机械轴,每个机械轴对应N个电机;M和N为正整数;根据每个电机的期望电流值和实际电流值,确定机械臂是否发生碰撞,具体包括:针对每个机械轴,分别进行以下操作:根据机械轴对应的电机中,是否存在期望电流值和实际电流值满足预设约束关系的电机;若确定是,确定机械轴发生碰撞;根据发生碰撞的机械轴的数量,确定机械臂是否发生碰撞。该实现中,对发生碰撞的机械轴的数量进行考量,减少了个别机械轴的实际电流值检测有误导致电子设备误判断的情况。
另外,预设约束关系为:实际电流值和期望电流值的差值大于期望电流值的T倍,T为正数;或者,实际电流值大于期望电流值。
另外,在确定存在期望电流值和实际电流值满足预设约束关系的电机之后,确定机械臂或机械轴发生碰撞之前,碰撞检测方法还包括:更新电流异常次数;确定更新后的电流异常次数大于阈值。该实现中,减少了在个别位置点实际电流值检测存在误差,导致电子设备误判断的问题。
另外,阈值由机械臂的连续时间和机械臂的控制周期决定。
另外,在根据每个电机的期望电流值和实际电流值,确定机械臂是否发生碰撞之后,碰撞检测方法还包括:在确定机械臂发生碰撞之后,或,确定机械臂运动至运动轨迹的终点之后,停止机械臂的电机。
另外,电机的期望电流值的确定过程为:将电机对应的机械轴在当前位置点的期望速度和期望加速度输入电机对应的机械轴的拉格朗日动力学模型,将拉格朗日动力学模型的输出值作为电机的期望力矩值;根据电机的期望力矩值,以及力矩和电流的预设要求,确定电机的期望电流值。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明的第一实施方式的碰撞检测方法的流程图;
图2是本发明的第二实施方式的碰撞检测方法的流程图;
图3是本发明的第二实施方式的考虑当前位置点是否为运动轨迹终点的碰撞检测方法的流程图;
图4是本发明的第三实施方式的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种碰撞检测方法,应用于电子设备,该电子设备可以是机器人自身,或机器人的控制装置。如图1所示,该碰撞检测方法包括以下步骤:
步骤101:确定在当前位置点机械臂的每个电机的期望电流值和实际电流值。
具体地说,电子设备可以通过电流检测方法,确定每个电机的实际电流值。其中,电机的实际电流值为电机实际输出的电流值,期望电流值为期望电机输出的电流值。
在一个例子中,在笛卡尔空间下,电子设备为机械臂规划运动轨迹后,将规划的运动轨迹等间隔插补为Q个位置点,即运动轨迹被分为Q-1段小轨迹。电子设备将电机对应的机械轴在当前位置点的期望速度和期望加速度输入电机对应的机械臂的拉格朗日动力学模型,将拉格朗日动力学模型的输出值作为电机的期望力矩值;根据电机的期望力矩值,以及力矩和电流的预设要求,确定电机的期望电流值。其中,拉格朗日动力学方程为: 其中,q表示电机距离电机零点所转过的弧度值,τ是期望力矩值,M(q)是机械臂的惯量矩阵,是机械臂的离心力和哥氏力矩阵,N(q)是机械臂的重力矩阵,力矩和电流的预设要求为:M=C×Φ×I×D,其中,M表示力矩,F表示电磁力,D表示转动半径,C表示电机常数,Φ表示电机磁通,I表示电流。
在一个例子中,期望速度和期望加速度可以通过速度规划获取,例如,T型速度规划或S型速度规划。
在一个例子中,机械臂的拉格朗日动力学模型根据机械臂的DH参数(Denavit–Hartenberg parameters)模型生成。
步骤102:根据每个电机的期望电流值和实际电流值,确定机械臂是否发生碰撞。
具体地说,当机械臂发生碰撞时,机械臂上的电机为使机械臂达到期望速度,会加大功率输出,此时,电机输出的实际电流值和预先计算的期望电流值存在偏差。因此,电子设备可以根据期望电流值和实际电流值的数值关系,确定机械臂是否发生碰撞。
以下对电子设备确定机械臂是否发生碰撞的方法进行举例说明。
方法1:电子设备判断所有电机中,是否存在期望电流值和实际电流值满足预设约束关系的电机;若确定是,则确定机械臂发生碰撞。
例如,机械臂包括6个机械轴,分别为轴1、轴2、轴3、轴4、轴5和轴6,阈值为3。在第一个位置点时,电子设备判定轴1发生碰撞,则将电流异常次数更新为1,由于1小于3,电子设备认为机械臂未发生碰撞。在第二个位置点,电子设备判定轴1和轴2发生碰撞,将电流异常次数更新为2,2小于3,电子设备认为机械臂未发生碰撞。在第三个位置点,电子设备判定轴1发生碰撞,将电流异常次数更新为3,3不大于3,电子设备认为机械臂未发生碰撞。在第四个位置点,电子设备判定轴1发生碰撞,将电流异常次数更新为4,4大于3,电子设备确定机械臂发生碰撞。
方法2:机械臂包括M个机械轴,每个机械轴对应N个电机;M和N为正整数;电子设备针对每个机械轴,分别进行以下操作:根据机械轴对应的电机中,是否存在期望电流值和实际电流值满足预设约束关系的电机;若确定是,确定机械轴发生碰撞;根据发生碰撞的机械轴的数量,确定机械臂是否发生碰撞。
在一个例子中,电子设备在确定存在期望电流值和实际电流值满足预设约束关系的电机之后,更新电流异常次数;判断确定更新后的电流异常次数是否大于阈值,若确定是,则确定机械轴发生碰撞,若确定不是,则确定机械轴未发生碰撞。
例如,机械臂包括6个机械轴,分别为轴1、轴2、轴3、轴4、轴5和轴6,阈值为3,轴1、轴2、轴3、轴4、轴5和轴6各自的电流异常次数的初始值为0。在第一个位置点时,电子设备判定轴1发生碰撞,则将轴1对应的电流异常次数更新为1,由于1小于3,电子设备认为机械臂未发生碰撞。在第二个位置点,电子设备判定轴1和轴2发生碰撞,将轴1对应的电流异常次数更新为2,轴2对应的电流异常次数更新为1,由于1和2均小于3,电子设备认为机械臂未发生碰撞。在第三个位置点,电子设备判定轴1发生碰撞,将轴1对应的电流异常次数更新为3,3不大于3,电子设备认为机械臂未发生碰撞。在第四个位置点,电子设备判定轴1发生碰撞,将轴1对应的电流异常次数更新为4,4大于3,电子设备确定机械臂发生碰撞。
在一个例子中,预设约束关系为:实际电流值和期望电流值的差值大于期望电流值的T倍,T为正数;或者,实际电流值大于期望电流值。其中,T可以是小于1的整数,例如,T可以是0.2至0.5之间的任意数值,如,T=0.3。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的碰撞检测方法,电子设备能够根据期望电流值和实际电流值的数值关系,来确定机械臂是否发生碰撞,无需在机械臂上安装其他设备,降低了机器人的成本,节省了机械臂的空间占用。
本发明的第二实施方式涉及一种碰撞检测方法,第二实施方式是对第一实施方式的进一步细化,具体说明了:根据每个电机的期望电流值和实际电流值,确定机械臂是否发生碰撞。
具体地说,如图2所示,在本实施方式中,对机械臂在一个位置点是否发生碰撞进行检测时,包含步骤201至步骤204,其中,步骤201、步骤202、步骤204分别与第一实施方式中的步骤101至步骤103大致相同,此处不再赘述。下面主要介绍不同之处:
步骤201:确定在当前位置点,机械臂的每个电机的期望电流值和实际电流值。
步骤202:判断所有电机中,是否存在期望电流值和实际电流值满足预设约束关系的电机。
具体地说,若确定存在,则执行步骤203,若确定不存在,则执行步骤207。
步骤203:更新电流异常次数。
具体地说,在机械臂开始运动之前,将电流异常次数初始化为0,当在某个位置点发生存在期望电流值和实际电流值满足预设约束关系的电机的情况时,更新电流异常次数,更新后的电流异常次数等于原来的电流异常次数加1。
步骤204:判断更新后的电流异常次数是否大于阈值。
具体地说,若确定更新后的电流异常次数大于阈值,则执行步骤205,否则,执行步骤207。
在一个例子中,阈值由机械臂的连续时间和机械臂的控制周期决定。例如,阈值可以是机械臂的连续时间和机械臂的控制周期的商取值后得到的数值。其中,机械臂的连续时间是指电子设备预先估计的机械臂从运动轨迹的起始点运动到运动轨迹的终止点所需要的时间;机械臂的控制周期指从电子设备将运动轨迹中的任意一个位置点的期望电流值下发给电机到电子设备接收到电机的编码器返回的实际位置的时间。
需要说明的是,本领域技术人员可以理解,实际应用中,阈值也可以采用其他方式确定,此处不一一列举,本实施方式不限制阈值的确定方法。
步骤205:确定机械臂发生碰撞。
具体地说,若机械臂在多个位置点均出现电流异常现象,则说明机械臂发生了碰撞。
值得一提的是,在电流异常次数超过阈值后,再判定机械臂发生碰撞,可以降低电子设备将由于检测误差等问题导致某个位置点出现电流异常情况判定为机械臂发生碰撞的概率,提高了电子设备的准确性。
步骤206:停止机械臂的电机。
具体地说,若确定机械臂发生碰撞,则停止机械臂的电机,以避免对机械臂和周围事物造成损害。
在一个例子中,电子设备在确定机械臂发生碰撞之后,或,确定机械臂运动至运动轨迹的终点之后,停止机械臂的电机。
步骤207:确定机械臂未发生碰撞。
具体地说,若机械臂未发生碰撞,电子设备可以控制机械臂的电机继续工作,以使机械臂沿运动轨迹运动。
在一个例子中,电子设备在确定机械臂未发生碰撞之后,判断当前位置点是否为运动轨迹的终点,若确定是,停止电机,若确定不是,则控制电机继续运行。
以下对机械臂对当前位置点是否为终点进行考虑时,本实施方式提及的碰撞检测方法的实现方式进行举例说明。如图3所示,碰撞检测方法包括:
步骤301:在笛卡尔空间下,将机械臂的运动轨迹插补为N个位置点,确定每个位置点的期望速度和期望加速度。
步骤302:令i=0,c=0。
具体地说,i为当前位置点的编号,c表示电流异常次数。
步骤303:基于机械臂的拉格朗日动力学模型、第i个位置点的期望速度和期望加速度,计算第i个位置点的力矩值;根据第i个位置点的力矩值,确定第i个位置点的期望电流值。
具体地说,拉格朗日动力学模型指示期望速度、期望加速度,以及达到该期望速度和期望加速度的力矩值的约束关系。电子设备将第i个位置点的期望速度和期望加速度输入拉格朗日动力学模型,将拉格朗日动力学模型的输出作为第i个位置点的力矩值。根据力矩值和电流值的约束关系,确定第i个位置点的期望电流值。
步骤304:控制电机驱动机械臂运动。
步骤305:读取电机的输出电流的实际电流值。
具体地说,电子设备可以使用电流检测电路或电流检测装置对电机输出的实际电流值进行检测。
步骤306:判断i是否小于N。
具体地说,若i<N,执行步骤307,若i≥N,执行步骤312。
值得一提的是,在确定机械臂在当前位置点的每个电机对应的第一数值关系之前,判断当前位置点是否为最后一个未验证的位置点,并在当前位置点为最后一个未验证的位置点时,跳过验证环节,直接停止电机,减少了电子设备的计算量。
步骤307:判断实际电流值和期望电流值是否满足预设约束关系。
具体地说,若确定实际电流值和期望电流值不满足预设约束条件,执行步骤308,否则,执行步骤309。
在一个例子中,预设约束关系为:实际电流值和期望电流值的差值是否大于30%的期望值。
步骤308:令i=i+1,c=0。之后执行步骤303。
具体地说,若电子设备确定当前实际电流值和期望电流值不满足预设约束条件,继续向下一位置点运动,并初始化电流异常次数。
步骤309:令c=c+1。
具体地说,在实际电流值和期望电流值满足预设约束关系后,更新电流异常次数,令更新后的电流异常次数等于原有的电流异常次数加1。
步骤310:判断c是否大于阈值。
具体地说,若确定c不大于阈值,执行步骤311,若确定c大于阈值,执行步骤312。
步骤311:令i=i+1。之后返回步骤303。
具体地说,若c小于阈值,说明当前可能是因为实际电流值检测有误导致电子设备认为实际电流值和期望电流值满足预设约束条件,此时,电子设备继续控制机械臂向下一位置点运动。
步骤312:停止电机。
具体地说,当当前位置点为运动轨迹的终点时,或者,电流异常次数达到阈值时,停止电机,以保护机械臂及周围事物。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的碰撞检测方法,电子设备能够根据期望电流值和实际电流值的数值关系,来确定机械臂是否发生碰撞,无需在机械臂上安装其他设备,降低了机器人的成本,节省了机械臂的空间占用。除此之外,电子设备在电流异常次数超过阈值后,才判定为发生碰撞,可以降低电子设备将由于检测误差等问题导致某个位置点出现电流异常情况判定为机械臂发生碰撞的概率,提高了电子设备的准确性。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第三实施方式涉及一种电子设备,如图4所示,包括:至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述实施方式提及的碰撞检测方法。
该电子设备包括:一个或多个处理器401以及存储器402,图4中以一个处理器401为例。处理器401、存储器402可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施方式中预设约束条件就存储于存储器402中。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述碰撞检测方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器402中,当被一个或者多个处理器401执行时,执行上述任意方法实施方式中的碰撞检测方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明的第四实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。