0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

自然語(yǔ)言控制機(jī)械臂:ChatGPT與機(jī)器人技術(shù)的融合創(chuàng)新(上)

大象機(jī)器人科技 ? 來源:大象機(jī)器人科技 ? 作者:大象機(jī)器人科技 ? 2024-04-11 14:36 ? 次閱讀

1.引言:


自O(shè)penAI發(fā)布ChatGPT以來,世界正迅速朝著更廣泛地將AI技術(shù)融合到機(jī)器人設(shè)備中的趨勢(shì)發(fā)展。機(jī)械手臂,作為自動(dòng)化與智能化技術(shù)的重要組成部分,在制造業(yè)、醫(yī)療、服務(wù)業(yè)等領(lǐng)域的應(yīng)用日益廣泛。隨著AI技術(shù)的進(jìn)步,機(jī)械手臂不僅能執(zhí)行復(fù)雜的操作任務(wù),還能通過自然語(yǔ)言處理技術(shù)進(jìn)行更加直觀的交互,極大提高了靈活性和用戶友好性。

就比如說微軟的一個(gè)人工智能研究中心,研究如何用自然語(yǔ)言來控制機(jī)器人設(shè)備的一個(gè)研究,

所以我想做一個(gè)類似的項(xiàng)目,通過允許用戶使用自然語(yǔ)言來控制機(jī)械手臂,它可以大大降低機(jī)器人編程的門檻,使得非專業(yè)人士也能輕松地操作和實(shí)驗(yàn)。

論文link:

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

該項(xiàng)目一共分為上下兩篇,本篇文章主要內(nèi)容是整個(gè)人工智能系統(tǒng)的設(shè)計(jì)和構(gòu)建的過程,未來的下一篇文章將要介紹在開發(fā)項(xiàng)目的過程中遇到的而困難,如何解決,以及該項(xiàng)目有什么擴(kuò)展的性的功能。

2.項(xiàng)目背景與動(dòng)機(jī):


想象如果有有一天,你命令一個(gè)機(jī)械臂“幫我收拾一下桌面,將垃圾丟到垃圾桶里”,機(jī)械臂就開始聽從命令,清理你的桌面的垃圾,那該是多么幸福的一件事情呀。

所以準(zhǔn)備工作,我們需要一臺(tái)小型的機(jī)械臂(主要是大的機(jī)械臂太貴了),一臺(tái)能夠上網(wǎng)的電腦,以及一顆炙熱的心!該項(xiàng)目主要是借鑒微軟的那篇改變機(jī)器人使用的研究來入手。

3.技術(shù)概覽:


前提本項(xiàng)目是基于python的環(huán)境下進(jìn)行編譯的。

首先我們先來介紹一下本項(xiàng)目會(huì)使用到的一些軟件層面上技術(shù):

ChatGPT:(整個(gè)項(xiàng)目最關(guān)鍵的核心技術(shù))
https://openai.com/chatgpt

ChatGPT是一項(xiàng)人工智能技術(shù),基于GPT(Generative Pre-trained Transformer)模型的架構(gòu),GPT是一種基于深度學(xué)習(xí)的自然語(yǔ)言處理模型,通過大規(guī)模的無監(jiān)督預(yù)訓(xùn)練和有監(jiān)督微調(diào)來實(shí)現(xiàn)語(yǔ)言理解和生成任務(wù)。

換句話來說,你可以簡(jiǎn)單人理解為你在跟一個(gè)知識(shí)十分淵博的人進(jìn)行聊天,你可以對(duì)它預(yù)設(shè)一些角色,例如“”你是一個(gè)醫(yī)生”,你就可以跟他聊醫(yī)學(xué)相關(guān)的知識(shí),但是請(qǐng)注意并不是所生成的所有聊天都是正確的需要進(jìn)行自我判斷。

wKgZomYXgSCAS1y-AAEkd4qh2CQ262.png

Speech recognition:(搭配處理自然語(yǔ)言必不可少的功能模塊)


我們這邊使用的是Google的一種語(yǔ)音識(shí)別服務(wù),Speech-to-text,它允許開發(fā)者將語(yǔ)音轉(zhuǎn)化成文本的形式。并且它也支持多種語(yǔ)言和方言,包括但不限于英語(yǔ),西班牙語(yǔ),法語(yǔ),德語(yǔ),中文等等,可以滿足全球用戶的需求。

你可以進(jìn)行在線的嘗試語(yǔ)音轉(zhuǎn)文本:

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

pymycobot:(mycobot 280機(jī)械臂的控制功能模塊)


https://github.com/elephantrobotics/pymycobot

pymycobot 是大象機(jī)器人專門為了my系列產(chǎn)品的機(jī)械臂開發(fā)的控制模塊,這個(gè)功能模塊的開發(fā),大大降低了機(jī)械臂編程控制的門檻。pymycobot 提供了大量的機(jī)械臂的控制接口,例如關(guān)節(jié)控制,坐標(biāo)控制,配套的機(jī)械臂的夾爪控制等等,對(duì)機(jī)械臂變成的初學(xué)者是相當(dāng)有好的。

解釋這些技術(shù)如何合作實(shí)現(xiàn)自然語(yǔ)言控制機(jī)械手臂的功能。

接下來介紹一下硬件設(shè)備:

mycobot 280 M5Stack


mycobot 280 M5Stack 是Elephant Robotics 和M5Stack 合作的一款6自由度的協(xié)作性機(jī)器人。它外觀結(jié)構(gòu)設(shè)計(jì)小巧精致,一體式全包裹機(jī)身設(shè)計(jì),采用高精度伺服電機(jī),無任何外漏線纜。mycobot重量只有850g,機(jī)械臂末端最大的負(fù)載能夠達(dá)到250g,最大工作半徑達(dá)到280mm,重復(fù)定位精度能夠到0.5mm的誤差范圍內(nèi)。

wKgaomYXgZ-ARsZRABlTBMo1P8Q868.png

4.設(shè)計(jì)思路與實(shí)現(xiàn)過程:


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

大家可以看一下近期OpenAI發(fā)布的一條視頻,人跟機(jī)器人聊天,機(jī)器人來處理自然語(yǔ)言并且生成相對(duì)應(yīng)的動(dòng)作執(zhí)行。

也有一些其他的額機(jī)械臂也集成了類似的場(chǎng)景。

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

我要做的項(xiàng)目就是類似于這個(gè)小型版!通過自然語(yǔ)言跟機(jī)械臂進(jìn)行溝通,然后,機(jī)械臂執(zhí)行相對(duì)應(yīng)的指令。

wKgZomYXgdqAByX4AABMOJwj1WY709.png

接下來我將要說明項(xiàng)目的過程。

語(yǔ)音識(shí)別轉(zhuǎn)文本功能speech-to-text:


為什么要用語(yǔ)音識(shí)別轉(zhuǎn)文本功能呢?用過chatgpt的人知道chatgpt有內(nèi)置的語(yǔ)音聊天的功能,但是我們要集成到PC端和機(jī)械臂當(dāng)中去使用,就不能夠使用ChatGPT的web版本,而是要在本地的計(jì)算機(jī)當(dāng)中實(shí)現(xiàn),就要用到ChatGPT的API接口。

ChatGPT API的形式的話只能夠接收“文本”的形式來使用,所以speech-to-text可以講我們講話轉(zhuǎn)化成文本的形式輸入到電腦當(dāng)中。

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

調(diào)用ChatGPT API &預(yù)訓(xùn)練


獲取了語(yǔ)音的文本形式,就可以調(diào)用API在本地跟ChatGPT進(jìn)行聊天了。以下是OpenAI 提供調(diào)用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 ""

代碼當(dāng)中的API_KEY需要自己去官方申請(qǐng)(需要付費(fèi))。

可以關(guān)注一下prompt這一句話,這將是要提及到的預(yù)訓(xùn)練。

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


如果想要獲取精準(zhǔn)的回復(fù),需要提前給ChatGPT知道它需要干什么,要讓他干什么,按照我們的想法來輸出。我們先用web版本來進(jìn)行測(cè)試,因?yàn)锳PI的搭建比較復(fù)雜。

以下是我的prompt(針對(duì)于這個(gè)項(xiàng)目),我只想要它輸出機(jī)械臂執(zhí)行的代碼給我所以我是這么做的。

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

這里可以看到能夠成功的完成我的基本需求,但是他輸出了代碼的注釋,這會(huì)影響我們之后的結(jié)果,所以還是需要進(jìn)行修改。(讓他只輸出代碼,不要輸出注釋。)

wKgZomYXgv-AEGvNAABmUe8cNr4638.png

構(gòu)建新的機(jī)械臂API


為什么要構(gòu)建新的API呢,pymycobot不是已經(jīng)提供了嗎?

當(dāng)然,pymycobot 提供的API很全面,也很多。我們?nèi)绻o的語(yǔ)音比較復(fù)雜,ChatGPT會(huì)生成其他的復(fù)雜的代碼可能會(huì)導(dǎo)致出錯(cuò)。我根據(jù)我想要目前測(cè)試的一些需求構(gòu)建了一個(gè)新的機(jī)械臂的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)

目的是為了快速的將整個(gè)項(xiàng)目搭建起來,之后還可以在豐富其中的內(nèi)容。

這么做是有原因的,比如說,要讓機(jī)械臂去到一個(gè)點(diǎn)位進(jìn)行抓取,用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)


這樣的話就要輸出很多行的代碼,在其他復(fù)雜的情況下可能會(huì)導(dǎo)致出錯(cuò),重新構(gòu)建一個(gè)方法的話咱就只需要調(diào)用一個(gè)方法就可以執(zhí)行了,兩行代碼就能解決。

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.初步成果與展示:


我們先來個(gè)快速的調(diào)試,用web版本的ChatGPT來實(shí)踐一下。

wKgZomYXhGeAOT3MAAC3Ae2WtHE000.png

復(fù)制生成的代碼去運(yùn)行。

wKgZomYXhL2AWINGAHjQGzQa6LU646.png

可以看到簡(jiǎn)單的測(cè)試是OK的。

6. 結(jié)論:
本次的記錄就到這里,整個(gè)項(xiàng)目還未完成,在未來不久的日子里我將會(huì)繼續(xù)完善這個(gè)項(xiàng)目,下一篇的內(nèi)容我會(huì)完善整個(gè)項(xiàng)目,以及分享一下在開發(fā)的過程出現(xiàn)的一些問題是如何進(jìn)行解決的。如果你喜歡這篇文章的話,歡迎在下方留言給出你的想法。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    47282

    瀏覽量

    238536
  • 機(jī)械臂
    +關(guān)注

    關(guān)注

    12

    文章

    515

    瀏覽量

    24590
  • 自然語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    288

    瀏覽量

    13351
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1561

    瀏覽量

    7683
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    《具身智能機(jī)器人系統(tǒng)》第7-9章閱讀心得之具身智能機(jī)器人與大模型

    研讀《具身智能機(jī)器人系統(tǒng)》第7-9章,我被書中對(duì)大模型與機(jī)器人技術(shù)融合的深入分析所吸引。第7章詳細(xì)闡述了ChatGPT for Roboti
    發(fā)表于 12-24 15:03

    自然語(yǔ)言處理在聊天機(jī)器人中的應(yīng)用

    上歸功于自然語(yǔ)言處理技術(shù)的進(jìn)步。 聊天機(jī)器人的工作原理 聊天機(jī)器人的核心是一個(gè)對(duì)話系統(tǒng),它能夠處理用戶的輸入(通常是文本形式),并生成相應(yīng)的回復(fù)。這個(gè)系統(tǒng)通常包括以下幾個(gè)關(guān)鍵組件:
    的頭像 發(fā)表于 12-05 15:24 ?439次閱讀

    自然語(yǔ)言處理與機(jī)器學(xué)習(xí)的關(guān)系 自然語(yǔ)言處理的基本概念及步驟

    自然語(yǔ)言處理(Natural Language Processing,簡(jiǎn)稱NLP)是人工智能和語(yǔ)言學(xué)領(lǐng)域的一個(gè)分支,它致力于研究如何讓計(jì)算機(jī)能夠理解、解釋和生成人類語(yǔ)言。機(jī)器學(xué)習(xí)(Ma
    的頭像 發(fā)表于 12-05 15:21 ?485次閱讀

    語(yǔ)音識(shí)別與自然語(yǔ)言處理的關(guān)系

    在人工智能的快速發(fā)展中,語(yǔ)音識(shí)別和自然語(yǔ)言處理(NLP)成為了兩個(gè)重要的技術(shù)支柱。語(yǔ)音識(shí)別技術(shù)使得機(jī)器能夠理解人類的語(yǔ)音,而自然語(yǔ)言處理則讓
    的頭像 發(fā)表于 11-26 09:21 ?391次閱讀

    自然語(yǔ)言處理與機(jī)器學(xué)習(xí)的區(qū)別

    在人工智能的快速發(fā)展中,自然語(yǔ)言處理(NLP)和機(jī)器學(xué)習(xí)(ML)成為了兩個(gè)核心的研究領(lǐng)域。它們都致力于解決復(fù)雜的問題,但側(cè)重點(diǎn)和應(yīng)用場(chǎng)景有所不同。 1. 自然語(yǔ)言處理(NLP) 定義: 自然語(yǔ)
    的頭像 發(fā)表于 11-11 10:35 ?589次閱讀

    機(jī)器人技術(shù)的發(fā)展趨勢(shì)

    能力。 機(jī)器人能夠通過學(xué)習(xí)和訓(xùn)練,不斷優(yōu)化自身的行為和性能,實(shí)現(xiàn)更高效、更智能的工作。 自然語(yǔ)言處理與理解 : 隨著自然語(yǔ)言處理技術(shù)的進(jìn)步,機(jī)器人
    的頭像 發(fā)表于 10-25 09:27 ?950次閱讀

    自然語(yǔ)言處理技術(shù)有哪些

    自然語(yǔ)言處理(Natural Language Processing,簡(jiǎn)稱NLP)是人工智能領(lǐng)域的一個(gè)分支,它致力于使計(jì)算機(jī)能夠理解、解釋和生成人類語(yǔ)言。自然語(yǔ)言處理技術(shù)的發(fā)展已經(jīng)取得
    的頭像 發(fā)表于 07-03 14:30 ?1157次閱讀

    自然語(yǔ)言處理模式的優(yōu)點(diǎn)

    得到了廣泛的應(yīng)用,如搜索引擎、語(yǔ)音助手、機(jī)器翻譯、情感分析等。 1. 提高信息獲取效率 自然語(yǔ)言處理技術(shù)能夠快速地從大量文本數(shù)據(jù)中提取關(guān)鍵信息,幫助用戶節(jié)省查找和篩選信息的時(shí)間。例如,搜索引擎通過NLP
    的頭像 發(fā)表于 07-03 14:24 ?790次閱讀

    自然語(yǔ)言處理技術(shù)的核心是什么

    ,廣泛應(yīng)用于機(jī)器翻譯、情感分析、語(yǔ)音識(shí)別、智能問答、文本摘要等眾多領(lǐng)域。 自然語(yǔ)言處理技術(shù)的發(fā)展可以追溯到20世紀(jì)50年代。1950年,圖靈提出了著名的圖靈測(cè)試,標(biāo)志著自然語(yǔ)言處理
    的頭像 發(fā)表于 07-03 14:20 ?761次閱讀

    自然語(yǔ)言處理是什么技術(shù)的一種應(yīng)用

    廣泛,包括機(jī)器翻譯、語(yǔ)音識(shí)別、情感分析、信息檢索、問答系統(tǒng)、文本摘要、聊天機(jī)器人等。 一、自然語(yǔ)言處理的基本概念 自然語(yǔ)言自然語(yǔ)言是人類用
    的頭像 發(fā)表于 07-03 14:18 ?915次閱讀

    大象機(jī)器人開源協(xié)作機(jī)械機(jī)械接入GPT4o大模型!

    本文已經(jīng)或者同濟(jì)子豪兄作者授權(quán)對(duì)文章進(jìn)行編輯和轉(zhuǎn)載 引言 隨著人工智能和機(jī)器人技術(shù)的快速發(fā)展,機(jī)械在工業(yè)、醫(yī)療和服務(wù)業(yè)等領(lǐng)域的應(yīng)用越來越廣泛。通過結(jié)合大模型和多模態(tài)AI,
    的頭像 發(fā)表于 07-03 14:09 ?935次閱讀
    大象<b class='flag-5'>機(jī)器人</b>開源協(xié)作<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    自然語(yǔ)言處理技術(shù)的原理的應(yīng)用

    自然語(yǔ)言處理(Natural Language Processing, NLP)作為人工智能(AI)領(lǐng)域的一個(gè)重要分支,旨在使計(jì)算機(jī)能夠理解和處理人類自然語(yǔ)言。隨著互聯(lián)網(wǎng)的普及和大數(shù)據(jù)技術(shù)的發(fā)展
    的頭像 發(fā)表于 07-02 12:50 ?531次閱讀

    國(guó)產(chǎn)Cortex-A55工智能教學(xué)實(shí)驗(yàn)箱_基于Python機(jī)械跳舞實(shí)驗(yàn)案例分享

    發(fā)行包管理,它也提供一些工具和庫(kù)用于獲取、建立、編寫和執(zhí)行多機(jī)融合的程序。 機(jī)械通過ROS機(jī)器人操控系統(tǒng),簡(jiǎn)化了6自由度串行總線舵機(jī)復(fù)雜運(yùn)動(dòng)控制
    發(fā)表于 06-28 14:37

    自然語(yǔ)言控制機(jī)械ChatGPT機(jī)器人技術(shù)融合創(chuàng)新(下)

    引言 在我們的一篇文章中,我們探索了如何將ChatGPT集成到myCobot 280機(jī)械臂中,實(shí)現(xiàn)了一個(gè)通過自然語(yǔ)言控制
    的頭像 發(fā)表于 04-11 15:54 ?899次閱讀
    <b class='flag-5'>自然語(yǔ)言</b><b class='flag-5'>控制</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>:<b class='flag-5'>ChatGPT</b>與<b class='flag-5'>機(jī)器人</b><b class='flag-5'>技術(shù)</b>的<b class='flag-5'>融合</b><b class='flag-5'>創(chuàng)新</b>(下)

    自動(dòng)化革命:大象機(jī)器人的Mercury A1機(jī)械

    引言 大象機(jī)器人的Mercury系列,是面向工業(yè)自動(dòng)化和智能制造的新型機(jī)械產(chǎn)品線。這些機(jī)械不僅在設(shè)計(jì)
    的頭像 發(fā)表于 01-15 14:41 ?727次閱讀
    自動(dòng)化革命:大象<b class='flag-5'>機(jī)器人</b>的Mercury A1<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>