NAO机器人快速行走算法设计与实现
2019-02-27甘富升
甘富升
(西南科技大学,四川绵阳 621000)
1 总体方案论述
根据设计要求,该NAO机器人需实现识别障碍与哨声,以及能够完成快速的行走过程。故本设计将整个项目细分成了几个模块,针对每个模块精准的进行设计,可以提高效率而且更有针对性。本设计主要分为障碍识别处理、哨声识别处理、快速行走设计。
2 详细实施过程
2.1 障碍识别处理
2.1.1 测距原理
声纳传感器的测距工作原理:声纳激发出一束很窄的超声波在空气中传播,当遇到障碍物时,超声被返回。根据超声波的传递时间就能准确的计算出障碍物的相对的距离。
首先将声纳的INIT信号拉到高电平,此时声纳换能器将激发出超声波。INIT信号高电平的时间可以由用户来设定。如下图所示的INIT信号的高电平的时间是32ms。高电平的时间与需要测量的最长距离有关。当超声波遇到障碍物时,超声波将被返回,声纳传感器检测到回波信号后,将ECHO置为高电平。当INIT信号变为低电平时,ECHO同时也变为低电平。因此可以计算障碍物的距离;障碍物的距离=(INIT高电平时间一ECHO高电平的时间)*声纳速度/2。
图3 -1 测距原理
2.1.2 避障步骤
步骤1、发射声波。
声波发射模块首先发射声波。声波发射模块所发射的信号为一组声波信号,其发射周期为T,发射脉冲数为N,每一声波信号的形式为p(t),当发射脉冲数N为2时,所述发射信号采用如下表示:
其中Δ表示同一周期两个脉冲之间的间隔,p(t)可以为任意信号形式。
步骤2、接收回波信号。
声波发射完成后延迟一定的时旬,开始接收声信号。所接收的声信号e(t)采用如下表达式:
其中,dV表示声呐波束照射范围内的体积积分,R表示声呐基阵至空间点(因为是体积积分所以积分项中R表示空间中声呐基阵至某一点的距离)的距离且R=Rt+Rr.其中Rt为声呐发射基阵至空间点的距离,Rr为声呐接收基阵至空间点的距离。所接收的声信号e(t)可进一步分解为:
其中e1(t)和e2(t)分别表示p(t)和-p(t-Δ)两组信号对应的回波。
步骤3、对步骤2中所接收的回波信号进行数据处理,抑制回波噪声。
对回波信号的数据处理可进一步包括:
步骤3-1、构造回波信号的非线性特征。
根据e1(t)和e2(t)构造声呐回波信号的非线性特征度量,即非线性特征为:
其中L为信号能量算子,可以取绝对值和、平方和等形式。
为了保证计算的稳定性β(t)计算完成后可以对非线性特征β(t)采用加窗滤波处理,滤除野值。
步骤3-2、回波噪声抑制。
为了有效抑制气泡回波噪声将之前所得到的回波信号的非线性特征作为度量算子对回波信号进行抑制,抑制后的回波信号为:
步骤4、根据回波信号实现障碍物检测。
2.1.3 流程
图3 -2 避障控制逻辑
Avoid_obstacle即避障行为,根据NAO遇到障碍便横向移动的要求,该行为的控制变量为:
其中,正负号表示机器人横向行走的左右向,一般根据目标点在NAO的方向确定,即目标点在机器人左侧时取正,目标点在机器人右侧时取负。
NAO检测到与障碍物距离d0决定避障行为的控制参数。当d0大于安全距离ds时控制参数取值为零,该行为未被执行;当d0小于安全距离ds时控制参数取值为1,机器人满速避障。该行为控制参数表示为:
由于简单环境,也就是只有一个或稀疏分布的小型障碍物而言的环境,NAO通过向目标行走和避障行为合理结合就可以完成避障向目标行走的任务。
2.2 哨声识别处理
2.2.1 原理分析
时域信号在经过傅立叶变换的分解之后,变为了不同正弦波信号的叠加,我们再去分析这些正弦波的频率,可以将一个信号变换到频域
图3 -3 时频域转换
变换运算过程:
采样得到信号,进行FFT变换。N个采样点,经过FFT之后,得到N个点的FFT结果。N取2的整数次方。FFT运算量:Nlog2N(2为对数的底)
假设原始信号的峰值为A,FFT的结果的每个点(除了第一个点直流分量之外)的模值为A的N/2倍。第一个点为直流分量,它的模值是直流分量的N倍。每个点的相位就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N (3-10)
由上面的公式可以看出,Fn所能分辨到频率F0=Fs/N。 (3-11)
假设频率分辨率F0=Fs/N限定,采样频率Fs也给定,也已知信号最高频率 Fh,那么由采样定理:Fs>=2Fh (3-12)
得到:N=Fs/F0>=2Fh/F0, (3-13)
即采样点必须满足这样一个关系式。
变换后如图:
图3 -4 傅立叶变换后信号图
2.2.2 流程
图3 -5 Speech SDK识别流程图
语音识别时识别内核对外部有用的语音和噪音通过自身的模块进行处理,将得到语音信息先与其内核引擎中的哨声进行快速匹配,进行频率分析,最终进行精确匹配。把语音通过解码器转换成文本信息,方便接下来的操作。
2.3 快速行走设计
(1)卡尔曼滤波
图3 -6 卡尔曼滤波更新过程
(2)、线性倒立摆模型
图3 -7 线性倒立摆模型
由于倒立摆系统的行为与火箭以及两足机器人行走有很大的相似性。因而该研究在机器人运动学以及机器人步态规划上有重大意义。本文采用线性倒立摆模型对机器人进行抽象,把机器人运动简化为线性倒立摆运动模式,通过预先规划好的零力矩点(ZMP)轨迹,极据质心(COG)和ZMP的关系,求出COG轨迹:再将前向步态和侧向步态简化为二连杆结构,对机器人进行逆运动学求解,得出各个关节的角度,结合ZMP方程讨论了行走过程中的稳定性。
3 总结
本设计研究人的行走方式及运动原理,基于NAO机器人,能识别障碍与哨声,然后实现平稳的快速行走。因为走路需要的是平衡性,大脑在根据路状不断地分析判断该怎么走才不至于摔倒,而机器人走路则是要通过复杂的计算来进行。而对于障碍和哨声,同样也需要通过特定的算法来实现。因此,本次研究对于类人机器人的研究具有参考意义。