跳到主要内容

5.4.6 语音控制小车运动

功能介绍

语音控制小车运动功能通过语音控制机器人向前、向后、向左、向右运动,需要搭配 D-Robotics RDK 机器人操作系统的智能语音模块一起使用。流程如下图:

语音控制小车运动功能整体软件流程图

APP 以 PC 端 Gazebo 仿真环境下的虚拟小车举例,发布的控制指令也可以直接用于控制实物小车。

代码仓库: (https://github.com/D-Robotics/audio_control.git)

支持平台

平台运行方式示例功能
RDK X3Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble)启动智能语音模块解析语音信息并进行语音控制,通过 Gazebo 展示控制效果
RDK X5, RDK X5 ModuleUbuntu 22.04 (Humble)启动智能语音模块解析语音信息并进行语音控制,通过 Gazebo 展示控制效果

注意:仅支持 RDK X3,RDK X3 Module 暂不支持。

准备工作

RDK 平台

  1. RDK 已烧录好 Ubuntu 镜像。

  2. RDK 已成功安装 TogetheROS.Bot。

  3. RDK 已成功安装智能语音算法包,安装命令:

    sudo apt update
    sudo apt install tros-hobot-audio
注意

如果 sudo apt update 命令执行失败或报错,请查看常见问题章节的 Q10: apt update 命令执行失败或报错如何处理? 解决。

注意

如果 sudo apt update 命令执行失败或报错,请查看常见问题章节的 Q10: apt update 命令执行失败或报错如何处理? 解决。

  1. RDK 已成功接好适配的音频板(可参考智能语音章节)。

  2. 和 RDK 在同一网段(有线或者连接同一无线网,IP 地址前三段需保持一致)的 PC,PC 端需要安装的环境包括:

  • Ubuntu 20.04 系统和ROS2 Foxy 桌面版
  • Gazebo 和 Turtlebot3 相关的功能包,安装方法:
sudo apt-get install ros-foxy-gazebo-*
sudo apt install ros-foxy-turtlebot3
sudo apt install ros-foxy-turtlebot3-simulations

使用介绍

PC 端启动仿真环境:

source /opt/ros/foxy/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo empty_world.launch.py

启动成功后,仿真环境中小车效果如下:

Gazebo 仿真环境中小车启动后的场景效果

RDK 平台启动程序:

  1. 拷贝音频配置文件
# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的配置文件。
cp -r /opt/tros/${TROS_DISTRO}/lib/hobot_audio/config/ .
  1. 确认麦克风设备

    麦克风设备号通过配置文件 config/audio_config.jsonmicphone_name 字段设置,默认为"hw:0,0",表示音频设备 Card0 Device0,设备号可通过命令 ls /dev/snd 查看如:"pcmC0D1c";最后字母 c 表示 capture 设备,C0 表示 Card0,D1 表示 Device1,修改参数为"hw:0,1"。

  2. 启动程序

    # 配置tros.b环境
    source /opt/tros/setup.bash
    #启动launch文件
    ros2 launch audio_control audio_control.launch.py

    程序启动成功后,可通过命令词“向前走”、“向后退”、“向左转”,“向右转”,“停止运动”控制小车运动。

结果分析

在 RDK 运行终端输出如下信息:

        This is audio control package.

============================================
audio control usage

Wake up device is "D-Robotics 你好".
Audio control commnad word definitions are:
"向前走": move front.
"向后退": move back.
"向右转": rotate robot to right.
"向左转": rotate robot to left.
============================================

以上 log 截取了一段音频控制 pkg 启动后的输出。log 内容显示,此语音控制模块配置的设备唤醒词是 “D-Robotics 你好”,控制小车运动的命令词有:“向前走”、“向后退”、“向左转”,“向右转”。

PC 端在终端使用 ros2 topic list 命令可以查询到 RDK 的 topic 信息:

$ ros2 topic list
/audio_smart
/cmd_vel

其中 /audio_smart 是 X3 发布的包含智能语音结果的算法 msg, /cmd_vel 是 RDK 发布的运动控制指令。

PC 端在终端使用 ros2 topic echo /cmd_vel 命令可以查看到 RDK 发布的运动控制指令:

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

PC 端仿真环境中小车跟随语音控制命令词的指示进行运动,仿真小车运动效果如下:

仿真小车跟随语音控制命令词运动的效果动图