nao_ctrl is replaced by nao_driver, now in the nao_robot stack. Please see the documentation there for the latest updates.

To run nao_ctrl on the actual Nao robot, you need to crosscompile ROS for it first. Alternatively, you can connect remotely without installing anything on your Nao. The current version of nao_ctrl works with NaoQI version 1.6 or newer. Versions 0.1x are still compatible to NaoQI 1.3.


To start the teleoperation on the Nao, ssh on it and run:

cd ~/naoros/ros/nao_ctrl/scripts
source naoros.env

The sensor reading node is started with:


The control and sensor nodes should then connect to the running remote nodes. Note that you can also run everything on your remote machine (PC), connecting to your Nao (or a simulated Nao in Webots) via Aldebaran's API. Just run

./nao_walker --pip=ROBOT_IP --pport=NAOQI_PORT &
./nao_sensors --pip=ROBOT_IP --pport=NAOQI_PORT

instead. This may be slower, but avoids other problems e.g. when the times are not synchronized between your Nao and PC.



nao_sensors publishes the Nao's sensors (currently joint state, IMU, and odometry) by wrapping the Aldebaran Python NaoQI API.

Published Topics

torso_odometry (nao_msgs/TorsoOdometry)
  • Basic odometry of Nao's torso (6D)
torso_imu (nao_msgs/TorsoIMU)
  • Raw and filtered data from Nao's internal IMU
joint_states (sensor_msgs/JointState)
  • Measured state of all joints of Nao


nao_walker provides teleoperation with an omnidirectional walk by wrapping the Aldebaran Python NaoQI API. Accessing Nao's speech synthesis is also possible with the topic speech.

Subscribed Topics

cmd_vel (geometry_msgs/Twist)
  • Omnidirectional velocity (x, y, and theta) for the walking engine
motion_command_btn (nao_msgs/MotionCommandBtn)
  • discrete motion actions (e.g. "sit down", "stand up")
head_angles (nao_msgs/HeadAngles)
  • desired joint angles for the head
speech (std_msgs/String)
  • Text to be said over Nao's speech synthesis


~step_frequency (double, default: 0.5)
  • Maximum fraction of Nao's step frequency to be used when walking (between 0 and 1). This controls how fast (and stable) Nao is walking.
~max_head_speed (double, default: 0.2)
  • Maximum fraction of Nao's speed of changing head angles to be used for the head_angles topic (between 0 and 1).
~use_walk_pose (boolean, default: False)
  • Slowly move from init pose to walk pose before walking to avoid toppling over backwards (might improve stability for naoqi versions >= 1.10.10, not tested for other versions)
~enable_foot_contact_protection (boolean)
  • Enable or disable foot contact protection in robot's motion configuration. If this parameter is not specified, the current setting will not be changed.


Publishes sensor data of Nao's tactile sensors and bumpers. A message is sent whenever the state of the touch sensors or bumpers change, and the full state (pressed / touched or not) is sent.

Published Topics

tactile touch (nao_msgs/TactileTouch)
  • Contains information about which tactile button on Nao's head was touched
bumper (nao_msgs/Bumper)
  • Contains information about which bumper (left or right) was triggered.

Wiki: nao_ctrl (last edited 2011-11-25 13:01:51 by ArminHornung)