This module implements a torque control balancing strategy. It computes the interaction forces at the feet in order to stabilise a desired centroidal dynamics, which implies the tracking of a desired center-of-mass trajectory. A cost function penalizing high joint torques - that generate the feet forces - is added to the control framework.
For details see iCub whole-body control through force regulation on rigid non-coplanar contacts
The repository contains the Simulink model torqueBalancingR2016bS88.mdl
, which is generated by using Matlab R2016b, and it is also exported in previous matlab versions (2012b, 2015b, 2015a). The controller is tested in simulation by using Gazebo 7.8. Older versions of Gazebo may lead to scarse, or unstable, control performances.
Currently, supported robots are:iCubGenova02
, iCubGenova04
, iCubNancy01
, icubGazeboSim
, bigman
, bigman_only_legs
, iCubHeidelberg01
.
The procedure to run the torque balancing module is still quite elaborate. Users willing to use the module should follow this list.
- Set the environmental variable YARP_ROBOT_NAME in the
.bashrc
according to the robot one wants to use (e.g. icubGazeboSim for simulations, or iCubGenova02, iCubGenova04, etc. for experiments). - (Simulation only) Launch yarpserver.
- (Simulation only) Launch gazebo. If you want to use the synchronization between the controller and the simulator to avoid real-time factor related problems, launch gazebo as follows:
gazebo -slibgazebo_yarp_clock.so
- Bring the robot in a suitable home position (e.g.
$ yarpmotorgui --from homePoseBalancing.ini
and then select a custom position by clicking onGlobal Joints Commands/Custom postions
- (Simulation only) Launch
wholeBodyDynamics
as follows:YARP_ROBOT_NAME=icubGazeboSim yarprobotinterface --config launch-wholebodydynamics.xml
. For further details see here - (Simulation only, optional) type on a terminal
yarp rpc /wholeBodyDynamics/rpc
and execute the commandresetOffset all
- (Real robot only) type on a terminal
yarp rpc /wholeBodyDynamics/rpc
and execute the commandcalib all 300
- Open the simulink model
torqueBalancingR2016bS88.mdl
or the one that correspond to your matlab version - Run the module.
At start, the module calls the initialization file initTorqueBalancing.m. Once open, this file contains some configuration variables. Please follow the instruction inside initTorqueBalancing.m to properly configure your simulation
The gains and references for the robot specified by the variable YARP_ROBOT_NAME can be found in the folder app/robots/YARP_ROBOT_NAME
It is possible to send a CoM
reference by connecting to the streaming port comDes:i
. The port expects 9 elements: 3 values for the desired CoM position, 3 values for the desired CoM velocity and 3 values for the desired CoM acceleration
It is possible to send the impedance resting position as a reference to the streaming port qdes:i
. This port expects the same number of element as the torque controlled joints. References are in radians
In case you want to cite the content of this module please refer to iCub whole-body control through force regulation on rigid non-coplanar contacts and use the following bibtex entry:
@INPROCEEDINGS{Nava_etal2016,
author={G. Nava and F. Romano and F. Nori and D. Pucci},
booktitle={2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
title={Stability analysis and design of momentum-based controllers for humanoid robots},
year={2016},
pages={680-687},
keywords={Lyapunov methods;asymptotic stability;closed loop systems;control system synthesis;humanoid robots;legged locomotion;linearisation techniques;momentum;robust control;Lyapunov analysis;balancing controller design;closed loop system asymptotic stability;iCub humanoid robot;linearized system joint space;momentum-based controller design;robust controllers;stability analysis;unstable zero dynamics;walking controller design;Acceleration;Asymptotic stability;Humanoid robots;Legged locomotion;Robot kinematics;Stability analysis},
doi={10.1109/IROS.2016.7759126},
month={Oct},}
@article{Nori_etal2015,
author="Nori, F. and Traversaro, S. and Eljaik, J. and Romano, F. and Del Prete, A. and Pucci, D.",
title="iCub whole-body control through force regulation on rigid non-coplanar contacts",
year="2015",
journal="Frontiers in {R}obotics and {A}{I}",
volume="1"
}