SonicSense:声学振动丰富机器人的物体感知能力

      在通过声学振动进行物体感知方面,尽管以往的研究已经取得了一些有希望的结果,但目前的解决方案仍然受限于几个方面。首先,大多数现有研究集中在只有少数(N < 5)基本物体的受限设置上。这些物体通常具有均质材料组成,而且研究通常只涉及单指测试。此外,训练和测试通常在同一物体的不同接触点上进行,但这些测试结果是否适用于嘈杂且控制度较低的条件尚不清楚。

     此外,以前的计算算法主要使用小型机器学习模型,并且训练数据量有限,难以泛化到更广泛的场景。还有,收集物体声学数据的交互机制依赖于人为手动移动或通过预定义的固定机器人姿态进行重放,这使得扩展到大量物体变得困难。

     SonicSense,一套全面的硬件和软件设计,通过手持式声学振动传感技术,实现了丰富的机器人物体感知能力。SonicSense能够区分83种真实世界对象的容器库存状态,预测异质材料,重建3D形状,并从多样的物体中重新识别对象。系统采用了一种简单但有效的启发式探索策略与对象进行交互,以及端到端基于学习的算法,融合振动信号以推断物体属性。

源码:https://github.com/generalroboticslab/SonicSense

视频链接:https://www.youtube.com/watch?v=MvSYdLMsvx4

1 技术背景

1.1 触觉感知

触觉感知是指通过触觉传感器感知物体的属性,例如形状、材质和硬度等。现有的触觉传感器技术主要包括:

  • 基于视觉的触觉传感器: 使用 RGB 摄像头和光源来检测机器人皮肤在接触时的变形。
  • 基于气压的触觉传感器: 通过检测软弹性体和传感器之间空气或液体的压力变化来感知接触信息。
  • 基于电容的触觉传感器: 监测静态和动态压力。
  • 基于压阻的触觉传感器: 监测静态和动态压力。
  • 基于磁场的触觉传感器: 通过磁场的变化来检测力。
  • 基于热导率和温度的触觉传感器: 通过感知温度变化来识别材料和接触压力。

      SonicSense 探索了使用声学振动作为另一种触觉感知模态。声学振动具有检测高频振动特征、低功耗、直观的机械和电气设计等优点。

1.2 声学感知

     声学感知是指通过声学传感器感知物体的属性,例如液体高度、物体材质、物体类别、物体形状和姿态等。现有的声学感知技术主要包括:

  • 空气麦克风: 主要捕捉通过空气传播的声音波,容易受到环境噪音的干扰。
  • 接触麦克风: 只感知由物理接触产生的声学振动,能够获取更纯净的信号。

2 SonicSense 系统

2.1 工作原理

基于手部声学振动的对象感知是一种利用机器人手指上的接触麦克风捕捉物体与手指接触时产生的声波振动,从而获取物体属性的技术。SonicSense 系统是这一领域的代表,它通过分析声波振动信号,实现了对物体材质、形状和身份的识别和重建。

  • 声波振动产生:当机器人手指敲击物体时,物体会产生声波振动。这些振动会传递到手指上的接触麦克风,并被转化为电信号。
  • 声波振动捕捉:接触麦克风可以同步工作,以高采样率捕捉声波振动信号,并将其转化为数字信号。
  • 声波振动分析:利用深度学习模型对声波振动信号进行分析,提取出能够表征物体属性的声学特征,例如频率、幅度、持续时间等。
  • 物体属性识别:根据提取的声学特征,深度学习模型可以识别物体的材质、形状和身份等信息。

2.2 关键技术

  • 接触麦克风:用于捕捉物体与手指接触时产生的声波振动信号。
  • 深度学习模型:用于分析声波振动信号,提取声学特征,并识别物体属性。
  • 启发式交互策略:用于指导机器人手与物体进行交互,以收集丰富的声波振动数据。

2.3 硬件设计

SonicSense系统中机器人机器人手有四个手指,每个手指有一个关节,一个自由度。直观的机械设计使手能够进行一系列用于物体感知的交互运动,包括敲击、抓取和摇晃动作。

在每个指尖,一个压电接触式麦克风嵌入在塑料外壳内部,而一个圆形的配重安装在外壳表面,以增加手指运动的动量。配重在敲击动作中发挥重要作用,能够使敲击振动最大化。接触式麦克风是同步的,能够以44,100赫兹的频率捕捉声学振动。

2.3.1 硬件配置详细信息

SonicSense 系统的机器人手部硬件配置简单且易于构建,主要包含以下几个部分:

2.3.1.1 机器手指

  • 材料:使用聚乳酸 (PLA) 材料进行 3D 打印,具有较高的强度和韧性。
  • 结构:每个手指由一个关节和一个自由度组成,可以完成敲击、抓取和摇动等动作。
  • 尺寸:根据实际情况进行调整,以适应不同的物体尺寸和形状。

2.3.1.2 接触麦克风

  • 类型:使用压电式接触麦克风,可以有效地捕捉物体与手指接触时产生的声波振动信号。
  • 数量:每个手指配备一个接触麦克风,共四个麦克风。
  • 安装:将接触麦克风嵌入手指的塑料外壳中,并与配重块配合使用,以提高敲击时的振动幅度。

2.3.1.3 配重块

  • 材料:使用金属或其他重质材料制作。
  • 重量:每个配重块约为 40 克。
  • 作用:增加手指敲击时的动量,以产生更大的振动幅度。

2.3.1.4 电机

  • 类型:使用 LX-224 伺服电机,具有高扭矩和准确的定位和电压反馈功能。
  • 数量:每个手指配备一个电机,共四个电机。
  • 作用:驱动手指进行运动,并检测手指与物体的接触事件。

2.3.1.5 控制器

  • 类型:使用 TTL/USB 调试板作为电机控制器。
  • 功能:控制电机运动,并接收电机电压反馈信号。

2.3.1.6 音频接口

  • 类型:使用音频线连接接触麦克风和电脑。
  • 功能:将声波振动信号传输到电脑进行后续处理。

2.3.1.7  3D 打印材料:

  • 类型:使用 PLA 线材进行 3D 打印。
  • 数量:根据手指的尺寸和数量进行调整。

2.3.2 CAD模型

2.3.3 硬件成本

SonicSense 系统的硬件成本约为 215.26 美元,具体成本分配如下:

2.4 软件设计

使用 Python 语言进行编程,并使用 TensorFlow 或 PyTorch 深度学习框架进行模型训练。

  • 启发式交互策略:机器人手通过简单的启发式规则与物体进行交互,例如从不同方向和高度进行敲击,以收集物体的声波振动特征。
  • 深度学习模型:利用收集到的声波振动数据,训练深度学习模型,实现对物体材质、形状和身份的识别和重建。
  • 端到端学习:系统采用了端到端的学习方法,将声波振动信号和接触点位置信息融合起来,以更准确地感知物体属性。

2.4.1 训练深度学习模型

SonicSense 系统的训练过程主要包括三个部分:材料分类模型训练、形状重建模型训练和物体重新识别模型训练。

2.4.1.1 材料分类模型训练

  • 数据集:使用 82 个物体的敲击数据,每个物体都包含多个敲击位置和对应的声波振动信号。
  • 模型架构:使用卷积神经网络 (CNN) 模型,包含三个卷积层和两个全连接层。
  • 损失函数:使用交叉熵损失函数。
  • 训练过程:

(1)将声波振动信号转换为梅尔频谱图。

(2)将梅尔频谱图输入 CNN 模型进行训练。

(3)使用真实标签进行监督学习,并计算损失函数。

(4)使用梯度下降算法更新模型参数,以最小化损失函数。

  • 迭代优化:为了提高模型的准确率,使用迭代优化算法对模型预测结果进行修正,例如:

(1)过滤掉出现次数较少的预测结果。

(2)将预测结果重新分配给出现次数最多的标签。

(3)使用 K 近邻算法对每个预测点进行投票,并选择出现次数最多的标签作为最终预测结果。

2.4.1.2 形状重建模型训练

  • 数据集:使用 83 个物体的敲击数据,每个物体都包含多个敲击位置和对应的声波振动信号。
  • 模型架构:使用点云补全网络 (PCN) 模型,包含编码器和解码器两部分。
  • 损失函数:使用 Chamfer 距离损失函数。
  • 训练过程:

(1)将敲击位置信息输入 PCN 编码器进行编码。

(2)将编码后的特征向量输入解码器进行解码,生成完整的点云模型。

(3)使用真实点云模型计算 Chamfer 距离损失函数。

(4)使用梯度下降算法更新模型参数,以最小化 Chamfer 距离损失函数。

  • 数据增强:为了提高模型的泛化能力,使用仿真环境生成额外的敲击数据,并将其与真实数据进行混合训练。

2.4.1.3 物体重新识别模型训练

  • 数据集:使用 82 个物体的敲击数据,每个物体都包含多个敲击位置和对应的声波振动信号。
  • 模型架构:使用多模态神经网络,包含音频编码器、接触点编码器和多层感知机 (MLP) 层。
  • 损失函数:使用交叉熵损失函数。
  • 训练过程:

(1)将声波振动信号和接触点位置信息分别输入音频编码器和接触点编码器进行编码。

(2)将编码后的特征向量输入 MLP 层进行融合。

(3)使用真实标签进行监督学习,并计算损失函数。

(4)使用梯度下降算法更新模型参数,以最小化损失函数。

2.4.2 数据采集与交互策略

SonicSense 的数据采集过程是使用其独特的四指机械手,通过接触麦克风捕捉物体在手掌中产生的声波振动。为了收集不同物体的数据,SonicSense 采用了一种基于启发式的交互策略,可以自主地与物体进行交互,并收集丰富的声波振动特征。

2.4.2.1 交互策略主要步骤

2.4.2.1.1 初始探索

  • 机器人首先尝试从顶部和侧面两个方向,以及从高到低的不同高度进行接触,直到从每个方向检测到第一次接触事件。
  • 通过电机提供的电压反馈或声波信号变化来检测接触事件。

2.4.2.1.2 物体尺寸估计

  • 从顶部方向检测到的第一次接触事件可以估计物体的高度。
  • 从侧面方向检测到的第一次接触事件可以估计物体的半径。

2.4.2.1.3 网格采样

基于估计的物体高度和半径,机器人使用网格采样策略进行稀疏接触,以收集物体的声波振动响应。

2.4.2.2 交互策略的假设

  • 物体的最大高度是已知的。
  • 物体可以被机器人手握住进行敲击。
  • 物体被固定在桌面上。

2.4.3 声学振动信号的记录和处理方法

2.4.3.1 记录

  • 使用接触麦克风记录 5 秒的敲击声波振动信号。
  • 将敲击声波振动信号保存在文本文件中,并附带接触点位置信息。

2.4.3.2 处理

2.4.3.2.1 信号提取

  • 使用窗口滑动机制提取敲击声波振动信号。窗口大小为 1000 个声波波形单位,滑动步长为 1 个声波波形单位。
  • 根据窗口内的平均绝对幅度,判断是否为有效的敲击信号。如果当前窗口的平均幅度大于前后窗口的平均幅度,则认为是一个有效的敲击信号,并提取该窗口周围的 20000 个声波波形单位作为敲击信号。
  • 对于没有明显敲击信号的物体,例如泡沫物体,同样使用窗口滑动机制提取信号,但提取到的信号通常为电机噪声,这也被视为一种特征。

2.4.3.2.2 特征提取

  • 将提取到的敲击声波振动信号转换为梅尔频谱图 (Mel-spectrogram) 表示,大小为 64 × 64。
  • 使用快速傅里叶变换 (FFT) 将声波波形转换为频谱图,FFT 窗口大小为 2048,梅尔滤波器数量为 64,最高频率限制为 8192 Hz。
  • 将连续的音频样本数量四舍五入到 64 的倍数,以保证梅尔频谱图在时间维度上的正确尺寸。

3 数据集

SonicSense 使用一个包含83个多样化真实世界对象的数据集

3.1 数据集的组成

  • 对象:54个日常对象和29个3D打印的原始对象,它们的表面附着有不同的材料。
  • 材料类别:包括塑料、玻璃、木头、金属、陶瓷、纸张、橡胶、泡沫和织物等九种材料。
  • 材料多样性:数据集中22.9%的对象包含不止一种材料,这增加了感知任务的复杂性。

3.2 数据集内容

  • 每个物体都提供了高质量的 3D 扫描网格和点云模型。
  • 点云模型具有细粒度的材料类别逐点标注。
  • 物体涵盖了各种几何形状,从简单的原始形状到复杂的形状,从小型物体到大型或长型物体。
  • 数据集还包括了视觉传感器难以感知的物体,例如具有透明或反射表面的物体。

3.3 数据集的创建

数据集的创建涉及到收集、扫描和注释83个真实世界对象。这些对象被选中以确保它们在材料和形状上的多样性,以及它们对现有感知技术的挑战性。数据集的创建过程包括:

  • 选择对象:选择具有代表性的日常对象和3D打印对象。
  • 3D扫描:使用高精度3D扫描技术捕捉对象的形状。
  • 点云生成:从3D扫描数据生成点云模型。
  • 材料注释:对点云模型上的每个点进行材料类别注释。
  • 数据整理:将数据组织成适合机器学习模型训练的格式。

3.4 数据集的应用

数据集用于训练 SonicSense 的三个模型:

  • 材料分类模型:根据敲击声波振动信号预测接触位置的材质类别。
  • 形状重建模型:根据稀疏的接触点生成物体的完整和完整的 3D 形状。
  • 物体重新识别模型:根据新的敲击声波振动信号和接触点位置预测物体的类别。

4 实验结果

SonicSense 在三个主要的物体感知任务上进行了实验,并取得了不错的成果:

4.1 基本感知能力表征

  • 抗环境噪声: 与外部空气麦克风相比,对环境噪声具有很强的抵抗力,可以有效地捕捉通过物理接触产生的声波振动信号。
  • 容器内物体状态区分:可以通过声波振动信号区分容器内固体和液体物体的状态,例如数量、形状和液位。

4.2 材料分类

  • 准确率:材料分类模型在测试集上达到了 0.763 的平均 F1 分数,显著优于随机搜索和最近邻基线方法。
  • 可解释性: 通过 t-SNE 可视化,可以看出 SonicSense 可以将不同材料的声波振动特征区分开来,即使是难以区分的泡沫和织物材料。
  • 局限性: 在预测塑料材料时存在一定的挑战,因为塑料材料的厚度和刚度差异较大。

4.3 形状重建

  • 准确率: 形状重建模型可以从稀疏的接触点生成物体的完整和完整的 3D 形状,平均 Chamfer-L1 距离为 0.00876 米,显著优于随机搜索和最近邻基线方法。
  • 泛化能力: 形状重建模型可以很好地泛化到未见过的物体形状,包括具有凹形几何形状的物体。
  • 局限性: 在预测具有复杂形状的物体时可能存在一定的挑战,例如喷雾瓶的喷嘴和瓶盖。

4.4 物体重新识别

  • 准确率: SonicSense 的物体重新识别模型可以准确地识别之前交互过的物体,测试集准确率为 92.52%,显著优于随机搜索和最近邻基线方法。
  • 多模态信息融合: 实验表明,声波振动信息和接触点位置信息都对物体重新识别任务至关重要,融合两种信息可以进一步提高模型的性能。

4.5 实验结果的优势

  • 在多种物体感知任务上取得了优异的性能,证明了其有效性。
  • 设计具有鲁棒性,可以抵抗环境噪声的影响。
  • 交互策略可以自主地与物体进行交互,无需人工干预。

4.6 实验结果的局限性

  • 模型训练依赖于大量数据,可能存在过拟合的风险。
  • 交互策略基于启发式方法,可能无法适应所有类型的物体和场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/758903.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电路笔记(电源模块): 基于FT2232HL实现的jtag下载器硬件+jtag的通信引脚说明

JTAG接口说明 JTAG 接口根据需求可以选择20针或14针的配置&#xff0c;具体选择取决于应用场景和需要连接的功能。比如之前的可编程逻辑器件XC9572XL使用JTAG引脚&#xff08;TCK、TDI、TDO、TMS、VREF、GND&#xff09;用于与器件进行调试和编程通信。更详细的内容可以阅读11…

KAIROS复现记录

KAIROS:使用全系统起源的实用入侵检测和调查 Github&#xff1a;https://github.com/ProvenanceAnalytics/kairos KAIROS: Practical Intrusion Detection and Investigation using Whole-system Provenance 1. 论文实验 实验部分使用SCISKIT-LEARN来实现分层特征散列&#xf…

硬核!大佬通过Intel CPU的JTAG接口,DUMP微软原始Xbox的加密BootROM。

这是一篇记录如何通过Intel CPU的JTAG接口,DUMP微软原始Xbox的加密BootROM的文章,内容也记录了老哥如何设计实现JTAG调试器的过程,非常硬核! 原文:JTAG ‘Hacking’ the Original Xbox in 2023 Using Intel CPU JTAG to dump the secret bootrom in Microsoft’s original…

Java代码基础算法练习-求成绩单中最高和第二高的成绩-2024.06.30

任务描述&#xff1a; 输入n(0<n<20)个整数代表成绩&#xff0c;求n个成绩中最高的和第二高成绩 解决思路&#xff1a; 输入的数字 n 为 for 循环的次数&#xff0c;在每次循环中进行值的输入和判断 如果当前输入的分数大于最大值&#xff0c;则更新最大值和次大值 如…

Golang-channel理解

channel golang-channel语雀笔记整理 channelgolang channel的设计动机&#xff1f;chanel的数据结构/设计思考 golang channel的设计动机&#xff1f; channel是一种不同协程之间实现异步通信的数据结构。golang中有一种很经典的说法是要基于通信实现共享内存&#xff0c;而不…

grpc教程——proto文件转go

【1】编写一个proto文件 syntax "proto3"; package myproto;service NC{rpc SayStatus (NCRequest) returns (NCResponse){} }message NCRequest{ string name 1; } message NCResponse{string status 1; } 【2】转换&#xff1a;protoc --go_out. myservice.pro…

重生奇迹MU 正确获取金币的方式

在游戏中&#xff0c;需要消耗大量的金币来购买红药等物品。因此&#xff0c;如何快速赚取金币也成为玩家关注的问题。您知道有哪些方法可以快速地获得金币吗&#xff1f; 一、哪个地图上是最适合打金币的很关键 在选择打钱的地方时&#xff0c;不能盲目行动&#xff0c;需要…

安装maven与nexus

安装maven与nexus Maven官网下载地址&#xff1a;http://maven.apache.org cd /data/software/wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.8-bin.tar.gz# 解压 tar xf apache-maven-3.8.1-bin.tar.gz -C /opt/[rooth…

木各力“GERRI”被“GREE”格力无效宣告成功

近日“GERRI”被“GREE”格力无效宣告成功&#xff0c;“GERRI”和“GREE”近似不&#xff0c;如果很近似当初就不会通过初审和下商标注册证&#xff0c;但是如果涉及知名商标和驰名商标&#xff0c;人家就可以异议和无效。 “GERRI”在被无效宣告时&#xff0c;引用了6个相关的…

【启明智显分享】乐鑫ESP32-S3R8方案2.8寸串口屏:高性能低功耗,WIFI/蓝牙无线通信

近年来HMI已经成为大量应用聚焦的主题&#xff0c;在消费类产品通过创新的HMI设计带来增强的连接性和更加身临其境的用户体验之际&#xff0c;工业产品却仍旧在采用物理接口。这些物理接口通常依赖小型显示器或是简单的LED&#xff0c;通过简单的机电开关或按钮来实现HMI交互。…

竞赛 深度学习 大数据 股票预测系统 - python lstm

文章目录 0 前言1 课题意义1.1 股票预测主流方法 2 什么是LSTM2.1 循环神经网络2.1 LSTM诞生 2 如何用LSTM做股票预测2.1 算法构建流程2.2 部分代码 3 实现效果3.1 数据3.2 预测结果项目运行展示开发环境数据获取 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

2.2 Python数据类型详解

第二节&#xff1a;Python数据类型详解 Python作为一种动态类型语言&#xff0c;支持多种数据类型&#xff0c;每种数据类型都有其特定的特点和用途。本章将详细介绍Python中常见的数据类型及其特性&#xff0c;以及如何使用这些数据类型进行编程。 2.2.1 整数 (int) 整数是…

黑马点评-Redis的缓存击穿,缓存雪崩,缓存穿透,互斥锁

文章目录 1.缓存穿透2.缓存雪崩3.缓存击穿3.1 互斥锁 1.缓存穿透 解决办法 写入NULL值到Redis缓存&#xff0c;以后就会命中Redis的控制缓存而不会出现请求直接打到数据库的问题&#xff01; 代码 2.缓存雪崩 这个概念很好理解&#xff0c;雪崩就是无数的小雪花结构突然因…

pandas数据分析(1)

pandas&#xff0c;即Python数据分析库&#xff08;Python data analysis library&#xff09; DataFrame和Series DataFrame&#xff08;数据帧&#xff09;和Series&#xff08;序列&#xff09;是pandas的核心数据结构。DataFrame的主要组件包含索引、列、数据。DataFrame和…

扫描全能王的AI驱动创新与智能高清滤镜技术解析

目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下&#xff0c;文档扫描功能…

云计算【第一阶段(21)】Linux引导过程与服务控制

目录 一、linux操作系统引导过程 1.1、开机自检 1.2、MBR引导 1.3、GRUB菜单 1.4、加载 Linux 内核 1.5、init进程初始化 1.6、简述总结 1.7、初始化进程centos 6和7的区别 二、排除启动类故障 2.1、修复MBR扇区故障 2.1.1、 实验 2.2、修复grub引导故障 2.2.1、实…

从AICore到TensorCore:华为910B与NVIDIA A100全面分析

华为NPU 910B与NVIDIA GPU A100性能对比&#xff0c;从AICore到TensorCore&#xff0c;展现各自计算核心优势。 AI 2.0浪潮汹涌而来&#xff0c;若仍将其与区块链等量齐观&#xff0c;视作炒作泡沫&#xff0c;则将错失新时代的巨大机遇。现在&#xff0c;就是把握AI时代的关键…

深入解析高斯过程:数学理论、重要概念和直观可视化全解

与其他算法相比&#xff0c;高斯过程不那么流行&#xff0c;但是如果你只有少量的数据&#xff0c;那么可以首先高斯过程。在这篇文章中&#xff0c;我将详细介绍高斯过程。并可视化和Python实现来解释高斯过程的数学理论。 多元高斯分布 多元高斯分布是理解高斯过程所必须的概…

图书管理系统(附源码)

前言&#xff1a;前面一起和小伙伴们学习了较为完整的Java语法体系&#xff0c;那么本篇将运用这些知识连串在一起实现图书管理系统。 目录 一、总体设计 二、书籍与书架 书籍&#xff08;Book&#xff09; 书架&#xff08;Booklist&#xff09; 三、对图书的相关操作 I…

java将html转成图片

java 将html转成图片 1.导入jar2.代码3.展示结果4.注意事项 最近有一个需求需要根据指定的样式生成图片&#xff0c;使用java原生技术有些麻烦&#xff0c;所以上网搜了下案例&#xff0c;最后发现最好用的还是html2image&#xff0c;这里进行简单总结下。 1.导入jar <!-- 用…