Nao機器人B-human安裝1
申明:學生黨正在研究NAO機器人方向,轉載文章只為了方便自己整理。原文地址:http://blog.csdn.net/liuying_1001/article/details/7380493
Chapter 2
Getting Started with NAO
E-mail:[email protected]
Create-Date:2012-03-11 Sun
Lasted-Revise-time:2012-03-12 Mon
我們使用的是B-Human2011的開原始碼,第二章完成的主要是將B-Human的開原始碼在NAO機器人上運轉起來的過程。這裡將整個流程做個簡要的介紹,並將各步驟中可能遇到的問題和解決的方法羅列出來。歡迎各位繼續補充,拍磚!
1準備工作
需要準備的檔案有:
<1>nao-system-image-robocup-1.10.52.ext3.bz2
<2>naoqi-sdk-1.10.52-Linux.tar.gz
<3>bhuman11_coderelease.tar.bz2
首先請確保以上各檔案放在沒有中文以及空格的路徑下面。
<1>是NAO機器人的1.10.52版本的系統映象(機器人上面執行的作業系統映象,由Aldebaran公司提供)。
為了使用B-Human軟體,我們需要使用<2>( Aldebaran SDK )
<3>解壓後的資料夾下面各資料夾描述如下:
Build是編譯B-Human原始碼編譯過程中存放生成的二進位制檔案和臨時檔案的目錄。初始時不存在,後來編譯的過程中才會生成這個目錄。
Config包含了用於配置B-Human軟體的配置檔案。在Sect. 2.9
Doc包含了一些更進一步的文件資源,也是simulator和behavior的文件編譯存放的目標目錄。但是這裡好像缺少了BehaviorDoc和SimulatorDoc兩個目錄(cf. Sect. 2.8),所以不能正確生成目標文件。
Install包含了建立Nao的啟動盤的所有需要的檔案和兩個用於管理Nao無線配置的指令碼檔案。
Make包含了Window下的Visual Studio project files,Linux下的Makefiles,Mac系統下的XCode project files,以及用於編譯程式碼需要的其他檔案,和Copyfiles工具(用於通過有線或無線網路將編譯好的本地可執行檔案copy到執行時的Nao機器人上面)。
Src包含了B-Human軟體的原始碼。
Util包含了輔助的和第三方的庫和工具(cf. Chap. 9).
2編譯B-Human軟體的原始碼
在ubuntu下只要看sect.2.2.1(Project Generation)和sect.2.2.4(Linux Shell的部分)
sect.2.2.2和sect.2.2.3是windows和Mac系統下面的說明
2.1 安裝需要的軟體:
完整的命令是:
sudo apt-get install g++-4.4 make libqt4-dev qt4-dev-tools libphonon-dev ruby doxygen graphviz xsltproc openssh-client rsync
sudo apt-get install sed e2fsprogs util-linux mount grep gawk patch bzip2 tar coreutils dosfstools bash
2.2 從naoqi-sdk中提取出需要的庫和標頭檔案
執行shell,切換到Install/目錄下,執行alcommonInstall指令碼,後面帶上的引數是naoqi-sdk-1.10.52-linux.tar.gz的路徑。
2.3 編譯程式碼
這裡可以直接用make命令,也可以用codeblocks的整合開發環境。
-
直接使用make命令: 在make/Linux目錄下執行generate指令碼,自動在該目錄下跟據模板和配置檔案生成makefile,然後到shell,切換到該目錄下,執行make命令,編譯程式碼。
-
使用codeblocks整合開發環境:在Make/CodeBlocks目錄下執行generate指令碼,自動在該目錄下跟據模板和配置檔案生成codeblocks的工程檔案。然後用codeblocks開啟,一個一個工程編譯。
2.4編譯過程可能出現的問題和解決方案
Q:question, A:analysis, S:solution
1)
Q:編譯失敗,錯誤提示中有”g++ not found”的提示
A:g++版本不合適
S:首先確保完成了2.1,將需要的軟體安裝全了。如果還是這樣,那麼安裝最新版g++(sudo apt-get install g++)。有些安裝是10.04以上更高版本的,遊客能還需要解除安裝掉最新的g++,安裝老版本的g++。這個自行嘗試。
2)
Q:用codeblocks編譯失敗,錯頭提示中有類似檔案目錄不存在的提示。
A:codeblocks版本不合適
S:試試安裝最新版本的codeblocks (10.05版)
3)
Q:編譯失敗,提示某些檔案找不到。
A:這個主要在SimRobot的編譯過程中出現,原因是某些標頭檔案的命名不統一,編譯器不能正確找到對應的標頭檔案。
S:找到編譯對應的錯誤提示,將錯誤所在行的檔名中的大寫字母改成小寫字母,並新增.h字尾,重新編譯,直到沒有錯誤。
4)
Q:編譯失敗,提示找不到檔案,錯誤提示中找不到的檔案的路徑中可以看到有亂碼。
A:可能是放在有中文或空格的路徑下編譯了。
S:檢查檔案路徑,將程式碼放在沒有中文和空格的路徑下面重新編譯。
5)
Q:編譯失敗,提示缺少檔案,錯誤提示中有“alcommon”關鍵字
A:沒有從naoqi-sdk中提取出對應的庫和標頭檔案
S:按照2.2節進行操作,再編譯
2.5 其它問題
1) 2.2.4.1 Required Sotfware小節安裝缺失軟體的命令中有一個軟體的名字有誤,xsltsproc應該為xsltproc。
2) 2.2.4.2 Compiling小節,編譯如果是採用CodeBlocks這個IDE(integrated development environment整合開發環境)進行的,就要安裝CodeBlocks,具體命令是:
sudo apt-get install codeblocks
3)安裝軟體過程如果很慢,那是因為沒有配置更新源,修改更新源參考:
http://archive.cnblogs.com/a/2212905/
3讓Nao動起來
Nao機器人只能從Linux系統啟動。這裡我們用的V1.10.52的作業系統映象(OS image)。
正如1節中描述,這裡的操作全部在Install目錄下完成。
3.1 系統映象
將系統映象檔案nao-system-image-robocup-1.10.52.ext3.bz2放到Install/images資料夾下,系統映象只支援ext3格式,或者像這裡的ext3格式的壓縮格式bz2。
這裡要求系統映象的檔名和這個給定的分割槽表的檔名一樣。如果映象檔案有不同的名字,那麼需要修改flashAndInstall.sh檔案第8行,修改對應的映象名。或者在呼叫這個指令碼的時候用-i引數,後面帶上新的映象名。
3.2建立機器人的配置檔案
執行createNewRobot.sh指令碼建立機器人的配置檔案。這個指令碼需要三個引數:a team id, a robot id, and a robot name。team id一般和Config/settings.cfg裡面的team number一致,但是可以設定為任意1-254之間的數。robot name是用來作為Nao系統的主機名,儲存在Nao的胸部的晶片中作為機器人的暱稱。
執行creatNewRobot.sh指令碼命令後,在Install/files裡面,按照_interfaces_template_檔案的格式生成了對應robot的網路IP配置檔案。
比如:
createNewRobot.sh -t 0 -r 25 Penny
那麼就會生成interfaces_penny這個檔案,裡面就是機器人有線和無線的配置。%teamID%會被-t後面的引數所取代,%robotPart%會被-r後面的引數所取代。在生成配置檔案之前要確保_interfaces_template_檔案符合我們網路的需要。比如我這裡採用的無線網路的閘道器是192.168.0.1,所以-t後面的引數需要為0.
這裡如果不將有線部分(Wired iterface)的功能註釋掉,那麼機器人預設就使用的是有線的網絡卡,而無線的IP不管用,不知道應該怎樣處理才能啟動無線網絡卡。所以我們目前採取的方法是將模板檔案中有線部分的內容註釋掉。
這個過程中我們還遇到的一個問題是老版本的機器人的無線使用不了的問題。新機器人是V3.3版本,老機器人是V3.2版本。新Nao的無線可以使用,但是老Nao在bhuman程式啟動以後就不能通過電腦無線連線到Nao。目前考慮本身Nao的無線模組的硬體是可以使用的,應該是軟體層面上的問題,可能是驅動相容性的問題,也可能是軟體操作上面的失誤導致無線網絡卡沒有正確啟動。目前沒有找到問題癥結所在,這個有待大家一起思考解決。
3.3 無線網路配置
無線的配置檔案,即機器人的無線連線的網路配置,也是在Install/files目錄下。
預設的是使用wpa_supplicant.conf_default檔案的配置。
檔案內容:
network={
ssid="Nao"
key_mgmt=NONE
wep_key0=6c756f626f
wep_tx_keyidx=0
priority=5
}
則機器人的無線網絡卡會連線名為Nao的無線網,這個無線網的加密方式要求為WEP加密方式,金鑰wep_key0為luobo(ASCII碼形式)。這裡我們使用的無線網是無線路由的,那麼無線路由的無線網路名稱必須為Nao,加密方式也必須設在為WEP加密方式,密碼設為luobo,預設WEP金鑰為wep-key1(對應wep_tx_keyidx=0)。如果你按照說明書裡的步驟將wpa_supplicant.conf_default改為wpa_supplicant.conf_suffix那麼在wpa_supplicant.conf_suffix中也需將相應的位置改動。
Install目錄下的updateWirelessConfig.sh和switchActiveWirelessConfiguration.sh這兩個指令碼可以用來修改robot上面的無線網路IP配置,是在機器人工作且能與電腦通訊時(一般在有線情況下)進行的操作。
3.4 刷U盤
開啟Nao的頭部,取出USB快閃記憶體盤,將快閃記憶體盤 插入電腦中。
用root許可權執行flashAndInstall.sh,後面帶上機器人的名字(3.2節建立了配置檔案的機器人)作為引數。如果檢測到有多於一個Nao的USB快閃記憶體盤插在電腦上,或者檢測失敗,那麼就需要加上-d,後面帶上盤的名稱作為引數。
我所使用的系統是ubuntu10.10,在執行flashAndInstall.sh時會產生一個錯誤:bzip2的版本不支援一個標誌位選項。這個錯誤我沒有解決,對於後面好像沒有影響。
如命令:sudo ./flashAndInstall.sh Penny
3.5 拷貝編譯後的程式碼到Nao
1)將刷好的U盤插如到Nao上面,啟動Nao,按Nao胸部的按鈕讀取Nao的IP。用ssh連線測試是否能連線上。假定機器人的IP是192.168.0.25,
則命令:root ssh [email protected],密碼:cr2011。
2)使用Make/Linux/copyfiles指令碼將本地編譯好的程式碼拷貝到Nao上面。
如:copyfiles . sh Optimized 192.168.0.25 -t red -p 2
具體引數引數說明查閱18-19頁文件。
3)ssh連線到Nao,或者用login工具遠端登入到Nao,執行./phase2,重啟Nao。
4)重啟後,按胸口的按鈕,機器人就處於找球並踢球的狀態,再按按鈕就暫停。
到此已經成功的讓Nao動起來了,後面關於如何進一步使用B-Human的軟體和Nao協同工作,還有待大家一起學習,進一步深入研究。
後記:
自己最近研究NAO機器人方向,起步較晚。希望能夠通過網路結識更多的robocup愛好者,大家一起交流學習,共同進步。