# NAOqi API & SDks 2.1 ¶

## Addendum - 23 September 2014 ¶

### ALFaceDetection : OMRON solution instead of OKI ¶

ALFaceDetection is now based on a face detection/recognition solution provided by OMRON .

As the two technologies, OMRON and OKI, do not provide the same set of data, and for backward-compatibility, the structure of the data returned has not been modified, but the pieces of data formerly provided by OKI have been replaced by null values.

For further details, see: FaceDetected Event .

## Few steps toward human behavior ¶

### New module: ALDialog ¶

The ALDialog module allows you to endow your robot with conversational skills by using a list of “rules” written and categorized in an appropriate way.

For further details, see: ALDialog .

### New module: ALAnimatedSpeech ¶

The ALAnimatedSpeech module allows you to make the robot talk in an expressive way.

For further details, see: ALAnimatedSpeech .

## New tracking system ¶

### New module: ALTracker ¶

ALFaceTracker and ALRedBallTracker are now deprecated. They are replaced by a new and more generic module: ALTracker .

ALTracker module allows the robot to track different targets (red ball, face, landmark, etc) using different means (head only, whole body, move, etc).

The main goal of this module is to establish a bridge between target detection and motion in order to make the robot keep in view the target in the middle of the camera.

For further details, see: ALTracker .

## New extractors - Basics ¶

### New module: ALVisualSpaceHistory ¶

ALVisualSpaceHistory keeps track of the head movements of the robot to build a timestamped map of the head positions. This can be useful when exploring the environment to make the robot look in every directions.

For further details, see: ALVisualSpaceHistory .

### New module: ALSegmentation3D ¶

This module requires a robot with a 3D sensor.

ALSegmentation3D extracts the objects present in the field of view of the robot by doing a segmentation of the depth image (returned by the 3D sensor) in blobs of similar depth.

It also allows you to track, with the head of the robot, a blob at a specified distance or simply track the nearest blob with respect to the camera.

For further details, see: alsegmentation3D .

## New extractors - For People Perception ¶

### New module: ALBasicAwareness ¶

ALBasicAwareness is a simple way to make the robot establish and keep eye contact with people.

For further details, see: ALBasicAwareness .

### New module: ALPeoplePerception ¶

ALPeoplePerception is an extractor which keeps track of the people around the robot and provides basic information about them. It gathers visual information from RGB cameras and a 3D sensor if available.

For further details, see: ALPeoplePerception .

### New module: ALEngagementZones ¶

ALEngagementZones allows you to detect if someone is approaching the robot, or moving away, using the concept of engagement zones.

For further details, see: ALEngagementZones .

### New module: ALFaceCharacteristics ¶

ALFaceCharacteristics updates every person with some additional information such as an estimation of age and gender. It also tries and detects whether the person is smiling.

For further details, see: ALFaceCharacteristics .

### New module: ALGazeAnalysis ¶

ALGazeAnalysis allows you to analyze the direction of the gaze of a detected person, in order to know if he/she is looking at the robot.

For further details, see: ALGazeAnalysis .

### New module: ALSittingPeopleDetection ¶

This module requires a robot with a 3D sensor.

ALSittingPeopleDetection updates every person with the information of whether he or she is sitting (on a chair for example) or standing.

For further details, see: ALSittingPeopleDetection .

### New module: ALWavingDetection ¶

This module requires a robot with a 3D sensor.

ALWavingDetection allows you to detect if a person is moving in order to catch the robot’s attention (for example waving at the robot).

For further details, see: ALWavingDetection .

## Core - New modules ¶

### New module: ALAutonomousLife ¶

Autonomous Life facilitates the autonomous launching of Activities, and keeps the robot visually alive at all times.

For further details, see: ALAutonomousLife .

### New module: ALAutonomousMoves ¶

ALAutonomousMoves enables subtle movements that the robot does autonomously.

For further details, see: ALAutonomousMoves .

### New module: ALTabletService ¶

ALTabletService allows tablet operations. It can be used to:

• play videos, and
• manage the tablet itself (WiFi, brightness).

For further details, see: .

### New module: ALUserSession ¶

ALUserSession manages the state of active users, and the bindings to their data.

For further details, see: ALUserSession .

### New module: ALWorldRepresentation ¶

ALWorldRepresentation is a module dedicated to the long term storage of data about generic objects. It allows you to persistently store some data, but also to make some generic queries on the stored data with intelligent criterions.

For further details, see: ALWorldRepresentation .

Note that the Robot View displays the stored objects.

### New module: ALSystem ¶

ALSystem provides primitives that can be used to configure the system and perform operations such as shutting down or rebooting.

For further details, see: ALSystem .

### New module: PackageManager ¶

PackageManager lets you install packages on the robot.

For further details, see: PackageManager .

### New module: ALPreferenceManager ¶

ALPreferenceManager allows managing the robot preferences. Preferences are used to store, among other, all the settings for the applications running in the robot.

For further details, see: ALPreferenceManager .

## Core - Improvements ¶

Methods

event

Methods

### ALBehaviorManager partially deprecated ¶

• Installation/removal of Behaviors is now managed by the Package Manager , so  ALBehaviorManagerProxy::installBehavior  ,  ALBehaviorManagerProxy::removeBehavior  and  ALBehaviorManagerProxy::getSystemBehaviorNames  are deprecated.
• Referring to behaviors with the User or System prefix when using ALBehaviorManager is also deprecated.

For further details, see: ALBehaviorManager API .

### ALLauncher : removal of deprecated methods ¶

•  ALLauncherProxy::getGlobalModuleList 
•  ALLauncherProxy::isModulePresent 
•  ALLauncherProxy::launchExecutable 
•  ALLauncherProxy::launchPythonModule 
•  ALLauncherProxy::launchScript 

### ALResourceManager : removal of deprecated methods ¶

•  ALResourceManagerProxy::releaseLocalResource 
•  ALResourceManagerProxy::waitForLocalResource 
•  ALResourceManagerProxy::waitForLocalResources 
•  ALResourceManagerProxy::waitForLocalResourcesTree 
•  ALResourceManagerProxy::declareEvent 
•  ALResourceManagerProxy::getData 
•  ALResourceManagerProxy::getDataList 
•  ALResourceManagerProxy::getDataListName 

## Motion - Improvements ¶

### New reflex: Diagnosis effect ¶

Diagnosis effect is a reflex designed to protect the robot and the user in case of a malfunctioning actuator or sensor.

For further details, see: Diagnosis effect .

### New reflex: External-collision avoidance ¶

The aim of External-collision avoidance is to avoid damaging the robot, its environment, and first of all avoid hurting people.

For further details, see: External-collision avoidance .

### New animation: Breath ¶

For further details, see: Idle .

### NAO Kinematics models updated ¶

The Masses as well as the Center of Mass positions taken in account in the robot models have been updated in order to remove the slight dissymmetry between left and right limbs.

For further details, see: robot_masses .

### ALRobotPosture : new method ¶

A new methods, getPosture allows knowing the name of the current posture.

### ALRobotPosture : new predefined posture ¶

A new predefined posture has been defined: SittingOnChair .

For further details, see: Predefined postures .

### Stiffness Control : new method and events ¶

Stiffness control API has a new method and a new event:



**Method**



Events

### ALNavigation : deprecated methods and events ¶

In a first step, safe displacements were created outside ALMotion module in order to fully test and qualify the concept. We are now in the process of integrating this safety mechanism in the main ALMotion module, so ALNavigation is progressively deprecated.

 ALNavigationProxy::move   ALMotionProxy::move 
 ALNavigationProxy::moveToward   ALMotionProxy::moveToward 
 ALNavigationProxy::moveTo   ALMotionProxy::moveTo 
 Navigation/SafeNavigator/Status() 
 Navigation/SafeNavigator/BlockingObstacle()   ALMotion/MoveFailed() 
 Navigation/SafeNavigator/AlreadyAtTarget() 
 Navigation/SafeNavigator/DangerousObstacleDetected() 

## Audio - new module ¶

### New module: ALVoiceEmotionAnalysis ¶

ALVoiceEmotionAnalysis identifies the emotion expressed by the speaker’s voice, independently of what is being said.

For further details, see: ALVoiceEmotionAnalysis .

## Audio - Improvements ¶

### ALAudioPlayer on a virtual robot ¶

AlAudioPlayer can now run on a virtual robot, but with limited functionalities:

For further details, see: ALAudioPlayer .

### ALSpeechRecognition : new methods and event ¶

Methods

Grammar files (.bnf) can be compiled and loaded in the speech recognition engine with the following functions:

Event

### ALSpeechRecognition : event updated ¶

When the Word Spotting option is activated,  WordRecognized()  may now contain the following chain: <...> .

### ALSpeechRecognition : new parameter ¶

 ALSpeechRecognitionProxy::setParameter  and  ALSpeechRecognitionProxy::getParameter  support a new parameter: NbHypotheses Number of hypotheses returned by the engine.

### ALTextToSpeech : deprecated method ¶

Due to technical improvements, there is no point to generate a file and playing it after, so  ALTextToSpeechProxy::sayToFileAndPlay  has been deprecated.

### ALAudioSourceLocalization changed name to ALSoundLocalization ¶

For further details, see: ALSoundLocalization .

### ALSoundLocalization and ALSoundDetection : parameter change ¶

The ‘Sensibility’ parameter has been deprecated and replaced by a ‘Sensitivity’ parameter with a more usable scale.

### ALAudioDevice removal of deprecated methods ¶

•  ALAudioDeviceProxy::subscribeRemoteModule  (deprecated in 1.12)
•  ALAudioDeviceProxy::unSubscribeRemoteModule  (deprecated in 1.12)

### ALAudioDevice : deprecated parameter ¶

Due to technical improvements, inputBufferSize parameter has no effect anymore.

### ALSoundDetection removal of deprecated methods ¶

•  ALSoundDetection::getDescription  (deprecated in 1.12)
•  ALSoundDetection::getEvents  (deprecated in 1.12)

## Vision - new modules ¶

ALBarcodeReader scans an image from the camera and looks for a barcode. If a barcode is found in the image, the module tries to decipher it.

For further details, see: ALBarcodeReader .

### New module: ALCloseObjectDetection ¶

This module requires a robot with a 3D sensor.

ALCloseObjectDetection allows you to detect objects that are too close to the robot to be directly detected by the 3D sensor.

For further details, see: alcloseobjectdetection .

### New module: ALColorBlobDetection ¶

ALColorBlobDetection is a module that provides a fast 2D vision-based color blob detector.

For further details, see: ALColorBlobDetection .

### New module: ALLocalization ¶

ALLocalization is a module dedicated to the localization of the robot in an indoor environment.

For further details, see: ALLocalization .

## Vision - Improvements ¶

### ALMovementDetection : fully reshaped ¶

ALMovementDetection allows you to detect movement in the field of view of the robot.

The detection uses the best available camera:

1. a depth camera , if the robot has one, or if not,
2. an RGB camera .

Two new methods have been added to ALMovementDetection :

For further details, see: ALMovementDetection .

### ALPhotoCapture : new methods ¶

Two new methods have been added to ALPhotoCapture :

### ALVideoDevice re-factored ¶

The complete refactoring of ALVideoDevice module has been continued.

For further details, see: ALVideoDevice and ALVideoDevice API .

Method

Events

### ALVisualCompass : removal of deprecated methods ¶

•  ALVisualCompassProxy::getCurrentImage 
•  ALVisualCompassProxy::getReferenceQuality 

## Sensors - New modules ¶

### New module: ALTouch ¶

The ALTouch module is responsible for raising events when the robot is touched.

For further details, see: ALTouch .

### New module: ALChestButton ¶

Former ALSentinel events:  SimpleClickOccured  , :  DoubleClickOccured  and  TripleClickOccured  are now ALChestButton events:

For further details, see: ALChestButton .

## Sensors - Improvements ¶

### ALBodyTemperature : Actuators monitored ¶

Additionally to Joints and CPU, ALBodyTemperature now monitors Actuators temperature.

For further details, see: ALBodyTemperature .

### ALBodyTemperature : new and deprecated events ¶

New event

Deprecated event

 HotJointDetected()   HotDeviceDetected() 

### ALBattery : new methods ¶

New methods have been added to ALBattery :

### ALLeds : method improved ¶

 ALLedsProxy::rotateEyes  : eyes animation smoother with a better timing.

## Diagnosis - New module ¶

### New module: ALDiagnosis ¶

ALDiagnosis module allows the robot to detect if there is an hardware trouble (mainly electrical connection).

For further details, see: ALDiagnosis .

## SDKs, Bindings ¶

QiMessaging provides JavaScript bindings to use QiMessaging services (modules) in a web browser. It allows you to build HTML5 application for your robot.

For further details, see: QiMessaging JavaScript 1.0 .

### Python SDK: Python2.7 only ¶

Python 2.6 is not anymore supported.

Moreover, Choregraphe uses now Python 2.7 to interpret its scripts.

### C++ SDK: end of VS2008 support ¶

Support for Visual Studio 2008 is gone. This will let us focus on supporting new compilers (Visual Studio 2012), and new architectures (windows 64 bits) in the future.

### C++ SDK: end of Ubuntu 10.04 LTS (Lucid) support ¶

Ubuntu 10.04 LTS (Lucid) is not anymore supported.

This release only supports Ubuntu 12.04 LTS (Precise) and later.

For further details, see: compatible-platforms .

### C++ SDK: change in qiBuild numbering ¶

qiBuild has now its own release cycle. This means:

• qiBuild now has its own version number (2.5 at the moment of writing), distinct from the version number of the SDK.
• There are now new qiBuild releases every months or so: follow the project on github ( https://github.com/aldebaran/qibuild ) to be informed of new releases.

This should not change anything because the latest qiBuild release will always be retro-compatible with the latest Aldebaran C++ SDK .

### C++ SDK: breaking changes ¶

During the re-factoring of the framework libraries, some minor incompatible changes were introduced.

•  BIND_METHOD  macro call must now be followed by a colon:



// old:
BIND_METHOD("myMethod", "MyModule", "Documentation for myMethod")

// new
BIND_METHOD("myMethod", "MyModule", "Documentation for myMethod");


• ALCOMMON no longer depends on ALTHREAD, so if you are using it, you must patch the CMake code



# Old:
qi_use_lib(my_module ALCOMMON)

# New: