ros-naoqi / naoqi_driver

c++ bridge based on libqi
Apache License 2.0
54 stars 93 forks source link

naoqi_driver

This module establishes a ROS bridge with NAOqi. It publishes several sensor data as well as the robot position.

It also enables ROS to call parts of the NAOqi API. It was tested with a pepper robot.

Installation

For noetic, on Ubuntu 20.04:

sudo apt install ros-noetic-naoqi-driver

Dependencies

To run, the driver requires the naoqi_libqi, naoqi_libqicore and naoqi_bridge_msgs packages. Those can be installed using apt-get (if they have been released for your ROS distro) or from source. Additionally, pepper_meshes and/or nao_meshes can be useful if you try to display the robot in RViz.

How it works

The __naoqi_driver module is a NAOqi module that also acts as a ROS node. Ros will automaticaly generate a roscore IP for the robot. Usually, you will start your roscore__ on your local desktop.

Once connected, normal ROS communication is happening between your robot, running NAOqi OS, and your desktop, running ROS.

Launch

Before launching, you may want to shutdown the autonomous life of the robot with the following process:

ssh nao@<naoip>
qicli call ALAutonomousLife.setState disabled
qicli call ALMotion.wakeUp

The driver can be launched using the following command:

Be aware that username and password arguments are only required for robots running NAOqi 2.9 or greater.

source <catkin_ws>/devel/setup.bash
roslaunch naoqi_driver naoqi_driver.launch nao_ip:=<ip> nao_port:=<port> roscore_ip := <ip> network_interface:=<interface> username:=<name> password:=<passwd>

Warning: naoqi_driver for melodic and greater have to be used for robots running NAOqi 2.9 and greater.

Warning: If you have a connection refused error such as this issue when using robots running NAOqi 2.8 and greater, please try to give nao_port:=9503 explicitly.

Check that the node is running correctly

Check that naoqi_driver is connected with :

rosnode info /naoqi_driver

Check that you can move the head by publishing on /joint_angles:

rostopic pub /joint_angles naoqi_bridge_msgs/JointAnglesWithSpeed "{header: {seq: 0, stamp: now, frame_id: ''}, joint_names: ['HeadYaw', 'HeadPitch'], joint_angles: [0.5,0.1], speed: 0.1, relative: 0}"

You can see the published message with rostopic echo /joint_angles

Check that you can move the robot by publishing on cmd_vel to make the robot move:

rostopic pub /cmd_vel geometry_msgs/Twist "linear:
  x: 2.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.8"

Build status

ROS Distro Binary Status Source Status Github Build
Noetic Build Status Build Status ros-noetic-focal
Melodic Build Status Build Status ros-melodic-bionic
Kinetic passing passing ros-kinetic-xenial

Further information

For further information, you can consult the documentation (OUTDATED) here or build it:

cd doc
doxygen Doxyfile
sphinx-build -b html ./source/ ./build/