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:
- load web application,
- play videos, and
- manage the tablet itself (WiFi, brightness).
For further details, see: ALTabletService.
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¶
Deprecated: ALPreferences¶
Use ALPreferenceManager instead.
ALConnectionManager: new methods and event¶
Methods
ALConnectionManagerProxy::countries
ALConnectionManagerProxy::country
ALConnectionManagerProxy::setCountry
ALConnectionManagerProxy::interfaces
event
ALExtractor: new methods¶
Methods
ALBehaviorManager: new methods¶
ALBehaviorManager partially deprecated¶
- Installation/removal of Behaviors is now managed by the Package Manager, so
ALBehaviorManagerProxy::installBehavior
,ALBehaviorManagerProxy::removeBehavior
andALBehaviorManagerProxy::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.
ALMotion: new event¶
robotIsFalling()
ALMotion/MoveFailed()
New animation: Breath¶
ALMotionProxy::setBreathEnabled
ALMotionProxy::getBreathEnabled
ALMotionProxy::setBreathConfig
ALMotionProxy::getBreathConfig
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.
ALMotion: new methods¶
- ALMotionProxy::areNotificationsEnabled
- ALMotionProxy::setEnableNotifications
ALRobotPosture: new method¶
A new methods, getPosture allows knowing the name of the current posture.
For further details, see: ALRobotPostureProxy::getPosture
.
ALRobotPosture: new events¶
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
robotIsWakeUp()
ALMotion/Stiffness/wakeUpStarted()
ALMotion/Stiffness/restStarted()
ALMotion/Stiffness/wakeUpFinished()
ALMotion/Stiffness/restFinished()
ALMotion: deprecated methods¶
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:
- OGG and WAV files can run on a virtual robot, but MP3 cannot.
ALAudioPlayerProxy::playFileInLoop
andALAudioPlayerProxy::playInLoop
are not available on virtual robot.
For further details, see: ALAudioPlayer.
ALAudioPlayer: new methods¶
ALSpeechRecognition: new methods and event¶
Methods
ALSpeechRecognitionProxy::getAudioExpression
ALSpeechRecognitionProxy::getRules
ALSpeechRecognitionProxy::saveContextSet
ALSpeechRecognitionProxy::loadContextSet
ALSpeechRecognitionProxy::eraseContextSet
Grammar files (.bnf) can be compiled and loaded in the speech recognition engine with the following functions:
ALSpeechRecognitionProxy::compile
ALSpeechRecognitionProxy::addContext
ALSpeechRecognitionProxy::removeContext
ALSpeechRecognitionProxy::removeAllContext
ALSpeechRecognitionProxy::activateRule
ALSpeechRecognitionProxy::deactivateRule
ALSpeechRecognitionProxy::activateAllRules
ALSpeechRecognitionProxy::deactivateAllRules
ALSpeechRecognitionProxy::addWordListToSlot
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: new methods¶
ALTextToSpeech: new event¶
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¶
Module name ALAudioSourceLocalization is deprecated, please use ALSoundLocalization instead (same API).
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: methods¶
Added in the documentation:
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¶
New module: ALBarcodeReader¶
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:
- a depth camera, if the robot has one, or if not,
- 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.
ALVisualCompass: new method and event¶
Method
ALVisualCompassProxy::moveTo
ALVisualCompassProxy::moveStraightTo
.ALVisualCompassProxy::setCurrentImageAsReference
ALVisualCompassProxy::waitUntilTargetReached
Events
ALVisualCompass: removal of deprecated methods¶
ALVisualCompassProxy::getCurrentImage
ALVisualCompassProxy::getReferenceQuality
ALVisionRecognition: new method¶
ALVisionRecognition: deprecated method¶
People Perception - Improvements¶
ALFaceDetection: new methods¶
ALFaceDetection: deprecated methods¶
Deprecated Methods | Instead, use ... |
---|---|
ALFaceDetectionProxy::enableRecognition |
ALFaceDetectionProxy::setRecognitionEnabled |
ALFaceDetectionProxy::enableTracking |
ALFaceDetectionProxy::setTrackingEnabled |
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:
ALChestButton/SimpleClickOccurred()
ALChestButton/DoubleClickOccurred()
ALChestButton/TripleClickOccurred()
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
DeviceNoLongerHotDetected()
HotDeviceDetected()
HeadProcessorIsHot()
HeadProcessorIsCriticallyHot()
TemperatureStatusChanged()
Deprecated event
Deprecated Events | Instead, use ... |
---|---|
HotJointDetected() |
HotDeviceDetected() |
ALBattery: new methods¶
New methods have been added to ALBattery:
ALBatteryProxy::getBatteryCharge
ALBatteryProxy::enablePowerMonitoring
ALLeds: new method¶
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¶
Control NAO from your web browser - QiMessaging JavaScript¶
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: qi_use_lib(my_module ALTHREAD ALCOMMON)
Simulator SDK: multiple robot Models¶
Support for multiple robot models was added.
Simulator SDK: NAOqi automatic Launch¶
NAOqi is now automatically launched at startup.