本文做者:o****0javascript
前幾天,南京郵電大學的一場畢業典禮引發了吃瓜羣衆的熱議,先來看看這個畫風:java
因爲疫情緣由,不少高校的學生只能在家裏經過線上視頻的方式完成畢業論文答辯。答辯經過後,畢業典禮就要來了,但疫情緣由還不能返校怎麼辦?畢竟畢業典禮一輩子可能就這一次,儀式感仍是要有的!因而南京郵電大學就用自研的機器人,爲部分沒法到場的畢業生整了這麼一出畫風清奇的「雲畢業典禮」。python
據南郵的老師介紹,畢業典禮上的這些機器人出自學校的機器人創新團隊之手,是在之前參賽機器人的基礎上改裝的。此次改裝主要是爲機器人配置了與真人身高相仿的模型,現場由專門的同窗對機器人進行遠程控制,屏幕則是用 ZOOM 與參加畢業典禮的同窗進行視頻交互。這個由南郵學生組成的機器人團隊曾在國內外各大機器人競賽中得到不錯的成績。git
其實如今的 AI 技術已經很是成熟且親民,就算是編程能力不太強的同窗也能夠玩轉不少 AI 工具,好比不少好玩的開源機器人項目。據悉,南郵這款機器人內部的控制系統也是在開源軟件的基礎上改進而來,雖然具體用的哪款開源軟件並不知曉,但我想借此機會給你們分享一些有趣的開源機器人項目,感興趣的朋友能夠本身動手 DIY 一個 AI 機器人。 github
PyRobot 是 Facebook AI 團隊與卡耐基梅隆大學研究團隊合做研發的開源機器人框架,基於 Facebook 的機器學習框架 PyTorch ,可以運行由 PyTorch 訓練的深度學習模型。算法
PyRobot 基於機器人操做系統 ROS 提供了一組無關硬件的 API,供開發人員控制各類型號的機器人。PyRobot 抽象了硬件底層控制器與應用程序之間交互的細節,所以對於 AI 愛好者來講,能夠在不具有設備驅動程序、控制或規劃等專業知識的狀況下,使用各類機器人的通用功能,好比控制機器人關節的位置、速度或是力矩,甚至包括笛卡爾路徑規畫或是視覺 SLAM 等。編程
PyRobot 原生支持兩款機器人,分別是低成本的 LoCoBot (就是上面動圖裏的那款)和 Sawyer (工業製造機械臂),感興趣的朋友能夠買一臺 LoCoBot 來玩玩看(也能夠在 3D 模擬器上玩)。固然,若是想用在本身 DIY 的機器人上,開發團隊也提供了教程,能夠接着往下看:詳情點擊。ubuntu
安裝使用框架
使用 LoCoBotcurl
同時安裝 PyRobot 和 LoCoBot 依賴項
1. 安裝 Ubuntu 16.04
2. 下載安裝腳本
sudo apt update sudo apt-get install curl curl 'https://raw.githubusercontent.com/facebookresearch/pyrobot/master/robots/LoCoBot/install/locobot_install_all.sh' > locobot_install_all.sh
3. 運行腳本安裝全部內容(ROS、realsense 驅動程序等)。
4. 若是你已經擁有一臺 LoCoBot 。運行如下命令:(請在運行如下命令以前將 nuc 計算機鏈接到 realsense 相機)
#-t Decides the type of installation. Available Options: full or sim_only #-p Decides the python version for pyRobot. Available Options: 2 or 3 chmod +x locobot_install_all.sh ./locobot_install_all.sh -t full -p 2
5. 沒有真的 LoCoBot 也不要緊,能夠在 Gazebo 這款 3D 模擬器上運行一個虛擬的 LoCoBot,測試各類機器人的算法。跳過第 4 步,運行如下命令:
#-t Decides the type of installation. Available Options: full or sim_only #-p Decides the python version for pyRobot. Available Options: 2 or 3 chmod +x locobot_install_all.sh ./locobot_install_all.sh -t sim_only -p 2
注: 若是安裝了與 PyRobot 兼容的 Python 3 ,把上面的 -p 2
改爲 -p 3
。
使用 DIY 機器人
安裝 PyRobot
cd ~ mkdir -p low_cost_ws/src cd ~/low_cost_ws/src git clone --recurse-submodules https://github.com/facebookresearch/pyrobot.git cd pyrobot/ chmod +x install_pyrobot.sh ./install_pyrobot.sh -p 2 #For python3, modify the argumet to -p 3
兼容問題:因爲 realsense 一直在更新,若是不當心從 ubuntu 中的軟件更新程序更新了 realsense相關的軟件包,可能會出現兼容性問題。所以,做者建議不要更新任何與 realsense 相關的庫。當 ubuntu 提示軟件更新時,請仔細檢查更新列表。
新建 DIY 機器人配置文件
1. 建立一個新的配置文件
想要與新機器人交互的第一步是建立新的配置文件。首先配置文件名應遵循如下命名規則:<ROBOT_NAME> _config.py。建立此文件最簡單的方法是繼承 src / pyrobot / cfg / config.py 中的預約義配置。在 config.py 中,做者定義了 Robot 和 ARM 類所需的一些配置。此處的每一個配置都應指定適當的值。在 pyrobot / cfg / sawyer_config.py 中能夠找到有關如何編寫配置文件的示例。 sawyer_config.py 繼承了 config.py 中定義的配置,並更改了這些配置的默認值。 sawyer_config.py 還顯示瞭如何在配置文件中添加特定於新機器人的更多配置。
2. 繼承 PyRobot 父類
下一步是繼承現有的 PyRobot 父類(手臂,抓取器,基礎,相機等)。在 src / pyrobot 中建立一個名爲 <ROBOT_NAME> 的文件夾。根據新機器人擁有的硬件,建立一個名爲 arm.py,gipperper.py,base.py 或 camera.py 的 python 腳本。例如,若是新機器人具備全部這 4 個組件,則應在上面建立 4 個文件。若是新機器人只有手臂和抓手,則應只建立 arm.py 和 nipper.py 。在每一個文件中,建立一個新類(類名稱應該與 <ROBOT_NAME> _config.py 中的配置 CLASS一致)並繼承 PyRobot 父類。
建議在父類中重用盡量多的方法,若是新的機器人不支持方法,則能夠覆蓋該方法,並在調用該方法時引起錯誤。整體而言,該庫很是靈活,你能夠覆蓋任何方法。能夠在 src / pyrobot / sawyer 中找到編寫 arm.py 的示例。例如 Sawyer 機器人,只須要覆蓋命令發佈功能便可使其代碼與 PyRobot 兼容。
3. 編寫單元測試
寫完代碼後,須要爲新機器人編寫單元測試。單元測試的示例能夠在 tests / 中找到。
4. 添加示例
能夠在 examples / 中添加示例。建立一個名爲 <ROBOT_NAME> 的新文件夾,而後添加示例文件。
PyRobot 的下載地址:點擊下載
若是以爲購買 LoCoBot 的渠道太麻煩,能夠試試這個國產項目。PHOENIXEngine 是一個能夠用來開發機器人、遊戲的引擎。集成 HectorSlam 算法爲機器人室內導航,使用 A* 算法進行全局路徑規劃,使用 DWA 算法進行局部避障。該項目爲國產項目,做者提供了一整套低成本的機器人物理組件。目前,PHOENIXEngine 已經支持 Windows、ARM、Linux、LinuxARM、iOS 平臺,以 Lua 爲主要開發語言,底層構建用的 C/C++,支持跨平臺編譯。
安裝使用
該項目有比較完整的視頻教程:
Part1 結構安裝:https://www.bilibili.com/video/av70786355
Part2 系統安裝:https://www.bilibili.com/video/av70788879
Part3 展現:https://www.bilibili.com/video/av71408115
PHOENIXEngine 的下載地址:點擊下載
娛樂之餘,若是你們想進一步學習和了解機器人相關的各類 AI 算法原理,推薦看看這個機器人算法庫。PythonRobotics 是用 Python 實現的機器人算法案例集合,該庫包括了機器人設計中經常使用的定位算法、測繪算法、路徑規劃算法、SLAM、路徑跟蹤算法。做者的初衷是但願幫助 AI 愛好者更容易理解每一個算法的基本思想,選擇的算法示例都是一些應用很是普遍的實用算法。強烈推薦給想要進一步瞭解和學習 AI 機器人相關算法原理的朋友。
部分算法案例:
機器人定位算法:
擴展卡爾曼濾波器(EKF)定位
這是使用擴展卡爾曼濾波器(EKF)的傳感器融合定位。藍線是真實的軌跡,黑線是推算的軌跡,綠點是定位觀測(例如 GPS),紅線是 EKF 的估計軌跡,紅色橢圓是 EKF 估計的協方差橢圓。
無損卡爾曼濾波定位
這是一個使用無損卡爾曼濾波器(UKF)的傳感器融合定位,線條和點與 EKF 模擬的含義相同。
PythonRobotics 的下載地址:點擊下載
感興趣的朋友不妨業餘時間 DIY 一個 AI 機器人吧。