跳转到内容

Khepera III 工具箱/简介

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

Khepera III 机器人运行嵌入式 Linux(内核 2.6),具有所有最常见的 Linux 工具,除了程序编译。因此,程序必须在另一台具有 arm-linux 工具链的计算机上交叉编译,然后可以使用 SCP 复制并通过 SSH 连接启动。对于熟悉 Linux 的人来说,这原则上很简单,但在从头开始时可能很麻烦。

这就是 Khepera III 工具箱发挥作用的地方。工具箱可以理解为 Khepera III 机器人的瑞士军刀,提供三种不同类型的工具

  • 与机器人交互的脚本:提供一系列脚本,用于在您的机器人上复制文件、远程执行程序以及执行许多管理任务。这些脚本可以并行处理多个机器人,例如,将文件复制到整个机器人舰队。
  • 用于 Khepera III 机器人的程序:提供许多小程序,用于玩转机器人的传感器和执行器。
  • 具有标准功能的模块:几个模块提供基本功能,您可以轻松地将这些功能集成到您为 Khepera III 机器人编写的程序中。除了用于读取传感器和配置执行器的函数外,还有一些模块用于解析命令行参数、简单的里程计跟踪等等。

本章的其余部分以教程的方式展示了如何使用机器人执行一些花哨的操作,使用 脚本程序模块将在后面的章节中讨论。

准备电脑和机器人

[编辑 | 编辑源代码]

我们假设您已按照 下载和安装 中的说明安装了 Khepera III 工具箱,并且您正在使用最近的 Linux 系统上的 bash shell。

打开您的 Khepera III 机器人并 连接到您的计算机。在本介绍的其余部分,我们假设您的机器人使用 USB 线缆连接。如果您使用的是 WLAN 连接,只需将 "+usb" 替换为 "+ROBOTID"(其中 ROBOTID 是您的机器人编号)。

要检查一切是否正常,请输入

k3ping +usb

这将执行ping 192.168.1.2为您。

现在您的计算机和机器人应该都准备好了 - 是时候玩机器人了!

使用键盘进行远程控制

[编辑 | 编辑源代码]

请输入

cd Programs
k3put +usb motor_initialize motor_stop motion_arrowkeys

将三个电机程序复制到您的机器人。(请注意,您需要输入机器人 root 密码 4 次。默认情况下,此密码为“rootme”。)正如您在终端中看到的,这只是启动了 scp 命令。

现在输入

k3go +usb

并再次输入 root 密码以登录机器人。如果您现在输入ls(在机器人上),您将注意到创建了一个以您的用户名命名的目录。这是一种避免在您的同事也使用同一个机器人时互相覆盖文件的好方法。因此,cd 到此目录并输入

./motor_initialize
./motion_arrowkeys

第一个程序将初始化电机(例如,设置 PID 值),然后退出。第二个程序将持续运行,直到您按 Ctrl-C,并允许您使用键盘上的 W(增加速度)、A(左转)、S(停止)、D(右转)和 X(降低速度)键来控制机器人。

请注意,当您使用 Ctrl-C 退出此程序时,电机将保持最后指示的速度。这是此工具箱中所有程序的一般规则,应该被视为一项功能 - 而不是一个错误。有时很有用的程序是“motor_stop”,它会立即停止电机。

玩完机器人后,您可以通过输入

exit

在命令行中退出。这会将您带回计算机上,回到您执行k3go命令之前的位置。

红外传感器趣味

[编辑 | 编辑源代码]

提供两个程序用于查询红外传感器:infrared_ambientinfrared_proximity。前者只是读取所有红外接收器,而后者使用每个传感器进行两次连续测量(一次是 IR LED 关闭,一次是 IR LED 打开),以估计其到障碍物的距离。

同样,我们首先需要将必要的程序复制到机器人。假设您仍在 Programs 目录中,请输入

k3put +usb infrared_ambient infrared_proximity

然后,登录机器人(k3go +usb)并 cd 到您的目录。

通过输入获取环境 IR 测量值

./infrared_ambient

这将为您提供类似以下内容

$IRAMBIENT,0,31887,4080,4073,4080,4081,4093,4093,4094,4077,4094,4081,4094

前两个值表示样本编号(从 0 开始)和主微控制器的当前时间戳。所有其他值都在 0 - 4096 范围内,对应于机器人上的一个传感器。传感器按顺时针方向(从顶部看)从 0(左后传感器)到 8(后传感器)编号。传感器 9 和 10 分别是右侧和左侧地板传感器。在晴朗的天气里,您可以用手指遮住一个传感器,同时进行另一次测量,您应该会看到值之间有明显差异。在接近模式下(./infrared_proximity).

您可以进行类似的实验。与其多次启动命令,您可以告诉程序连续执行多次(这里:10 次)测量

./infrared_ambient -r 10

或直到按 Ctrl-C 为止才执行测量

./infrared_ambient -r

输出格式

[编辑 | 编辑源代码]

此时,您可能想知道输出格式,尤其是所有行开头的 $IRAMBIENT。这是 NMEA 0183,一种非常简单的基于文本的通信格式,它已通过 GPS 设备(几乎始终使用这种格式)而变得十分普及。有关此格式的更多信息,请参阅 解析程序输出 一章。

使用超声波传感器测量距离

[编辑 | 编辑源代码]
超声波传感器位于机器人外围,如这里所示。

Khepera III 机器人配备了 5 个超声波传感器,可用于检测障碍物。这些传感器在打开后会发出超声波脉冲并记录其回声。由于声波在空气中的传播速度几乎恒定,因此这种技术可用于测量到环境中物体的距离。请注意,事情稍微复杂一点。当您发出脉冲时,您记录的是一系列回声的组合,这些回声是由环境中的各种物体反射而来的。幸运的是,机器人会为您处理信号,并为您提供接收信号中最突出的回声。

请输入

cd Programs
k3put +usb ultrasound ultrasound_enable

将这两个程序复制到您的机器人。现在登录机器人(k3go +usb)并 cd 到您的目录。

将您的机器人指向墙壁并输入

./ultrasound front

您将得到类似以下内容

TODO

每行对应于一个接收到的回声,并包含其振幅以及估计的物体距离。在我们的示例中,我们从距离为 0.98 米的物体获得了非常强的回声,以及来自距离为 0.45 米和 1.22 米的物体的两个强度较低的回声。请注意,精度约为几厘米,并且每次您可能都会得到略微不同的值。

默认情况下,只有前传感器启用。要同时激活左侧和右侧传感器,请输入

./ultrasound_enable left front right

此程序将相应地配置机器人并报告活动传感器。现在,您也可以使用左侧和右侧的传感器进行测量

./ultrasound left
./ultrasound right

获取帮助

[编辑 | 编辑源代码]

要获取有关某个标准程序的帮助,只需使用 -h 选项调用该程序

./battery -h

阅读此帮助以及一些想象力,应该可以让您轻松地使用所有标准程序。

更多教程和实践练习

[编辑 | 编辑源代码]

如需更多教程,请查看 示例 部分。这些示例的编写方式使您可以使用自己的 Khepera III 机器人进行复制,并逐渐了解它。

华夏公益教科书