手机版
您的当前位置: 老骥秘书网 > 范文大全 > 公文范文 > 基于树莓派机器人的ROS六麦模块声源定位系统

基于树莓派机器人的ROS六麦模块声源定位系统

来源:公文范文 时间:2023-12-23 19:16:01 推荐访问: 声源 定位系统 机器人

曹博宣,宁成林,何锐泓,黄成龙,林宇桐

(南方医科大学 生物医学工程学院,广州 510515)

声音定位技术是通过声学传感装置接收声波,再利用电子装置将声音信号进行转化处理,以此实现对声源进行定位的技术。现代科技的日渐发展使声音定位技术越来越受到重视[1]。这项技术也逐渐走进到日常生活当中,例如视觉追踪,摄像机式的眼睛可以定位到声源处;
电视会议中通过接收发言者的语音信号,自动使摄像头对准发言者等[2]。

本文基于声音探测的定位原理,制作了利用声音探测定位的实际应用装置。

声源定位表现在两个方面,一是确定声源方位,二是确定声源距离,在本应用中,先采用TDOA定位方法确定并测量声源方位角度,再采用超声波测距方法确定声源距离使树莓派机器人运动至声源方位。

1.1 TDOA定位方法

TDOA是一种利用时间差进行定位的方法,通过测量声音信号到达监测站的时间,可以确定声源的距离。利用声源到多个监测站的距离(以监测站为中心,距离为半径作圆),就能确定声源的位置。通过比较声音信号到达多个监测站的时间差,就能做出以监测站为焦点、距离差为长轴的双曲线,双曲线的交点就是信号的位置[3],如图1和图2所示。

图1 TDOA定位示意图

图2 双曲线交会定位示意图

TDOA是基于多站点的定位系统,因此要对信号进行定位必须有3个以上的监测站进行同时测量。本装置使用六麦环形MIC阵列,每个麦克风即是一个监测站点,共有六个麦克风接收声音信号。

1.2 TDOA定位算法

设(x,y)为声源坐标,(xi,yi)为第i个声音接收模块的坐标。声源和接收之间的距离为:

令Riy表示声源模块第i个接收模块的距离差,则双曲线定位中声源(x,y)和接收(xi,yi)有如下关系:

求解上述非线性方程组要用到Chan算法[4],该算法是具有解析表达式解的非递归的双曲线方程组解法,该算法的特点是计算量小,且不用设定初值,在视距环境下及噪声服从高斯分布的信道环境下,定位精度高。该算法适合计算机运算。而且当声音接收模块为4个及以上时,该算法可利用所有TDOA测量值并取得更好的定位结果。综上所述,Chan是一种比较适合本系统的算法[5]。

当有4个声音接收模块时,TDOA测量值数目多于未知量数目,因此,初始非线性方程组应首先转换为线性方程组,然后采用加权最小二乘(WLS)算法得到一个初始解,再利用第一次得到的移动用户终端估计位置坐标及附自U变量等已知约束条件进行第二次WLS估计,就能得到改进的估计位置[6],令Za=[ZTp,R]T,则:

误差向量为ψ=h-Gaz0a。

第一次WLS所得:

第二次WLS所得式:

其中,zρ=[x,y]T

至此可以解出两组坐标值,舍去值为负的那一组,剩下的即为最终坐标值。

上述TDOA算法已写入麦克风阵列固件中,当麦克风阵列被唤醒后可以直接投入使用并识别声源。

1.3 超声测距

1.3.1 超声波测距介绍

超声波测距是一种不受物体自身色度和光线因素影响的非接触检测技术。与其他检测仪器相比,它更环保,更抗热、潮、粉末、高温氧化等恶劣环境,具有维护少、高环保、牢靠性高、寿命长等特点[7-9]。

超声波测距即将超声波沿固定角度利用超声波发射器进行发射,在发射初始时刻同步计数器进行时间的记录。传播超声波的途中一旦遇到阻碍,迅速回传。计时也会在接收器接收超声波时终止。通过测试时间再换算出测试距离[10]。

本装置使用的HC-SR04超声波模块,测试距离不大于4 m,测量精度可达到0.01 cm。

1.3.2 超声波和激光测距算法

首先已知超声波在25℃下的空气中的传播速度为340 m/s。

根据计时器记录的时间t,可以计算出发射点距障碍物的距离s,即:

测距模块就是基于这一原理实现测距的,一般称之为时间差测距法。

图像组件的激光测距原理与超声波测距原理是一样的。测距的公式表示为:

式中,C为超声波在空气中的传播速度;
T为测量距离传播的时间差。

上述超声波测距算法已写入机器人中,。

硬件装置主要由四大组件组成:定向组件、测距组件、图像组件、人形机器人。定向组件包括六麦环形MIC阵列,实现角度测量和人形机器人的定向功能;
测距组件包括HC-SR04超声波模块,实现距离测量功能;
图像组件包括N10激光雷达,实现机器人周围环境二维图像的绘制;
人形机器人实现人脸识别功能。定向组件、测距组件和图像组件分别与人形机器人实行电连接。通过计算机终端控制三个组件,控制过程由计算机语言驱动。系统主要部件连接示意图如图3所示。

图3 系统主要部件连接示意图

2.1 实验组件

科大讯飞六边形环形MIC阵列利用TDOA算法能识别前方360°的声音信号(角度分辨率为1°),具备定向降噪收音功能,可开发语音定位控制功能。将其与机器人进行电连接,通过在终端编写程序控制该组件,从而在终端输出角度测量值,实现机器人对音源方位的判断和声源角度方位的测量。麦克风阵列实物图如图4所示。

图4 麦克风板的实物图

HC-SR04超声波测距模块可提供2~400 cm的非接触式距离感测功能,测距精度可高达到3 mm[8]。实物图如图5所示。

图5 超声波模块实物图

轮趣科技的N10系列激光雷达能够对周围360°环境进行二维扫描探测。雷达内部使用无线供电和光通信,测量重频为4.5 kHz。探测精度达到±3 cm,最大量程12 m,适用于机器人、无人机的精确定位和避障的应用场合。实物图如图6所示。

图6 N10激光雷达实物图

TonyPi智能视觉人形机器人以树莓派4B为主控,采用Python语言和C++编程。搭载高清晰度广角摄像头,可后期开发人脸识别、颜色识别、视觉巡线等功能。将其与六麦环形MIC阵列、超声波模块和N10激光雷达电连接构成总体装置,通过在终端编写程序控制机器人,使机器人在收到声音信号后能够定向运动至声源方位,实现对声源的精确定位。同时需要注意机器人与控制终端应连接相同局域网才能使用该装置。机器人实物图如图6所示。

图7 机器人实物图

2.2 装置结构

六麦环形MIC阵列可接收信号范围在其所在的三维空间内,但是其处于水平状态时探测效果最好(即MIC阵列所在平面与xoy平面平行)。

超声波模块采用回声测距,为保证测距精准性,其发射出的超声波应与xoy平面平行,这样测得距离为与声源的水平距离。

N10激光雷达通过测量调制激光的发射与返回时间差来测量物体与雷达的相对距离,可以得到量程内周围360度环境的二维平面信息。

最终组装完成实物图如图8所示。

图8 实物装置图

3.1 硬件与设备环境准备

硬件准备:

手扶机器人,使其基本站立(机器人开机前姿势为半蹲,各关节是松弛的)。然后将机器人背面底部的树莓派扩展板开关由“OFF”推动到“ON”。

网络环境配置:

直连模式;
操作为开启机器人,使操作终端连接机器人产生的“HW”开头的无线局域网,该局域网没有密码限制,操作终端可以直接连接,操作终端连接的局域网见图9中红色方框。

图9 机器人产生的无线局域网

局域网模式;
首先,建立记事本文件如图10所示。

图10 实现局域网模式连接需建立的记事本文件

其中hotspot name为个人局域网名称,password为局域网密码。

关闭该文件,将文件后缀从.txt改为.conf,将此文件复制到机器人储存文件的目录中,修改后文件与文件目录如图11所示。

图11 修改后的记事本文件与文件目录

另外开启一个局域网,使操作终端与机器人同时连接于该局域网下,连接成功后可显示操作终端与机器人的IP地址,如图12所示。

图12 局域网连接成功后设备参数

本文中操作采取局域网模式,因能连接外网,工作调试时更为方便。

3.2 功能文件准备

表1 功能文件准备及文件路径

3.3 应用程序设计

为了定位声源,应用程序通过init.launch文件开启机器人节点,通过终端输入唤醒词激活麦克风阵列使其调用voice_control.cpp文件,实现语音唤醒麦克风阵列的功能。并由CMakeLists.txt文件实现C++并行执行python文件的功能,其中python文件包括Chaoshengbo.py(实现超声波模块测距)、action.py(实现机器人动作组)、FaceDetect.py(实现人脸识别)。同时并行开启雷达节点,执行lsn10.launch(开启雷达实现图像绘制),在终端打开RVIZ输出雷达点云图。声源定位应用流程图如图13所示。

图13 声源定位应用程序流程图

3.4 机器人声源定位功能的步骤

开启电脑,打开vncviewer软件,输入机器人的IP地址以连接树莓派机器人并进入虚拟机。

打开虚拟机终端,在其中输入roslaunch xf_mic_asr_offline mic_init.launch指令开启麦克风阵列初始化节点。

初始化节点后,超声波测距模块和麦克风阵列模块自动开启,如图14所示。

图14 测量模块启动成功

输入麦克风语音阵列唤醒词来激活麦克风阵列;
唤醒词是麦克风阵列录入的可修改的语音关键词,用于唤醒激活系统。本文中操作设置唤醒词为“罗伯特转过来”。激活麦克风阵列后,检验麦克风阵列对声源定位的准确性以及机器人对声源进行转向的灵敏度,以机器人自身面对方向为0°基准给出声源的角度方位。机器人转至声源所在的方位后自动执行chaoshengbo.py,测量声源与机器人的距离;
待机器人行至声源时,运行FaceDetect.py文件,实现人脸识别功能,并能与声源做出相应的交互,如鞠躬、挥手等动作;
麦克风唤醒激活与测量数据返回,如图15所示。

图15 测量数据和人机互动结果

3.5 绘制图像功能

打开一个虚拟机终端,在其中输入roslaunch lsn10 lsn10.launch指令开启雷达节点。

另外打开一个虚拟机终端,在其中输入rviz指令,如图16所示。

图16 使用rviz指令绘制二维图像

输入rviz指令后,雷达星云图自动打开。为了在雷达星云图上更好地体现现实场景,测试过程中设计了2个实际场景,机器人实物图与雷达星云图对照如图17、图18以及图19、图20所示。

图17 机器人实物场景1

图18 雷达星云图1

图19 机器人实物场景2

图20 雷达星云图2

4.1 测量说明

数据测量过程中,将实验者视作声源,实验者说出唤醒词“罗伯特,转过来”启动装置,机器人接收到声音信号后进行语音回复“让我看看你在哪”。随后进行角度测量与距离测量,在终端输出测量结果;
输出结果后,机器人定向运动至声源所在方位(即实验者所在方位),并与声源做出交互动作。测量演示图如图21所示。

图21 测量演示图

4.2 角度测量

首先,按照前文硬件准备的操作来开启机器人,实验者说出唤醒词“罗伯特转过来”来开启麦克风。

开机成功后,固定机器人,使其面对方向作为基准 0°。

设备调试完毕后,实验者站在一定的角度方位说出唤醒词,此角度为角度实际值θ。机器人收到指令后向声源方位转向,以机器人最终朝向为角度测量值β。机器人转向动作结束后启动人脸识别模式,以自身朝向方位为0°基准,头部摄像头分别向左右两边转动15°以搜索声源,检测到声源后做出动作与声源进行交互。

角度测量在三维空间中的重现如图22所示。

图22 角度测量在三维空间中的重现图

角度测量数据如表2所示。

表2 测量角度数据

图22中y轴数据为角度测量值,x轴数据为角度实际值。红色直线为函数y=x,蓝色散点为测量数据。

图23 角度测量值和角度实际值的拟合

4.3 距离测量

首先开启机器人,实验者在终端输入指令来开启超声波模块。开机成功后固定机器人,以固定后位置作为基准零点。

设备调试完毕后,以机器人与实验者间距作为距离实际值d,实验者逐渐远离机器人。实验者在移动过程中距离实际值d也随之改变,测量结果实时在终端显示,用水平尺测量实验者和机器人距离作为实际值d,终端输出数据为测量值L。

距离测量在三维空间中演示如图24所示。

图24 三维空间中的距离测量演示图

距离测量数据如表3所示。

表3 测量距离数据

图25中y轴数据为距离测量值,x轴数据为距离实际值。红色直线为函数y=x,蓝色散点为测量数据。

图25 距离测量值和距离实际值的拟合

4.4 误差分析

(1)角度测量误差:

最大误差≈42.86%,最小误差≈0%。

这里误差过大有两个原因:

①数据测量过程中偏差定义为“实际值-测量值”,误差定义为“偏差/实际值”。经过多次测量得出统计性结论,偏差在0°~7°左右。由误差定义可知,当实际值越小,即使只有1°的偏差,也会造成较大误差。

②由于机器人的单次转动具有一定分辨率限制,机器人对角度的分辨率最小值为10°(即机器人单次转动最小角度为10°)。由于六麦环形阵列的麦克风平面布局限制,在其指向30°以内角度测量的误差较大。并且会因为终端调整机器人参数或不同地面摩擦因数改变而产生一定的误差,而机器人对于大角度的转动不是一次完成的,每次转动如若有1°~2°的误差,累计转动多次后误差会导致误差积累,但与10°内角度测量相比较已有显著的误差改善。

为了探究清楚测量误差与实际角度之间的关系,给出了测量误差与测量角度之间的散点图(如图26所示),并在实际角度30°内进一步做出数据测量,角度进一步测量数据如表4所示。

图26 测量误差和角度实际值的散点图

表4 实际角度30°以内的测量数据

经过多次测量得出统计数据,30°以内的测量值误差较大,参考意义不大,因此将测量数据中30°以内的数据抛除后得到相对误差如下:最大误差≈4.35%,最小误差≈0%。

虽然相对误差仍然较大,但由于机器人在完成转向动作后,以转向后自身朝向方位为0°基准,头部摄像头分别向左右两边转动15°搜索声源。所以仍然可以实现声源的精确定位,实际应用中影响收效甚微。

(2)距离测量误差:最大误差≈3.5%,最小误差≈0%。

该装置距离检测误差较小,但由于装置发射超声波为直线传播,所以检测声源需与装置处于同一平面内,这是该装置的一点局限性。

本装置以树莓派机器人为搭建平台,结合六麦环形阵列、超声波模块和N10激光雷达分别实现方位判断、距离测量、绘制图像功能,测量数据误差较小。

(1)六麦环形MIC阵列一般应该竖直放置,但竖直放置方法只能识别机器人面朝方向180°的声音方位,无法识别身后声音。而本装置中将阵列水平放置,使装置能够精准判断以自身为圆心、半径4 m、360°以内的声音方位,使得应用性增强。

(2)对树莓派机器人进行深度开发,使其在判断声音方位后再进行人脸识别,进一步声源定位,并在定位后做出动作和对话,增强了人机互动效果。

(3)将雷达与机器人相结合,能够返回以自身为圆心、半径12 m、360°以内的二维空间图像,可开发地震救援、资源勘探等功能。在实际应用上具有更多可能性。

猜你喜欢声源麦克风测距利用声压幅值相关性识别声源特性研究噪声与振动控制(2022年5期)2022-10-21基于RSSI测距的最大似然估计的节点定位算法导航定位学报(2022年4期)2022-08-15虚拟声源定位的等效源近场声全息算法舰船科学技术(2022年11期)2022-07-15计算辐射噪声的面声源和点声源结合方法兵工学报(2021年2期)2021-04-08汽车内麦克风阵列布放位置优化方法研究*科技与创新(2020年8期)2020-05-08基于STM32的多通道超声波测距系统设计电子制作(2019年19期)2019-11-23基于GCC-nearest时延估计的室内声源定位电子制作(2019年23期)2019-02-23浅谈超声波测距电子制作(2017年7期)2017-06-05麦克风的艺术小学科学(2016年12期)2017-01-06讯飞输入法也能离线语音输入电脑爱好者(2016年24期)2017-01-05

老骥秘书网 https://www.round-online.com

Copyright © 2002-2018 . 老骥秘书网 版权所有

Top