在過去的幾個月里,一只希沃納小狗機器人狗一直穩(wěn)穩(wěn)地坐在我的辦公桌上。它很聰明——能夠四處移動、識別面孔,甚至還能響應(yīng)一些指令。但一個想法一直在我腦海中縈繞:如果它能擁有“雙手”來主動與周圍環(huán)境互動,而不僅僅是觀察和移動該怎樣呢?這個想法促使我訂購了適用于小狗機器人的專用兩自由度機械臂擴展套件,從而開啟了將它從“移動平臺”轉(zhuǎn)變?yōu)椤耙苿硬僮髌鳌钡捻椖俊?
這遠不止是硬件的簡單附加功能。我的目標(biāo)是構(gòu)建一個完整的智能行為循環(huán):讓“小狗板”能夠自主找到目標(biāo)物體,規(guī)劃前往該物體的路徑,精確地抓取它,并最終將其運送到指定位置。這聽起來像是物流機器人或家庭助手的簡化版本,而“小狗板”采用的開源、基于 ROS 的設(shè)計使這個雄心勃勃的想法得以實現(xiàn)。
第1步:硬件集成——構(gòu)建物理基礎(chǔ)
將這個機械臂套件安裝起來的過程出乎意料地十分順利。該套件包含機械臂主體、兩個專用伺服電機、所有必需的線纜以及一個與“小狗派”(PuppyPi)的數(shù)控鋁制背板完美適配的安裝支架。關(guān)鍵在于要確保機械臂底座穩(wěn)固無比,因為任何輕微的晃動都會在夾爪處被放大,從而破壞精度。
我用提供的線纜將機械臂的兩個伺服電機連接到了小狗板主板上的預(yù)留擴展端口上。根據(jù)官方文檔,這些端口是預(yù)先配置好的,這讓我避免了底層驅(qū)動程序方面的困擾。在開機之前,我手動將機械臂調(diào)整到“零”位置——這是未來所有動作的基準(zhǔn)點。
您可以查看“小狗板”教程,以獲取完整的代碼、視頻指南以及其他項目內(nèi)容。
第 2 步:軟件與感知——賦予其“眼睛”和“大腦”
真正的挑戰(zhàn)和樂趣始于軟件方面。PuppyPi 運行著完整的 Ubuntu 和 ROS 系統(tǒng),這是我一切工作的基礎(chǔ)。我首先安裝了官方的 HiWonder 機器人手臂 ROS 包,其中包含了 URDF 模型、基本控制器和示例腳本。
視覺對于手臂確定抓取位置至關(guān)重要。我利用“小狗板”內(nèi)置的廣角攝像頭編寫了一個基于 OpenCV 的視覺節(jié)點。為了確保識別的可靠性,我編寫程序使其能夠檢測特定的顏色(一個明亮的紅色立方體)。這個節(jié)點會持續(xù)分析視頻流。一旦它識別出目標(biāo)顏色的斑點,它就會使用相機校準(zhǔn)參數(shù)計算出該物體相對于“小狗板”主體的三維空間坐標(biāo)。
接下來是關(guān)鍵環(huán)節(jié):坐標(biāo)轉(zhuǎn)換和運動規(guī)劃。我創(chuàng)建了一個核心控制節(jié)點,該節(jié)點訂閱由視覺節(jié)點發(fā)布的坐標(biāo)信息。接收到這些坐標(biāo)后,該節(jié)點會執(zhí)行一系列坐標(biāo)轉(zhuǎn)換,將目標(biāo)點從“相機坐標(biāo)系”轉(zhuǎn)換到“機械臂基坐標(biāo)系”。對于這個具有兩個自由度的機械臂,我使用了一個簡單的幾何模型來進行逆運動學(xué)計算,以確定所需的伺服角度,生成了一條平滑的軌跡,并最終通過 ROS 主題向伺服驅(qū)動節(jié)點發(fā)布命令。我還編寫了一個簡單的夾具控制服務(wù)來處理開合動作。
第 3 步:讓功能“活”起來——三個逐步演示環(huán)節(jié)
在硬件和軟件都準(zhǔn)備就緒之后,我設(shè)計并實施了三個逐步復(fù)雜的場景,以全面測試該平臺的性能。
示例 1:靜態(tài)視覺抓取。這是基礎(chǔ)測試。當(dāng)“小狗板”保持靜止?fàn)顟B(tài)時,我將紅色立方體放置在它前方的不同位置。啟動程序后,它會用“頭部”(攝像頭)快速掃描,鎖定目標(biāo),然后機械臂會平穩(wěn)地在立方體上方移動、下降、抓取并抬起。當(dāng)夾具穩(wěn)穩(wěn)地提起立方體的那一刻,我就知道整個感知控制流程已經(jīng)正常運行了。
演示 2:自主搜索與運輸。這是核心挑戰(zhàn)。我讓小狗機器人在一間小房間里自由移動,同時持續(xù)運行視覺程序。當(dāng)攝像機在移動過程中發(fā)現(xiàn)地板上的紅色立方體時,程序會命令小狗機器人調(diào)整自身方向,并靠近該物體。到達最佳位置后,小狗機器人會暫停,執(zhí)行抓取動作,然后規(guī)劃一條新的路徑,將立方體運送到指定的“投放區(qū)”。這一過程完美地展示了完整的自主機器人循環(huán):“感知 - 決策 - 執(zhí)行 - 移動”。
演示 3:簡單的人機交互。為了增添趣味性,我利用了 PuppyPi 現(xiàn)有的多模態(tài)人工智能功能進行了簡單的集成。我擴展了其語音功能,使得當(dāng)我說“拿起那個紅色的立方體”時,語音識別會將指令轉(zhuǎn)換為文本,并通過 ROS 傳遞給主控制節(jié)點,從而觸發(fā)整個搜索和抓取流程。這是一個初步演示,但有效地展示了高級自然語言指令如何能夠轉(zhuǎn)化為復(fù)雜的機器人任務(wù)。
第 4 步:挑戰(zhàn)、調(diào)試與優(yōu)化
沒有哪個項目是一帆風(fēng)順的。我遇到了幾個關(guān)鍵問題:首先,由于小狗電腦停止運行時身體輕微晃動導(dǎo)致抓取精度下降。我的解決辦法是在移動后短暫進行穩(wěn)定暫停,并讓視覺系統(tǒng)進行多次快速位置讀取以進行平均計算后再進行抓取。其次,在多節(jié)點協(xié)調(diào)中出現(xiàn)了時間問題(例如,夾爪在手臂未處于正確位置時就閉合)。我使用 ROS 的 actionlib 庫對任務(wù)流程進行了重構(gòu),將每個動作(移動、定位、抓取)都設(shè)為獨立的、可等待的動作,并帶有反饋,從而形成了更清晰、更可靠的邏輯。
結(jié)論
通過這個項目,PuppyPi 從一個“演示平臺”轉(zhuǎn)變?yōu)榱艘豢钫嬲摹皠?chuàng)新平臺”。雖然這個兩自由度機械臂設(shè)計簡單,但它所實現(xiàn)的自主移動操作能力卻遠超其各個組成部分的總和。這證明了在低成本的桌面級設(shè)備上實現(xiàn)復(fù)雜機器人應(yīng)用是可行的。
該項目的結(jié)束僅僅意味著更多想法的開始。你可以為夾具添加微型攝像頭,以實現(xiàn)精確的“手眼”視覺伺服;可以使用激光雷達地圖讓機器人記住物品通常存放的位置;甚至可以嘗試兩個“小狗板”單元協(xié)同工作來搬運一個物體。PuppyPi 的開源生態(tài)系統(tǒng)和 ROS 支持為所有這些探索提供了堅實的基礎(chǔ)。
我認(rèn)為最令人興奮的項目并非是使用那種封閉式的產(chǎn)品,而是要將一個開放平臺發(fā)揮到極致,從而創(chuàng)造出全新的事物。為“小狗板”添加一個擴展臂的過程,正是這樣一種探索之旅。我迫不及待地想看到你們用它創(chuàng)造出什么樣的成果。
本文編譯自hackster.io





