導語
在上一篇文章中,我們詳細介紹了杜克大學研究團隊開發的Text2Robot系統—這個能夠將文字描述轉換為實體四足機器人的新框架。
今天,我們將深入這個好玩的項目的GitHub開源代碼庫,幫助你實際動手,從零開始創建自己的Text2Robot機器人。
杜克大學團隊不僅發表了研究論文,還慷慨地將整個項目代碼開源,包括從文本生成網格、網格處理到機器人控制的完整工作流程。
https://github.com/generalroboticslab/Text2Robot
這意味著,即使沒有機器人學或深度學習背景的愛好者,也可以使用這套工具創建獨特的、功能性的四足機器人。
讓我們一步一步了解如何使用這個開源項目,實現從文字到機器人的奇妙轉變。
項目結構:一覽Text2Robot的完整實現流程
Text2Robot的GitHub倉庫組織得非常清晰,包含了從文本到機器人的全流程工具鏈。
項目主要分為以下幾個部分:
Text2Mesh:使用Meshy網站將文本提示轉換為STL網格文件
Mesh2CAD:通過Fusion360自定義腳本將STL網格轉換為可動機器人模型
CAD2URDF:將CAD模型導出為機器人描述格式(URDF)文件
進化算法:優化機器人形態和控制策略
Sim2Real:將模擬機器人轉移到現實世界中
倉庫還包含一個詳細的PDF組裝指南,以及已預生成的STL文件示例,讓你可以直接從中間步驟開始,無需從頭執行每個流程。
環境配置:為AI機器人設計做好準備
Text2Robot基于Isaac Gym模擬環境,其安裝已在Ubuntu 22.04.4 LTS與CUDA 12.3上進行了測試。
開發團隊在多種高性能GPU上進行了實驗,包括PNY RTX A6000、NVIDIA GeForce RTX 3090和NVIDIA A100 PCIe。
安裝過程相對簡單,倉庫根目錄下提供了conda_env_py38.yaml文件,可以使用以下命令快速創建環境:
# 創建環境
conda env create --file conda_env_py38.yaml -y
# 激活環境
conda activate py38
# 導出庫路徑
export LD_LIBRARY_PATH=${CONDA_PREFIX}/lib
AM易道提醒:如果你使用的是micromamba而不是conda,可以通過設置別名alias conda="micromamba"來兼容上述命令。
從文字到3D模型:使用Meshy生成機器人原型
Text2Robot的第一步是使用文本生成3D模型。
項目推薦使用Meshy網站(https://www.meshy.ai/)來生成STL格式的網格模型。
為了方便用戶,倉庫中已經提供了實驗中使用的STL文件,位于STL_Files/Example_Meshes目錄下。
如果你想創建新的機器人模型,可以訪問Meshy網站,在提示中必須包含"quadrupedal walking robot"(四足行走機器人)關鍵詞以獲得最佳結果。
需要注意的是,自定義生成的網格不保證與提供的切片腳本完全兼容,需要進行一些調整。
網格轉CAD:將靜態模型轉換為可動機器人
生成的STL網格需要轉換為Fusion360裝配體,這是將靜態模型轉變為可動機器人的關鍵一步。
首先需要安裝Fusion360(教育版可免費獲取),然后按照以下步驟操作:
將網格插入Fusion360文檔
使用"轉換網格"操作將網格轉換為BREP體(需啟用Fusion設計擴展中的有機網格轉換功能)
將Fusion360_Scripts文件夾中的Python腳本添加到Fusion360中
運行Install_Packages腳本安裝必要的Python庫
在運行切片腳本前,將"Polyethylene Low Density"(低密度聚乙烯)材料添加到收藏夾
運行Wrapper腳本將預處理的BREP體轉換為機器人裝配體
AM易道提示:如果網格無法正確切片,可以通過調整slicebody函數中的slicebyDX步驟來調整肩部切片的位置。
CAD轉URDF:準備機器人進化優化
在Wrapper腳本中取消注釋URDF導出器函數,將生成的機器人導出為URDF格式。
更進一步,取消注釋循環部分將創建所生成機器人的30種變體,并將所有變體導出為URDF文件。
這個過程可能需要長達15分鐘的時間,但為后續的進化優化提供了豐富的初始種群。
進化算法:優化機器人形態和控制策略
Text2Robot的核心是其進化算法,它能同時優化機器人的形態和控制策略。
倉庫中提供了一個完整的示例實驗Evolutionary_Algorithm/Example_Experiment,你可以基于此創建自己的實驗。
要運行進化算法,需要創建一個包含URDF_Bank文件夾的實驗目錄,該文件夾將存放整個基因庫。
研究團隊建議使用至少5個提示,生成總計150個機器人模型。
如果模型數量較少,需要修改Evolutionary_Algorithm/init_population來初始化較小的第一代種群。
在Evolutionary_Algorithm/experiments文件夾下,可以創建配置文件定制訓練參數。
通過編輯driver.py的前幾行代碼,可以更改進化的代數、能源效率偏好、速度追蹤精度或粗糙地形性能等參數:
max_generations = 55
inform_based_on_energy = False
inform_based_on_velocity = False
rough_terrain = False
運行實驗后,可以在legged_env/envs目錄中使用以下命令可視化任何進化機器人及其行走策略:
bash run.sh example -pk
這將可視化一個進化青蛙的示例檢查點。-pk指定播放模式,并啟用鍵盤輸入,允許使用(ijkl)作為方向鍵和(u和o)控制偏航(旋轉速度)來控制機器人的速度。
從模擬到現實:3D打印并組裝你的機器人
完成模擬優化后,最激動人心的部分來了—將虛擬機器人轉化為物理實體。
倉庫中提供了詳細的Assembly Instructions.pdf,指導你打印和組裝機器人。
要實現從模擬到現實的轉移,需要將Sim2Real_Receiver/receiver.py下載到機器人的樹莓派上,并安裝PyLX-16A伺服控制庫。
運行receiver.py腳本將監聽在模擬中播放機器人時傳輸的UDP消息包。
需要確保數據接收器和數據發布器的target_url匹配。示例代碼:
example(){
base
task=RobotDog
PLAY_ARGS+=(
num_envs=1
checkpoint=assets/checkpoints/example_frog.pth
)
BASE_ARGS+=(
# task.env.terrain.terrainType=plane
++task.env.urdfAsset.root="assets/urdf/example_frog"
task.env.urdfAsset.file="frog.urdf"
task.env.randomCommandVelocityRanges.linear_x=[-0.5,0.5]
task.env.randomCommandVelocityRanges.linear_y=[-0.5,0.5]
task.env.randomCommandVelocityRanges.yaw=[-1,1]
task.env.dataPublisher.enable=true
task.env.dataPublisher.target_url=udp://10.172.14.96:9870
)
}
3D打印從業者的實用建議
作為3D打印領域從業者,使用Text2Robot創建機器人時有幾點特別需要注意:
項目最好使用有較大的打印床的設備,適合機器人部件的批量打印。如果使用其他打印機,可能需要調整部件分割方式。
項目推薦使用PLA材料,但對于需要更高機械強度的應用場景,PETG或尼龍材料可能是更好的選擇。
電子元件兼容性默認配置使用Hiwonder HTD-45H高壓串行總線伺服電機和樹莓派4控制器,如需替換其他元件,請確保在Assembly Instructions.pdf中查看詳細的電子元件清單并相應調整。
關于項目背后的算法和學術文章,請查閱今日更新的同名項目內容。
企業合伙人計劃:
讀者提示:
添加amyidao加入讀者交流群(備注加群),獲取原始信源鏈接或不便發表內容
,并與AM易道同頻讀者共同探討3D打印的一切AM易道建議也讀者星標公眾號,以便第一時間收到AM易道更新。
免責聲明:AM易道與文中提到公司尚不存在任何形式的商業合作、贊助、雇傭等利益關聯。AM易道圖片視頻來自于網絡,僅作為輔助閱讀之用途,無商業目的。權歸原作者所有,如有任何侵權行為,請權利人及時聯系,我們將在第一時間刪除。本文圖片版權歸版權方所有,AM易道水印為自動添加,輔助閱讀,不代表對該圖片擁有版權,如需使用圖片,請自行咨詢版權相關方。AM易道文章不構成任何投資建議,AM易道不對因使用本文信息而導致的任何直接或間接損失承擔責任。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.