Khepera III 工具箱/編寫自己的程式
儘管標準程式允許您與機器人的所有感測器和執行器進行互動,但您可能希望實現自己的演算法。Khepera III 工具箱為您提供了一個方便易用的 API,用於訪問機器人的感測器和執行器,以及數百行 C 語言示例程式碼。此外,還有一個 Makefile 可用。
首先,確保您的計算機上可以使用 make,方法是鍵入
make -h
如果計算機提示找不到 make,請使用 Linux 發行版的包管理系統安裝它。
接下來,您需要安裝 ARM 編譯器工具鏈。從K-Team 網站下載檔案 korebot-tools-i386-0.1.2.tar.gz(KoreBot 編譯工具鏈,適用於 Linux i386 主機),並將其解壓縮到您的主目錄中的某個位置,或解壓縮到 /usr/local/。
tar -xfz korebot-tools-i386-0.1.2.tar.gz
將 bin 目錄新增到您的 PATH 環境變數中,最好透過在您的 .bashrc 檔案中新增以下行
export PATH=$PATH:/path/to/your/arm/toolchain/bin
並重新啟動您的 bash shell(終端)。
此時,如果您只是鍵入以下命令,您的計算機就不應該再提示任何錯誤。
arm-linux-gcc --help
首先,確保您的計算機上可以使用 make,方法是鍵入
make -h
如果計算機提示找不到 make,請使用 Linux 發行版的包管理系統安裝它。
接下來,您需要安裝 ARM 編譯器工具鏈。從K-Team 網站下載檔案 korebot2-oetools-light-1.0-kb1.2.tar.bz2,並將其解壓縮到 /usr/local/ 中的某個位置。必須將其解壓縮到 /usr/local/ 中,以便編譯器可以找到庫。
wget http://ftp.k-team.com/KorebotII/software/light_toolchain/korebot2-oetools-light-1.0-kb1.2.tar.bz2 tar xvjf korebot2-oetools-light-1.0-kb1.2.tar.bz2 sudo mv korebot2-oetools-1.0/ /usr/local/
將 bin 目錄新增到您的 PATH 環境變數中,最好透過在您的 .bashrc 檔案中新增以下行
export PATH=$PATH:/usr/local/korebot2-oetools-1.0/tmp/cross/bin/
並重新啟動您的 bash shell(終端)。
此時,如果您只是鍵入以下命令,您的計算機就不應該再提示任何錯誤。
arm-angstrom-linux-gnueabi-gcc --help
在撰寫本文時,我們不知道任何適用於 Mac OS X 的 ARM 編譯器工具鏈,但我相當肯定一定存在。
要建立新程式,請鍵入
cd my_khepera3_project_directory k3-create-program my_new_program
其中 my_new_program 代表您的程式名稱。這將建立一個名為 my_new_program 的資料夾,並將一個示例 main.c 檔案和一個 Makefile 複製到其中。
要檢查一切是否正常,請嘗試編譯新程式
cd my_new_program make
這將建立一個二進位制可執行檔案 my_new_program,您可以將其複製到機器人上並在那裡執行。
您現在可以編輯檔案 main.c,並在其中實現您的演算法。如果您要實現一個複雜的演算法,您當然可以建立額外的 *.c 和 *.h 檔案。啟動 make 時,專案資料夾中的所有 *.c 檔案將自動傳遞給編譯器。
可以透過修改 Makefile 中的以下行來更改二進位制可執行檔案的名稱
TARGET := my_new_program
請注意,按照慣例,可執行檔案應始終與專案資料夾同名。(指令碼k3put 在指定程式資料夾時依賴於此。)
Makefile 還包含一個必須與您的程式一起編譯的模組列表。大多數程式將使用以下模組
MODULES := khepera3 commandline i2cal
如果您的程式需要其他模組(例如 measurement),只需將這些模組新增到該行即可。
儘管 Khepera III 工具箱不需要 libkorebot 庫(並且實現了幾乎所有功能),但您的程式碼可能需要針對該庫進行編譯。為此,請在您的 Makefile 中新增以下行
LIBKOREBOT := /path/to/libkorebot-1.10/build-korebot/ INCS_ADD := -I $(LIBKOREBOT)/include LIBS_ADD := -L $(LIBKOREBOT)/lib -lkorebot
請注意,只有在機器人上提供 libkorebot.so 庫時,編譯後的程式才能正常執行。
程式設計風格是一門藝術,而不是一門精確的科學。Khepera III 工具箱使用一種相當緊湊的程式設計風格,但不遵循任何特定約定。對於您自己的程式,您當然可以自由地堅持您自己的編碼風格。
有一些工具可以自動格式化您的原始碼以符合某些規則。其中一個工具是Artistic Style,一個非常易於使用的開源程式。安裝此程式後,以下命令將應用最小格式化(在運算子之間進行均勻間距,並使用製表符進行縮排)
astyle -p --indent=tab main.c
原始檔案的副本將儲存為 main.c.orig。
我們強烈建議您使用版本控制系統(如SVN(Subversion))來儲存您的 Khepera III 程式。SVN 可能是當今最突出的系統,易於設定和使用。
如果您使用的是版本控制系統,則應檢入程式的以下檔案
- 所有原始檔(*.c,*.h)
- Makefile
- 編譯後的程式(以便那些沒有設定編譯器的人可以使用編譯後的副本)
- 程式需要的任何其他檔案
您不應檢入
- 中間編譯檔案(*.o,*.d)