nao_robot: nao_driver | nao_msgs

Package Summary

Driver package for the Nao robot, providing access to walking commands, joint angles, and sensor data (odometry, IMU, camera, ...). The most-current version is compatible with the Nao API version 1.6 or newer, connecting to a real or simulated Nao by wrapping Aldebaran Robotics' NaoQI API in Python. This requires the "lib" directory of the Aldebaran SDK to be in your PYTHONPATH environment variable.

/!\ 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 nao_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

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.

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)

Wiki: nao_driver (last edited 2012-05-23 14:13:00 by Daniel)