Change Log

1.10.25

Broken APIs

In ALAudioPlayer module

  • Play function: does not unload the played file anymore. After playing a file with this function, you need to unload it manually using the unloadFile function.
Old:
AudioPlayer = ALProxy("ALAudioPlayer",RobotIP, Port)
fileId = AudioPlayer.loadFile("/home/nao/MyAudioFile.wav")
AudioPlayer.play(fileId)
fileId = AudioPlayer.loadFile("/home/nao/MyAudioFile.wav")
AudioPlayer.play(fileId)
New:
AudioPlayer = ALProxy("ALAudioPlayer",RobotIP, Port)
fileId = AudioPlayer.loadFile("/home/nao/MyAudioFile.wav")
AudioPlayer.play(fileId)
AudioPlayer.play(fileId)
AudioPlayer.unloadFile(fileId)

Deprecated APIs

In ALSoundDetection module

  • setParameter(std::string detector, std::string parameter, float ALValue)

    • Use instead: setParameter(std::string parameter, float ALValue)
  • threshold, dnoise and windowSize parameters

    • Use instead: Sensibility parameter
  • ALValue getDescription(string detector, string type) and ALValue getEvents(string type)

    • Use instead: SoundDetected ALMemory key to collect the information

Choregraphe

Box library

The folder, box names and boxes of the Choregraphe box library changed. The list of the name changes:

  • Add/Del Faces > Add Faces / Remove Faces
  • Arms Example > Wipe Forehead
  • Demo Omni > Walk Toward
  • Dispatcher > Switch Case
  • Empty Timeline > Animation
  • Goto And Play > Goto And Play (name) / Goto And Play (number)
  • Goto And Stop > Goto And Stop (name) / Goto And Stop (number)
  • Loop > For
  • Multiplexer > Multi Edit
  • Music > Play Sound
  • Omniwalk (removed)
  • Record > Record Sound
  • Right Hand / Left Hand > Hand
  • Say Text (removed)
  • Set Language > Set Speech Lang. / Set Reco. Lang.
  • Set Volume > Set Speaker Vol.
  • Stiffness > Set Stiffness
  • Sound Location > Sound Loc.
  • Switch LEDs > Set LEDs
  • Tactile Touch > Tactile Head

Tip: Use the Search tab of the box library to easily find the box you are looking for.

Script (deprecated API)

  • self.log("string")

    • Use instead: self.logger.info("message string"), self.logger.error("error string"), etc for finer debugging

1.8.16

NaoQi Framework

Compilation

  • The templates used by the module generator have changed, the newly generated code is much better. We tried to keep backward compatibily, but it's not always possible.

  • Libraries and directories:
    • all librairies are renamed with the prefix "al" added
    • reorganization of the include directories (the main changes required are listed bellow):
Old:
#include "alproxy.h"
New:
#include <alcommon/alproxy.h>
  • The alcommonfull (needed when your module is an ALExtractor) no longer exists, the alextractor library is to be used instead:
Old:
// In .h
#include "alextractor.h"
class MyExtractor: public AL::ALExtractor {
  ...
} ;

// In CMakeLists:
use_lib(myextractor ALCOMMONFULL)
New:
// In .h
#include <alextractor/alextractor.h>

class MyExtractor: public AL::ALExtractor {
  ...
} ;

// In CMakeLists
use_lib(myextractor ALCOMMON ALEXTRACTOR)
  • If you use memoryfastaccess, there are changes too (fast access was removed from alcommon):
Old:
// In .h
#include "almemoryfastaccess"

// In CMakeLists:
use_lib(mymodule ALCOMMON)
New:
// In .h
#include <almemoryfastaccess/almemoryfastaccess.h>

// In CMakeLists:
use_lib(mymodule ALCOMMON ALMEMORY_FAST_ACCESS)

Vision

  • Because GetImageLocal returns now a void* instead of an int formerly, we have to use a specific proxy for vision:
Old:
// In .h
AL::ALPtr<AL::ALProxy> xCamProxy;

// In .cpp
xCamProxy = ALPtr<ALProxy>();
...
xCamProxy = getParentBroker()->getProxy("ALVideoDevice");
...
ALImage* xptr_ALImageRaw = (ALImage*)AL::ALVideoDeviceProxy(fCamProxy->getParentBroker()).getImageLocal(xGvmName);
New:
// In .h
#include <alvideodeviceproxy.h>
...
AL::ALPtr<AL::ALVideoDeviceProxy> xCamProxy;

// In .cpp
xCamProxy = ALPtr<AL::ALVideoDeviceProxy>();
...
ALPtr<ALVideoDeviceProxy>( new ALVideoDeviceProxy(getParentBroker()));
...
ALImage* xptr_ALImageRaw = (ALImage*)xCamProxy->getImageLocal(xGvmName);
  • logoDetection: removed as it is only compatible with Aldebaran's former logo (with the ellipse).

ALBehaviorManager

  • getBehaviorsLookupPath and setBehaviorsLookupPath are no longer available. The BehaviorsLookupPath cannot be changed.

DCM

  • Infrared removed from the DCM as it is handled by the ALInfrared module.

AlRobotPose

A MicroEvent is generated when the robot pose changed. The ALMemory Key is robotPoseChanged, its a string corresponding to the actual robot Pose. Also some fast access Memory key are available: robotPose An integer in relation with the actual pose(use getPoseNames() to have a relation between int and string) robotPoseSince A float corresponding to the time[seconds] since the actual Pose is active.

Old:
std::string inertial = memoryProxy->getData("OrientationChanged", 0);
New:
std::string inertial = robotPoseProxy->getData("robotPoseChanged", 0);

robotPoseChanged returns one of the following values: ["Unknown", "Stand", "Sit", "Crouch", "Knee", "Frog", "Back", "Belly", "Left", "Right", "HeadBack"]

Choregraphe

  • The migration of Choregraphe 1.6.x project/workspace to the .CRG format is automatic thanks to 2 menu commands:
    • Import Choregraphe 1.6.x project... to import a single project from a directory. You need to select a directory created with Choregraphe 1.6.x containing a behavior.xar file. The project is loaded into Choregraphe. You can then save it to a .CRG file with "Save project" or "Save project as...".
    • Import Choregraphe 1.6.x workspace... to import a whole workspace. First specify the workspace path, then a directory where each project will be saved as a .CRG file.