Bridging ROS and xAAL

Current status (20180120) : This program is for Nao. A new installation is being done for Pepper xaal_ros_pepper.

The program is installed in folder ~/catkin_ws/src/nao_xaal and the latest version is in

rosrun openni_tracker openni_tracker
roslaunch openni_launch openni.launch

Check (optional)

rosrun image_view image_view image:=/camera/rgb/image_color

To open the web streaming

rosrun web_video_server web_video_server

and open a browser and go directly to

or see all available images on

Connect the computer and nao on the same network and get their ips and replace by their values in the following command :

roslaunch nao_bringup nao_full_py.launch nao_ip:= roscore_ip:=

Run nao_xaal : (Current status 20170330: this does not do anything as Nao does not speak)

rosrun nao_xaal   
  1. Install ros. You will have created a catkin workspace CATKIN_WS (for instance ~/catkin_ws)
  2. Install web_video_server ROS package. In more detail, download the code from and put the folder (with files package.xml and CMakeLists.txt) in CATKIN_WS/src. Then in CATKIN_WS, run


  3. Install the ros packages for kinect : openni_tracker and openni_launch
    1. download from aldebaran the Python SDK the compressed file Python 2.7 SDK 1.14.5 Linux 64 and install according to th instructions In details :
    2. Set the environnement variable PYTHONPATH to /path/to/python-sdk by doing for example:
      $ export PYTHONPATH=${PYTHONPATH}:/path/to/python-sdk
    3. check the installation with python
      import naoqi
    4. ROS packages for the Nao robot
      sudo apt-get install ros-indigo-driver-base ros-indigo-move-base-msgs ros-indigo-octomap ros-indigo-octomap-msgs ros-indigo-humanoid-msgs ros-indigo-humanoid-nav-msgs ros-indigo-camera-info-manager ros-indigo-camera-info-manager-py
      sudo apt-get install ros-indigo-nao-robot 
  4. Install xAAL
    1. revert to version 1271
    2. install all dependencies
      sudo apt-get install lua5.2* libmnl*  libsensors*  libjson0 libjson0-dev 
    3. go to folder xAAL/code/C/trunk/libxaal and execute
    4. install pysodium
      1. install libsodium with instructions from by downloading from the tar ball and run
        tar -xv libsodium*tar*
        cd libsodium*
        make && make check
        sudo make install
      2. download from the pysodium tar and install likewise
  5. Configure the system by inputing the right xaaladdr of the various smart home devices in file ~/catkin_ws/src/nao_xaal/scripts/nao_xaal.conf

Kinect nodes

If you get an error like below while launching roslaunch openni_launch openni.launch

[FATAL] [1505723416.829285686]: Failed to load nodelet '/camera/points_xyzrgb_sw_registered` of type `depth_image_proc/point_cloud_xyzrgb` to manager `camera_nodelet_manager'
[FATAL] [1505723416.829758876]: Failed to load nodelet '/camera/disparity_depth` of type `depth_image_proc/disparity` to manager `camera_nodelet_manager'
[camera/points_xyzrgb_sw_registered-12] process has died [pid 18701, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load depth_image_proc/point_cloud_xyzrgb camera_nodelet_manager --no-bond rgb/image_rect_color:=rgb/image_rect_color rgb/camera_info:=rgb/camera_info depth_registered/image_rect:=depth_registered/sw_registered/image_rect_raw depth_registered/points:=depth_registered/points __name:=points_xyzrgb_sw_registered __log:=/home/ihsev/.ros/log/551a83f0-9c4b-11e7-8d73-002710a3474c/camera-points_xyzrgb_sw_registered-12.log].

the problem seems to be with memory allocation, Try typing this command in the same terminal where you get this error killall XnSensorServer. then try launching the node again. If the process dies again, ctrl+c and then type the killall command again (it should say no processes found). Then try launching the node again.

Ref :


speech.launch in ~/catkin_ws/src/nao_robot/nao_apps/launch

but command rosrun nao_apps crashes

What worked :

I added to file nao_full_py.launch from catkin_ws/src/nao_robot/nao_bringup/launch the lines :

  <!-- enable alife -->
  <include file="$(find nao_apps)/launch/alife.launch" >
    <arg name="nao_ip"        value="$(arg nao_ip)" />

  <!-- enable speech -->
  <include file="$(find nao_apps)/launch/speech.launch" >
    <arg name="nao_ip"        value="$(arg nao_ip)" />

From the terminal:

roslaunch nao_apps speech.launch nao_ip:= roscore_ip:= network_interface:=wlan0 OU roslaunch nao_bringup nao_full_py.launch nao_ip:= roscore_ip:= network_interface:=wlan0
rostopic pub /speech -1 std_msgs/String 'hello'
  • smarthome/ros_xaal.txt
  • Last modified: 2020/07/04 15:23
  • by