/!\ This package replaces the nao_ctrl package since version 0.4.

To run nao_driver on the actual Nao robot, you need to crosscompile ROS the stacks nao_robot and humanoid_msgs for it first. Alternatively, you can connect remotely without installing anything on your Nao. The current version of nao_driver works with NaoQI version 1.6 or newer (last tested: 1.12.0). Versions 0.1x are still compatible to NaoQI 1.3.

Documentation

To start the Nao driver nodes on the robot, ssh on it, load the ROS setup.bash, and start

roslaunch nao_driver nao_driver.launch

After that you can start the remote nodes from nao_remote and nao_teleop. 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. Export the environment variables NAO_IP and NAO_PORT to point to your robot and launch the driver as above, e.g.:

NAO_IP=192.168.1.10 roslaunch nao_driver nao_driver.launch

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

See naoqi_driver/Troubleshooting for common errors and solution.

Nodes

nao_sensors

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

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)
  • Removed in v0.4: to execute fixed movements use the more general joint angle control in nao_controller or fixed poses from pose_manager (in nao_remote) instead
head_angles (nao_msgs/HeadAngles)
  • Removed in v0.4: use joint angles control in nao_controller instead
speech (std_msgs/String)
  • Text to be said over Nao's speech synthesis

Services

read_foot_gait_config_srv (std_srvs/Empty)
  • Reads the values from ~use_foot_gait_config and ~foot_gait_config and sets them. This can be used to change the current foot gait config during runtime.

Parameters

~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.
~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.
~use_foot_gait_config (boolean, default: False)
  • Enable or disable using a foot gait configuration for all walk commands. Disabling will use the Default gait configuration saved on the Nao.
~foot_gait_config (ALValue/Tupel)
  • A list of the gait config parameters, see the NAOqi API for more information.

nao_controller

Controls the Nao's joints either with messages (non-blocking) or with an actionlib interface (blocking, using SimpleActionServer).

Action Goal

joint_trajectory (nao_msgs/JointTrajectoryGoal)
  • Executes a given joint angle trajectory over time (multiple keypoints possible)
joint_stiffness_trajectory (nao_msgs/JointTrajectoryGoal)
  • Executes a given joint stiffness trajectory over time
joint_angles_action (nao_msgs/JointAnglesWithSpeedGoal)
  • Executes a give joint angle trajectory as one goal keypoint with relative joint speed

Subscribed Topics

joint_angles (nao_msgs/JointAnglesWithSpeed)
  • Joint Angle control with relative speed (non-blocking)
joint_stiffness (sensor_msgs/JointState)
  • Sets stiffness of a set of joints with effort between 0 and 1 (non-blocking)

Services

body_stiffness/[enable/disable] (std_srvs/Empty)
  • Enable / disable the stiffness of the whole body

nao_tactile

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.

nao_diagnostic_updater

This script collects diagnostic information on a Nao robot and publishes the information as DiagnosticArray messages (last tested with NaoQI 1.10.52). CPU temperature and network status will only be available if the script runs directly on the robot.

Published Topics

diagnostics (diagnostic_msgs/DiagnosticArray)
  • Dignostic messages

nao_camera

nao_camera publishes Nao's camera image by wrapping the Aldebaran Python NaoQI API.

Published Topics

image_raw (sensor_msgs/Image)
  • Image stream (by default bgr8 encoding)
camera_info (sensor_msgs/CameraInfo)

nao_footsteps

nao_footsteps handles footsteps meant to be executed on the NAO robot. It offers a topic and a service to execute footsteps on the NAO robot, as well as a service to clip footsteps which can be afterwards performed by the NAO robot.

Subscribed Topics

footstep (humanoid_nav_msgs/StepTarget)
  • Sends a footstep command to the NAO robot.

Services

footstep_srv (humanoid_nav_msgs/StepTargetService)
  • Sends a footstep command to the NAO robot. The service blocks until the footstep has been executed.
clip_footstep_srv (humanoid_nav_msgs/ClipFootstep)
  • Clips a footstep into the range executable by the NAO robot.

nao_behaviors

nao_behaviors allows you to query and execute pre-recorded actions on the NAO. Note a node may only execute one behaviour at a time. You can use choregraphe to generate behaviors (Box libraries->Templates->Animation).

Action Goal

run_behavior (nao_msgs/RunBehaviorGoal)
  • Executes an already installed behavior

Services

get_installed_behaviors (nao_msgs/GetInstalledBehaviors)
  • Returns a list of the installed behaviors on the robot

nao_leds

nao_leds can control all the LEDs on the NAO. It also allows to activate a customazible blinking behavior.

Action Goal

blink (nao_msgs/BlinkGoal)
  • NAO will blink with a color chosen at random from colors, the duration of the actual blink is determined by blink_duration and the blinking rate is assumed to be normal with mean blink_rate_mean and standard deviation blink_rate_sd. The background color while the robot is not blinking is set to bg_color. This behavior runs until either a new BlinkGoal is sent or the current goal is cancelled.

Subscribed Topics

fade_rgb (nao_msgs/FadeRGB)
  • Set the leds represented by led_name to color. Transisition lasts for fade_duration. For more information about valid names refer to the NAOqi documentation.

nao_speech

Node leverages both NaoQi's text-to-speech and speech recognition engines and exposes them to ROS. It is possible to have several concurrent nodes of this type, each one configured with different parameters.

Subscribed Topics

speech (std_msgs/String)
  • Text to be said over Nao's speech synthesis.

Published Topics

word_recognized (nao_msgs/WordRecognized)
  • Words and confidence levels detected with Nao's speech recognition system.

Services

reconfigure (std_srvs/Empty)
  • Call to reconfigure node using ROS parameters, useful if parameters have been updated since node start-up.
start_recognition (std_srvs/Empty)
  • Start Nao's speech recognition system. The vocabulary parameters needs to be set for the call to succeed. Only one node can use the speech recognition at any given time.
stop_recognition (std_srvs/Empty)
  • Stop speech recognition. Useful to allow other nao_speech nodes to start the speech recognition system.

Parameters

~voice (string, default: current voice)
  • Set NAO's voice
~language (string, default: current language)
  • Set NAO's language (both text-to-speech and speech recognition)
~volume (float, default: current volume)
  • Set NAO's voice volume
~vocabulary (list of strings, default: empty list)
  • List of words to be recognized by NAO. Must not be empty for speech recognizer to work.
~enable_audio_expression (boolean, default: current value)
  • Enable speech recognizer's audio expression
~enable_visual_expression (boolean, default: current value)
  • Enable speech recognizer's visual expression
~word_spotting (boolean, default: false)
  • Enable word spotting (recognizing words in the middle of a speech) only if your NAO supports it (>v4)

Wiki: nao_driver/groovy (last edited 2015-03-19 14:48:47 by StefanOsswald)