Algorithms for object manipulation and walking with the iCub as shown below:
- Reaching, Grasping and Manipulating while Balancing (Section II of [1])
- Compliant and Adaptive Walk-to-Grasp and Guided Walking (Section III of [1])
- Adaptive Navigation with Non-Linear DS Learned from Demonstrations (Section IV of [1])
Reference
[1] Figueroa, N., Faraji, S., Koptev, M. and Billard, A. (2019) "A Dynamical System Approach for Adaptive Grasping, Navigation and Co-Manipulation with Humanoid Robots". In proceedings of the IEEE International Conference on Robotics and Automation (ICRA-2020). Paris, France pdf-link
Contact: For questions on the methods and/or implementation contact Nadia Figueroa (nadia.figueroafernandez AT epfl dot ch) and/or Salman Faraji (salman.faraji AT epfl dot ch)
Acknowledgments This work was supported by the European Community Horizon 2020 Research and Innovation pro- gramme ICT-23-2014, grant agreement 644727-Cogimon and 643950-SecondHands.
- OS: Ubuntu 16
- Yarp: Install from yarp-link. If using ubuntu 16, get the xenial version in their repository. Make sure you enable the plugins if compiling it from the source.
- Gazebo: Install from gazebo-link Version 7 or 9 work properly.
DISCLAIMER: The code provided in this repo has been extensively tested on Ubuntu 16. It has been experimentally tested on Ubuntu 18 and Mac OS-X with the Gazebo simulator -- yet, we do not ensure proper execution on these OS.
-
The code for the IK solver is generated by CVXGEN as we cannot distribute it under any license, please contact Nadia Figueroa or Salman Faraji for instructions to generate the library. Once generated place the code in
~./iCub-Assistant/dependencies/IKCG_cvxgen/
. -
The robot model used in both IK solver and walking controller relies on a model of the iCub generated by the SDFast software. Since this is a commercial software we cannot license it either, please contact Nadia Figueroa or Salman Faraji for instructions on how to generate this model once you have acquired SDFast. Once generated place the code in
~./iCub-Assistant/dependencies/sdfast/
. -
The following dependencies are used during the self-collision detection routine while performing whole-body control. Download the following libraries and place in
~./iCub-Assistant/dependencies/collision/to_install
Within the ~./iCub-Assistant/
folder:
- Go to
~./iCub-Assistant/gazebo-yarp-plugins/
folder and install it. Compared to the official package, this copy has two additional plugins that read robot and object positions.
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/
sudo make install
- Put this path in
~/.bashrc
:
export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/usr/local/lib
- Also put the path of gazebo/objects and gazebo/robots in
~/.bashrc
. For example:
if [ -z "$GAZEBO_MODEL_PATH" ]; then
export GAZEBO_MODEL_PATH=/home/sfaraji/Dropbox/LASA/gazebo/objects:/home/sfaraji/Dropbox/LASA/gazebo/robots
else
export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:/home/sfaraji/Dropbox/LASA/gazebo/objects:/home/sfaraji/Dropbox/LASA/gazebo/robots
fi
- Install collision dependencies in
~./iCub-Assistant/dependencies/collision/to_install
,
mkdir build
cd build
cmake ..
sudo make install
- Install the main whole-body controller code. Go to
~./iCub-Assistant/sim/
(for simulated robot) and~./iCub-Assistant/real/
(for real robot) folder, and compile the code:
mkdir build
cd build
cmake ..
make -j
The code works for both Gazebo simulation and experiments with the real robot.
- In one command window run:
yarpserver
- [For Gazebo simulation] Open another window, navigate to
~./iCub-Assistant/gazebo/worlds
folder, and run:
gazebo -s libgazebo_yarp_clock.so simple.world
- In another window, go to either
~./iCub-Assistant/sim/
or~./iCub-Assistant/real/
and run the controller by:
./main --robot icubSim
-
Play with keyboard to move the hands (see
main.cpp
) or walk. The robot tracks the object whenever it is reachable. -
If you have two robots, open another window and run:
./main --robot icubSim2
For real-world experiments, each controller must run individual laptops with the name of the robot being icub