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

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

3天内不再提示

自然语言控制机械臂:ChatGPT与机器人技术的融合创新(下)

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2024-04-11 15:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言


在我们的上一篇文章中,我们探索了如何将ChatGPT集成到myCobot 280机械臂中,实现了一个通过自然语言控制机械臂的系统。我们详细介绍了项目的动机、使用的关键技术如ChatGPT和Google的Speech-to-text服务,以及我们是如何通过pymycobot模块来控制机械臂的。通过将自然语言处理和机械臂控制相结合,我们的项目旨在降低机器人编程的门槛,使得非专业人士也能轻松地进行机器人编程和实验。

接下来,在这篇文章中,我们将讨论在开发这一系统过程中遇到的挑战,我们是如何克服这些挑战的,以及项目未来的扩展可能性。我们的目标是深入了解技术实施的具体问题,并探索该系统未来发展的新方向。

wKgZomYXhL2AWINGAHjQGzQa6LU646.png

开发当中遇到的困难


在开发集成了ChatGPT的mycobot 280机械臂控制系统的过程中,我面临了几个主要的技术挑战。

1.语音识别的准确性和响应时间


首先,我遇到的挑战是语音识别的准确性和反应时间。尽管使用了Google的Speech-to-text,但在实际应用中,我发现它有时难以准确识别专业术语或在嘈杂环境中捕捉语音指令。可能是因为不太理解底层逻辑运行的一个原理是什么,也不知道如何来正确的使用。此外,从语音输入到文本输出的过程延迟较长,如何来判断这句话是不是说完了,通常响应的时间较久。

wKgZomYXjQiAdddWAAA5T4Pbqmk535.png

在我说完之后,大概会有3s左右的响应时间。

2.OpenAI API的实用性和地域限制


ChatGPT的API 是整个项目的核心功能点,没有了他就不能实现AI的机械臂控制系统了。在一开始测试代码的时候我用的是WEB版本的ChatGPT,一开始没有考虑到使用API是一个比较大的问题。

因为地区的问题,没有办法直接通过API进行访问OpenAI,会出现网络延迟,不能够使用代理等软件来实现访问。除此之外还得确保网络的稳定性才能够快快速的进行处理。

wKgZomYXjTqAJnVDAAB5lnQ5YAc478.png

3.自然语言转指令的处理


如果解决了上边的生成代码的问题,我们将会得到类似于命令行的字符串,需要将它转变成可以编译的代码。一开始只考虑到了单行的命令行

"robot.move_to_zero()"


要将字符串转化成执行的代码可以用到python的getattr(),他是一个内置函数,用于获取对象的属性值。

getattr(object, name[, default]) object:表示要获取属性的对象。 name:表示要获取的属性的名称。 default:可选参数,表示如果指定的属性不存在时返回的默认值。


getattr() 函数会尝试获取指定对象的指定属性的值。如果对象具有该属性,则返回属性的值;如果对象没有指定的属性,但提供了默认值,则返回默认值;如果对象没有指定的属性,并且没有提供默认值,则会引发 AttributeError 异常。

举个例子直接调用类的方法

class Myclass: def print_1(self): print("halo word") obj = mycalss() getattr(obj,"print_1")() """ halo word


用这个方法就可以完美解决如何将字符串的形式输出可执行的代码了!

接下来是将字符串转化为可执行代码的过程:

我们收到的字符串是代码的形式例如

"robot.move_to_zero()"


我们要将这一部分进行拆分,分为obj和方法两部分,就要用到python当中的分割的方法。

# 以.为节点分为前后两个部分 command_str = "robot.move_to_zero()" parts = command_str.split(".") parts[0] = "robot" part[1] = "move_to_zero()" # 去掉括号保留,方法名 method_name = part[1].split("()")[0] method = getatter(robot,method_name) method() #处理转化方法 def execute_command(instance,command_str): try: #分割对象名和方法 parts = command_str.split(".") if len(parts) != 2 or parts[0] != 'robot': print("Invalid command format.") return method_name = parts[1].split("()")[0] #移除括号 #使用getattr 安全的获取方法引用 if hasattr(instance, method_name): method = getattr(instance, method_name) method() else: print(f"the method {method_name} does not exist!") except Exception as e: print(f"An error occurred: {e}")

这样就完成了,能够处理单行的字符串,但是在测试的时候使用产生多行的命令的时候,这个代码就不行了,它会变成一长串,所以这个方法是无效的。

上述三个是我主要遇到的问题,接下来我将一一的进行解答。

解决方案和应对策略


1.优化语音识别


根据我上述描写的识别延迟的问题,我是通过设置时间来优化我的程序。

# 设置timeout为3秒,phrase_time_limit为10秒 audio = recognizer.listen(source, timeout=3, phrase_time_limit=10)


默认设置没有听到声音,一直的进行监听,我设置了时间上的限制10s,也能够保证我在说完话之后较快的一个响应。

接下来完成的功能代码

import speech_recognition as sr def speech_to_text(): # 初始化识别器 recognizer = sr.Recognizer() with sr.Microphone() as source: print("start speaking...") # 监听源,设置timeout和phrase_time_limit # timeout:在这段时间内没有检测到声音,则停止监听 # phrase_time_limit:监听的最大时长 try: audio = recognizer.listen(source, timeout=3, phrase_time_limit=10) except sr.WaitTimeoutError: print("No speech was detected within the timeout period.") return None try: # 使用Google的语音识别服务 text = recognizer.recognize_google(audio, language='en-US') print("You said: " + text) return text except sr.UnknownValueError: print("Google Speech Recognition could not understand audio") return None except sr.RequestError as e: print(f"Could not request results from Google Speech Recognition service; {e}") return None

这目前已经可以满足大部分的需求了,实际的使用情况下来来看,整个的功能还是比较完整的,能够有效的识别出语音内容,特别是让我说数字的时候他主动转化成阿拉伯数字,在进行交互的过程中省了处理数字的问题。

1.自然语言转化优化


如何来解决多行的指令问题呢。

当我们收到,多行的指令就不能跟之前单纯的分离来进行处理了得考虑其他的方式,以下的情况默认ChatGPT生成的指令是下面这种换行行的字符串,没有带注释的(ChatGPT很喜欢写注释)。

"robot.move_to_zero() robot.grab_position() robot.plus_z_coords(20)"


只要把多个当成一个来看就好了!

# 分割成多行 commands = command_str.strip().split('n') #万一里面存在一些空白符,得先进行处理 for cmd in commands: cmd = cmd.strip() if not cmd: continue # 我们默认obj 是robot,就只需要获取方法名字就可以了 if cmd.startswith("robot."): cmd = cmd[6:] # 分割方法名,和参数 if '(' in cmd and cmd.endswith(")"): method_name, args_str = cmd.split('(', 1) method_name = method_name.strip() #删除前后空格 args_str = args_str.rstrip(")") #删除右侧的) # 移除可能的空白字符,并按逗号分隔参数 args = [arg.strip() for arg in args_str.split(',')] if args_str else []

wKgaomYXj6qAJXcQAABhB7CAPh4382.png

it works!

3.ChatGPT API的问题

关于这个问题,我目前并没能很好的进行解决,大家如果有好的方法可以,私信我跟我沟通,因为地区的问题,并不能够直接的用API获取响应。

项目的扩展功能和未来展望
视觉功能


在本次记录当中,缺少了最重要的一个模块,视觉模块,单独有一个机械臂没有眼睛的话跟瞎子又有什么区别呢。 对于这一部分的开发,会需要花费较大的经历,如果以后有完成一定程度上的开发,我也会及时出来跟大家进行分享。

之前也有看到日本的Shirokuma 开发个类似的项目,用到了ChatGPT4-vision的功能,做了说出目标进行抓取的一个功能。

https://twitter.com/neka_nat/status/1733517151947108717

这个项目也是相当的有意思,给了我不少开发这个项目的想法。

wKgaomYXkAOAfa1rAAbFhnzWR4E408.png

更加智能的“贾维斯”


相信大家的肯定都有看过钢铁侠,随着AI的不断发展,我觉得在不久的将来,肯定会出现一款如同电影当中的机械臂,能够通过交流的方式来帮助你完成一些工作。

近几年也能说是人工智能的突发猛进的几年,AIGC是近期最火热的内容,只要接收到内容就可以生成对应的文本,图像,视频和音频等等。

总结


很期待未来,AI和机器人相结合能够融合到怎样的一个程度,是不是已经能够帮助人类做一定的事情了!如果你有一些好的想法,或者对我的项目修改的意见欢迎随时跟我提出!

审核编辑 黄宇

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

    关注

    213

    文章

    31494

    浏览量

    223869
  • 人工智能
    +关注

    关注

    1821

    文章

    50367

    浏览量

    267060
  • 机械臂
    +关注

    关注

    14

    文章

    601

    浏览量

    26193
  • ChatGPT
    +关注

    关注

    31

    文章

    1600

    浏览量

    10400
  • 大象机器人
    +关注

    关注

    0

    文章

    87

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    智能机器人从0到1系统入门课程 带源码课件 百度网盘下载

    历着从“指令式”向“对话式”的转变。 未来的机器人将具备更强的抗噪能力和语义理解能力。通过集成先进的语音识别引擎,机器人能够在高噪环境准确分离人声与背景音。更重要的是,结合自然语言
    发表于 04-11 16:41

    机器人主控核心板米尔RK3576 + ROS2,NPU加速实现目标跟随与机械抓取

    。本文采用“眼在手上”配置(相机固定在机械末端),需同时考虑固定偏移和关节运动。 自研逆运动学 控制6轴机械精准抓取(不依赖MoveIt
    发表于 04-10 21:23

    Neway电机方案在机器人技术方面的优势

    系统稳定性背景:工业机器人需长时间连续运行,电源故障可能导致机械失控、生产线停机等严重后果。Neway方案:具备过压、过流、短路三重保护功能,提供OCP(过流保护)、OTP(过温保护)信号输出,支持
    发表于 03-30 09:39

    人形机器人爆发背后,一个被忽视的核心技术机器人运动学控制

    前言近两年,中国人形机器人产业进入快速发展阶段。从特斯拉Optimus到国内众多创新企业,人形机器人正逐渐从实验室走向工业制造、服务机器人、医疗康复等更多应用场景。但在炫目的
    的头像 发表于 03-10 17:04 1343次阅读
    人形<b class='flag-5'>机器人</b>爆发背后,一个被忽视的核心<b class='flag-5'>技术</b>:<b class='flag-5'>机器人</b>运动学<b class='flag-5'>控制</b>

    自然语言处理NLP的概念和工作原理

    自然语言处理 (NLP) 是人工智能 (AI) 的一个分支,它会教计算机如何理解口头和书面形式的人类语言自然语言处理将计算语言学与机器学习
    的头像 发表于 01-29 14:01 626次阅读
    <b class='flag-5'>自然语言</b>处理NLP的概念和工作原理

    《AI机器人控制进阶教程(入门版)》阅读指引

    的预编程,只能在结构化环境中工作。AI的引入(如计算机视觉、自然语言处理),赋予机器人感知、理解和决策的能力,使其能适应开放、动态的真实世界。2.解决复杂任务的核心本
    的头像 发表于 01-07 10:56 2461次阅读
    《AI<b class='flag-5'>机器人</b><b class='flag-5'>控制</b>进阶教程(入门版)》阅读指引

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

    标准传统AGV仅能解决“点对点搬运”,机械局限于“固定工位操作”,而经世智能复合机器人通过AGV底盘+机械+视觉系统+一体化
    的头像 发表于 11-21 15:32 1853次阅读
    复合<b class='flag-5'>机器人</b>对比传统AGV和<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的优势何在?

    高精度机器人控制的核心——基于 MYD-LT536 开发板的精密运动控制方案

    算法与 C++ 实时模块开发; - 可作为控制核心部署在高精度测量机器人、激光切割机械、协作机械
    发表于 11-14 15:48

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

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

    机器人竞技幕后:磁传感器芯片激活 “精准感知力”

    2025 世界人形机器人运动会于 8 月 17 日圆满收官,赛场上机器人在跑步、跳跃、抓取等项目中的精彩表现,背后是运动控制、环境感知等技术的迭代升级。而在这些
    发表于 08-26 10:02

    海默RC系列机器人控制

    器,基于自主研发技术打造,致力于推动机器人核心技术的持续突破。RC系列控制器/HMControllerSeriesRC80控制器RC40
    的头像 发表于 08-01 15:35 1366次阅读
    海默RC系列<b class='flag-5'>机器人</b><b class='flag-5'>控制</b>器

    MT6701 磁性角度编码器 IC:引领机器人控制技术创新

    在科技日新月异的今天,机器人技术的发展可谓是突飞猛进。从工业生产线上不知疲倦的机械,到服务领域灵活贴心的智能伙伴,机器人正逐渐深入到我们生
    的头像 发表于 07-18 17:02 992次阅读

    RDK × 腿机器人:这只 “机械汪” 竟会说人话、走花路!

    开源:Github:https://github.com/Hello-XSJ/RDK\_vlm\_demo.git-本项目聚焦腿机器人在多模态环境感知、自然语言交互和自主行为控制方面
    的头像 发表于 07-01 20:27 1455次阅读
    RDK × 腿<b class='flag-5'>臂</b><b class='flag-5'>机器人</b>:这只 “<b class='flag-5'>机械</b>汪” 竟会说人话、走花路!

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

    大象机器人成立于2016年,专注协作机器人研发与应用,产品线涵盖轻量级协作机器人、人形机器人、仿生机器人等多种形态。拳头产品myCobot系
    的头像 发表于 06-06 16:55 1765次阅读
    大象<b class='flag-5'>机器人</b>携手进迭时空推出 RISC-V 全栈开源六轴<b class='flag-5'>机械</b><b class='flag-5'>臂</b>产品

    详细介绍机场智能指路机器人的工作原理

    免与行人发生碰撞,为旅客提供安全、舒适的引导服务。 智能交互系统 语音识别与理解 :智能指路机器人利用先进的语音识别技术,将旅客输入的语音信号转化为文字信息。然后,通过自然语言处理算法对文字进行分析
    发表于 05-10 18:26