MAKER:David Packman/譯:趣無盡
這是國外 Maker David Packman 制作的基于樹莓派機器人 MBO,該機器人的外觀設計靈感來自動漫 Adventure Time 中的機器人 MBO。
它具有強大的交互功能,可實現脫機喚醒詞檢測、調用 ChatGPT 3.5 進行聊天、機器視覺對圖像進行分析和說明等眾多功能。
請看下面的 DEMO。
組件清單
Raspberry Pi 3 Model B × 1
Raspberry Pi Camera Model 3 × 1
單聲道 2.5 瓦音頻放大器 × 1
8Ω1 瓦揚聲器 × 1
Mini USB 麥克風 × 1
6mm 觸摸模塊 × 1
18650 電池 × 1
撥動開關 × 1
5V 風扇 × 1
9 克舵機 × 1
5V 穩壓模塊 × 1
USB 無線鍵盤 × 1
3D 打印機× 1
3D 打印筆× 1
熱熔膠槍× 1
電烙鐵× 1
電動螺絲刀× 1
丙烯顏料× 1
軟件
樹莓派官方系統
Microsoft Azure Cognitive 語音服務 API
Microsoft Azure Computer Vision
Open AI Chat GPT3.5 Turbo
Open AI DALL-E2
項目介紹
BMO-AI 是一款 3D 打印的可移動桌面伴侶機器人,其原型來自 Adventure Time 系列動漫中的機器人角色 BMO,該機器人同時利用幾種不同的AI功能,以便以更具吸引力和有用的方式與人進行社交。
BMO-AI 利用運行 Raspbian Bullseye 的 Raspberry PI 3B + 和 Adafruit CRICKIT Hat 進行伺服電機控制和來自其按鈕陣列的信號輸入。
BMO 有四個關節點和一個 5 英寸的顯示屏,用于使用 Pygame 庫顯示面部表情和圖像。BMO 還使用其他幾個庫來實現以下 AI 功能:
語音轉文本和文本轉語音,使用 Azure 語音服務進行脫機喚醒詞檢測。
使用 OpenAI ChatGPT 3.5 Turbo 完成單輪問答文本。
使用 OpenAI ChatGPT 3.5 Turbo 聊天完成的多轉和上下文感知聊天。
使用 Azure 計算機視覺服務進行圖像分析和說明。
使用 Azure 計算機視覺服務進行圖像分析和說明。
樹莓派相機模塊 v3,具有圖像捕獲和共享功能。
新的繪畫模式使用穩定擴散根據您的口語描述繪制圖片。
來自 ChatGPT 3.5 描述模式的新 DALL-E 映像,它將根據 ChatGPT 生成的描述創建映像。
3D 打印環節
打印部件文件可在本項目文件庫中下載:
https://make.quwj.com/project/442
1、建議您在此版本中使用 PETG 或其他比 PLA 更具彈性和耐溫性的打印絲,尤其是在您不安裝風扇來冷卻 SBC 和其他組件的情況下。
2、除了按鈕外,這些構建說明中顯示的型號在 Prusa MK2 和 MK3 打印機上使用 Polymaker Polylite 藍綠色 PETG,層高為 .02。
3、按鈕按它們應該打印的顏色標記,PLA 適合。
4、關于手臂的說明。手臂有兩個單獨的 STL 版本,一個版本(ArmRtFull 和 ArmLtFull)用于單部件打印,其他版本(ArmRT 和 ArmLt)在 7mm 處拆分,以減少支撐瑕疵,打印后需要粘合在一起。
5、對于上腿和小腿,你需要在沒有支撐的情況下打印,或者使用支撐執行器,以便你的打印機不會在穿過腿部的隧道內打印支撐。
否則,你將無法將繩子推過腿部以進行踢腿動作。
組裝準備舵機
1、在測試你的伺服電機以確保它們正常工作后,你需要根據它們的鉸接點標記每個電機。
例如,使用永久性標記將一個標記為 LA(左臂),將另一個標記為 LL(左腿)。(左和右是從 BMO 的角度)。
2、標記伺服電機后,應預先定位伺服電機,使左側舵機處于最遠的逆時針位置(通常為 0 度),右側舵機處于最遠的順時針位置(通常為 180 度)。
這樣,所有伺服系統都從降低的位置開始,并具有抬起手臂或踢腿的范圍。
3、手臂舵機的伺服喇叭需要修改,以便你可以安裝手臂的肩部支架。基本上,你需要使用下圖中描繪的喇叭并將其切割到適合印刷肩部安裝件的程度,如下圖所示。
4、一旦手臂的伺服喇叭被切割以使它們滑入肩部支架,你將需要將這些喇叭熱膠或塑料焊接到位以將它們固定到肩部支架上,如上圖所示。
5、現在你可以將肩部安裝座連接到手臂伺服器上,使手臂的安裝孔指向 BMO 的背部,如圖所示。
此時,你可以在夾住肩部支架的同時將其擰入伺服桿,這樣伺服桿就不會從該預先定位的角度旋轉。
準備按鈕面板
1、首先,如下圖所示切割通孔原型板,并使用 5/64 或 3/32 鉆頭創建,如圖所示安裝孔。
2、將板松散地安裝到主體中的位置,然后轉動主體并使用永久性記號筆在每個按鈕位置的中心放置一個點,如圖所示。然后取下板子。
3、請注意,開關的每個極上都有兩個插腳,因此請嘗試對齊開關,以便你可以跟蹤按下時需要焊接哪些插腳才能使開關進行連接。
然后定位每個開關,使按鈕本身以你在上一步中創建的每個點為中心。
4、現在,你可以將按鈕和電線焊接到板上以制作一個電路,其中每個按鈕上的一根極連接到一根跳線。
該跳線將到達樹莓派上的 CRICKIT HAT,另一根將連接到一個公共接地,該接地將插入 CRICKIT 帽子信號連接器上的接地引腳。
準備 Speaker
1、 焊接并測試按鈕板后,你需要切割兩塊較小的通孔原型板,大約 5 孔 x 5 孔。
2、 然后,將焊接揚聲器引線和一些 2 針 JST 或杜邦,以便引線連接到連接器,如下圖所示。
這些組件將熱粘在 BMO主體的側面,以便在組裝步驟的后期可以通過主體中的揚聲器孔聽到揚聲器的聲音。
主體安裝
1、首先,你可能希望在開始組裝之前在側面涂上字母,現在這樣做會更容易。
2、使用烙鐵或未加載的 3D 打印筆插入熱定型滾花螺母,如圖所示:
3、當你使用它時,將一些 M2 六角螺母推入伺服電機安裝座的插槽中。實際上只需要將伺服電機連接到頂部安裝座,但如果你真的愿意,你也可以進行底部安裝。
底板安裝
1、 將三個 M2 熱固性插件插入后蓋,如圖所示。
2、如下圖所示,將方形 M3 螺母插入電池蓋螺絲孔的插槽中,然后用 M3 螺釘固定后將其熱膠到位。
3、使用熱膠或 3D 打印筆將 18650 電池座、電壓表和滑動開關固定到位,如圖所示。
4、將 5v 穩壓器安裝到后蓋上。將電池座的紅色引線焊接到一個開關端子,然后焊接另一根帶有母杜邦連接器的跳線,該連接器可以將穩壓器連接到另一個端子。
此外,還要使用母杜邦連接器壓接電壓表的末端和電池座的接地引線。
5、連接電壓表和電池引線,并切換到穩壓器 VIN 引腳。如果需要,請使用熱膠將所有引線固定在后蓋上。
準備樹莓派和 CRICKIT Hat
1、如果你已經安裝了 CRICKIT Hat 的 40 針連接器的轉接端子,請將其取下。
如果我們希望按鈕引線適合而不被后面板壓扁,我們需要帽子以非常低的外形安裝在樹莓派的頂部。
注意:如果你打算在樹莓派上安裝散熱器,請使用非常低調的散熱器以避免 CRICKIT 帽子短路。
2、將長 CSI 和 DSI 電纜連接到樹莓派,然后將它們滑過 CRICKIT 帽子,然后將 CRICKIT 帽子松散地連接到樹莓派 40 針連接器上。不要將針腳完全推入。
3、抓住其中一個打印的樹莓派墊片和 14mm M2.5 螺釘,然后將墊片滑入左下角的位置,然后將螺釘推入以將墊片固定到位。使用 M2.5 螺母固定該螺釘。
4、對其他安裝孔執行相同的操作,但不要用螺母固定它們,這些孔會在組裝過程中擰入顯示支架中的支架中。
你可能還想將 2 針母杜邦壓接到其中一個直角桶形千斤頂尾部,此時也將槍管插孔安裝到 CRICKIT 電源插孔上。
5、重要!現在是握住組件并從各個側面查看內部的好時機,以確保電路板底部的任何 CRICKIT 帽子銷都不會在樹莓派頂部的任何部件上短路!
如果你確實發現任何針腳接觸任何東西,尤其是散熱器或音頻插孔,請拆卸并嘗試使用側切器修剪這些接觸點。
6、將此組件放在一邊以備后用,確保螺釘和墊片保持在原位。
組裝步驟
1、首先將主體朝下,然后將所有按鈕放入相應的插槽中,如圖所示。
2、如圖所示,將按鈕板安裝在按鈕頂部。
3、將主體翻轉過來并檢查以確保每個按鈕激活其相應的開關而不會玩太多。如果你發現該按鈕正在激活任何開關而沒有被按下。
你可能需要重新焊接該按鈕,使其與電路板齊平。
4、檢查按鈕電纜的長度,它們應該到達顯示器孔的中心,并有一些額外的游隙,但不要太多。
安裝顯示器、揚聲器、RasPi 組件和攝像頭
1、 如圖所示,在右上角和右下角的顯示屏支架底部安裝 3 個 M2.5 六角螺母。
2、使用 5mm M2.5 支座將螺母固定到位。
3、按此處所示的方向,使用 M2 螺釘將小風扇連接到左下角的顯示支架上。
4、將顯示器放在機身內部的顯示器孔上方,DSI 電纜接頭位于左側。(是的,這意味著顯示屏將顛倒。)
5、使用 M2.5 螺釘將支架安裝到顯示器上,使用 M3 和 M2 螺釘將支架安裝到主體上,用右上方和右下方的顯示器支架固定顯示器
6、在不安裝 RasPi 組件的情況下,將 DSI/CSI 電纜連接到顯示器和相機模塊。
7、如圖所示安裝攝像頭模塊。請注意右上方的 M2 螺釘是如何從前面插入右下角支架并用 M2 螺母固定的。
8、將揚聲器安裝在主體的兩側,使揚聲器蓋住揚聲器孔,連接器板以一定角度拖曳在揚聲器孔后面。
9、將 RasPi 組件安裝到顯示器支架上的安裝點,注意將 RasPi 墊片固定到位。
注意:在執行此操作之前連接任何USB 連接器可能更容易,盡管我發現之后插入它們以保持電纜不礙事對我來說更容易。
10、使用熱膠將音頻放大器安裝在機身內部頂壁上的 RasPi 組件上方,如圖所示(接線稍后會進行)。
組裝腿部
1、將大腿部分滑入主體底部并嘗試傾斜它們,使它們稍微向外彎曲或至少彼此平行。然后將它們塑料焊接到車身下方的適當位置。
注意:最好稍微傾斜它們,使腿的前部靠在身體的前緣上,而它們的背部距離較遠,導致 BMO 在坐著時稍微向前傾斜。
2、還要將腿焊接在身體內部,以牢固地將其固定到位。在執行此操作時,請小心確保保持字符串隧道開口暢通。
3、剪兩根 40 厘米長的繩子,最好是編織釣魚線,用雙結或三結將每根繩子的一端綁在腿部伺服電機喇叭上。
你可能需要將其中一個喇叭孔變大以適合琴弦,我建議使用最靠近喇叭末端的第二個孔。
4、將腿部伺服電機滑入到位并用 M2 螺釘固定。請注意,你可能需要稍微鉆舵機的安裝孔以使 M2 適合。
5、將琴弦穿過大腿的隧道,然后穿過小腿的隧道,直到琴弦從腳底出現。使用 M2 螺釘將小腿連接到大腿上,確保不要壓傷線條。
6、將腿彎曲到 90 度,伺服電機的位置使喇叭靠近底部,在靠近腳底的琴弦上打結,確保腿保持彎曲,在琴弦上稍微彈奏。
7、塑料焊接腳底的孔,使孔和繩子不可見。
安裝手臂
1、安裝肩部支架后,將臂舵機滑入到位,然后用 M2 螺釘將其擰入到位。確保肩部的手臂安裝孔指向 BMO 的背部。
2、將手臂插入方肩插座,然后用 M2 螺釘固定。注意:你可能需要將手臂的方形釘子銼削或打磨一點,以確保它們順利滑入肩部,但在擰入后幾乎沒有縫隙。
接線
1、確保伺服引線按以下順序連接到 CRICKIT 帽子伺服引腳(否則您必須更新代碼):
a端口——左臂
b端口——右臂
c端口——左腿
d端口——右腿
2、將所有按鈕信號線連接到 CRICKIT 信號端口,并將兩個公共接地連接到接地引腳。
3、用 JST 連接器連接兩對跳線,用于連接揚聲器組件的引線,并將它們連接到音頻放大器輸出旋入式端子。
4、使用跳線將放大器的 VIN 和接地連接到 CRICKIT 上的 NEO-PIXEL 5v 和接地端子。此外,當你使用風扇時,將電源和接地引線從風扇連接到同一端子。
5、創建另一對跳線,將它們連接到旋入式音頻插孔和放大器中的音頻輸入,然后將音頻插孔插入 RasPi 音頻輸出。
6、將 USB 鍵盤跳線和直角 USB 電纜延長器插入 RasPi USB 插孔。
7、將 USB 麥克風插入 USB 電纜延長器,然后將其熱膠粘下,以便可以通過 BMO-AI 上方向按鈕下方的小端口看到麥克風孔,如下所示:
8、將 USB 電源線插入 RasPi USB 電源插孔,然后將另一端插入后蓋上 5v 穩壓器的 5v 輸出。同時將 CRICKIT 電源線插入穩壓器的其他 5v 輸出。此時,所有內容都應該插入,看起來有點像這樣:
注意:確保進入 5v 穩壓器的線路方向,使接地在內部,電源線在外部引腳上。
9、嘗試將后蓋連接到機身,同時確保較大的電纜不會妨礙腿部伺服喇叭路徑,并且機身和后蓋之間沒有電線夾住。
10、繼續用 M3 螺釘將后蓋固定到機身上。
11、將兩節 18650 電池插入電池座,然后將電池蓋放在電池座上并用 M3 螺釘固定。
軟件設置
1、我強烈建議在此版本中使用 2022-09-22 版本的 Raspbian Bullseye 作為 SBC 的操作系統。
Bullseye 中預裝了幾個必需的庫,這使得這里的事情變得容易得多。如果不使用 Bullseye,則可能需要查看代碼中導入的庫,并采取措施確保手動安裝所有庫。
注意:我建議使用用戶名“bmo”,因為這將減少您需要對代碼進行的更改次數。
2、你需要翻轉顯示器,因為顯示器是倒置安裝的。只需打開“首選項”,選擇“屏幕配置”,然后右鍵單擊顯示屏,選擇“方向”,然后選擇“反轉”,即可輕松完成此操作。
如果這不起作用,你可能需要回退到 2022-09-22 Raspbian 版本,因為某些新版本存在阻止屏幕旋轉的錯誤。
3、在配置中,需要啟用 i2c,但可能還需要啟用 SSH 和 VNC 等其他功能。
4、打開終端并運行以下命令:
?
?
sudo apt-get update sudo apt-get upgrade
?
?
5、在終端中,使用以下命令設置 CRICKIT CAT:
?
?
pip install Adafruit-blinka i2cdetect -y 1
?
?
6、此時,你應該會看到一個矩陣,里面有數字 49。如果你不能確保 CRICKIT 帽子正確連接并且沒有短路。
7、在終端中,運行以下命令以安裝 CRICKIT 的電路 Python 庫:
?
?
pip install Adafruit-circuitpython-crickit
?
?
設置 Azure 語音服務
1、 在 azure.microsoft.com 注冊一個免費的 Azure 帳戶(我們將使用免費層語音服務,因此除非你經常使用 BMO-AI,否則不應期望收取任何費用!
2、使用以下步驟在 Azure 門戶中創建語音資源:https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices
3、獲取資源的密鑰和區域:https://learn.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account#get-the-keys-for-your-resource 。
4、在我共享的文件中,將有一個文件包含“Hey BMO”喚醒詞的離線關鍵字模型表,無需額外的步驟或代碼更改即可使用。但是,如果你想要不同的喚醒詞,則需要使用 https://learn.microsoft.com/azure/cognitive-services/speech-service/custom-keyword-basics?pivots=programming-language-python 中的步驟創建一個喚醒詞。
5、在終端上,鍵入以下命令:
?
?
sudo apt-get install build-essential libssl-dev libasound2 wget pip3 install azure-cognitiveservices-speech
?
?
設置 Azure 計算機視覺
1、在 Azure 門戶中,創建計算機視覺資源。請確保使用以下區域之一:美國東部、法國中部、韓國中部、北歐、東南亞、西歐或美國西部。
2、使用 F0 免費定價層,它有一些使用限制,但對于這樣的單個機器人來說應該沒問題。
3、復制 API 密鑰和終端節點,在開始編碼部分時需要用到它們。
4、在 BMO-AI 上打開終端并運行以下命令:
?
?
pip install azure-cognitiveservices-vision-computervision pip install pillow
?
?
設置 Open AI
1、在 OpenAI 上注冊一個帳戶。
2、復制你的 API 密鑰。
3、在 BMO-AI 上打開終端并運行以下命令:
?
?
pip install openai pip install tiktoken
?
?
安裝穩定的擴散庫
1、在 beta.dreamstudio.ai 注冊一個帳戶,并獲取 API 密鑰。
2、復制 API 密鑰。
3、通過在控制臺中鍵入以下內容來安裝庫。
?
?
pip install stability-sdk
?
?
文件下載和制作目錄
1、我建議創建以下目錄:/home/bmo/Photos 作為存儲 BMO-AI 拍攝的照片的地方。
2、將主代碼和關鍵字表文件下載到同一目錄。
3、將面部圖像下載并提取到home下的圖片目錄中。
4、編輯 Python 文件以添加 API 密鑰、設置和其他內容,如“代碼”部分所述。
操作BMO-AI
1、通過在終端窗口中鍵入 python filename.py 來啟動 python 文件。如果你做對了一切,就不會報錯。
2、在說出喚醒短語“Hey BMO”(發音為“be moe”)后使用以下任何口頭命令。
拍照
在你的回復中包含“照片”一詞(即“請給我拍照”)將提示 BMO-AI 拍攝它面對的任何內容的照片并將其存儲在照片目錄中。
然后它會詢問你是否想要圖片,如果你說不,它會通過電子郵件發送給您。
你看什么?
BMO-AI 將使用 Azure 認知計算機視覺來描述它所看到的內容。
你在想什么?
BMO-AI將拍攝照片并使用 DALL-E 2 圖像變體向您展示它如何想象它正在看的東西。
繪畫
在你的回復中包含“繪畫”一詞(即“請畫一張小狗與企鵝交談的圖片”)將提示穩定擴散根據你告訴 BMO-AI 繪制的內容創建圖像。
描述
在提示中包含“描述”一詞,(即讓我們聊天 – 說“讓我們聊天”會啟動 OpenAI ChatGPT 3.5 對話聊天模式,它將記住你之前的問題,以便在整個對話過程中獲得上下文。說“我完成了”將結束聊天模式。
問任何問題
如果你說上述關鍵短語以外的任何內容,BMO-AI 將使用 OpenAI ChatGPT 3.5 完成來回答單個問題,但不會記住你要求的任何后續內容。
3、注意:AI 功能需要互聯網連接。如果你打算將伴侶機器人帶到家庭 WiFi 范圍之外的地方,則應將其設置為與手機相連,以便在其他場景中正常使用,體驗樂趣。
4、注意:使用背面的電壓表確定何時需要關閉 BMO-AI 并更換電池。一般的經驗法則是在 6.8v 和 6.6v 之間關斷,以防止由于過度放電而縮短電池壽命。
編輯:黃飛
?
評論
查看更多