WARNING! this repo is under active development, and the software that contains comes with no warranties!
This repo contains libraries, plugins and controllers to perform dynamics simulations of the flying humanoid robot iRonCub. iRonCub is the world first jet-powered humanoid robot and it is being developed by the Artificial and Mechanical Intelligence group at the Italian Institute of Technology (IIT). For further information on the project, please visit the arerial humanoid robotics page.
ironcub_flight_sc1.mp4
- YARP;
- gazebo-yarp-plugins;
- whole-body-controllers;
- Matlab & Simulink;
- Gazebo;
- iDynTree;
- BlockFactory;
- Eigen3;
- matlab-whole-body-simulator.
Note
The oldest suppported Matlab version is R2021b
, and the oldest supported Gazebo version is v.8
. For controllers that use Simulink library blocks from matlab-whole-body-simulator
, the lowest supported Matlab version is R2022b
.
A possible way for installing all this dependencies, except Matlab and Gazebo, is to use the robotology-superbuild. An alternative is the usage of a conda package manager which provides binary packages for Linux, macOS and Windows. Please refers to the next sections for more details.
First, you must install matlab and Gazebo.
Then, you have to configure the other dependencies via robotology-superbuild making sure to enable the ROBOTOLOGY_ENABLE_DYNAMICS
, ROBOTOLOGY_USES_GAZEBO
CMake options, and checkout to tag v2023.08.0
.
After setting up the robotology-superbuild
, proceed to set up this repository.
Execute the following commands in your terminal:
git clone https://github.com/ami-iit/ironcub-mk1-software.git
cd ironcub-mk1-software
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=</path/to/desired/install/dir>
make install
In the first use, add the following line to your .bashrc
file:
source $IRONCUB_INSTALL_PREFIX/share/ironcub-mk1-software/setup.sh
Start by installing Matlab.
Next, you have to install and configure a conda distribution following the documentation in robotology-superbuild
. Then, once your environment is set, you can run the following command to install the required dependencies.
git clone https://github.com/ami-iit/ironcub-mk1-software.git
cd ironcub-mk1-software
mamba env create -n <conda-environment-name> --file environment.yml
For Linux or macOS, execute the following commands:
mamba activate <conda-environment-name>
cd ironcub-mk1-software
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=</path/to/desired/install/dir>
make install
echo "source </path/to/desired/install/dir>/share/ironcub-mk1-software/setup.sh" > "${CONDA_PREFIX}/etc/conda/activate.d/ironcub_setup.sh"
chmod +x "${CONDA_PREFIX}/etc/conda/activate.d/ironcub_setup.sh"
For Windows, run these commands:
mamba activate <conda-environment-name>
cd ironcub-mk1-software
mkdir build
cd build
cmake .. -G"Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX=<\path\to\desired\install\dir>
cmake --build . --config Release --target INSTALL
echo call "<path\to\desired\install\dir>\share\ironcub-mk1-software\setup.bat" > "%CONDA_PREFIX%\etc\conda\activate.d\ironcub_setup.bat"
Warning
If you haven't configured git lfs
, run git lfs install
and git lfs pull
inside the ironcub-mk1-software
folder.
Open the terminal and activate the conda environment
mamba activate <conda-environment-name>
Note
Activating the environment will automatically source setup.sh
(setup.bat
for windows). If you want to deactivate the sourced variables, you should open a new terminal.
To better understand which variables are set by the setup.sh
script, see also these READMEs: worlds, gazebo, and models.
Documentation entry points for the different folders are in the wiki of the repo.
-
flight-controllers-stable: Simulink controllers to run simulations of
iRonCub-Mk1
andiRonCub-Mk1_1
flying in Gazebo simulator. -
matlab-scripts: Matlab scripts used to determine the optimal jets configuration, robot posture for take off, and similar offline optimizations.
-
models: home positions and URDF models of
iRonCub-Mk1
andiRonCub-Mk1_1
. -
lib: Gazebo plugins and Simulink library blocks to be used in the flight controllers.
Gabriele Nava, @gabrielenava