SoftBank Robotics documentation What's new in NAOqi 2.8?

ALAnimationPlayer API

NAOqi Motion - Overview | API | Tutorials | Advanced


Namespace : AL

Method list

class ALAnimationPlayerProxy

This is a naoqi2 service.

ALMemory Keys list

Methods

qi::Future<void> ALAnimationPlayerProxy::run(const std::string& path)

Runs an animation.

Parameters:
  • path – Path to the animation. For further details, see: Animation Paths
Returns:

A future to cancel the animation.

Calling the method asynchronously allows to cancel the animation by canceling the future.

qi::Future<void> ALAnimationPlayerProxy::runTag(const std::string& tag)

There are two overloads of this function:

Runs an animation randomly chosen among all the animations with a specified tag.

Parameters:
  • tag – Tag of animations. For further details, see: Tags
Returns:

A future to cancel the animation.

qi::Future<void> ALAnimationPlayerProxy::runTag(const std::string& path, const std::string& tag)

Runs an animation randomly chosen among all the animations, contained in a specified path, and with a specified tag.

Parameters:
  • path – Path to look for the animations.
  • tag – Tag of animations. For further details, see: Tags
Returns:

A future to cancel the animation.

void ALAnimationPlayerProxy::declarePathForTags(const std::string& path)

Allow using animations contained in the specified path as tagged animations.

Parameters:
  • path – Path that contains tagged animations. If [posture] is in the path it will be replaced by all handled posture families (not only the current one).

alanimationplayer_tutorial_declarePathForTags.py

#! /usr/bin/env python
# -*- encoding: UTF-8 -*-

"""Example: Use declarePathForTags Method"""

import qi
import argparse
import sys


def main(session):
    """
    This example uses the declarePathForTags method.
    """
    # Get the service ALAnimationPlayer.

    animation_player_service = session.service("ALAnimationPlayer")

    # With this command we declare a package of animations having the uid "myanimlib", structured as follow:
    #   Nao/Stand/...
    #       Sit/...
    #       SitOnPod/...
    #   Pepper/Stand/...
    animation_player_service.declarePathForTags("myanimlib/[robot]/[posture]/")


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--ip", type=str, default="127.0.0.1",
                        help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
    parser.add_argument("--port", type=int, default=9559,
                        help="Naoqi port number")

    args = parser.parse_args()
    session = qi.Session()
    try:
        session.connect("tcp://" + args.ip + ":" + str(args.port))
    except RuntimeError:
        print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
               "Please check your script arguments. Run with -h option for help.")
        sys.exit(1)
    main(session)

To execute this script, type:

python alanimationplayer_tutorial_declarePathForTags.py --qi-url=tcp://<robot name or robot id>:9559
void ALAnimationPlayerProxy::addTagForAnimations(const TagForAnimations& tagsToAnimations)

Associates tags to animations.

Parameters:
  • tagsToAnimations – Map of tag to animations. (in C++ it’s std::map<std::string, std::vector<std::string> >)

alanimationplayer_tutorial_addTagForAnimations.py

#! /usr/bin/env python
# -*- encoding: UTF-8 -*-

"""Example: Use addTagForAnimations Method"""

import qi
import argparse
import sys


def main(session):
    """
    This example uses the addTagForAnimations method.
    """
    # Get the service ALAnimationPlayer.

    animation_player_service = session.service("ALAnimationPlayer")
    tagToAnims = {}
    tagToAnims["myNewTag1"] = ["animations/Stand/Gestures/Hey_1", "animations/Stand/Gestures/Hey_3"]
    tagToAnims["myNewTag2"] = ["animations/Stand/Gestures/WhatSThis_2"]
    animation_player_service.addTagForAnimations(tagToAnims)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--ip", type=str, default="127.0.0.1",
                        help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.")
    parser.add_argument("--port", type=int, default=9559,
                        help="Naoqi port number")

    args = parser.parse_args()
    session = qi.Session()
    try:
        session.connect("tcp://" + args.ip + ":" + str(args.port))
    except RuntimeError:
        print ("Can't connect to Naoqi at ip \"" + args.ip + "\" on port " + str(args.port) +".\n"
               "Please check your script arguments. Run with -h option for help.")
        sys.exit(1)
    main(session)

To execute this script, type:

python alanimationplayer_tutorial_addTagForAnimations.py --qi-url=tcp://<robot name or robot id>:9559
void ALAnimationPlayerProxy::reset()

Go back to the default ALAnimationPlayer’s configuration. Only the “Animation Library” will be declared as an animation package and all the links between tags and animations dynamically added will be removed.