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)