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* 进程应该已经消失。
如果您的机器人没有在实验过程中连接到计算机,您可以通过输入以下内容(在机器人上)将样本存储到机器人上
./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.
您可以使用 **-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* 文件并绘制曲线。