SoftBank Robotics documentation What's new in NAOqi 2.5?

Versions and Body Types

NAO - Version

Many upgrade of NAO body type exist.
They can be differentiated with the head’s back design.
Version Back design
V5 ../_images/head_back_large_zoom_v50.png
V4 ../_images/head_back_large_zoom_v40.png
V3.3 ../_images/head_back_large_zoom_v33.png
V3+, V3.2 ../_images/head_back_large_zoom_v32.png

NAO - Body type

Several body types have formerly existed.
Here are their technical specifications.

Programmatic access to version and body type

To retrieve dynamically the body type and version of the robot, use the ALRobotModel module:

alrobotmodel.py

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

"""Example: Use ALRobotModel Module"""

import qi
import argparse
import sys


def main(session):
    """
    This example uses the ALRobotModel module.
    """
    # Get the service ALRobotModel.
    model_service  = session.service("ALRobotModel")

    # Example showing how to get information about the robot model
    print("robot type", model_service.getRobotType()) # "Nao", "Juliette" or "Romeo"
    print("has arms", model_service.hasArms())
    print("has hands", model_service.hasHands())
    print("has legs", model_service.hasLegs())


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)