Skip to content

Latest commit

 

History

History
128 lines (96 loc) · 6.26 KB

README.md

File metadata and controls

128 lines (96 loc) · 6.26 KB

Grasping, Walking and Navigating with an iCub

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.

System Requirements

  • 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.

Thirdparty dependencies

  • 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

    • libccd: Library for collision detection between two convex shapes
    • fcl: FCL is a library for performing three types of proximity queries on a pair of geometric models composed of triangles.

Build Instructions

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

Running Instructions

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