地瓜机器人 · 2022年08月17日 · 江苏

开发者说 | AI操控机器人系列第三期——语音控制(另附直播预约通道)

预约通道:

直播海报08256.jpg

课程正文:

摘要:

在AI操控机器人系列第二期的人体跟随教程中,身为地平线资深程序员的奶爸朱靠,使用地平线发布的机器人开发平台TogetherROS软件栈,搭建了人体跟随机器人。

同为开发者的梁雪,期待AI的世界,想让自己的生活也AI一把,并且一向是个能动口绝不动手的懒人,于是热衷于体验各类AI机器人,尤其是动动口就能操控的机器人,想着有朝一日过上“能只动口绝不动手”的生活,于是乎,就有了下面的这些体验。

产品A:说说话确实是能跟着走一走,but,我真的不想说完话之后还需要自己向右转才能引导它右转呀……

产品B:为什么还是得动动手,遥控来操控……噢,可达不到懒人预期呢。

难道就没有动动口就能让机器人运动,达到控制机器人的目的吗?答案必然是,有!下面地平线AI操控机器人系列——语音控制闪亮登场。

一、功能介绍

大家先看一下最终实现的功能。

20220815-190006.gif

从开始语音到机器人依据指令快速且准确的运动,得益于地平线旭日®️X3派上5Tops算力的BPU,可以实现低延迟算法推理能力,以及语音算法模块实现的远场(3~5米)降噪、回声消除,高准确率的asr识别功能。开始码代码前,先来简单分析一下人体跟随机器人需要具备哪些基本模块。

语音输入——麦克风

旭日X3派采用的是麦克风阵列硬件拾音,通过麦克风采集到音频之后交给后面的智能语音分析模块处理。

智能语音感知

智能语音算法对原始音频进行处理,对音频进行降噪并且识别出语音,同时还能输出语音声源定位的DOA角度。

交互

识别出语音之后,定义并且实现不同语音对应的不同功能应用,比如“向前走”语音控制机器人向前运动。

控制

根据“交互”模块输出的控制指令,实现对机器人的机械控制。

机器人本体

当然还需要一个具备运动能力的机器人本体,接收控制指令并控制电机运动,最终实现通过语音控制机器人运动的效果。

地平线发布的机器人开发平台TogetherROS软件栈内置了丰富易用的机器人开发组件,包含搭建一个智能机器人应用(如机器人语音控制)所涉及到的所有功能模块,完全开源免费,并允许开发者二次开发。

二、准备工作

准备搭建机器人人体跟随应用案例的硬件设备和软件包。

硬件

①旭日X3派
3.png
②麦克风阵列及转接板
640.jpg
③机器人
5.png
本次使用本末的轮足机器人来介绍,没有的开发者们也不用担心,文章后面会介绍自己搭建机器人的方式。

安装系统
参考旭日X3派的用户手册的安装系统章节,安装完成(或者已经安装过)需要更新系统。

系统配置
配置旭日X3派的无线网络,参考旭日X3派的用户手册的无线网络章节。

安装TogetherROS
使用apt命令通过DEB包安装TogetherROS。登录旭日X3派ssh root@192.168.1.147,执行命令:

root@ubuntu:~# sudo apt install hhp
root@ubuntu:/userdata# ls /opt/
tros

可以看到TogetherROS已安装在/opt目录下,说明安装成功。至此,准备工作结束,下面开始使用这些硬件设备和软件包搭建机器人人体跟随App。

三、使用介绍

接下来开始操作各个功能模块,再一步步组装起来,分别验证其功能。

安装音频麦克风

首先需要将旭日X3派与音频转接板连接起来,安装好的旭日X3派以及音频板图如下:
接口.jpg
直接使用TogetherROS中的ROS package测试麦克风阵列的功能,通过脚本加载麦克风阵列驱动,并且启动智能语音识别模块。登录旭日X3派ssh root@192.168.1.147后,在终端(以下默认终端都是通过ssh登录)中输入以下命令启动:

# 配置TogetherROS环境
source /opt/tros/setup.bash
# 从TogetherROS的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/lib/hobot_audio/config/ .
# 加载音频驱动,设备启动之后只需要加载一次
bash config/audio.sh
#启动launch文件
ros2 launch hobot_audio hobot_audio.launch.py

智能语音识别模块默认发布的智能语音消息话题名为:/audio_smart, 在另一个终端执行使用ros2 topic list命令可以查询到此topic信息:

$ ros2 topic list
/audio_smart

语音识别和命令词控制小车运动功能

旭日X3派上打开一个终端,启动语音识别和控制的脚本

# 配置TogetherROS环境
source /opt/tros/setup.bash
# 从TogetherROS的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/lib/hobot_audio/config/ .
# 加载音频驱动,设备启动之后只需要加载一次
bash config/audio.sh
#启动launch文件
ros2 launch audio_control hobot_audio_control.launch.py

在当前终端执行ros2 topic echo /cmd_vel命令查询旭日X3派上的话题信息,当语音控制“向前走”,终端输出如下:

linear:
  x: 0.30000001192092896
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0

说明智能语音识别算法和交互功能的软件包已安装成功,并能够通过/cmd_vel话题对外发布机器人运动控制消息。

将旭日X3派安装在机器人上

首先,需要将音频板安装在旭日X3派上,其次,将安装了线性四麦麦克风阵列的旭日X3派直接固定在机器人上,并将机器人的USB控制接口插到旭日X3派上。安装效果如下图:
10 (3).jpg

安装好后,可以通过控制机器人运动查看是否成功安装。在旭日X3派上启动本末双足机器人运行控制Node,打开一个终端,执行如下命令:

# 配置TogetherROS环境
source /opt/tros/setup.bash
#启动本末机器人运动控制package
ros2 run diablo_sdk ros_bridge_example

旭日X3派上重新打开一个终端,通过发布/cmd_vel话题消息控制机器人以0.3r/s的速度转动:


# 配置TogetherROS环境
source /opt/tros/setup.bash
ros2 topic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.3}}'

机器人收到控制指令后转动的效果如下:

转.gif

四、完整的机器人语音控制效果

旭日X3派上打开一个终端,启动智能语音识别和语音控制脚本

# 配置TogetherROS环境
source /opt/tros/setup.bash
# 从TogetherROS的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/lib/hobot_audio/config/ .
# 加载音频驱动,设备启动只需要加载一次
bash config/audio.sh
#启动语音控制launch文件
ros2 launch audio_control hobot_audio_control.launch.py

旭日X3派上打开一个终端,启动机器人运动控制Node

# 配置TogetherROS环境
source /opt/tros/setup.bash
#启动本末机器人运动控制Node
ros2 run diablo_sdk ros_bridge_example

通过语音控制机器人运动
20220815-190006.gif

五、原理分析

对于一个复杂的机器人系统,一般在机器人上配置上位机和下位机两种处理器。语音控制机器人由两部分组成,分为上位机和下位机。各部分详细组成如下图:
17.jfif!

六、语音控制进阶

智能语音识别Node中,设备唤醒词和命令词默认配置/opt/tros/lib/hobot_audio/config/hrsc/cmd_word.json文件下(当然,若用户将此config文件夹拷贝到了其他路径,那以实际使用的配置路径为准):

{
    "cmd_word": [
        "地平线你好",
        "向前走",
        "向后退",
        "向左转",
        "向右转",
        "停止运动"
    ]
}

配置文件的第一项为唤醒词,后面的是命令词,用户可以根据需要进行配置,实现语音操作的自定义。

本文转自地平线开发者社区,完整文章内容详见:https://developer.horizon.ai/...

推荐阅读
关注数
1254
内容数
69
我是地瓜机器人,为加速智能生长而来
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息