基于语音控制的机器人下棋系统开发
2022-09-14张炳凯郑雯欣张洁豪张秋菊
张炳凯,刘 浩,郑雯欣,嵇 淮,张洁豪,李 挺,张秋菊
(江南大学机械工程学院,江苏 无锡 214122)
引言
近年来,机器人技术和人工智能发展迅速,服务机器人在日常生活中的应用越来越广泛,同时我国人口老龄化问题日趋严重,人们对老年服务机器人的需求不断增加。对于服务机器人来说,方便、自然、快捷的人机交互方式是智能化的重要体现,而语音交互是其中的一种主要交互方式。语音交互即通过语言让机器能像人类一样听懂对方传达的信息,是由计算机对语音信号进行处理和分析,然后将其转变成与原信号相对应的文本和命令,通过机器执行和表达,从而实现用户与机器之间的信息交换的过程[1]。
作为一种智能的人机交互模式,语音交互在智能家居[2]、医疗、门禁系统、轨道交通[3]、救援[4]、身份识别等领域有着广泛的应用,随着技术的发展,语音交互还将在更多领域服务于人类。
本研究采用语音交互方式,通过LD3320 芯片识别人声,由STM32 控制Dobot 机械臂,开发了语音控制下棋系统,并进行了实验。该研究将语音控制机器人和棋盘游戏相结合,让行动不便的老人以及残疾人士通过语音便可进行博弈,也可以作为一种陪伴老人和孩童的娱乐教育功能拓展。
1 机器人下棋系统组成
机器人下棋系统由机械臂、语音控制模块和棋盘组成(见图1)。老人或残障人士可通过说话来控制机器人进行下棋。其中下棋机器人选用Dobot 四自由度串联机械臂,有四个转动关节,由四台步进电机控制,有着两个角度传感器,动作精度可达0.2 mm,可以保证棋子精确下落。末端执行器采用吸盘,通过气泵工作以完成下棋动作,语音控制模块由LD3320 语音识别芯片和STM32 主控板组成。
图1 机器人下棋系统组成
棋盘(见图2),考虑到机械臂的运动范围,该棋盘采用4×4 布置,以数字0~15 标号,通过按键控制机械臂进行示教来获取坐标点的位置,并以列表的形式写入程序以完成标定。在使用时,使用者只需说出对应棋子的数字代号,便可实现棋子的移动(见图2)。
图2 4×4 棋盘
2 语音识别与交互功能设计
2.1 语音识别原理
一个标准的语音识别过程包括信号处理与分析、特征提取、模型库训练和模式匹配四部分,是通过比较已知与未知以获得结果的过程。根据语音识别对象的不同,又将语音识别分成特定人语音识别和非特定人语音识别两类。目前语音识别中常用的算法有动态时间规整法(DTW)[5]、隐马尔可夫模型法(HMM)[6]、人工神经网络法(ANN)。其中DTW 法采集的语音样本少,避免了FFT 运算且训练相对简单,多用于小型语音识别系统。HMM 是一种统计模型,需要大量的数据来反复训练,工作时从采集到的语音信号中进行特征提取,并与已创建的模型进行参数匹配,将最好的匹配状态作为输出结果。HMM 法的主要优点是识别率高,抗噪性强及鲁棒性好,已成为非特定人语音识别的主要方法。ANN 法采用多个处理单元模拟人类神经元活动,具有高度的自适应性和较好的容错性,常用于认知任务,多与HMM 算法相配合使用。本研究采用的LD3320 语音识别芯片是一款采用HMM 算法的非特定人语音识别(SI-ASR)芯片,集成了语音信号处理和其他相关的外部电路,包括A/D、D/A 转换电路等,不需要外接Flash 和RAM[7]。芯片内部整合了事先创建好的语音模型库和算法,可独立完成语音信号的处理和识别工作,识别准确率可达95%。该芯片与STM32之间有串口通信与SPI 通信两种通信模式,本研究采用SPI 通信方式控制该芯片。
2.2 语音交互的实现
表1 给出了该下棋系统所用到的部分语音指令,语音信号在STM32 主控板中被转为数字代码,以便于处理。使用过程中,语音识别芯片将信号拾取后进行处理,将识别结果送入STM32 中与模型库进行匹配,并根据匹配结果选取运动路径,根据该路径输出对机械臂和末端执行器的驱动指令以完成下棋操作。
表1 语音指令表(部分)
3 机器人下棋功能的开发
3.1 Dobot 机械臂的运动学模型
Dobot 机械臂共有4 个运动关节,本研究末关节为吸盘,并未设计第4 个转动关节,只需对3 个关节做运动学建模。如图3 建立各关节的X 轴、Y 轴、Z轴。Z 轴和驱动轴同向;X 轴针对Z 轴平行和垂直两种情况分别确定。基坐标的X 轴取机械臂向正前方为正。坐标系建立后,将Dobot 机械臂在笛卡尔坐标系中进行标准D-H 参数建模,D-H 参数见表2。θ2,θ3由机械臂运动姿态确定,d1,d2,d3为连杆理论长度。机械臂的运动范围:底座-90°~90°,大臂运动范围0°~85°,小臂运动范围-10°~90°。
图3 Dobot 机械臂的连杆坐标系
表2 标准D-H 参数表
在机器人正运动学中,连杆坐标系{i}与{i-1}之间的齐次变换i-1iT 与θi、di、αi-1、ai-1之间的关系为
相邻两连杆之间的变换通式为
机器人的逆运动学问题是机器人运动方程的求解,是在已知末端执行器的期望的位置和姿态的情况下,求解机器人相应的各关节变量。设末端执行器的期望位姿为
令(3)式与(4)式相等,便可求得各关节变量。
3.2 下棋功能的开发
本研究采用的运动控制函数为Dobot 控制器中的库函数,如SetPTPCmd()函数发送目标点参数结构体,控制器就可以控制吸盘运动到棋盘中的任意位置。程序中GetPose()函数用来获取末端执行器的实时点坐标参数,进而实现闭环控制。在Dobot 末端装配吸盘,吸盘配合安装了气泵盒,能够牢牢的吸住棋子。SetEndEffectorSuctionCup()函数用来控制吸盘工作。图4 给出了系统的总工作流程图。
图4 系统工作流程
3.3 STM32 主控板与Dobot 机械臂控制器的通信
主控板与机械臂采用串口通信的方式,通信参数中波特率设置为115 200 bps。因物理层每次发送和接受8 位原始数据,本研究所设计的控制系统每次发送的数据远大于8 位,所以Dobot 制定了通信协议来保证数据传输的开始、结束和校验数据的准确性。因此,STM32 主控板每次都是发送一串包含包头、负载帧长、负载帧和数据校验的数据包,来控制机械臂。本研究中采用循环队列的方式实现一次发送一个超过8位原始数据的数据包给Dobot。每当队列发送了一个8位数据,自动打开串口发送中断,继续发送下一个,直至队列中的数据全部发送出去,保证串口的发送中断不被打开。
4 机器人下棋系统的实验验证
本研究搭建了图1 所示的机器人下棋系统,为了测试该语音控制系统的语音识别准确率,对上述系统进行了实验验证,分别在实验室的安静环境中和人为嘈杂环境中对16 个坐标点进行了反复测试,测试指令包含三种不同人声共32 条指令。表3 给出了机器人下棋系统部分语音信号分别在安静和嘈杂环境中的识别准确率。
表3 机器人下棋系统语音信号识别准确率(部分)(%)
根据测试结果,在相对安静的环境中识别率可达92%以上,而在相对嘈杂的环境中,识别率可达到85%,满足了语音控制机器人下棋的现实要求。
5 结论
本研究设计开发了一款基于语音控制的机器人下棋系统。该系统由语音识别芯片、STM32 主控板及Dobot 机械臂组成,采用语音交互的方式控制机器人下棋。经测试实验,本系统能保证语音识别的准确率,能实现五子棋的下棋要求。为老人及残障人士的娱乐提供了一种新的方式,同时也为娱乐和教育提供了参考与借鉴。
在下五子棋的基础上,该系统可拓展用于跳棋、围棋等活动。将该系统与图形处理模块结合,对象棋棋子进行识别,可实现象棋的博弈等。