具体实施方式
下面结合附图,对本发明的具体实现过程进行详细说明。
本发明实施例提供了一种定位机器人的方法,包括:
(1)将3个Kinect传感器以直角坐标系形式排放,声源在该坐标系内某一位置发出持续一定时间的声音,保存三个Kinect传感器获得的声音来源方向角。
(2)由于每个Kinect传感器接收声音信号有一定偏差,用α表示偏差角度,Kinect传感器探测到的声音来源方向偏差范围为[-α,α],称为偏差扇面,表示两个Kinect传感器确定的声源区域,本方法称为偏差扇面法。然后利用几何方法求得每两个Kinect传感器的偏差扇面区域所形成的交叉区域的重心,称为几何重心法。
(3)利用偏差扇面法和几何重心法求得每两个Kinect传感器确定的声源所在区域的重心,共三个,计算这三个重心坐标的平均值,即为声源的最优位置。
(4)将最优声源位置发送给移动机器人,机器人获得自己的位置信息,调整其运动方向,通过声音定位向目标地点移动,从而实现移动机器人声音定位导航。
本发明实施例借助Kinect传感器的音频处理能力,探测声音来源方向实现机器人室内定位。
与现有的技术相比,本发明实施例具有以下优点:
声音定位方法简单。声音定位系统的实时性要求很高,如果采用比较复杂的算法,将不能满足声音定位系统的实时性要求。本发明采用重心法这种比较通用的方法即可快速确定出声源的位置。
声音定位精度高。充分利用了Kinect传感器的麦克风阵列以及Kinect软件驱动程序的背景抑制及回声消除处理,消除虚拟声源及背景噪声的影响,探测真实声源方向,获得声源的最佳位置。
定位方法通用。由于是利用Kinect探测声音的来源方向,所以即使有障碍物在Kinect和声源之间,Kinect仍能够得到声音的来源方向;另一方面,该定位方法不仅能够用于室内声音定位,同样可应用于室外。
可应用于机器人室内的精确定位及导航运动控制。
本发明实施例还提供了一种机器人定位和导航方法,包括:
1、Kinect声音区域重心定位方法
参照图1,为了使声源的探测均在Kinect传感器的最佳探测角度范围内,三个Kinect传感器的布置如图所示。Kinect传感器获得声音来源方向角是以其中线为参考的,即图中标有声音来源角度参考线的虚线,面对Kinect传感器,虚线左侧的角度为负值,虚线右侧的角度为正值。声源在某一位置以16KHz的频率发出持续50ms的声音。偏差扇面法和区域重心方法结合获取三个Kinect传感器确定的声源交叉区域重心过程如下:
用β表示1号Kinect传感器探测到的声音来源方向角,l
k1表示1号Kinect传感器探测到的声源所在直线,故真实声源在直线l
k1左右偏转α度的扇形区域内,2号和3号Kinect传感器类似。
表示2号Kinect传感器探测到的声音来源方向角,l
k2表示2号Kinect传感器探测到的声源所在直线。γ表示3号Kinect传感器探测到的声音来源方向角,l
k3表示3号Kinect传感器探测到的声源所在直线。由上述可知β和
为负值,γ正值。
(xk1,yk1)表示1号Kinect传感器所在位置坐标,(xk2,yk2)表示2号Kinect传感器所在位置坐标,(xk3,yk3)表示3号Kinect传感器所在位置坐标,实际中很容易测量,所以均为已知参数。
图1表示了三个Kinect传感器探测到的声音来源方向及两两偏差扇面相互交叉所确定的声源区域,以1号和3号Kinect传感器的偏差扇面相互交叉形成的区域为例,其交叉区域重心求法如下:
如图2,
表示1号Kinect传感器探测到声源所在直线逆时针偏转α度,
表示1号Kinect传感器探测到声源所在直线顺时针偏转α度;
表示3号Kinect传感器探测到声源所在直线逆时针偏转α度,
表示3号Kinect传感器探测到声源所在直线顺时针偏转α度。A(x
A,y
A)表示
和
的交点,B(x
B,y
B)表示
和
的交点,C(x
C,y
C)表示
和
的交点,D(x
D,y
D)表示
和
的交点。四边形ABCD即是由1号和3号Kinect传感器共同确定的声源所在区域。为了方便说明求四边形ABCD的重心,将其放大。
参照图3,N(xN,yN)表示三角形DAB的重心,O(xO,yO)表示三角形ABC的重心,P(xP,yP)表示三角形BCD的重心,Q(xQ,yQ)表示三角形CDA的重心,R(xR,yR)表示四边形ABCD的重心。
对于四边形ABCD,连接其一条对角线AC,这样就将四边形ABCD分割成三角形ABC和三角形CDA的组合体,则四边形ABCD的重心在三角形ABC重心O和三角形CDA重心Q的连线OQ上;同理,连接四边形ABCD另一条对角线BD,这样就将四边形ABCD分割成三角形DAB和三角形BCD的组合体,四边形ABCD的重心同样在线段NP上,故有四边形ABCD的重心在线段OQ和NP的交点上,即
点。
参照图4和图5,四边形EFGH即是由1号和2号Kinect传感器共同确定的声源所在区域,四边形IJKL即是由2号和3号Kinect传感器共同确定的声源所在区域,按照上述同样的方法求得四边形EFGH重心为
四边形IJKL重心为
最后,求四边形ABCD、EFGH、IJKL的重心
三个坐标的均值即为声源的最优位置S(x
S,y
S)。
按照上述方法,同理可求得1号和2号Kinect传感器相互交线所构成的区域的重心以及2号和3号Kinect传感器相互交线所构成的区域的重心。
2、最优声源位置算法
确定最优声源位置的方法包括:
步骤1:初始化多个参数
三个Kinect传感器的位置坐标均可实际测得,即(xk1,yk1)、(xk2,yk2)和(xk3,yk3)均为已知参数,误差角度α根据Kinect的技术指标及实际实验设定为5°,声源及三个Kinect传感器开始工作。
步骤2:求直线交点坐标
声源发出持续50ms的声音后停止发声,保存1号Kinect传感器获得的声音来源方向角β,2号Kinect传感器获得的声音来源方向角
,3号Kinect传感器获得的声音来源方向角γ。
根据点斜式可列出如下直线方程:
直线
y=y
k3+tan(135°+γ+α)(x-x
k3) (3)
直线y=yk3+tan(135°+γ-α)(x-xk3) (4)
直线
和直线
的交点为A(x
A,y
A),解直线方程(1)和(4)组成的方程组得交点A(x
A,y
A)的坐标。直线
和直线
的交点为B(x
B,y
B),解直线方程(2)和(4)组成的方程组得交点B(x
B,y
B)的坐标。直线
和直线
的交点为C(x
C,y
C),解直线方程(2)和(3)组成的方程组得交点C(x
C,y
C)的坐标。直线
和直线
的交点为D(x
D,y
D),解直线方程(1)和(3)组成的方程组得交点D(x
D,y
D)的坐标。
步骤3:求不规则四边形重心
由三角形重心坐标公式,
三角形DAB的重心N(xN,yN),
三角形ABC的重心O(xO,yO),
三角形BCD的重心P(xP,yP),
三角形CDA的重心Q(xQ,yQ),
根据两点式可列出如下直线方程:
线段OQ所在直线方程:
线段NP所在直线方程:
线段OQ和NP的交点为
解直线方程(5)和(6)组成的方程组得四边形ABCD重心为
同理,按照步骤2和步骤3的方法求得求四边形EFGH、IJKL的重心
步骤4:求声源最优位置
声源最优位置S(xS,yS)坐标 以此代表真实的声源的位置。
3、机器人Kinect声音定位导航算法
参照图6,机器人上装有声源,发送声音到空间中,某一时刻机器人位于W(xW,yW),机器人目标位置为V(xV,yV)。机器人上装有磁罗盘,可以测出机器人自身坐标轴y1和北向的夹角。不失一般性,设δ为坐标轴y和北向的夹角。
φ表示机器人偏离理论行走轨线的夹角,如果机器人整个控制系统及轮子结构均无误差,则给机器人一直行信号,使其行走一定距离即到达目标V(xV,yV),即机器人理论上的行走路线如图WV实线所示。而实际给机器人一直行信号,由于轮子结构误差,机器人总会偏离原始方向,即实际机器人沿着WV虚线行走。
ε表示机器人最终到达以目标点V(xV,yV)为圆心的误差圆半径,因为实际中存在其他各种因素的影响,例如机器人本身的尺寸,机器人最终到达的位置不一定和目标点V(xV,yV)完全重合,所以根据实际精度要求定义一误差圆。只要机器人到达以目标点V(xV,yV)为圆心,ε为半径的误差圆内,则认为机器人已到达目标点。Kinect声音定位机器人导航算法步骤如下:
步骤1:
根据机器人当前位置W(x
W,y
W)和目标位置V(x
V,y
V)可计算出直线WV与水平x轴正向的夹角θ及线段WV的距离d,
则为了朝目标V(x
V,y
V)运动,机器人调整其y
1轴方向和北向夹角为90°-θ-δ。机器人从起点W(x
W,y
W)开始行走。
步骤2:
机器人每隔1s发出持续50ms的声音。设某一时刻机器人位于U(xU,yU),计算机处理三个Kinect传感器获得的声源方向信息得到机器人当前位置U(xU,yU),将该位置通过无线发送给机器人。
步骤3:
机器人计算当前位置U(xU,yU)和起点W(xW,yW)的连线WU与WV的偏离角度φ,机器人自动调整其y1轴朝着偏离角度φ减小的方向运动。
步骤4:
重复步骤2到步骤3,最终,当计算机处理三个Kinect传感器获得的声源方向信息得到机器人当前位置在以目标点V(xV,yV)为圆心,ε为半径的误差圆内,则认为机器人已到达目标位置,完成了机器人从起点W(xW,yW)到目标点V(xV,yV)的导航任务。
步骤5:
从点V(xV,yV)到目标点Z(xZ,yZ)的导航任务重复步骤1到4。
按照上述步骤不断地重复,基于Kinect的声音定位就可实现机器人的连续导航任务,证明了上述Kinect的声音定位算法正确且有效。
图7是机器人整个声音定位导航控制原理框图,PC(个人电脑)机上连接3个Kinect传感器和一个无线数传模块,无线数传模块用于PC机和机器人之间的通信。机器人上包括机器人核心处理器、电机驱动、磁罗盘、无线数传模块和声源模块。机器人核心处理器用于机器人的运动控制,机器人和PC机的通信,采集传感器信息等。电机驱动用于机器人电机功率的放大。磁罗盘用于测量机器人自身相对地理真北的夹角。声源模块用于机器人发出声音信号,以便用3个Kinect传感器实现机器人声音定位。
上述内容仅是本发明的优选实施例,在此基础上,本领域技术人员能够做出一些变形,在不偏离本发明的思想的情况下,这些变形也应在本发明的保护范围之内。