跳转到内容

Khepera III 工具箱/工具箱/脚本

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

Khepera III 工具箱中的脚本文件夹包含一系列脚本,简化了与 Khepera III 机器人或机器人舰队的交互。这些脚本简化了常见的和经常使用的任务,例如将文件复制到机器人上,设置 SSH 公钥身份验证或关闭机器人。罕见和复杂的任务始终可以使用 ssh、scp 等命令直接执行。


使用脚本和获取帮助

[编辑 | 编辑源代码]

所有脚本都以字母 k3... 开头。因此,如果您在 bash shell 中输入 k3,然后按两次 tab 键,所有脚本都会被列出。这对那些您不每天使用的脚本特别有用。此外,所有脚本在使用 -h 选项调用时都会打印简短的帮助文本,例如:

k3put -h

选择机器人

[编辑 | 编辑源代码]

大多数脚本需要您指定要使用的机器人。这在命令行中通过 +... 参数完成。有四种方法可以选择机器人

  • 通过机器人 ID,例如:+203(它转换为 IP 地址 192.168.141.203)
  • 通过机器人 ID 范围,例如:+203-205(与以下命令相同+203 +204 +205)
  • 通过 IP 地址,例如:+192.168.141.203
  • 通过机器人或舰队的名称,例如:+bob(它在环境变量 K3_BOB 中查找 IP 地址或机器人 ID)

一个特殊的机器人是 '+usb',它始终转换为 192.168.1.2,即通过 USB 连接的机器人的地址。

使用机器人舰队

[编辑 | 编辑源代码]

如果您经常使用整个机器人舰队,最好给这个舰队起一个名字,并将其定义为环境变量。例如,如果您使用机器人 203、204、209、210、211 和 212,请将以下行添加到您的 .bashrc 文件中

export K3_MYFLEET=+203 +204 +209-212

并重新加载该文件 (source ~/.bashrc)。从现在起,您可以使用 +myfleet 作为脚本参数来选择这些机器人。例如,要将 infrared_proximity 程序复制到这些机器人上,请键入

k3put +myfleet infrared_proximity

可用脚本列表

[编辑 | 编辑源代码]

核心脚本

[编辑 | 编辑源代码]

以下脚本经常使用

脚本 描述和示例
k3put 将文件复制到您的机器人舰队。在程序文件夹中,您只需提供文件夹名称,脚本会自动在该文件夹内查找二进制文件。
k3put +203 +204 battery motor_* motion_*
k3get 将文件从您的机器人复制到 PC。文件被放置在 PC 上名为 k3-ROBOTIP 的文件夹中。这些文件夹会在必要时自动创建。如果目标文件存在,它将毫不留情地被覆盖!
k3get +203 +204 my_measurements

这将创建两个文件夹 k3-192.168.141.203k3-192.168.141.204,并将两个机器人的 my_measurements 复制到各自的文件夹中。

k3go 通过 SSH 连接到一个机器人,并打开一个交互式 shell。
k3go +203
k3run 在所有机器人上执行命令,并可选地将输出存储在 PC 上名为 k3-ROBOTIP 的文件夹中。例如,您可以通过键入以下命令记录两个机器人上的 10 次红外距离测量结果:
k3run +203 +204 -o my_infrared_measurements -e my_stderr - /root/your_username/infrared_proximity -r 10

这将创建两个文件夹 k3-192.168.141.203k3-192.168.141.204,并将程序的输出保存到这些文件夹中名为 my_infrared_measurements 的文件。与k3get一样,现有目标文件将毫不留情地被覆盖。请注意,程序在所有机器人上并行启动。但是,程序执行没有同步,即一个机器人可能会在另一个机器人之前启动程序。启动时间的差异主要取决于 WLAN 信道,通常在 10-100 毫秒的范围内,但如果 WLAN 信道负载过重或阻塞,则可能达到几秒钟。如果您启动的程序没有自动退出,可以使用 k3kill 停止它们。

k3halt 通过在每个机器人上执行 halt 命令来关闭机器人。
k3halt +203 +204
k3ping 连续 ping 一个机器人,例如:
k3ping +203

或报告多个机器人是否存活,通过发送 3 个 ping 数据包

k3ping +203 +204
k3kill 停止所有机器人上的正在运行的程序。
k3kill +203 +204 infrared_proximity

开发脚本

[编辑 | 编辑源代码]

以下脚本用于开发新程序和模块

脚本 描述和示例
k3-create-program 在计算机上创建新程序。
k3-create-program my_new_program

请注意,此脚本不与任何机器人交互。有关更多信息,请查看程序开发部分

k3-create-module 在计算机上创建新模块。
k3-create-module my_new_module

请注意,此脚本不与任何机器人交互。有关更多信息,请查看模块开发部分

管理脚本

[编辑 | 编辑源代码]

以下脚本有助于完成一些管理任务,并且不太常用

脚本 描述和示例
k3-ssh-keysetup 在机器人上添加您的 SSH 密钥。
k3-ssh-keysetup +203 +204
k3-erase-userfiles 擦除您在所选机器人的文件夹 (/root/your_username)
k3-erase-userfiles +203 +204

可选地,可以指定用户名来删除这些文件夹,而不是您在机器人上的文件夹

k3-erase-userfiles another_username +203 +204
k3-diskusage 报告每个机器人的磁盘使用情况。
k3-diskusage +203 +204

筛选脚本

[编辑 | 编辑源代码]

以下脚本将程序输出转换为另一种格式

脚本 描述和示例
k3-nmea-to-csv 将特定类型(命令)的 NMEA 消息转换为 CSV(逗号分隔值)格式。
k3-nmea-to-csv IRPROXIMITY < my_nmea_file > my_csv_file

程序输出解析部分中可以找到更详细的描述

华夏公益教科书