Nao笔记1|NAOqi APIs|Core(核心)——ALBehaviorManager (行为管理器)

来源:互联网 发布:淘宝虚假交易新规 编辑:程序博客网 时间:2024/06/05 15:43

ALBehaviorManager从名字中可以看出该模块是用来管理行为的。本节介绍ALBehaviorManager的作用,如何工作,API

主要有三个作用:

  1. 加载、启动、停止行为
  2. 设置默认行为
  3. 获取行为信息

    一些行为可以设为“默认”,默认的行为在机器人启动时就会自动开启,ALBehaviorManager 模块可以让开发者添加、移除、启动和停止行为。

如何使用行为?

  1. 从Choregraphe上传
    这里写图片描述

  2. 该图标意为行为已经切换到默认状态
    默认状态

API介绍:

方法

ALBehaviorManagerProxy::addDefaultBehavior()添加默认行为
ALBehaviorManagerProxy::getBehaviorTags()获取行为标签
ALBehaviorManagerProxy::getBehaviorsByTag()获取安装的行为目录名称,并通过标签进行过滤。
ALBehaviorManagerProxy::getBehaviorNature()获得给定行为的种类
ALBehaviorManagerProxy::getDefaultBehaviors()获取默认行为
ALBehaviorManagerProxy::getInstalledBehaviors()获取已经安装的行为
ALBehaviorManagerProxy::getLoadedBehaviors()获取加载的行为
ALBehaviorManagerProxy::getRunningBehaviors()获取运行的行为
ALBehaviorManagerProxy::getTagList()获取已经安装的行为的标签
ALBehaviorManagerProxy::isBehaviorInstalled()判断该行为是否导入(有效)
ALBehaviorManagerProxy::isBehaviorLoaded()判断该行为是否加载
ALBehaviorManagerProxy::isBehaviorRunning()判断该行为是否运行
ALBehaviorManagerProxy::playDefaultProject()运行默认行为
ALBehaviorManagerProxy::preloadBehavior()加载行为
ALBehaviorManagerProxy::removeDefaultBehavior()移除默认行为
ALBehaviorManagerProxy::resolveBehaviorName()获取该行为或者是安装包的路径,注意:如果两个名字存在冲突,会抛出一个错误。
ALBehaviorManagerProxy::runBehavior()运行该行为一直等到它结束
ALBehaviorManagerProxy::startBehavior()开始该行为
ALBehaviorManagerProxy::stopAllBehavior关闭所有行为
AllBehavior关闭所有行为
ALBehaviorManagerProxy::stopBehavior()关闭某一个行为

.

事件

ALBehaviorManager/BehaviorAdded()当安装行为时引发。
ALBehaviorManager/BehaviorRemoved()当移除行为时引发。
ALBehaviorManager/BehaviorUpdated()当更新行为时引发。
ALBehaviorManager/BehaviorsAdded()当添加行为时引发。
BehaviorsRun()当运行行为列表发生变化时引发

.

信号

ALBehaviorManager::behaviorsRemoved()当行为被删除时触发
ALBehaviorManager::behaviorFailed()当行为被失败时触发
ALBehaviorManager::behaviorsAdded()当行为被添加触发
ALBehaviorManager::behaviorStopped()当行为停止时触发
ALBehaviorManager::behaviorStarted()当行为开始时触发
ALBehaviorManager::behaviorLoaded()行为加载时触发

代码示例:

# -*- encoding: UTF-8 -*- import sysimport timefrom naoqi import ALProxydef main(robotIP, behaviorName):  # Create proxy to ALBehaviorManager  managerProxy = ALProxy("ALBehaviorManager", robotIP, 9559)  getBehaviors(managerProxy)  launchAndStopBehavior(managerProxy, behaviorName)  defaultBehaviors(managerProxy, behaviorName)def getBehaviors(managerProxy):  ''' Know which behaviors are on the robot '''  names = managerProxy.getInstalledBehaviors()#获取已经安装的行为名称  print "Behaviors on the robot:"  print names  names = managerProxy.getRunningBehaviors()#获取正在运行的行为名称  print "Running behaviors:"  print namesdef launchAndStopBehavior(managerProxy, behaviorName):  ''' Launch and stop a behavior, if possible. ''' # Check that the behavior exists.  if (managerProxy.isBehaviorInstalled(behaviorName)):    # Check that it is not already running.    if (not managerProxy.isBehaviorRunning(behaviorName)):      # Launch behavior. This is a blocking call, use post if you do not      # want to wait for the behavior to finish.      managerProxy.post.runBehavior(behaviorName)      time.sleep(0.5)    else:      print "Behavior is already running."  else:    print "Behavior not found."    return  names = managerProxy.getRunningBehaviors()  print "Running behaviors:"  print names  # Stop the behavior.  if (managerProxy.isBehaviorRunning(behaviorName)):    managerProxy.stopBehavior(behaviorName)    time.sleep(1.0)  else:    print "Behavior is already stopped."  names = managerProxy.getRunningBehaviors()  print "Running behaviors:"  print namesdef defaultBehaviors(managerProxy, behaviorName):  ''' Set a behavior as default and remove it from default behavior. '''  # Get default behaviors.  names = managerProxy.getDefaultBehaviors()  print "Default behaviors:"  print names  # Add behavior to default.  managerProxy.addDefaultBehavior(behaviorName)  names = managerProxy.getDefaultBehaviors()  print "Default behaviors:"  print names  # Remove behavior from default.  managerProxy.removeDefaultBehavior(behaviorName)  names = managerProxy.getDefaultBehaviors()  print "Default behaviors:"  print namesif __name__ == "__main__":  if (len(sys.argv) < 3):    print "Usage python albehaviormanager_example.py robotIP behaviorName"    sys.exit(1)  main(sys.argv[1], sys.argv[2])
阅读全文
0 0
原创粉丝点击