兰州网站seo服务,wordpress如何邀请人看,建设生鲜网站价格,网站建设营销攻略引言#xff1a; 自OpenAI发布ChatGPT以来#xff0c;世界正迅速朝着更广泛地将AI技术融合到机器人设备中的趋势发展。机械手臂#xff0c;作为自动化与智能化技术的重要组成部分#xff0c;在制造业、医疗、服务业等领域的应用日益广泛。随着AI技术的进步#xff0c;机械… 引言 自OpenAI发布ChatGPT以来世界正迅速朝着更广泛地将AI技术融合到机器人设备中的趋势发展。机械手臂作为自动化与智能化技术的重要组成部分在制造业、医疗、服务业等领域的应用日益广泛。随着AI技术的进步机械手臂不仅能执行复杂的操作任务还能通过自然语言处理技术进行更加直观的交互极大提高了灵活性和用户友好性。 就比如说微软的一个人工智能研究中心研究如何用自然语言来控制机器人设备的一个研究 所以我想做一个类似的项目通过允许用户使用自然语言来控制机械手臂它可以大大降低机器人编程的门槛使得非专业人士也能轻松地操作和实验。 论文link https://www.microsoft.com/en-us/research/uploads/prod/2023/02/ChatGPT___Robotics.pdf 该项目一共分为上下两篇本篇文章主要内容是整个人工智能系统的设计和构建的过程未来的下一篇文章将要介绍在开发项目的过程中遇到的而困难如何解决以及该项目有什么扩展的性的功能。 项目背景与动机 想象如果有有一天你命令一个机械臂“帮我收拾一下桌面将垃圾丢到垃圾桶里”机械臂就开始听从命令清理你的桌面的垃圾那该是多么幸福的一件事情呀。 所以准备工作我们需要一台小型的机械臂主要是大的机械臂太贵了一台能够上网的电脑以及一颗炙热的心该项目主要是借鉴微软的那篇改变机器人使用的研究来入手。 技术概览 前提本项目是基于python的环境下进行编译的。 首先我们先来介绍一下本项目会使用到的一些软件层面上技术 ChatGPT:整个项目最关键的核心技术 ChatGPT ChatGPT是一项人工智能技术基于GPT(Generative Pre-trained Transformer模型的架构GPT是一种基于深度学习的自然语言处理模型通过大规模的无监督预训练和有监督微调来实现语言理解和生成任务。 换句话来说你可以简单人理解为你在跟一个知识十分渊博的人进行聊天你可以对它预设一些角色例如“”你是一个医生”你就可以跟他聊医学相关的知识但是请注意并不是所生成的所有聊天都是正确的需要进行自我判断。 Speech recognition搭配处理自然语言必不可少的功能模块 我们这边使用的是Google的一种语音识别服务Speech-to-text它允许开发者将语音转化成文本的形式。并且它也支持多种语言和方言包括但不限于英语西班牙语法语德语中文等等可以满足全球用户的需求。 你可以进行在线的尝试语音转文本https://cloud.google.com/speech-to-text?hlen#features pymycobotmycobot 280机械臂的控制功能模块 GitHub - elephantrobotics/pymycobot: This is a python API for ElephantRobotics product. pymycobot 是大象机器人专门为了my系列产品的机械臂开发的控制模块这个功能模块的开发大大降低了机械臂编程控制的门槛。pymycobot 提供了大量的机械臂的控制接口例如关节控制坐标控制配套的机械臂的夹爪控制等等对机械臂变成的初学者是相当有好的。 解释这些技术如何合作实现自然语言控制机械手臂的功能。 接下来介绍一下硬件设备 mycobot 280 M5Stack mycobot 280 M5Stack 是Elephant Robotics 和M5Stack 合作的一款6自由度的协作性机器人。它外观结构设计小巧精致一体式全包裹机身设计采用高精度伺服电机无任何外漏线缆。mycobot重量只有850g机械臂末端最大的负载能够达到250g最大工作半径达到280mm重复定位精度能够到0.5mm的误差范围内。 设计思路与实现过程 https://www.youtube.com/watch?vSq1QZB5baNwppygUVY2hhdGdwdCBjb250cm9sIHJvYm90 大家可以看一下近期OpenAI发布的一条视频人跟机器人聊天机器人来处理自然语言并且生成相对应的动作执行。 也有一些其他的额机械臂也集成了类似的场景。 https://www.youtube.com/watch?vIGsYgSdrT4Y 我要做的项目就是类似于这个小型版通过自然语言跟机械臂进行沟通然后机械臂执行相对应的指令。 接下来我将要说明项目的过程。 语音识别转文本功能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, languagezh-CN)text recognizer.recognize_google(audio, languageen-US)print(you said: text)return textexcept sr.UnknownValueError:print(Google Speech Recognition could not understand audio)return Noneexcept sr.RequestError as e:print(Could not request results from Google Speech Recognition service; {0}.format(e))return None调用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(enginegpt-3.5-turbo,promptprompt,temperature0.5,max_tokens100,top_p1.0,frequency_penalty0.0,presence_penalty0.0)code response.choices[0].text.strip()return codeexcept Exception as e:print(ferror: {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. 这里可以看到能够成功的完成我的基本需求但是他输出了代码的注释这会影响我们之后的结果所以还是需要进行修改。让他只输出代码不要输出注释。 构建新的机械臂API 为什么要构建新的API呢pymycobot不是已经提供了吗 当然pymycobot 提供的API很全面也很多。我们如果给的语音比较复杂ChatGPT会生成其他的复杂的代码可能会导致出错。我根据我想要目前测试的一些需求构建了一个新的机械臂的API。 class MyCobotController:def __init__(self, port, baud):self.mc MyCobot(port, baud)self.speed 80self.mode 0self.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 gripperself.set_grippr_value(1,80,1)time.sleep(1)#clos gripprself.set_grippr_value(0,80,1)time.sleep(1)robot Newmycobot()
robot.grab_action() 初步成果与展示 我们先来个快速的调试用web版本的ChatGPT来实践一下。 复制生成的代码去运行。 可以看到简单的测试是OK的。 6. 结论 本次的记录就到这里整个项目还未完成在未来不久的日子里我将会继续完善这个项目下一篇的内容我会完善整个项目以及分享一下在开发的过程出现的一些问题是如何进行解决的。如果你喜欢这篇文章的话欢迎在下方留言给出你的想法。