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.
For noetic, on Ubuntu 20.04:
sudo apt install ros-noetic-naoqi-driver
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.
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.
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 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"
ROS Distro | Binary Status | Source Status | Github Build |
---|---|---|---|
Noetic | |||
Melodic | |||
Kinetic |
For further information, you can consult the documentation (OUTDATED) here or build it:
cd doc
doxygen Doxyfile
sphinx-build -b html ./source/ ./build/