- 1 Introduction
- 2 Technical specification
- 3 Instructions
- 4 Official Software Documentation
NAO is used by the world’s most prestigious universities and laboratories including Harvard and Tokyo University as both a research platform and an educational tool. Founded in 2005 by Bruno Maisonnier, with offices in France, China, Japan and the United States, ALDEBARAN Robotics designs and produces humanoid robots with the aim of contributing to the well-being of humans.
Nao has been available as a research and learning tool since 2008.
Since November 2010, Aldebaran Robotics has allowed private programmers to take part in the development of Nao for the general public, through its Nao Developer Program. 200 units are available.
Aldebaran plans to make the robot's source code open source by the end of 2011. A version of the robot for public use is projected to be released in 2012.
[Nao (robot)], wikipedia article.
The scheme presents all the robot’s axes. Together, these axes allow 25 degrees of freedom, which when coupled with the inertial sensor, the force sensitive resistors, the Hall effect sensors, the infrared receiver and the sonar sensors, allows NAO® a high level of stability and fluidity in its movements.
Part Joint name Motion Range (degrees) Head
HeadYaw Head joint twist (Z) -120 / 120 HeadPitch Head joint front & back (Y) -39 / 30
LShoulderPitch Left shoulder joint front & back (Y) -120 / 120 LShoulderRoll Left shoulder joint right & left (Z) 0 / 95 LElbowRoll Left shoulder joint twist (X) -90 / 0 LElbowYaw Left elbow joint (Z) -120 / 120 LWristYaw Left wrist joint twist (X) -105 / 105 LHand Left hand open/close
LHipYawPitch Left hip joint twist (Z45°) -44 / 68 LHipPitch Left hip joint front and back (Y) -104.5 / 28.5 LHipRoll Left hip joint right & left (X) -25 / 45 LKneePitch Left knee joint (Y) -5 / 125 LAnklePitch Left ankle joint front & back (Y) -70.5 / 54 LAnkleRoll Left ankle joint right & left (X) -45 / 25
RHipYawPitch Right hip joint twist (Z45°) -68 / 44 RHipPitch Right hip joint front and back (Y) -104.5 / 28.5 RHipRoll Right hip joint right & left (X) -45 / 25 RKneePitch Right knee joint (Y) -5 / 125 RAnklePitch Right ankle joint front & back (Y) -70.5 / 54 RAnkleRoll Right ankle right & left (X) -25 / 45
RShoulderPitch Right shoulder joint front & back (Y) -120 / 120 RShoulderRoll Right shoulder joint right & left (Z) -95 / 0 RElbowRoll Right shoulder joint twist (X) 0 / 90 RElbowYaw Right elbow joint (Z) -120 / 120 RWristYaw Right wrist joint twist (X) -105 / 105 RHand Right hand open/close
Height ~58 cm Weight ~4.3kg Body type Technical plastic
Charger AC 90-230 volts / DC 24 volts Battery capacity ~ 90 min. autonomy
Degrees of freedom:
The Nao Robocup Edition has 21 degrees of freedom (DOF), while the Academics Edition has 25 DOF, since it is built with two hands with gripping abilities. However, the figure of 25 for DOF is technically misleading, as each leg has a general "HipYawPitch" axis of movement that amounts to 1 DOF for the pelvis.
-Nao (robot), wikipedia article.
Head 2 DOF Arm 5 DOF in each arm Pelvis 1 DOF Leg 5 DOF in each leg Hand 1 DOF in each hand
Multimedia Speakers 2 Loudspeakers Microphones 4 Microphones Vision 2 CMOS digital cameras
Network access Connections type Wi-fi (IEEE 802.11g)
Sensors 32 x Hall effect sensors 1 x gyrometer 2 axis 1 x accelerometer 3 axis 2 x bumpers 2 channel sonar 2 x I/R Tactile sensor
LED Tactile sensor 12 LED 16 Blue levels Eyes 2 x 8 LED RGB Fullcolour Ears 2 x 10 LED 16 Blue levels Torso 1 LED RGB Fullcolor Feet 2 x 1 LED RGB Fullcolor
Embedded Software OS Embedded Linux (32 bit x86 ELF) using custom OpenEmbedded based distribution Programming languages C, C++, URBI, Python, .Net
Drawn from Official NAO Manual
- Precautions: take all necessary precautions to ensure that NAO will not be directly or indirectly damaged by its surroundings. Do not exert strong forces on NAO and protect it from falls. Do not make NAO walk on thick carpets or rugs, mattresses, clothes. NAO will move about properly if the floor is flat, hard and smooth. Do not block its sensors or introduce foreign objects into its body. Do not use NAO outdoor.
- Handling: if you need to handle or move NAO, it is best to hold it with both hands by the waist/torso. Do not pull it by the arms, legs or head.
- Water: do not expose NAO to any form of water as permanent damage may occur. In particular, if NAO switches from a cold environment to a warm one, condensation may occur on its surface or inside. In that case, let NAO dry before turning it on.
- Cleaning: clean NAO and charger with a dry and soft cloth only. Do not use solvents.
- Transportation: please use the original packing or any suitable box that will protect NAO entirely.
The Power button, located on NAO's chest, responds to the following orders:
- Press it once to turn NAO on.
- NAO introduces himself and speaks its IP address.
- Two consecutive pushes stop NAO’s motor control loop.
- If you do this, hold NAO in your hands as it may fall.
To turn NAO off:
- Press its chest button for 5 seconds.
- WARNING: Pressing its chest button for more than 8 seconds will force the NAO into emergency shut off.
Connecting with IDLE
import sys import time sys.path sys.path.append("Type the path to .../Aldebaran/Choregraphe 1.10.37/bin") sys.path.append("Type the path to .../Aldebaran/Choregraphe 1.10.37/lib") import naoqi from naoqi import ALBroker from naoqi import ALModule from naoqi import ALProxy from naoqi import ALBehavior from naoqi import ALDocable IP = "IP_Number" PORT = 9559
All of Aldebaran NAO's APIs can be found here: http://users.aldebaran-robotics.com/docs/site_en/bluedoc/naoqi.html.
To find out which APIs your NAO comes with, enter the IP address:port (for example: 123.456.78.900:9559) into your web browser of choice which opens the Broker page.
To use the APIs, first must connect to a Proxy. For example, the text to speech function. tts = ALProxy("ALTextToSpeech", IP, PORT)
- NOTE: The text to speech function has a bug and will occasionally not return.
- Solution: instead of tts.say("type string here"), use tts.post.say("type string here")
sonar = ALProxy("ALSonar", IP, PORT) leftSonar = 'Device/SubDeviceList/US/Left/Sensor/Value' rightSonar = 'Device/SubDeviceList/US/Right/Sensor/Value' period = 500 precision = 1.0 sonarOn = sonar.subscribe('test1', period , precision) sonarL = memory.getData(leftSonar, 0) sonarR = memory.getData(rightSonar, 0) sonar.unsubscribe('test1')
sonarL and sonarR return the distance between the Nao and obstacle in meters.
sensor = ALProxy("ALSensors", IP, PORT) sensor.subscribe("RightBumperPressed") sensor.subscribe("LeftBumperPressed") rBumpLeft = memory.getData('Device/SubDeviceList/RFoot/Bumper/Left/Sensor/Value') rBumpRight = memory.getData('Device/SubDeviceList/RFoot/Bumper/Right/Sensor/Value') lBumpLeft = memory.getData('Device/SubDeviceList/LFoot/Bumper/Left/Sensor/Value') lBumpRight = memory.getData('Device/SubDeviceList/LFoot/Bumper/Right/Sensor/Value')
rBumpLeft, rBumpRight, lBumpLeft, lBumpRight returns 0.0 if False and 1.0 if True.
To view the camera in real time, use Telepathe (Aldebaran Software).
To switch between the cameras:
kCameraSelectID = 18 video.setParam(kCameraSelectID, 0)
kCameraSelectID = 18 video.setParam(kCameraSelectID,1)
Running Programs on Start Up
Instructions to make missing PATHs
Linux - open up terminal
ssh nao@<ip address here> (type) nao's password cd ../../.. ls [The terminal should show] bin etc lost+found opt sbin tmp boot home media proc srv usr dev lib mnt root sys var cd opt cd naoqi cd preferences cp autoload.ini /home/nao/naoqi/preferenecs/autoload.ini cd ../../.. cd home cd nao cd naoqi cd preferences ls i vi autoload.ini i [go to where you want to change - see Dutch Nao team instructions] press <Esc>, type :w, press <Return> press <Esc>, type :q!, press <Return> cd .. mkdir lib [place desired python file into this directory - see Dutch Nao team instructions]
To log out type: <ctrl> d
The Python script functions exactly the same as if using a remote proxy. However no need to append Choregraphe's bin or lib (the below).
sys.path sys.path.append("Type the path to .../Aldebaran/Choregraphe 1.10.37/bin") sys.path.append("Type the path to .../Aldebaran/Choregraphe 1.10.37/lib")
Note: In Windows use a program such as WinSCP to transfer the files to the Nao.