跳转到内容

Khepera III 工具箱/编写自己的程序

来自维基教科书,开放的书本,开放的世界

尽管标准程序允许您与机器人的所有传感器和执行器进行交互,但您可能希望实现自己的算法。Khepera III 工具箱为您提供了一个方便易用的 API,用于访问机器人的传感器和执行器,以及数百行 C 语言示例代码。此外,还有一个 Makefile 可用。

准备环境

[编辑 | 编辑源代码]

Korebot 的 Linux

[编辑 | 编辑源代码]

首先,确保您的计算机上可以使用 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

Korebot 2 的 Linux

[编辑 | 编辑源代码]

首先,确保您的计算机上可以使用 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),只需将这些模块添加到该行即可。

包含 libkorebot

[编辑 | 编辑源代码]

尽管 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 / 版本控制系统问题

[编辑 | 编辑源代码]

我们强烈建议您使用版本控制系统(如SVN(Subversion))来存储您的 Khepera III 程序。SVN 可能是当今最突出的系统,易于设置和使用。

如果您使用的是版本控制系统,则应检入程序的以下文件

  • 所有源文件(*.c,*.h)
  • Makefile
  • 编译后的程序(以便那些没有设置编译器的人可以使用编译后的副本)
  • 程序需要的任何其他文件

不应检入

  • 中间编译文件(*.o,*.d)
华夏公益教科书