跳转到内容

Khepera III 工具箱/示例/绘制电池电压

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

此示例演示了如何记录电池电压随时间变化,并在之后使用 Matlab 绘制它。

启动 Khepera III 机器人,并确保它连接到您的计算机通过 WLAN 或 USB。在以下文本中,我们假设您的机器人通过 USB 连接。如果您使用 WLAN,只需替换+usb+RobotID(例如+203).

将 *battery* 程序复制到机器人上

cd Programs
k3put +usb battery

您现在基本上已经准备好了。但是,为了测试一切是否正常,登录到您的 Khepera III 机器人

k3go +usb

并输入

cd your_username
./battery

这应该打印类似于以下内容的内容

$BATTERY,0,7.8372,-0.4445,-0.4453,0.0000,76.0000,26.0000

此 NMEA 消息中的第二个数字 (7.8372) 报告了电池电压,以伏特 (V) 为单位,通常在 8.2 V(充满电的电池)和 6.6 V(几乎没电的电池)之间。

记录电池电压

[编辑 | 编辑源代码]

我们现在将每秒测量一次电池电压,并将消息记录到计算机上。请注意,您的机器人需要在整个实验过程中保持与计算机的连接。

在您的计算机上,输入以下内容

k3run +usb -o battery_measures "/root/your_username/battery -r -w 1000000"

请注意,此脚本将在后台启动程序并立即返回。样本将存储在 *k3-192.168.1.2/battery_measures* 文件中,而不是打印在终端中。(*k3-192.168.1.2* 文件夹由k3run 脚本自动创建。)

要查看当前正在存储的内容,您可以“tail”该文件

tail k3-192.168.1.2/battery_measures

这将打印输出文件的最后 10 行。您甚至可以使用 **-f** 选项来跟踪测量值

tail -f k3-192.168.1.2/battery_measures

在机器人上,您可以通过输入以下内容来检查 *battery* 程序是否正在运行

ps

它列出了所有正在运行的进程。

停止测量

[编辑 | 编辑源代码]

如果您的机器人正在电池上运行,则电池电压会下降,直到下降到大约 6.6 V 以下,此时运行 Linux 的 KoreBot 板会崩溃。此时,记录将自动停止。

如果您希望在机器人崩溃之前停止记录,您可以通过在机器人上终止 *battery* 进程来手动完成此操作

killall battery

如果您输入

ps

现在,*battery* 进程应该已经消失。

备选方案 1

[编辑 | 编辑源代码]

如果您的机器人没有在实验过程中连接到计算机,您可以通过输入以下内容(在机器人上)将样本存储到机器人上

./battery -r -w 1000000 > battery_measures

或者,如果您想同时打印样本

./battery -r -w 1000000 | tee battery_measures

要终止测量,只需按 Ctrl-C。

要从机器人下载测量结果,请在您的计算机上输入以下内容

k3get +usb battery_measures

请注意,机器人上的磁盘空间非常有限(只有大约 1 MB 是空闲的)。确保您始终在实验后下载测量结果,并在机器人上删除文件(rm battery_measures)。可以使用以下命令查询可用磁盘空间df -h.

备选方案 2

[编辑 | 编辑源代码]

您可以使用 **-r** 选项(连续测量)运行 *battery* 程序,也可以在每次想要测量电压时启动 *battery* 程序,并且每次只进行一次测量。如果您想要在实验之前/之后进行测量,或者测量之间的时间间隔更长(例如,每 10 分钟一次),这将非常有用。

要实现这一点,最好编写一个简短的脚本,通过执行以下行,该脚本会不时地启动电池程序

 ssh [email protected] "/root/your_username/battery" >> battery_measures

可以在此示例的文件夹中找到示例脚本(*measure_alternative2.pl*)。

解析结果文件

[编辑 | 编辑源代码]

*battery_measures* 文件包含 NMEA 0183 记录,我们需要从中提取当前电压。这可以使用提供的脚本 *parse_battery_voltage.pl*(Perl)或 *parse_battery_voltage.py*(Python)之一来完成。这两个脚本是等效的——选择您喜欢的任何一个。我们在这里将坚持使用 Perl 版本。

以以下方式启动脚本

./parse_battery_voltage.pl < battery_measures > matlab_battery_voltage

*matlab_battery_voltage* 文件现在每行包含一个数字,表示相应测量的电压。

绘制结果

[编辑 | 编辑源代码]

现在,启动 Matlab 并输入

plot_battery_voltage

这是一个非常简单的 Matlab 脚本 (m 文件),它加载 *matlab_battery_voltage* 文件并绘制曲线。

华夏公益教科书