yaboPP电子
项目

C-Biscuit:监控机器人的健康状况

2016年6月10日经过Trevor Gamblin.

既然我们已经让羽鹬跑了起来,现在是时候设置一些工具来帮助我们检查我们不断增长的机器人的地位。

在最后一篇文章中,我们经历了在羽棒板上安装了Ubuntu和ROS的基础知识。这次,我们需要进一步调整系统设置并以我们可以轻松修改和构建的方式设置它,因为我们需要从系统中需要更多特定信息。

C-饼干系列

  1. C-Biscuit:黑客和爱好者的机器人平台
  2. C-Biscuit:设计选择和理由
  3. C型饼干功率:用于羽鹬的5V 3A降压稳压器
  4. C-饼干动力:5V稳压器的撬棍保护电路
  5. C-饼干:操作的大脑
  6. C-饼干动力:调节器和撬棍电路的装配和测试
  7. C-Biscuit:监控机器人的健康状况
  8. C-饼干:机器人系统架构
  9. C-饼干:RCB微控制器,电机控制器的原理图设计
  10. C-饼干:RCB功率,步进的原理图设计
  11. C-饼干:机器人控制板的布局和装配
  12. C-饼干:系统集成和测试

需要阅读

与之不同经营的大脑文章,其中部分内容是Ubuntu和ROS的浓缩和调整版本的安装说明,它是不公平的(并且非常不必要的)重新创建在其上可用的广泛的ROS教程Wiki.。如果你可以看待这些,这是一个理想的,作为在这里继续继续的一部分,至少就是到目前为止出版商/订阅者在Python。一旦您完成了这一点,您将准备好有关软件堆栈的未来几篇文章。

最后,由于本文将重点关注一些Bash脚本,因此建议您了解简要概述如果您不熟悉命令行 - 我推荐Linuxcommand.

关于Wi-Fi问题和更新的说明

如果你浏览互联网,你会发现一些用户Wi-Fi与羽鹬有困难。

虽然我们没有遇到迄今为止的确切情况,但在我们的测试中,我们确实看到一些烦恼与更新电路板上的软件apt-get.在偶然的情况下,系统在安装一个特定包装期间会冻结。最简单的解决方法似乎是重新启动系统并在尝试之前单独安装该包装更新升级命令再次。

如果您正在遇到Wi-Fi或更新的问题,请务必评论下面并告诉我们您所看到的内容,以便更好地调查。

通过SSH登录期间的信息

我们下一步的第一件事之一就是让羽鹬告诉我们,我们登录时且没有运行。到那么,我们需要再次编辑.bashrc文件,创建一个完全新的部分我们提供了一个新的脚本,我们将创建,调用.ros_status_script.

重要的是,这些修改是在羽筒板上制作的,因为您可以编辑SSH配置文件来执行此操作,如果您尝试从不同的机器和/或环境登录,则会成为一个麻烦。完成更改后,每次登录都将为您提供此基本信息。可以在我们的文本形式中完成脚本的完整副本GitHub页面

下面我包含了基本检查表脚本的第一次迭代的图片。看看它,然后继续下面得到一个简短的解释发生了什么:

这实际上并非所有这一切都在这一点。我所说的这两件事我们会用这部分文章做的事情可以涉及很多重复,所以写一些短暂的功能是一个很好的想法,使其容易一遍又一遍地。第一个部分具有包含调用命令的输出的变量t,不幸的是有一个相当模糊的手动页面。我们正在使用它来彩色脚本的输出绿色或红色的某些部分,因此它会更容易阅读并找到一些关键信息。

我们遇到的第一个功能,prog_check.,这脚本的核心部分 - 它使用输出PS CAX.,它提供了活动程序和PID列表,并使用其搜索其输出Grep.对于我们指定的关键字(因此1美元,意味着在我们打电话时遵循函数名称的第一个参数)。如果对Grep的调用查找某些东西,它将触发以下IF-else零件以输出包含程序名称的行,以“在线”为单位;否则,它以红色打印“离线”。

第二个功能,ssh_check.,是一种更简单的功能,应该有助于遏制运行过多的远程登录一次(我绝对内疚)。变量sshlist使用WHO告诉我们哪些会话是活动的,而且管道grep -v localhost.确保仅将localhost匹配的结果放入变量中。接下来的两个变量使用WC -L.要获取返回的行数(因此会话数),以及一些基本的shell算术来提供运行的其他会话的计数,然后我们以前打印出来。

最后,有跑步部分。您可以看到我目前正在设置它,以便我们检查属于早期ROS教程的Turtlesim节点。您可以为您运行的事情进行更多重要的关键字来执行此操作,例如找到侦听器和谈话者节点这里

通过在您自己的羽筒板上创建此文件并添加由羽脚板的主目录中的“源.ros_status_script”组成的一行。在Wandboard的主目录中,此脚本每次启动时都会运行此脚本。下面是另一个屏幕截图,显示另一个终端的输出一旦您拥有roscore,turtlesim_node和turtle_teleop_key都运行(以及7个总SSH会话!)。

SSH计数可能似乎有点奇怪,特别是如果您注意到该脚本仅介绍其他会话,但列出了所有这些会话(包括您刚登录的那个)。我在假设下写下这一点,当你开始时,你的远程登录可能都来自不同的地方(并且因此不同的IPS),这应该使其更加清晰,更容易确定哪一个是您的。

额外的系统信息(以及练习)

这是一个很好的开端,但如果我们登录时也有关于系统的可用空间,内存使用率和CPU负载的一些信息,它可能会有所帮助。此外,我忘了彩色SSH_CHECK功能的输出,这是一个isn'必要的,但它肯定是一个很好的触感。让我们现在这样做。

首先,让我们向SSHCHECK功能添加一些颜色。这次,我们将制作编号青色。你要加那条线青色=`tput setaf 6`在变量附近红色的绿色和SSH_CHECK中的打印语句的CYAN颜色指示器,如您可以在下面看到:

如果您现在保存并关闭文件,则键入源.ros_status_script.,您将看到随着SSH连接数的更改输出。

我们将使用哎呀帮助我们从命令中格式化一些输出自由(记忆),DF.(磁盘空间),和最佳(各种统计,但显示CPU负载)。有一个很棒的堆栈交换回答这对我们想要做的事情具有良好的格式,因此我们将使用那里的示例(对呼叫略有修改DF.这样我们就可以看到更高的精度输出)。让我们将那些函数添加到一个函数,以便如果我们想要进行任何更改,我们只需要在一个地方制作它们。

您可以在下面看到我创建的新功能,调用system_check.

保存该文件后,您可以再次使用源.ros_status_script.要测试它,或者再次尝试登录通过SSH。

连接设备

作为我们的监控脚本的最终添加,能够讲述连接到机器人的内容是一个好主意 - 无论是真实的设备。现在这不会是有用的,但是一旦它在连接到Wi-Fi上滚动,就会有助于了解所连接的所有附加的额外。

设备检查有一些好方法。自输出以来ls / dev.应该相对较小,我们将使用Grep.再来一次,比较基线输出LS.当在/ dev目录上使用时的输出应该连接。

我们需要做的第一件事就是前往我们的主目录(如果尚未存在)。从那里,类型ls / dev> default_devices.txt,并且您将看到您已创建一个带有/ dev目录的内容的文件。现在我们需要编辑我们的.ros_status_script.更长的文件。下面我包括我添加的函数的屏幕截图Devices_Check.

这一个可能是我们所做的所有功能中最复杂的。在其中,我们(暂时)通过重定向检查/ dev中的当前文件列表LS.输出到它。LS.是一个棘手的工具,当您将其输出直接放入变量时,它不会很好地做得好,所以为了能够Grep.所述输出,我们首先将其放入文件中作为文本。最后,您可以看到删除此文本文件。

新闻变量将呼叫的结果存储到Grep,该结果将在CurrentDevs.txt中存在的所有行检查,但不是default_devices.txt。

devcount.只是结果的计数(请注意,在安装文件系统时,我们将经常从同一设备中捕获多个分区)。

最后,我们用一些易于看的着色印刷计数,然后,如果有任何结果,我们列出了它们。尝试连接USB棒或游戏控制器,并查看运行时会发生什么!

结束评论

这几乎涵盖了这个脚本的基础知识,旨在告诉你在连接机器人时提出了什么。当我们进入软件方面的更复杂的部分时,我们将继续调整并改进它,但如果您有自己的想法,那么所有的意味着都会添加它们。

在我们接下来的几篇文章中,我们将进行硬件和软件的组合,包括将Digikey的计划 - IT工具放在我们正在创建的I / O板上的测试中。

干杯!

下一篇文章串联: