一种不倒翁控制方法、模块和不倒翁
技术领域
本发明涉及不倒翁机器人控制技术领域,特别涉及一种不倒翁控制方法、模块和不倒翁。
背景技术
随着科技的发展与生活水平的提高,越来越多的消费机器人进入了人们的生活。不倒翁作为传统的玩具,将其独有的特性与机器人控制相结合是一个不错的创新。二者的结合实际是将传统的不倒翁玩具和智能硬件融合,让新类玩具和机器人的表现形式更加丰富。通常的不倒翁一旦成型,其重心分布、重心位置都是固定的,其晃动的表现形式也基本是确定的,丰富性不强。因此,使不倒翁呈现出更生动的表现形式,是业界竞相追求的一个目标。
发明内容
有鉴于此,本发明的目的在于提供一种不倒翁控制方法、模块和不倒翁,可以实现调整不倒翁的重心,使不倒翁可以呈现更丰富的表现形式。其具体方案如下:
本发明提供了一种不倒翁控制方法,包括:
接收动作指令,得到所述动作指令对应的状态参数;
获取当前电位器参数;
判断所述当前电位器参数与所述状态参数的差值是否小于阈值;
若是,则使不倒翁处于所述动作指令相应的状态;
若否,则获取配重位置信息,并根据所述配重位置信息,确定电机运动参数;
根据所述电机运动参数控制驱动电机调整配重位置。
优选的,所述动作指令包括用于使所述不倒翁处于竖直静置状态的第一动作指令、用于使所述不倒翁处于摇摆状态的第二动作指令和用于使所述不倒翁处于倾斜静置状态的第三动作指令。
优选的,所述动作指令为第一动作指令;所述根据所述配重位置信息,确定电机运动参数包括:
计算所述配重的角度差值和方向;
根据所述角度差值和所述方向,确定使所述不倒翁进入竖直静置状态的电机运动参数。
优选的,所述动作指令为第二动作指令;所述方法还包括:
获取前一个动作指令类别,若所述前一个动作指令为第一动作指令或第三动作指令,则执行完成所述前一个动作指令后,停止驱动电机运动;若所述前一个动作指令为第二动作指令,则执行完成一个摇摆运动循环后,停止驱动电机运动。
优选的,使所述不倒翁处于所述动作指令相应的状态包括:
根据所述第二动作指令,得到所述驱动电机的摇摆运动参数;
根据所述摇摆运动参数,控制所述驱动电机进行运动。
优选的,所述根据所述配重位置信息,确定电机运动参数包括:
计算所述配重的角度差值和方向;
根据所述角度差值和所述方向,发送使所述不倒翁处于竖直静置状态的归零运动参数;
根据所述第二动作指令,得到所述驱动电机的摇摆运动参数。
优选的,所述根据所述摇摆运动参数,控制所述驱动电机进行运动还包括:
在所述驱动电机按照所述摇摆运动参数进行运动时,获取实时电位器参数,判断所述实时电位器参数是否处于误差范围,若是,则判定所述驱动电机运动轨迹正确,并等待新的动作指令;若否,则停止所述驱动电机运动并报错。
优选的,所述动作指令为第三动作指令;所述判断所述当前电位器参数与所述状态参数的差值是否小于阈值包括:
根据所述当前电位器参数和所述状态参数,通过参数对照表,计算得到驱动电机的旋转角度差值;
根据所述旋转角度差值,控制驱动电机转动后,获取电位器参数,得到对比参数;
判断所述对比参数与所述状态参数的差值是否小于阈值。
本发明还提供了一种不倒翁控制模块,包括驱动电机、配重、用于存储工作指令的存储器和用于处理所述工作指令的处理器,所述工作指令包括状态参数获取指令、电位器参数获取指令、阈值判断指令、配重位置信息获取指令和电机参数发送指令,其中,
所述状态参数获取指令,用于根据接收的动作指令,得到所述动作指令对应的状态参数;
所述电位器参数获取指令,用于实时获取当前电位器参数;
所述阈值判断指令,用于判断所述当前电位器参数与所述状态参数的差值是否小于阈值,若是,则使不倒翁处于所述动作指令相应的状态;若否,则发送所述配重位置信息获取指令,以根据所述配重位置信息,确定电机运动参数;
所述电机参数发送指令,用于根据所述配重位置信息,向所述驱动电机发送电机运动参数。
本发明又提供了一种不倒翁,包括上述不倒翁控制模块。
本发明提供的不倒翁控制方法,根据接收的动作指令,得到该动作指令相应的状态参数;通过获取实时电位器参数,判断该实时电位器参数与该状态参数的差值是否小于阈值,若是,则表示使不倒翁处于动作指令相应的状态,若否,则获取配重位置信息,并根据配重位置信息,确定电机运动参数,控制驱动电机调整配重位置,从而可以实现调整不倒翁的重心,使不倒翁处于用户需要的状态。
本发明还提供的不倒翁控制模块,具有与上述方法相同的技术效果,在此不再赘述。
本发明还提供的不倒翁,具有与上述不倒翁控制模块相同的技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种不倒翁控制方法的流程示意图;
图2为本发明实施例提供的一种具体的接收到第一动作指令的不倒翁控制方法的流程示意图;
图3为本发明实施例提供的一种具体的接收到第二动作指令的不倒翁控制方法的流程示意图;
图4为本发明实施例提供的一种具体的接收到第三动作指令的不倒翁控制方法的流程示意图;
图5为本发明实施例提供的一种不倒翁控制模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种不倒翁控制方法,参见图1所示,包括:
步骤S1:接收动作指令,得到该动作指令对应的状态参数。
动作指令是由用户发出,控制不倒翁状态的指令,具体指令包括:倾斜到指定角度后停止;从指定倾斜角度状态恢复为竖直状态;以指定的幅度和速度进行摇摆。
综上,动作指令可归纳为三种具体的动作指令,即用于使不倒翁处于竖直静置状态的第一动作指令、用于使不倒翁处于摇摆状态的第二动作指令和用于使不倒翁处于倾斜静置状态的第三动作指令。
可以理解的是,不倒翁在接收到动作指令后状态发生变化,会有轻微的晃动,例如从竖直状态倾斜到一定角度静置,在不倒翁静置前会发生数次晃动,这与不倒翁的重心、底面曲面形状和材质均有关系,是其固有特性,在此不做讨论。
无论是第一动作指令、第二动作指令还是第三动作指令,其目的均是控制不倒翁处于用户需要的状态,因此最终状态是确定的,即不倒翁的状态参数确定。
步骤S2:获取当前电位器参数。
通过获取电位器参数,可计算得到配重的位置。
当动作指令为第一动作指令时,其相应的状态参数为不倒翁处于竖直静置状态的电位器参数。
实时获取的当前电位器参数与第一动作指令相应的状态参数的差值,即配重的当前位置相应的电位器参数和竖直静置位置的电位器参数的差值,可以计算得到不倒翁与竖直方向的夹角,即电位器参数与状态参数的差值。
需要说明的是,不倒翁竖直静置状态下,配重受重力的方向即为竖直方向。
获取当前电位器参数,具体可在接收到动作指令的同时获取,也可以在接收到动作指令后,终止或打断前一个动作指令,再获取当前电位器参数。此处所说的终止前一个动作指令,指停止不倒翁正在执行的前一个动作指令,具体包括如下两种情况:
(1)若前一个动作指令为第一动作指令或第三动作指令,且不倒翁尚未处于其相应的状态,即不倒翁正在根据前一个动作指令调整倾斜状态,则打断前一个动作指令,再获取当前电位器参数。
(2)若前一个动作指令为第二动作指令,则终止前一个动作指令,即停止不倒翁的摇摆状态。
可以理解的是,获取当前电位器参数包括进行一次获取和进行多次获取,进行多次获取中每一次获取的处理方式与进行一次获取相同,在此不再赘述。
步骤S3:判断当前电位器参数与状态参数的差值是否小于阈值,若是,则使不倒翁处于上述动作指令相应的状态,并等待新的动作指令,若否,则获取配重位置信息,并根据所述配重位置信息,确定电机运动参数。
不同的动作指令支持使用不同的阈值。例如,第一动作指令的目的是使不倒翁处于竖直静置状态,可将其阈值设置为小于第二动作指令和第三动作指令的阈值。当然,不同的动作指令也可以使用相同的阈值。
当电位器参数与状态参数的差值小于阈值,则可判定不倒翁处于动作指令相应的状态,因此,只需维持该状态,并等待新的动作指令。
当电位器参数与状态参数的差值大于阈值,则可判定不倒翁与动作指令相应的状态相去甚远,因此,需要获取配置位置信息,以调整配重。
可以理解的是,通常,位器参数与状态参数的差值等于阈值的情况出现的概率小于位器参数与状态参数的差值不等于阈值的概率,该情况支持归于电位器参数与状态参数的差值小于阈值,即电位器参数与状态参数的差值小于或等于阈值;也支持归于电位器参数与状态参数的差值大于阈值,即电位器参数与状态参数的差值大于或等于阈值。
需要说明的是,不倒翁竖直静置状态下,配重受重力的方向即为竖直方向。
需要进一步说明的是,本发明主要针对设有一块配重的不倒翁,设有2块或2块以上配重的不倒翁,可将其配重等效为一块配重进行分析。
步骤S4:根据电机运动参数控制驱动电机调整配重位置。
驱动电机以非固定的角速度拖动配重,使不倒翁回到竖直状态,或按照特定轨迹运动。
本发明仅提供控制不倒翁状态的思路,由于不同不倒翁涉及不同造型和不同的配重数量,在此不对具体的控制驱动电机调整配重位置所涉及的算法进行描述和限制。
第一实施方案:
当动作指令为第一动作指令,参见图2所示,主要使不倒翁恢复竖直静置状态,初始化数据,比如开机、唤醒时,使不倒翁恢复竖直姿态。具体的实施方法:获取电位器参数以获取当前配重偏移角度,即配重的角度差值和方向,驱动电机反方向以非固定的角速度拖动配重,使不倒翁回到竖直状态。
因此,根据配重位置信息,确定电机运动参数具体包括:
步骤S31:计算配重的角度差值和方向。
步骤S32:根据角度差值和方向,发送使不倒翁处于竖直静置状态的电机运动参数。
驱动电机按照配重方向的相反方向以非固定的角速度拖动配重,使不倒翁回到竖直状态。
可以进一步优化该方案,在步骤S4根据电机运动参数控制驱动电机调整配重位置后对配重进行位置验证,读取电位器参数以判断是否执行到位,具体可通过以下方法实现:当驱动电机根据电机运动参数调整配重的位置,则返回上述步骤S2,再次获取电位器参数,判断电位器参数与状态参数的差值是否小于阈值,直至符合阈值。
当然,在实际操作时,返回步骤S2时,阈值也支持使用其他的值。
需要特别说明的是,再具体操作中,若判定电位器参数与状态参数的差值小于阈值,具体可采用如下两种方式操作,使不倒翁处于竖直静置状态。
1、不发出任何控制驱动电机调整配重位置的指令,即判定不倒翁处于竖直静置的状态,且不发生任何晃动。
2、仍发出控制驱动电机调整配重位置的指令,此时,若不倒翁仍存在晃动,可以使不倒翁相对于上一种方式更快地停止晃动。由于电子硬件系统中无法彻底避免噪声的影响,采用本方法可以在不倒翁恢复静置状态时减少噪声所引起的误差。
此处晃动指不倒翁轻微晃动,即当前电位器参数与状态参数的差值始终处于阈值内,而对于不倒翁大幅度晃动,即当前电位器参数与状态参数的差值存在超过阈值范围情况的晃动,由于步骤S2为实时获取当前电位器参数,因此当差值超过阈值时,则会判定为否。
第二实施方案:
当动作指令为第二动作指令,参见图3所示,主要使不倒翁处于以指定符合和指定频率晃动的状态。
不倒翁执行新的动作指令须完成前一个动作指令或中断前一个的动作指令,步骤S1具体可包括:
步骤S11:接收第二动作指令,得到相应的状态参数。
步骤S12:获取前一个动作指令类别。
即确定前一个指令是第一动作指令、第二动作指令还是第三动作指令。
步骤S13:结束前一个指令或完成前一个指令的一个运动循环,停止驱动电机运动。
若前一个动作指令为第一动作指令或第三动作指令,则执行完成前一个动作指令后,停止驱动电机运动;若前一个动作指令为第二动作指令,则执行完成一个摇摆运动循环后,停止驱动电机运动。
在实际操作中,不倒翁停止前一个动作指令,即第一动作指令或第三动作指令;或完成前一个运动指令的一个运动循环,即第二动作指令,驱动电机调整配重至零位使不倒翁恢复至竖直静置状态,经过预设时间间隔后不倒翁微晃动停止,执行新的指令或停止待命。
可以理解的是,若不倒翁前一个动作指令与接收的当前动作指令相同,则使不倒翁处于动作指令相应的状态包括:根据第二动作指令,得到驱动电机的摇摆运动参数;根据摇摆运动参数,控制驱动电机进行运动。
当然,通常用户所发送的第二动作指令与不倒翁前一个的运动状态不同,因此,需要根据配重位置信息,确定电机运动参数包括:
步骤S31:计算配重的角度差值和方向。
步骤S32:根据角度差值和方向,发送使不倒翁处于竖直静置状态的归零运动参数。
驱动电机按照配重方向的相反方向以非固定的角速度拖动配重,使不倒翁回到竖直状态。
考虑到可以进一步优化该方案,对不倒翁是否处于竖直静置状态进行验证,参见图3所示,具体可通过以下方法实现:当驱动电机根据电机运动参数调整配重的位置,则返回上述步骤S2,再次获取当前电位器参数,判断当前电位器参数与状态参数的差值是否小于阈值,直至符合阈值。
步骤S33:根据第二动作指令,得到驱动电机的摇摆运动参数。
步骤S34:根据摇摆运动参数,控制驱动电机进行运动。
可以理解的是,不倒翁的运动幅度和周期与配重的运动范围和驱动电机的控制循环周期相关,配重的运动范围越大,不倒翁的运动幅度则越大。另外由于不倒翁是内置动力,不倒翁底面是弧形曲面,所以不倒翁在运动过程中会因为惯性导致配重停止后不倒翁会在原地有轻微的不可避免的晃动。
在控制不倒翁摇摆的过程中,驱动电机拖动配重是一个变速的过程,需要采用特定的运动算法,因此不宜设计成幅度和频率随机自由组合的运动方式,通常根据不倒翁的固有特性设计成由数组晃动幅度和数组晃动频率组合的运动形态,例如,不倒翁设计有晃动幅度A、B和摇晃频率a、b,则支持以晃动幅度A和摇晃频率a进行晃动、以晃动幅度B和摇晃频率b进行晃动、以晃动幅度A和摇晃频率b进行晃动和以晃动幅度B和摇晃频率a进行晃动,当然可以存在两种以上的晃动幅度和晃动频率,且晃动幅度和晃动频率数量也支持不同。
可以理解的是,不倒翁晃动速度低于速度阈值,可等价于驱动电机拖动配重的简单运动,驱动电机运动为启动、加速、近匀速、减速、停止进行循环。
而不倒翁晃动速度高于速度阈值,则必须要考虑不倒翁晃动时的惯性因素,在运动的过程中使用的运动算法,需要增加一定的时间间隔,配合不倒翁进行运动,否则就会出现配重块运动导致的不倒翁晃动以及不倒翁本体惯性产生的运动的耦合运动,不倒翁的摇晃就会呈现异常。
在实际操作中,考虑到进一步优化第二实施方案,对驱动电机的运动状态进行验证,根据摇摆运动参数,控制驱动电机进行运动还包括:
步骤S5:获取实时电位器参数,判断实时电位器参数是否处于误差范围,若是,则判定驱动电机正常运行,等待新命令,若否,则停止驱动电机运动并报错。
在驱动电机按照摇摆运动参数进行运动时,获取实时电位器参数,判断实时电位器参数是否处于误差范围,若是,则判定驱动电机运动轨迹正确,并等待新的动作指令;若否,则停止驱动电机运动并报错。
第三实施方案:
当动作指令为第三动作指令,参见图4所示,主要适用于不倒翁连续处于不同倾斜角度状态,例如不倒翁对用户动作、表情、手势等进行识别,并做出一系列跟随动作。
本实施方案获取不倒翁倾斜角度,通过差值计算不倒翁需要偏移的角度和方向,计算配重需要偏移的角度和方向,控制驱动电机拖动配重偏移,从而使不倒翁处于用户需要的倾斜角度。
步骤S3中,判断当前电位器参数与状态参数的差值是否小于阈值具体包括:
步骤S35:根据当前电位器参数和状态参数,通过参数对照表,计算得到驱动电机的旋转角度差值。
需要说明的是,参数对照表为预先通过测量不倒翁的倾斜角度和电位器参数得到的,任一倾斜角度均存在唯一对应的电位器参数。
步骤S36:根据旋转角度差值,控制驱动电机转动后,获取电位器参数,得到对比参数。
步骤S37:判断对比参数与状态参数的差值是否小于阈值。
驱动电机根据旋转角度差值转动,以调整配置位置,完成转动后,对电位器参数进行获取,得到对比参数,若该对比参数与状态参数的差值小于阈值,则判定驱动电机转动的角度与旋转角度差值相同,即不倒翁处于用户需要的状态。
需要说明的是,步骤S36在具体操作中,控制驱动电机完成转动后,经历一个预设的时间间隔,例如0.5s,以减少不倒翁摇摆所产生的误差,因此,获取电位器参数的动作需在控制驱动电机转动完成后进过进行。当然,也可以无视不倒翁摇摆所产生的误差,即获取电位器参数的动作在控制驱动电机转动完成的同时立刻进行。
需要特别说明的是,由于不倒翁需要倾斜的角度已知,当对比参数与状态参数的差值超过阈值,步骤S3中根据配重位置信息,确定电机运动参数,具体实现方式为重新获取当前电位器参数,即重新获取配重位置信息,并根据当前电位器参数和状态参数,通过参数对照表,计算得到驱动电机的旋转角度差值,即电机运动参数,然后根据旋转角度差值,控制驱动电机转动后,可见具体实现方式为返回步骤S2,再继续进行步骤S35至步骤S37,而步骤S4,即根据电机运动参数控制驱动电机调整配重位置,由步骤S35和S36实现,因此,在图4中,步骤S37判定为否的具体处理方式为返回步骤S2。
本发明还公开了一种不倒翁控制模块,具体实现过程与上述方法相同,参加图5所示,包括驱动电机11、配重12、用于存储工作指令15的存储器13和用于处理工作指令15的处理器14,工作指令15包括状态参数获取指令151、电位器参数获取指令152、阈值判断指令153、配重位置信息获取指令154和电机参数发送指令155,其中,
状态参数获取指令,用于根据接收的动作指令,得到该动作指令对应的状态参数;
电位器参数获取指令,用于实时获取当前电位器参数;
阈值判断指令,用于判断当前电位器参数与状态参数的差值是否小于阈值,若是,则使不倒翁处于动作指令相应的状态,并等待新的动作指令,若否,则发送配重位置信息获取指令,以根据该配重位置信息,确定电机运动参数;
电机参数发送指令,用于根据配重位置信息,向驱动电机发送电机运动参数。
本发明又公开了一种不倒翁,包括上述的不倒翁控制模块,具有相同的技术效果,在此不再赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种不倒翁控制方法、模块和不倒翁进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。