畫風(fēng)引發(fā)熱議,用開源機(jī)器人項(xiàng)目實(shí)現(xiàn)“云畢業(yè)典禮”
前幾天,南京郵電大學(xué)的一場畢業(yè)典禮引起了吃瓜群眾的熱議,先來看看這個畫風(fēng):
由于疫情原因,很多高校的學(xué)生只能在家里通過線上視頻的方式完成畢業(yè)論文答辯。答辯通過后,畢業(yè)典禮就要來了,但疫情原因還不能返校怎么辦?畢竟畢業(yè)典禮一生可能就這一次,儀式感還是要有的!于是南京郵電大學(xué)就用自研的機(jī)器人,為部分無法到場的畢業(yè)生整了這么一出畫風(fēng)清奇的“云畢業(yè)典禮”。
據(jù)南郵的老師介紹,畢業(yè)典禮上的這些機(jī)器人出自學(xué)校的機(jī)器人創(chuàng)新團(tuán)隊之手,是在以前參賽機(jī)器人的基礎(chǔ)上改裝的。這次改裝主要是為機(jī)器人配置了與真人身高相仿的模型,現(xiàn)場由專門的同學(xué)對機(jī)器人進(jìn)行遠(yuǎn)程控制,屏幕則是用 ZOOM 與參加畢業(yè)典禮的同學(xué)進(jìn)行視頻交互。這個由南郵學(xué)生組成的機(jī)器人團(tuán)隊曾在國內(nèi)外各大機(jī)器人競賽中獲得不錯的成績。
其實(shí)現(xiàn)在的 AI 技術(shù)已經(jīng)非常成熟且親民,就算是編程能力不太強(qiáng)的同學(xué)也可以玩轉(zhuǎn)很多 AI 工具,比如很多好玩的開源機(jī)器人項(xiàng)目。據(jù)悉,南郵這款機(jī)器人內(nèi)部的控制系統(tǒng)也是在開源軟件的基礎(chǔ)上改進(jìn)而來,雖然具體用的哪款開源軟件并不知曉,但我想借此機(jī)會給大家分享一些有趣的開源機(jī)器人項(xiàng)目,感興趣的朋友可以自己動手 DIY 一個 AI 機(jī)器人。
PyRobotPyRobot 是 Facebook AI 團(tuán)隊與卡耐基梅隆大學(xué)研究團(tuán)隊合作研發(fā)的開源機(jī)器人框架,基于 Facebook 的機(jī)器學(xué)習(xí)框架 PyTorch ,能夠運(yùn)行由 PyTorch 訓(xùn)練的深度學(xué)習(xí)模型。
PyRobot 基于機(jī)器人操作系統(tǒng) ROS 提供了一組無關(guān)硬件的 API,供開發(fā)人員控制各種型號的機(jī)器人。PyRobot 抽象了硬件底層控制器與應(yīng)用程序之間交互的細(xì)節(jié),因此對于 AI 愛好者來說,可以在不具備設(shè)備驅(qū)動程序、控制或規(guī)劃等專業(yè)知識的情況下,使用各種機(jī)器人的通用功能,比如控制機(jī)器人關(guān)節(jié)的位置、速度或是力矩,甚至包括笛卡爾路徑規(guī)畫或是視覺 SLAM 等。
PyRobot 原生支持兩款機(jī)器人,分別是低成本的 LoCoBot (就是上面動圖里的那款)和 Sawyer (工業(yè)制造機(jī)械臂),感興趣的朋友可以買一臺 LoCoBot 來玩玩看(也可以在 3D 模擬器上玩)。當(dāng)然,如果想用在自己 DIY 的機(jī)器人上,開發(fā)團(tuán)隊也提供了教程,可以接著往下看:詳情點(diǎn)擊。
安裝使用
使用 LoCoBot
同時安裝 PyRobot 和 LoCoBot 依賴項(xiàng)
1. 安裝 Ubuntu 16.04
2. 下載安裝腳本
sudo apt updatesudo apt-get install curlcurl 'https://raw.githubusercontent.com/facebookresearch/pyrobot/master/robots/LoCoBot/install/locobot_install_all.sh' > locobot_install_all.sh
3. 運(yùn)行腳本安裝所有內(nèi)容(ROS、realsense 驅(qū)動程序等)。
4. 如果你已經(jīng)擁有一臺 LoCoBot 。運(yùn)行以下命令:(請在運(yùn)行以下命令之前將 nuc 計算機(jī)連接到 realsense 相機(jī))
#-t Decides the type of installation. Available Options: full or sim_only#-p Decides the python version for pyRobot. Available Options: 2 or 3chmod +x locobot_install_all.sh./locobot_install_all.sh -t full -p 2
5. 沒有真的 LoCoBot 也沒關(guān)系,可以在 Gazebo 這款 3D 模擬器上運(yùn)行一個虛擬的 LoCoBot,測試各種機(jī)器人的算法。跳過第 4 步,運(yùn)行以下命令:
#-t Decides the type of installation. Available Options: full or sim_only#-p Decides the python version for pyRobot. Available Options: 2 or 3chmod +x locobot_install_all.sh ./locobot_install_all.sh -t sim_only -p 2
注: 如果安裝了與 PyRobot 兼容的 Python 3 ,把上面的 -p 2 改成 -p 3 。
使用 DIY 機(jī)器人
安裝 PyRobot
安裝 Ubuntu 16.04
安裝 ROS kenitc
安裝 PyRobot
cd ~mkdir -p low_cost_ws/srccd ~/low_cost_ws/srcgit clone --recurse-submodules https://github.com/facebookresearch/pyrobot.gitcd pyrobot/chmod +x install_pyrobot.sh./install_pyrobot.sh -p 2 #For python3, modify the argumet to -p 3
兼容問題:由于 realsense 一直在更新,如果不小心從 ubuntu 中的軟件更新程序更新了 realsense相關(guān)的軟件包,可能會出現(xiàn)兼容性問題。因此,作者建議不要更新任何與 realsense 相關(guān)的庫。當(dāng) ubuntu 提示軟件更新時,請仔細(xì)檢查更新列表。
新建 DIY 機(jī)器人配置文件
1. 創(chuàng)建一個新的配置文件
想要與新機(jī)器人交互的第一步是創(chuàng)建新的配置文件。首先配置文件名應(yīng)遵循以下命名規(guī)則:
2. 繼承 PyRobot 父類
下一步是繼承現(xiàn)有的 PyRobot 父類(手臂,抓取器,基礎(chǔ),相機(jī)等)。在 src / pyrobot 中創(chuàng)建一個名為
建議在父類中重用盡可能多的方法,如果新的機(jī)器人不支持方法,則可以覆蓋該方法,并在調(diào)用該方法時引發(fā)錯誤??傮w而言,該庫非常靈活,你可以覆蓋任何方法??梢栽?src / pyrobot / sawyer 中找到編寫 arm.py 的示例。例如 Sawyer 機(jī)器人,只需要覆蓋命令發(fā)布功能即可使其代碼與 PyRobot 兼容。
3. 編寫單元測試
寫完代碼后,需要為新機(jī)器人編寫單元測試。單元測試的示例可以在 tests / 中找到。
4. 添加示例
可以在 examples / 中添加示例。創(chuàng)建一個名為
PyRobot 的下載地址:點(diǎn)擊下載
PHOENIXEngine如果覺得購買 LoCoBot 的渠道太麻煩,可以試試這個國產(chǎn)項(xiàng)目。PHOENIXEngine 是一個可以用來開發(fā)機(jī)器人、游戲的引擎。集成 HectorSlam 算法為機(jī)器人室內(nèi)導(dǎo)航,使用 A* 算法進(jìn)行全局路徑規(guī)劃,使用 DWA 算法進(jìn)行局部避障。該項(xiàng)目為國產(chǎn)項(xiàng)目,作者提供了一整套低成本的機(jī)器人物理組件。目前,PHOENIXEngine 已經(jīng)支持 Windows、ARM、Linux、LinuxARM、iOS 平臺,以 Lua 為主要開發(fā)語言,底層構(gòu)建用的 C/C++,支持跨平臺編譯。
安裝使用
該項(xiàng)目有比較完整的視頻教程:
Part1 結(jié)構(gòu)安裝:https://www.bilibili.com/video/av70786355
Part2 系統(tǒng)安裝:https://www.bilibili.com/video/av70788879
Part3 展示:https://www.bilibili.com/video/av71408115
PHOENIXEngine 的下載地址:點(diǎn)擊下載
PythonRobotics娛樂之余,如果大家想進(jìn)一步學(xué)習(xí)和了解機(jī)器人相關(guān)的各種 AI 算法原理,推薦看看這個機(jī)器人算法庫。PythonRobotics 是用 Python 實(shí)現(xiàn)的機(jī)器人算法案例集合,該庫包括了機(jī)器人設(shè)計中常用的定位算法、測繪算法、路徑規(guī)劃算法、SLAM、路徑跟蹤算法。作者的初衷是希望幫助 AI 愛好者更容易理解每個算法的基本思想,選擇的算法示例都是一些應(yīng)用非常廣泛的實(shí)用算法。強(qiáng)烈推薦給想要進(jìn)一步了解和學(xué)習(xí) AI 機(jī)器人相關(guān)算法原理的朋友。
部分算法案例:
機(jī)器人定位算法:
擴(kuò)展卡爾曼濾波器(EKF)定位
這是使用擴(kuò)展卡爾曼濾波器(EKF)的傳感器融合定位。藍(lán)線是真實(shí)的軌跡,黑線是推算的軌跡,綠點(diǎn)是定位觀測(例如 GPS),紅線是 EKF 的估計軌跡,紅色橢圓是 EKF 估計的協(xié)方差橢圓。
無損卡爾曼濾波定位
這是一個使用無損卡爾曼濾波器(UKF)的傳感器融合定位,線條和點(diǎn)與 EKF 模擬的含義相同。
PythonRobotics 的下載地址:點(diǎn)擊下載
感興趣的朋友不妨業(yè)余時間 DIY 一個 AI 機(jī)器人吧。