寻找行为不运行的原因(调试排错)

您创建了一个行为,但它尚且无法使用。在下文中,您将了解到如何排除错误。只有在当前行为在播放时才可进行排错。

逐一测试指令盒

要控制一个行为时,您可以点击“Play”,将行为加载到机器人上。 您可以双击一个输入或输出点来激活它。

在时间轴上屏蔽一层

通过每层旁边的小眼睛图案,您可以“屏蔽”该层。这样,在播放行为时就会忽略这一层。 当您调试行为时,这会很有用。

检查在机器人上运行的模块

进入机器人网页。网页上会列出在NAO上运行的模块。可通过点击模块名称来查看细节。

跟踪指令盒的执行情况

每当两个指令盒之间的链接被激活时,链接的颜色就会改变。 这是一个很好的检查执行情况的方法。

检查输出值

当一个指令盒有一个输出值时,最后的一个值显示在工具提示中。 这样,就可以很容易地检查执行情况是否正确。

了解为何指令盒变为红色

  • 在执行时变为红色: 出现一个异常。原因可能是无法加载一个模块(如本地NAOqi)、模块不存在等。
  • 在执行前变为红色(在点击Play按钮之后):指令盒编码有误。有可能是在Python脚本中出现输写错误。

在一个Python脚本中使用“self.logger”

“self.logger”是一个Python标准记录器,由Python的Logging模块创建。

日志信息可根据严重程度分类(在调试窗口中,每个程度都有其相关联的字体颜色):

  • debug (调试,灰色)
  • info (信息,黑色)
  • warning (警告,橙色)
  • error (错误,红色)
  • critical (危急,紫色)

在您的Python脚本中,我们建议您添加“warning”、“error”与“critical”日志信息,以便在您设计的行为处于危险或错误状态时,收到相关报告。

您也可以使用“info”与“debug”来跟踪行为的执行流。

  1. 打开一个指令盒的脚本。
  2. 如下所示,在一个函数中添加“self.logger”一行:

    def onLoad(self): self.logger.debug("Loaded box %s", self.getName())

  3. 在调试窗口中,选择您所需的最低信息严重程度。在本例中,选择的是“Debug”。
  4. 执行指令盒。
  5. 所有调试信息会出现在调试窗口中,您可以从中了解到所有执行情况。还会显示其它函数有可能出现的“debug”、“info”、“warning”、“error”和“critical”信息,这是因为选择的最低程度为“debug”。 如果您选择的是“error”,您就只能看到“error”和“critical”信息。





Copyright © 2010 Aldebaran-Robotics - 版权所有