Interface to handle communication between mc_rtc
and SoftBank humanoid robots running NAOqi OS
Anastasia Bolotnikova (a.bolotnikova[at]softbankrobotics.com)
@unpublished{bolotnikova2021sii,
title = {Task-Space Control Interface for SoftBank Humanoid Robots and its Human-Robot Interaction Applications},
author = {Anastasia Bolotnikova and Pierre Gergondet and Arnaud Tanguy and S{\'e}bastien Courtois and Abderrahmane Kheddar},
booktitle = {IEEE/SICE International Symposium on System Integration (SII 2021)},
pdf = {https://hal.archives-ouvertes.fr/hal-02919367v3/document},
url = {https://hal.archives-ouvertes.fr/hal-02919367},
month = {January},
year = {2021}
}
The communication with naoqi OS is based on libqi.
On ubuntu bionic, libqi may be installed from ROS packages naoqi_libqi
sudo apt-get install ros-melodic-naoqi-libqi
Unfortunately, libqi is not officially supported on libqi, aue to changes in Boost 1.70 networking API, the official repository does not compile. We provide a patched version maintained at https://github.com/arntanguy/libqi
git clone --recursive https://github.com/arntanguy/libqi.git
cd libqi
mkdir build && cd build
cmake -DQI_WITH_TESTS=OFF ..
make -j8
sudo make install
After installing the above dependencies, compile and install mc_naoqi
.
git clone --recursive https://github.com/jrl-umi3218/mc_naoqi.git
cd mc_naoqi
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j8
sudo make install
Communication with the robot sensors and actuators is managed using the embedded DCM module on the robot. To access its features, mc_naoqi_dcm needs to be installed and run on the robot.
To use the interface and connect to a real robot run
mc_naoqi -h <robot_hostname> -p <robot_port> -f <mc_rtc_configuration_file.conf>
Where <mc_rtc_configuration_file.yaml> is based on <INSTALL_PREFIX>/etc/mc_naoqi/<robot>.yaml
(e.g /usr/local/etc/mc_naoqi/pepper.yaml
).
If you wish to run the simulation only use simulation
as a <robot_hostname>
mc_naoqi -h simulation -f <mc_rtc_configuration_file.conf>
on
: servo on actuatorsoff
: servo off actuatorss
: startsmc_rtc
controller if stopped, stops otherwisehs
: go to half-sitting posturecc <controller name>
: change controller
If mc_rtc
was compiled with ROS support, then services will be available to interact with controllers. You can see the list of all services available with
rosservice list /mc_rtc
- Pepper (fully supported and tested)
- NAO (initial functionality implemented, to be tested)
- Romeo (not supported)
2020: Human-robot interaction
@inproceedings{bolotnikova2020roman,
title = {Autonomous Initiation of Human Physical Assistance by a Humanoid},
author = {Anastasia Bolotnikova and S{\'e}bastien Courtois and Abderrahmane Kheddar},
booktitle = {IEEE International Conference on Robot and Human Interactive Communication},
address = {Naples, Italy},
month = {31 August--4 September},
year = {2020}
}
2018: Compliant robot motion
@inproceedings{bolotnikova2018humanoids,
title={Compliant Robot Motion Regulated via Proprioceptive Sensor Based Contact Observer},
author={Anastasia Bolotnikova and S{\'e}bastien Courtois and Abderrahmane Kheddar},
booktitle={IEEE-RAS International Conference on Humanoid Robots},
pages={854--859},
address = {Beijing, China},
month = {6--9 November},
year={2018}
}
2018: Contact detection
@inproceedings{bolotnikova2018roman,
title = {Contact observer for humanoid robot Pepper based on tracking joint position discrepancies},
author = {Anastasia Bolotnikova and S{\'e}bastien Courtois and Abderrahmane Kheddar},
booktitle = {IEEE International Conference on Robot and Human Interactive Communication},
pages = {29--34},
address = {Nanjing, China},
month = {27--31 August},
year = {2018}
}
Thanks to @gergondet and @arntanguy for developing and helping with this interface and the mc_rtc
framework