<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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. 結論:
本次的記錄就到這里,整個項目還未完成,在未來不久的日子里我將會繼續完善這個項目,下一篇的內容我會完善整個項目,以及分享一下在開發的過程出現的一些問題是如何進行解決的。如果你喜歡這篇文章的話,歡迎在下方留言給出你的想法。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1781

    文章

    44776

    瀏覽量

    231931
  • 機械臂
    +關注

    關注

    11

    文章

    481

    瀏覽量

    24008
  • 自然語言
    +關注

    關注

    1

    文章

    271

    瀏覽量

    13236
  • ChatGPT
    +關注

    關注

    28

    文章

    1485

    瀏覽量

    5656
收藏 人收藏

    評論

    相關推薦

    其利天下技術·搭載無刷電機的掃地機器人的前景如何?

    地毯并增加吸力,或是繞過障礙物進行清掃。同時,通過手機APP遠程控制、語音指令等方式,用戶可以方便地操作掃地機器人,實現個性化的清潔需求。 3.掃地機器人面臨的技術壁壘與客戶體驗問題
    發表于 05-05 15:03

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

    語言模型基礎技術21隨著Transformer結構在機器翻譯領域取得巨大成功,研究人員開始探索其在其他自然語言處理任務中的潛力。很快,Transformer 結構被證明不僅適用于序列
    發表于 05-05 12:17

    自然語言控制機械臂:ChatGPT機器人技術融合創新(下)

    引言 在我們的上一篇文章中,我們探索了如何將ChatGPT集成到myCobot 280機械臂中,實現了一個通過自然語言控制機械臂的系統。我們
    的頭像 發表于 04-11 15:54 ?336次閱讀
    <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>(下)

    【先楫HPM5361EVK開發板試用體驗】(原創)5.手把手實戰AI機械

    的其他外設。 驅動編寫:根據硬件的規格和SDK文檔,編寫或集成適當的驅動程序來控制這些外設。 游戲邏輯:設計游戲邏輯,例如目標識別、機械控制、得分機制等。
    發表于 02-06 10:28

    【國產FPGA+OMAPL138開發板體驗】(原創)2.手把手玩轉游戲機械

    系統中,使機械能夠理解并響應自然語言指令。 設計一種機制來將用戶的指令轉換為機械可執行的行動指令。 5.2 AI
    發表于 02-01 20:18

    一種基于自然語言的軌跡修正方法

    本研究提出了ExTraCT框架,利用自然語言進行軌跡校正。該框架結合了大型語言模型(LLMs)用于自然語言理解和軌跡變形函數。ExTraCT能夠根據場景在線生成軌跡修改特征及其自然語言
    的頭像 發表于 01-19 10:45 ?232次閱讀
    一種基于<b class='flag-5'>自然語言</b>的軌跡修正方法

    自然語言處理的研究內容

    自然語言處理(NLP)的最新發展改變了我們與AI系統的交互方式: 1. 預訓練模型:像 GPT-3 這樣的模型已經進步,使人工智能能夠在聊天機器人和虛擬助手中生成更連貫的上下文感知響應。 2.
    的頭像 發表于 01-18 16:39 ?264次閱讀

    自然語言處理和人工智能的區別

      自然語言處理(Natural Language Processing,NLP)是人工智能(AI)中的一個分支,它利用計算機技術自然語言進行處理,使得電腦能夠理解和操作人類語言。
    發表于 08-28 17:32 ?1118次閱讀

    自然語言處理和人工智能的概念及發展史 自然語言處理和人工智能的區別

    自然語言處理(Natural Language Processing, NLP)的定義是通過電腦軟件程序實現人們日常語言機器自動處理。為了幫助計算機理解,掌握自然語言處理的基本原理,
    發表于 08-23 18:22 ?614次閱讀

    自然語言處理的概念和應用 自然語言處理屬于人工智能嗎

      自然語言處理(Natural Language Processing)是一種人工智能技術,它是研究自然語言與計算機之間的交互和通信的一門學科。自然語言處理旨在研究
    發表于 08-23 17:31 ?980次閱讀

    ChatGPT和文心一言的區別

    ChatGPT和文心一言的區別 ChatGPT和文心一言的區別 人工智能(AI)在現代化社會中扮演著日益重要的角色,其中自然語言處理(NLP)技術的進步使得Chatbot(聊天
    的頭像 發表于 08-09 15:33 ?1361次閱讀

    自然語言處理包括哪些內容 自然語言處理技術包括哪些

    自然語言處理(Natural Language Processing, NLP)一般包括以下內容: 語音識別(Speech Recognition):將人類語言轉換為計算機可以理解的形式。 語音合成
    的頭像 發表于 08-03 16:22 ?4617次閱讀

    chatgpt是什么意思 ChatGPT背后的技術原理

      今天我們為大家帶來的文章,深入淺出地闡釋了ChatGPT背后的技術原理,沒有NLP或算法經驗的小伙伴,也可以輕松理解ChatGPT是如何工作的?! ?b class='flag-5'>ChatGPT是一種
    發表于 07-18 17:12 ?0次下載

    chatgpt怎么用 ChatGPT的多種使用方法

      ChatGPT可以用于多種不同的應用場景和使用方法,包括但不限于以下幾種:  1. 聊天機器人ChatGPT可以用于開發聊天機器人,通過自然語
    發表于 07-18 14:47 ?7次下載

    ChatGPT 是什么

    應用。 ChatGPT基于自然語言處理技術和神經網絡模型,可以學習和理解人類語言的語法和語義,并能夠生成具有連貫性和邏輯性的自然語言文本,從
    發表于 06-27 13:55 ?2078次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>