Python计算Arduino声音方向范围和绘制声音位置二维概率分布热图

2023-11-15

声音检测和测距有许多与回声定位、导航和地理定位相关的应用。所有这些都依赖于使用声音延迟准确定位声源的位置。

在这项研究中,我们组装了一个设备,该设备可以利用声音到达时间的差异来精确定位声源的位置。它由连接到 Arduino 电路板的三个声音传感器组成,该电路板发送数据至电脑,在 Python 中进行处理。我们发现其误差的大小随声源和传感器的相对位置而变化,致使生成一个误差模型,该模型让机器将任何单个测量与设备中实验确定的不确定性相结合,生成一个二维概率分布作为声源位置的热图。概率分布通常与机器的实际输出分布相匹配。

概述

声音检测和测距有许多应用,包括民用和军用。 通过时间延迟测量,准确定位波源位置的能力在许多应用中存在。 如,天文学领域,射电天文学通过使用大型射电望远镜,通过检测天体的无线电发射来研究天体。 然而,单个望远镜实现的图像分辨率受到几个因素的限制,如望远镜天线孔径的大小。 为了克服这个限制,可以使用一种称为超长基线干涉测量的干涉测量,其中许多遥远的望远镜同步在一起模拟更大的奇异望远镜。 为了实现这一点,不同望远镜的无线电信号到达时间之间的延迟被组合和处理。 这项研究采用了一种称为到达时间差的类似技术,构建一种可以精确定位声源位置的装置。

到达时间差

到达时间差 (TDOA) 是一种用于对射频源进行地理定位的技术。 它需要三个或更多能够检测感兴趣信号的远程接收器(探针)。 每个探针在时间上同步到捕获相应的 I/Q 数据块。 软件移动每个 I/Q 数据集的时间特征以找到每个探测器到达时间的差异,这给出了源与每组探头的距离差异。 使用多个探针提供一组曲线,指示距离的解方程。

如文中所述,这种方法广泛用于定位系统。 本文设备包括三个通过 Arduino 电路板同步在一起的 Arduino 声音传感器。 我们假设三个声音传感器足够远且没有干扰,可以测量到声源的范围和方向。

方法 | 理论

数学模型

模拟代码片段:

def makePlot(xBoundL=-50,xBoundR=50,yBoundL=-50,yBoundR=50, 
             xPixScal=1,yPixScal=1,                         
             micSize=1,                                     
             errConst=2,                                   
             xMic=[0,1],yMic=[0,0],                         
             source=[0,0],                                  
            ):     
    
    
    x = np.arange( xBoundL, xBoundR, xPixScal )
    y = np.arange( yBoundL, yBoundR, yPixScal )
    
    
    X = np.tile( x,   [y.size,1])
    Y = np.tile( y,   [x.size,1])
    Y = np.rot90(Y)	
    
    d12 = getDelay(source[0],source[1],xMic[0],yMic[0],xMic[1],yMic[1])
    d13 = getDelay(source[0],source[1],xMic[0],yMic[0],xMic[2],yMic[2])
    d23 = getDelay(source[0],source[1],xMic[1],yMic[1],xMic[2],yMic[2])

    
    
    data = function(X, Y,
                    xMic[0],yMic[0],xMic[1],yMic[1],xMic[2],yMic[2],
                    d12,d13,d23,
                    errConst)

    plt.imshow(data,extent=[xBoundL,xBoundR,yBoundL,yBoundR])
    
    
    plt.contour(X,Y,
                curve(X,Y,xMic[0],yMic[0],xMic[1],yMic[1]),
                [d12],colors="red")                        # mics 1, 2
    plt.contour(X,Y,
                curve(X,Y,xMic[0],yMic[0],xMic[2],yMic[2]),
                [d13],colors="red")                        # mics 1, 3
    plt.contour(X,Y,
                curve(X,Y,xMic[1],yMic[1],xMic[2],yMic[2]),
                [d23],colors="red")                        # mics 2, 3
    
   
    plt.plot(xMic,yMic,marker='o',linestyle='None',
             color='red',markersize=micSize)

    plt.show()		

def curve(x,y,x1,y1,x2,y2):
    return np.sqrt((x-x1)**2+(y-y1)**2)-np.sqrt((x-x2)**2+(y-y2)**2)

连接示意图

趋势图

误差传递趋势图

源代码

详情参阅 - 亚图跨际

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python计算Arduino声音方向范围和绘制声音位置二维概率分布热图 的相关文章

随机推荐

  • Android的GreenDao3.0数据库详解及使用

    GreenDao 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案 性能 官网上的解释 我们知道所有的ORM的 greenDAO是最快的 greenDAO不作性能方面任何妥协 数据库是非常适合存储大量数据 从而加速
  • Linux 文本处理工具

    一 Linux 及Unix平台 sed awk grep 这三个工具都要用到正则表达式 把常用贴出来 1 行的匹配 root mypc sed n 2p etc passwd 打印出第2行 root mypc sed n 1 3p etc
  • OSSEC服务端配置客户端批量部署方案

    hello 2015 10 16 15 03 0x00 前言 最近也在研究ossec报警规则 还没研究的很透彻 暂时不是这篇文章的内容 ossec中文资料还是比较少 外文文献比较多 之前看到drops的两篇文章分享drops wooyun
  • Python回归预测建模实战-支持向量机预测房价(附源码和实现效果)

    机器学习在预测方面的应用 根据预测值变量的类型可以分为分类问题 预测值是离散型 和回归问题 预测值是连续型 前面我们介绍了机器学习建模处理了分类问题 具体见之前的文章 接下来我们以波斯顿房价数据集为例 做一个回归预测系列的建模文章 实现功能
  • 分而治之-前端模块化

    Created By JishuBao on 2019 03 20 12 38 22 Recently revised in 2019 03 20 12 38 22 欢迎大家来到技术宝的掘金世界 您的star是我写文章最大的动力 GitHu
  • 电脑中病毒了怎么修复,计算机Windows系统预防faust勒索病毒方法

    随着计算机系统的不断发展 我们所面对的网络安全威胁也变得越来越严重 其中 较为常见且危险的威胁就是勒索病毒 随着勒索病毒加密算法的不断升级 最近faust勒索病毒开始流行 Faust勒索病毒主要的攻击目标是Windows操作系统 一旦我们的
  • 【Webserver】——线程池的原理,手写线程池

    目录 1 什么是线程池 2 线程池的作用 3 任务队列的设计 4 构造函数 5 push接口设计 6 子线程的执行函数 7 析构函数 8 测试线程池 9 线程池中的线程数量设定 1 经验值 2 最佳线程数目算法 1 什么是线程池 线程池是一
  • 如何在VMware Workstation上安装Linux系统

    目录 一 在VMware Workstation上新建Linux虚拟机 1 1 配置选择典型 1 2 选择稍后安装 1 3 选择Linux系统 版本选择Ubuntu 1 4 给虚拟机命名 一定要英文 1 5 给磁盘分配大小 将磁盘拆分 1
  • 基于OpenMP的质数并发求解方法研究

    并行程序设计 的结课论文 基于OpenMP的质数并发求解方法研究 摘要 如何快速地获得素数表以解决素数相关的复杂问题 具有重要的研究意义 给定范围内求解质数的串行算法主要有以下三种 枚举 埃氏筛 欧拉筛 本文研究给定范围内质数求解的并发性算
  • Nginx入门、下载安装启动(Win10)、常用配置

    文章目录 1 Nginx简介 2 下载安装启动 3 Nginx的常用基本配置 3 1 Nginx配置文件结构 3 2 设置用户和组 3 3 自定义错误页 1 Nginx简介 Nginx是一个轻量级开源Web服务器软件 可以作为反向代理 负载
  • 分子动力学模拟MD simulation需要注意的点有哪些

    一 GROMACS分子动力学蛋白模拟 药物开发溶剂筛选 1 分子模拟基础理论 1 1 统计力学理论概述 1 2 主要算法介绍 最速下降法 共轭梯度法 有限差分法 1 3 力场 力场类型 参数和分类 AMBER CHARMM MMX CVFF
  • 1.3 CSDN考试C1 奇偶校验

    文章目录 1 为什么数据校验 2 奇偶校验 3 练习题 3 1练习1 3 2练习2 1 为什么数据校验 数据在传输的过程中 会受到各种干扰的影响 如脉冲干扰 随机噪声干扰和人为干扰 等 这会使数据产生差错 为了能够控制 减少甚至消除传输过程
  • Linux下的硬件驱动——USB设备(下)(驱动开发部分)

    http www ibm com developerworks cn linux l usb index2 html Linux下的硬件驱动 USB设备 下 驱动开发部分 赵明 联想软件设计中心嵌入式研发处系统设计工程师 2003年7月 赵
  • python findall函数用法_Python--re模块的findall等用法

    1 正则表达式含义 点可代表一切字符 起转义作用 指代方括号中的任意字符 d 指代数字0 9 D 指代非数字 s 指代一切空格 包括tab制表符 空格 换行等 S 指代非空格 w 指代大小写字母 数字和下划线 W 指代非大小写字母 数字和下
  • 简易登录界面html+css(自学)

    页面展示 代码展示 html代码 图标使用阿里巴巴矢量图标库图标 阿里巴巴矢量图标库地址
  • 视频图像处理课程推荐(持续更新...)

    1 斯坦福大学 课程EE367 CS448I https web stanford edu class ee367 课程内容有 Introduction and fast forward overview of class logistic
  • GPIO的地址和寄存器映射

    1 GPIO详解 1 1 gpio框图 与GPIO相关的寄存器 不涉及复用 简单理解就是电灯 蜂鸣器控制等 与之相关的寄存器一共有7个 GPIOx CRL x A E 端口配置低寄存器 GPIOx CRH x A E 端口配置高寄存器 GP
  • 如何快速启动npm run build 后的dist文件呢?

    1 通过npm run build 打包后会出现如下 tips 提示我们打包完的项目 必须要在http server 下才能运行 2 安装http server 进入 dist 文件夹 然后启动一个http服务即可 或者 你现在已经到apa
  • 使用BFD操作ELF

    使用BFD操作ELF 创建时间 2001 09 21 文章属性 原创 文章来源 http www xfocus org 文章提交 alert7 sztcww at sina com 使用BFD操作ELF 作者 alert7
  • Python计算Arduino声音方向范围和绘制声音位置二维概率分布热图

    声音检测和测距有许多与回声定位 导航和地理定位相关的应用 所有这些都依赖于使用声音延迟准确定位声源的位置 在这项研究中 我们组装了一个设备 该设备可以利用声音到达时间的差异来精确定位声源的位置 它由连接到 Arduino 电路板的三个声音传