0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实现使用语音控制机械臂运动

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2023-03-17 18:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基于语音识别技术的机器人手臂控制智能化尝试

介绍:

在电影《钢铁侠》中,我们看到托尼·斯塔克在建造设备时与人工智能贾维斯交流。托尼向贾维斯描述了他需要的零件,贾维斯控制机械臂协助托尼完成任务。随着当今技术的发展,这种实现只是时间问题。因此,我决定尝试自己实现这个功能,用语音控制来操作机械臂,实现人工智能的简单应用。

我全权负责连接和控制机械臂和语音开发板,通过特定命令触发机械臂的运动。这是一个具有挑战性的项目,因为语音控制技术涉及多个方面,如语音识别、信号处理和机器人控制,需要我学习和理解相关知识。通过这篇文章,我希望分享我的项目实施过程、成就和经验教训,以激励和帮助在机器人和语音控制领域工作的同学。

为了实施这个项目,我首先需要解决两个主要问题:如何处理语音信号以及如何控制机械臂。

处理语音信号:

处理语音信号的步骤:

● 硬件选择:选择合适的开发板(Arduino树莓派等)。

● 麦克风信号处理:选择合适的麦克风进行采集,通过模数转换器将采集到的语音信号转换为数字信号

● 信号处理:采集到的信号通过降噪、滤波等方式进行处理。提取有用的特征,并使用语音识别算法处理特征信号,以将数字信号输出到计算机。

控制机械臂:

● 使用简单易操作的机械臂。

以上是解决两个主要问题的方法。然而,经过研究,开发可以处理语音信号的开发板需要大量的工作!幸运的是,现在市场上有集成语音开发板,我们可以直接购买一个来使用。

HLK-V20 语音开发板

HLK-V20 开发板是一个具有两个 IO 接口的复杂板 - 一个用于语音输出,另一个用于语音输入。它可以通过串行端口连接到计算机。

MyCobot 280 M5Stack 2023 机械臂

对于机械臂,我选择了流行的桌面机械臂,myCobot 280 M5Stack 2023,由大象机器人公司开发。该机械臂最近进行了重大的软件更新,实现了20ms的串行通信速度,并提供与PythonC++等流行编程语言兼容的丰富接口。我选择这个机械臂有几个原因,包括它紧凑的尺寸、丰富的 Python API 接口(我擅长编程)以及易于安装和使用。

编程语言: Python 3.7+

平台: windows11

使用的Python库:serial,pymycobot,time。

项目的发展

在项目的开发中,涉及四个主要步骤:

● 语音输入

● 开发板检索语音信息并传输到PC

● PC处理接收到的信息

● 向机械臂发送运动控制命令以进行运动

为了观察开发板如何传输数据以及返回的数据类型,使用Python中的串行库来操作串行端口。该库具有从串行端口打开、关闭、读取和写入数据的方法。

'''
For instance, the serial.Serial() method is used to open the serial port and connect it to the PC, while the serial.read() method reads the data transmitted from the serial port.
'''
import serial
s = serial.Serial("COM9",115200)
r = s.read()
while True:
print(r)

复制

这是从 read() 获取的数据。

通过分析从开发板传输的数据,开发板的唤醒词被识别为“wakeup_uni”,而关键字“uArTcp”表示下一个命令的开始。

发现接收到的数据连接在一起,每次输入命令时,都会与前一个命令连接在一起。

发现接收到的数据连接在一起,每次输入命令时,都会与前一个命令连接在一起。为了检查开发板是否已收到语音输入,使用了 if a in b: 语句,并预先准备了输入命令及其相应的关键字。例如,唤醒词设置为“wakeup_uni”,并设置了 4 个提示词以进行测试。

#set prompt word
hi_mycobot = b'openled'
dancing = b'zengjialiangdu'
nod_head = b'jianxiaoliangdu'
go_back = b'closeled'
# run frame
while True:
r += s.read()
if wake_up in r:
print("wake")
wake = True
r = b''
if wake and hi_mycobot in r:
print("Hi myCobot")
r = b''
if wake and dancing in r:
print("dancing")
r = b''
if wake and nod_head in r:
print('nod your head')
r = b''
if wake and go_back in r:
print('Go back')
r = b''
if wake and _exit in r:
print("exit")
r = b''
# print(r)s

复制

这是测试结果

pymycobot库是由Elephant Robotics开发的机械臂API调用接口库。具体的使用方法在Gitbook(由Elephant Robotics提供)上。

# import library
from pymycobot import Mycobot
import time
# Create an instance object for later use
mc = Mycobot('COM9',115200)
#Control the mechanical arm to move at a speed of 70 according to the angle in the list,send_angles([angles],speed)
mc.send_angles([0.87,(-50.44),47.28,0.35,(-0.43),(-0.26)],70)
# Execute the next command after a delay of x seconds (the movement of the robotic arm takes time)
time.sleep(x)

复制

接下来,将代码的两个部分组合在一起。

import serial
from pymycobot import MyCobot
import time
s = serial.Serial("COM6",115200)
mc = MyCobot('COM3',115200)
r = b''
wake_up = b'wakeup_uni'
_exit = b'exitUni'
hi_mycobot = b'openled'
dancing = b'zengjialiangdu'
nod_head = b'jianxiaoliangdu'
go_back = b'closeled'
wake = False
while True:
r += s.read()
if wake_up in r:
print("wake")
wake = True
r = b''
if wake and hi_mycobot in r:
print("Hi myCobot")
# say hi shake with you
mc.send_angles([0.87,(-50.44),47.28,0.35,(-0.43),(-0.26)],70)
time.sleep(1)
for count in range(3):
mc.send_angle(1,30,80)
time.sleep(1)
mc.send_angle(1,(-30),80)
time.sleep(1)
mc.send_angles([0,0,0,0,0,0],70)
r = b''
if wake and dancing in r:
print("dancing")
mc.send_angles([0,0,0,0,0,0],80)
time.sleep(1)
for count in range(2):
mc.send_angles([(-0.17),(-94.3),118.91,(-39.9),59.32,(-0.52)],80)
time.sleep(1.2)
mc.send_angles([67.85,(-3.42),(-116.98),106.52,23.11,(-0.52)],80)
time.sleep(1.7)
mc.send_angles([(-38.14),(-115.04),116.63,69.69,3.25,(-11.6)],80)
time.sleep(1.7)
mc.send_angles([2.72,(-26.19),140.27,(-110.74),(-6.15),(-11.25)],80)
time.sleep(1)
mc.send_angles([0,0,0,0,0,0],80)
r = b''
if wake and nod_head in r:
print('nod your head')
mc.send_angles([0,0,0,0,0,0],70)
time.sleep(1)
mc.send_angles([3.07,(-86.3),75.32,11.86,2.72,(-0.35)],70)
time.sleep(0.5)
for count in range(4):
mc.send_angle(4,13,70)
time.sleep(0.5)
mc.send_angle(4,(-60),70)
time.sleep(1)
mc.send_angle(4,13,70)
time.sleep(0.5)
mc.send_angles([0,0,0,0,0,0],70)
r = b''
if wake and go_back in r:
print('Go back')
mc.send_angles([12.83,(-138.95),156.09,(-12.3),(-12.91),35.41],70)
r = b''
if wake and _exit in r:
print("exit")
r = b''

三. 经验和教训

在完成这个项目的过程中,我收获了很多宝贵的经验和见解。首先,我意识到一个项目的完成不仅取决于对技术的掌握,还需要事先的研究和理解。当我在研究语音识别开发板的制作时,我发现工作量非常大,实现起来会非常困难。但是,市场上已经有许多成熟的技术和工具。我们只需要选择合理的组合和整合。其次,项目的圆满完成需要明确的框架和充分的准备。在这个项目中,我需要了解语音识别算法、机械臂设计和控制技术,掌握硬件设备和软件开发工具的使用方法和性能特点。

在这个项目中,我成功地将语音识别技术与机械臂控制技术相结合,实现了机械臂的语音控制。虽然这个项目的规模相对较小,但它代表了人工智能技术在现实生活中的应用和发展趋势。虽然这只是一个人工智能项目的原型,但它的完成对我来说是一次宝贵的经验。在以后的研究中,我将继续探索更多相关信息,以进一步完善这个项目。如果您有任何好的想法,请在下面发表评论。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 语音控制
    +关注

    关注

    5

    文章

    510

    浏览量

    29563
  • 机械臂
    +关注

    关注

    13

    文章

    584

    浏览量

    25970
  • 大象机器人
    +关注

    关注

    0

    文章

    86

    浏览量

    327
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【睿擎派】云端一体,多种通信协议构建机械运动控制系统| 技术集结

    国产化替代的潮流。本项目所构建的是一个原型系统,核心功能架构如下:Web端采用Three.js技术栈,实现机械运行状态的3D可视化展示;系统通过MQTT协议与睿擎
    的头像 发表于 12-03 19:17 1081次阅读
    【睿擎派】云端一体,多种通信协议构建<b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>运动</b><b class='flag-5'>控制</b>系统| 技术集结

    复合机器人对比传统AGV和机械的优势何在?

    复合机器人对比传统AGV和机械的优势,核心在于它突破了单一设备的功能局限,实现了“移动+操作”的深度协同,尤其在上下料和物料转运场景中优势显著。经世智能复合机器人:重新定义上下料与物料转运的效率
    的头像 发表于 11-21 15:32 1111次阅读
    复合机器人对比传统AGV和<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的优势何在?

    如何使用语音指令控制串口输出

    在上两篇文章中, 我们实现了GPIO输出, 和PWM输出(组件介绍在前文中已经介绍过 ),在本章节我们将继续进行使用语音指令控制串口输出。
    的头像 发表于 09-25 15:47 1903次阅读
    如何使<b class='flag-5'>用语音</b>指令<b class='flag-5'>控制</b>串口输出

    机器人机械效率提升的革命性解决方案:上海永铭电容器实践

    在现代自动化与精密制造中,机器人机械(人形/工业)的稳定性与效率至关重要。电容器作为电路中的基本组件,对机器人机械的性能发挥着至关重要的作用。01机器人
    的头像 发表于 09-01 10:06 390次阅读
    机器人<b class='flag-5'>机械</b><b class='flag-5'>臂</b>效率提升的革命性解决方案:上海永铭电容器实践

    EtherCAT转Profinet协议转换网关实现PLC与机械通讯的配置案例

    在某汽车零部件制造企业的生产线中,面临着设备协议不兼容的问题。该生产线的核心控制系统采用的是西门子S7-1500PLC,其通信协议为Profinet,而用于零部件加工的机械则采用EtherCAT协议。由于协议差异,
    的头像 发表于 08-30 10:55 619次阅读
    EtherCAT转Profinet协议转换网关<b class='flag-5'>实现</b>PLC与<b class='flag-5'>机械</b><b class='flag-5'>臂</b>通讯的配置案例

    创想智控焊缝跟踪+发那科机器人实现工程机械架焊接智能化升级

    焊也受到工件装配误差等因素的影响。随着智能制造和工业自动化的发展,如何借助先进的传感与控制技术,实现工程机械架焊接的精准化与自动化,是工程机械
    的头像 发表于 08-16 15:17 575次阅读

    协作机械产品介绍

    电子发烧友们、工业自动化从业者、科研工作者们注意啦!今天给大家重磅介绍一款在机械领域表现极为亮眼的产品——协作机械,它正以卓越性能重塑行业格局!☎(壹捌伍 柒零零玖 壹壹捌陆)卓越
    发表于 08-07 17:20 0次下载

    PROFINET转MODBUS TCP网关在机械通信操作中的应用研究

    在特定的汽车零部件生产工厂焊接生产线上,机械被应用于焊接作业,其控制体系基于Profinet协议。同时,工厂的自动化控制体系以西门子S7-1200PLC为核心,通过ModbusTCP
    的头像 发表于 07-03 16:56 420次阅读
    PROFINET转MODBUS TCP网关在<b class='flag-5'>机械</b><b class='flag-5'>臂</b>通信操作中的应用研究

    语音控制模块工作原理

    语音控制芯片或者说模块的应用前景越来越广泛,无论是设计方案还是厂家生产的产品在越来越多越来越频繁的使用语音控制芯片。当然行业内更多的是称呼为语音
    的头像 发表于 06-17 11:49 1004次阅读
    <b class='flag-5'>语音</b><b class='flag-5'>控制</b>模块工作原理

    运动控制模块:Delta机械手柔性上下料开发零门槛!

    运动运动控制模块结合第三方视觉实现Delta机械手柔性上下料应用开发
    的头像 发表于 05-23 10:29 515次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制</b>模块:Delta<b class='flag-5'>机械</b>手柔性上下料开发零门槛!

    大象机器人携手进迭时空推出 RISC-V 全栈开源六轴机械产品

    、lightrack)等模型。仓库将持续更新支持最前沿的模型应用,满足各种复杂 AI任务。 AI智慧零售套件 通过CPU融合AI的创新设计,“myCobot 280 RISC-V”首次将大模型推理与机械控制
    发表于 04-25 17:59

    控制Mercury X1和Mercury B1机械而设计的创新外骨骼

    今天,我们将介绍一款专为控制 Mercury X1 和 Mercury B1 机械而设计的创新外骨骼。这种外骨骼以人类手臂的结构为蓝本,可实现直观和精确的
    的头像 发表于 02-11 09:50 965次阅读
    为<b class='flag-5'>控制</b>Mercury X1和Mercury B1<b class='flag-5'>机械</b><b class='flag-5'>臂</b>而设计的创新外骨骼

    如何使用PLC控制myCobot 320机械

    根据持续的用户反馈,目前市场对 PLC 与 myCobot 系统集成的需求很大,因此本文提供的案例介绍了如何使用 PLC(可编程逻辑控制器)来控制 myCobot 320 机械。本案
    的头像 发表于 01-23 14:03 2178次阅读
    如何使用PLC<b class='flag-5'>控制</b>myCobot 320<b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    深度解析!RK3568 加持机械是如何实现颜色识别与抓取的?

    ;2、掌握机械识别颜色抓取积木的实现方法。三、实验原理颜色识别抓取积木功能:实现识别出不同颜色的积木,机械
    的头像 发表于 01-15 08:07 1257次阅读
    深度解析!RK3568 加持<b class='flag-5'>机械</b><b class='flag-5'>臂</b>是如何<b class='flag-5'>实现</b>颜色识别与抓取的?

    RK3568国产实验箱+人工智能机械:跳舞、叠罗汉、夹方块、积木搬运案例全解!

    基于语音控制实现机械特定动作的方法。三、实验原理程序功能通过语音
    的头像 发表于 12-12 19:01 1861次阅读
    RK3568国产实验箱+人工智能<b class='flag-5'>机械</b><b class='flag-5'>臂</b>:跳舞、叠罗汉、夹方块、积木搬运案例全解!