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

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

3天内不再提示

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

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2024-04-11 14:36 次阅读

1.引言:


自OpenAI发布ChatGPT以来,世界正迅速朝着更广泛地将AI技术融合到机器人设备中的趋势发展。机械手臂,作为自动化与智能化技术的重要组成部分,在制造业、医疗、服务业等领域的应用日益广泛。随着AI技术的进步,机械手臂不仅能执行复杂的操作任务,还能通过自然语言处理技术进行更加直观的交互,极大提高了灵活性和用户友好性。

就比如说微软的一个人工智能研究中心,研究如何用自然语言来控制机器人设备的一个研究,

所以我想做一个类似的项目,通过允许用户使用自然语言来控制机械手臂,它可以大大降低机器人编程的门槛,使得非专业人士也能轻松地操作和实验。

论文link:

https://www.microsoft.com/en-us/research/uploads/prod/2023/02/ChatGPT___Robotics.pdf

该项目一共分为上下两篇,本篇文章主要内容是整个人工智能系统的设计和构建的过程,未来的下一篇文章将要介绍在开发项目的过程中遇到的而困难,如何解决,以及该项目有什么扩展的性的功能。

2.项目背景与动机:


想象如果有有一天,你命令一个机械臂“帮我收拾一下桌面,将垃圾丢到垃圾桶里”,机械臂就开始听从命令,清理你的桌面的垃圾,那该是多么幸福的一件事情呀。

所以准备工作,我们需要一台小型的机械臂(主要是大的机械臂太贵了),一台能够上网的电脑,以及一颗炙热的心!该项目主要是借鉴微软的那篇改变机器人使用的研究来入手。

3.技术概览:


前提本项目是基于python的环境下进行编译的。

首先我们先来介绍一下本项目会使用到的一些软件层面上技术:

ChatGPT:(整个项目最关键的核心技术)
https://openai.com/chatgpt

ChatGPT是一项人工智能技术,基于GPT(Generative Pre-trained Transformer)模型的架构,GPT是一种基于深度学习的自然语言处理模型,通过大规模的无监督预训练和有监督微调来实现语言理解和生成任务。

换句话来说,你可以简单人理解为你在跟一个知识十分渊博的人进行聊天,你可以对它预设一些角色,例如“”你是一个医生”,你就可以跟他聊医学相关的知识,但是请注意并不是所生成的所有聊天都是正确的需要进行自我判断。

wKgZomYXgSCAS1y-AAEkd4qh2CQ262.png

Speech recognition:(搭配处理自然语言必不可少的功能模块)


我们这边使用的是Google的一种语音识别服务,Speech-to-text,它允许开发者将语音转化成文本的形式。并且它也支持多种语言和方言,包括但不限于英语,西班牙语,法语,德语,中文等等,可以满足全球用户的需求。

你可以进行在线的尝试语音转文本:

https://cloud.google.com/speech-to-text?hl=en#features

pymycobot:(mycobot 280机械臂的控制功能模块)


https://github.com/elephantrobotics/pymycobot

pymycobot 是大象机器人专门为了my系列产品的机械臂开发的控制模块,这个功能模块的开发,大大降低了机械臂编程控制的门槛。pymycobot 提供了大量的机械臂的控制接口,例如关节控制,坐标控制,配套的机械臂的夹爪控制等等,对机械臂变成的初学者是相当有好的。

解释这些技术如何合作实现自然语言控制机械手臂的功能。

接下来介绍一下硬件设备:

mycobot 280 M5Stack


mycobot 280 M5Stack 是Elephant Robotics 和M5Stack 合作的一款6自由度的协作性机器人。它外观结构设计小巧精致,一体式全包裹机身设计,采用高精度伺服电机,无任何外漏线缆。mycobot重量只有850g,机械臂末端最大的负载能够达到250g,最大工作半径达到280mm,重复定位精度能够到0.5mm的误差范围内。

wKgaomYXgZ-ARsZRABlTBMo1P8Q868.png

4.设计思路与实现过程:


https://www.youtube.com/watch?v=Sq1QZB5baNw&pp=ygUVY2hhdGdwdCBjb250cm9sIHJvYm90

大家可以看一下近期OpenAI发布的一条视频,人跟机器人聊天,机器人来处理自然语言并且生成相对应的动作执行。

也有一些其他的额机械臂也集成了类似的场景。

https://www.youtube.com/watch?v=IGsYgSdrT4Y

我要做的项目就是类似于这个小型版!通过自然语言跟机械臂进行沟通,然后,机械臂执行相对应的指令。

wKgZomYXgdqAByX4AABMOJwj1WY709.png

接下来我将要说明项目的过程。

语音识别转文本功能speech-to-text:


为什么要用语音识别转文本功能呢?用过chatgpt的人知道chatgpt有内置的语音聊天的功能,但是我们要集成到PC端和机械臂当中去使用,就不能够使用ChatGPT的web版本,而是要在本地的计算机当中实现,就要用到ChatGPT的API接口。

ChatGPT API的形式的话只能够接收“文本”的形式来使用,所以speech-to-text可以讲我们讲话转化成文本的形式输入到电脑当中。

def speech_to_text():
   recognizer = sr.Recognizer()

   with sr.Microphone() as source:
       print("start speaking...")
       audio = recognizer.listen(source)

       try:
           # text = recognizer.recognize_google(audio, language='zh-CN')
           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("Could not request results from Google Speech Recognition service; {0}".format(e))
           return None
wKgZomYXgjSAFLsqAABDoQUoL74246.png

调用ChatGPT API &预训练


获取了语音的文本形式,就可以调用API在本地跟ChatGPT进行聊天了。以下是OpenAI 提供调用ChatGPT API的使用方法。

def generate_control_code(prompt):
   openai.api_key = ''
   prompt = f"{pre_training}The command the user wants to execute is:'{prompt}'."

   try:
       response = openai.Completion.create(
           engine="gpt-3.5-turbo",
           prompt=prompt,
           temperature=0.5,
           max_tokens=100,
           top_p=1.0,
           frequency_penalty=0.0,
           presence_penalty=0.0
       )
       code = response.choices[0].text.strip()
       return code
   except Exception as e:
       print(f"error: {e}")
       return ""

代码当中的API_KEY需要自己去官方申请(需要付费)。

可以关注一下prompt这一句话,这将是要提及到的预训练。

 prompt = f"{pre_training}The command the user wants to execute is:'{prompt}'."


如果想要获取精准的回复,需要提前给ChatGPT知道它需要干什么,要让他干什么,按照我们的想法来输出。我们先用web版本来进行测试,因为API的搭建比较复杂。

以下是我的prompt(针对于这个项目),我只想要它输出机械臂执行的代码给我所以我是这么做的。

Generate Python code that matches the following requirements: 
Use an instance of the MyCobotController class robot to perform a specific action. The instance already contains methods such as move_to_zero() to return to the initial position, grab_position() to move to the grab position, and plus_x_coords(value), plus_y_coords(value), plus_z_coords(value) to move specific distances on the X, Y, and Z axes. 
You don’t need to output other textual content, just output the code directly, for example, the robot arm returns to the origin. robot.move_to_zero()

Here is what I said:
I want the robot arm to return to the origin, and then go to the position to be grabbed to perform grabbing.
wKgaomYXguyAES15AABiPBwZdfI923.png

这里可以看到能够成功的完成我的基本需求,但是他输出了代码的注释,这会影响我们之后的结果,所以还是需要进行修改。(让他只输出代码,不要输出注释。)

wKgZomYXgv-AEGvNAABmUe8cNr4638.png

构建新的机械臂API


为什么要构建新的API呢,pymycobot不是已经提供了吗?

当然,pymycobot 提供的API很全面,也很多。我们如果给的语音比较复杂,ChatGPT会生成其他的复杂的代码可能会导致出错。我根据我想要目前测试的一些需求构建了一个新的机械臂的API。

class MyCobotController:
   def __init__(self, port, baud):
        self.mc = MyCobot(port, baud)
        self.speed = 80
        self.mode =0
        self.coords = []

   def grab_position(self):
       # self.mc.send_angles([4.83, 13.97, (-99.31), (-1.75), 4.39, (-0.26)], 80)
       self.mc.send_coords([149.2, (-48.3), 201.7, (-176.98), 4.55, (-84.66)], 80, 0)
       time.sleep(2)

   def move_to_zero(self):
       self.mc.send_angles([0,0,0,0,0,0],70)
       time.sleep(2)

   def gripper_open(self):
       self.mc.set_gripper_state(0,80,1)
       time.sleep(2)

目的是为了快速的将整个项目搭建起来,之后还可以在丰富其中的内容。

这么做是有原因的,比如说,要让机械臂去到一个点位进行抓取,用pymycobot的方法可能是下面这样的:

robot.send_angles([0,0,0,0,0,0],80)
time.sleep(2)
#open gripper
robot.set_grippr_value(1,80,1)
time.sleep(1)
#clos grippr
robot.set_grippr_value(0,80,1)
time.sleep(1)


这样的话就要输出很多行的代码,在其他复杂的情况下可能会导致出错,重新构建一个方法的话咱就只需要调用一个方法就可以执行了,两行代码就能解决。

class Newmycobot():
   def grab_action(self):
       self.send_angles([0,0,0,0,0,0],80)
       time.sleep(2)
       #open gripper
       self.set_grippr_value(1,80,1)
       time.sleep(1)
       #clos grippr
       self.set_grippr_value(0,80,1)
       time.sleep(1)
   
robot = Newmycobot()
robot.grab_action()


5.初步成果与展示:


我们先来个快速的调试,用web版本的ChatGPT来实践一下。

wKgZomYXhGeAOT3MAAC3Ae2WtHE000.png

复制生成的代码去运行。

wKgZomYXhL2AWINGAHjQGzQa6LU646.png

可以看到简单的测试是OK的。

6. 结论:
本次的记录就到这里,整个项目还未完成,在未来不久的日子里我将会继续完善这个项目,下一篇的内容我会完善整个项目,以及分享一下在开发的过程出现的一些问题是如何进行解决的。如果你喜欢这篇文章的话,欢迎在下方留言给出你的想法。

审核编辑 黄宇

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

    关注

    1791

    文章

    47183

    浏览量

    238209
  • 机械臂
    +关注

    关注

    12

    文章

    513

    浏览量

    24552
  • 自然语言
    +关注

    关注

    1

    文章

    287

    浏览量

    13346
  • ChatGPT
    +关注

    关注

    29

    文章

    1558

    浏览量

    7592
收藏 人收藏

    评论

    相关推荐

    自然语言处理在聊天机器人中的应用

    上归功于自然语言处理技术的进步。 聊天机器人的工作原理 聊天机器人的核心是一个对话系统,它能够处理用户的输入(通常是文本形式),并生成相应的回复。这个系统通常包括以下几个关键组件:
    的头像 发表于 12-05 15:24 394次阅读

    自然语言处理与机器学习的关系 自然语言处理的基本概念及步骤

    自然语言处理(Natural Language Processing,简称NLP)是人工智能和语言学领域的一个分支,它致力于研究如何让计算机能够理解、解释和生成人类语言机器学习(Ma
    的头像 发表于 12-05 15:21 450次阅读

    语音识别与自然语言处理的关系

    在人工智能的快速发展中,语音识别和自然语言处理(NLP)成为了两个重要的技术支柱。语音识别技术使得机器能够理解人类的语音,而自然语言处理则让
    的头像 发表于 11-26 09:21 324次阅读

    自然语言处理与机器学习的区别

    在人工智能的快速发展中,自然语言处理(NLP)和机器学习(ML)成为了两个核心的研究领域。它们都致力于解决复杂的问题,但侧重点和应用场景有所不同。 1. 自然语言处理(NLP) 定义: 自然语
    的头像 发表于 11-11 10:35 540次阅读

    机器人技术的发展趋势

    能力。 机器人能够通过学习和训练,不断优化自身的行为和性能,实现更高效、更智能的工作。 自然语言处理与理解 : 随着自然语言处理技术的进步,机器人
    的头像 发表于 10-25 09:27 819次阅读

    自然语言处理技术有哪些

    自然语言处理(Natural Language Processing,简称NLP)是人工智能领域的一个分支,它致力于使计算机能够理解、解释和生成人类语言自然语言处理技术的发展已经取得
    的头像 发表于 07-03 14:30 1094次阅读

    自然语言处理模式的优点

    得到了广泛的应用,如搜索引擎、语音助手、机器翻译、情感分析等。 1. 提高信息获取效率 自然语言处理技术能够快速地从大量文本数据中提取关键信息,帮助用户节省查找和筛选信息的时间。例如,搜索引擎通过NLP
    的头像 发表于 07-03 14:24 755次阅读

    自然语言处理技术的核心是什么

    ,广泛应用于机器翻译、情感分析、语音识别、智能问答、文本摘要等众多领域。 自然语言处理技术的发展可以追溯到20世纪50年代。1950年,图灵提出了著名的图灵测试,标志着自然语言处理
    的头像 发表于 07-03 14:20 708次阅读

    自然语言处理是什么技术的一种应用

    广泛,包括机器翻译、语音识别、情感分析、信息检索、问答系统、文本摘要、聊天机器人等。 一、自然语言处理的基本概念 自然语言自然语言是人类用
    的头像 发表于 07-03 14:18 804次阅读

    大象机器人开源协作机械机械接入GPT4o大模型!

    本文已经或者同济子豪兄作者授权对文章进行编辑和转载 引言 随着人工智能和机器人技术的快速发展,机械在工业、医疗和服务业等领域的应用越来越广泛。通过结合大模型和多模态AI,
    的头像 发表于 07-03 14:09 855次阅读
    大象<b class='flag-5'>机器人</b>开源协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    自然语言处理技术的原理的应用

    自然语言处理(Natural Language Processing, NLP)作为人工智能(AI)领域的一个重要分支,旨在使计算机能够理解和处理人类自然语言。随着互联网的普及和大数据技术的发展
    的头像 发表于 07-02 12:50 514次阅读

    国产Cortex-A55工智能教学实验箱_基于Python机械跳舞实验案例分享

    发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。 机械通过ROS机器人操控系统,简化了6自由度串行总线舵机复杂运动控制
    发表于 06-28 14:37

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

    引言 在我们的一篇文章中,我们探索了如何将ChatGPT集成到myCobot 280机械臂中,实现了一个通过自然语言控制
    的头像 发表于 04-11 15:54 879次阅读
    <b class='flag-5'>自然语言</b><b class='flag-5'>控制</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>:<b class='flag-5'>ChatGPT</b>与<b class='flag-5'>机器人</b><b class='flag-5'>技术</b>的<b class='flag-5'>融合</b><b class='flag-5'>创新</b>(下)

    【国产FPGA+OMAPL138开发板体验】(原创)2.手把手玩转游戏机械

    系统中,使机械能够理解并响应自然语言指令。 设计一种机制来将用户的指令转换为机械可执行的行动指令。 5.2 AI
    发表于 02-01 20:18

    自动化革命:大象机器人的Mercury A1机械

    引言 大象机器人的Mercury系列,是面向工业自动化和智能制造的新型机械产品线。这些机械不仅在设计
    的头像 发表于 01-15 14:41 716次阅读
    自动化革命:大象<b class='flag-5'>机器人</b>的Mercury A1<b class='flag-5'>机械</b><b class='flag-5'>臂</b>