Skip to main content

Official URDF and SDF models of the iCub humanoid robot.

Project description

icub-models

Repository containing URDF and SDF models of iCub humanoid robots.

The model contained in this repo are licensed under the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0) .

Installation

conda (recommended)

You can easily install the icub-models and the C++ and Python helper libraries via conda-forge using the following command

conda install -c conda-forge icub-models

If you are not familiar with conda or conda-forge, you can read an introduction document in conda-forge overview.

robotology-superbuild (advanced)

If you use apt to install your dependencies or if you are install icub-models for use as part of iCub humanoid robot software installation, you may want to install icub-models through the robotology-superbuild, an easy way to download, compile and install the robotology software on multiple operating systems, using the CMake build system and its extension YCM. icub-models is always installed by robotology-superbuild.

Build from source (advanced)

If you want to build icub-models directly from source of from the repo, you can check the documentation in build-from-source.md.

Model Details

The models contained in icub-models are listed in the following table. Most models are identified by a name like iCub<Something><Number>, that we refer as YARP_ROBOT_NAME. Historically, on iCub robot setups, the YARP_ROBOT_NAME env variable identified the specific robot to use.

YARP_ROBOT_NAME package:/-URI Notes
iCubErzelli02 package://iCub/robots/iCubErzelli02/model.urdf v2.5.5
iCubGazeboV2_5 package://iCub/robots/iCubGazeboV2_5/model.urdf v2.5.5, joint damping, and inertias of some links increased in a non realistic way to run smoothly in Gazebo Classic (ODE).
iCubGazeboV2_5_visuomanip package://iCub/robots/iCubGazeboV2_5/model.urdf v2.5.5 with hands and eyes, base_link fixed to the ground and legs disabled.
iCubGazeboV2_5_KIT_007 package://iCub/robots/iCubGazeboV2_5_KIT_007/model.urdf v2.5 + KIT_007 with backpack, joint damping, and inertias of some links increased in a non realistic way to run smoothly in Gazebo Classic (ODE).
iCubGazeboV2_6 package://iCub/robots/iCubGazeboV2_6/model.urdf v2.6 with joint damping, and inertias of some links increased in a non realistic way to run smoothly in Gazebo Classic (ODE).
iCubGazeboV2_7 package://iCub/robots/iCubGazeboV2_7/model.urdf v2.7 with joint damping, and inertias of some links increased in a non realistic way to run smoothly in Gazebo Classic (ODE).
iCubGazeboV3 package://iCub/robots/iCubGazeboV3/model.urdf v3 with joint damping, and inertias of some links increased in a non realistic way to run smoothly in Gazebo Classic (ODE).
iCubGazeboV3_visuomanip package://iCub/robots/iCubGazeboV3_visuomanip/model.urdf v3 with hands and eyes
iCubGenova02 package://iCub/robots/iCubGenova02/model.urdf v2.5.5 + KIT_007 with backpack
iCubGenova03 package://iCub/robots/iCubGenova03/model.urdf v2 with legs v1 and feet v2.5
iCubGenova11 package://iCub/robots/iCubGenova11/model.urdf v2.7
iCubLisboa01 package://iCub/robots/iCubLisboa01/model.urdf v1 with head v2
iCubNancy01 package://iCub/robots/iCubNancy01/model.urdf v2.5 with arms v1 and head v2
iCubWaterloo11 package://iCub/robots/iCubWaterloo11/model.urdf v2.7

Usage

Use the models with ROS

Models contained in icub-models can be used using the package:/-URI listed in previous table. This URI always follow the structure package://iCub/robots/<name>/model.urdf, where <name> is iCubErzelli02, iCubGazeboV2_5 or a similar identifier.

Use the models with Classic Gazebo

Note that only the models that are known to work fine with the default physics engine settings of Classic Gazebo (the one that start with iCubGazebo) are installed. If you want to make available in Gazebo all the models, enable the ICUB_MODELS_INSTALL_ALL_GAZEBO_MODELS CMake option.

To include the model in a Classic Gazebo world, use the following SDF:

<include>
    <pose>0 0 0.5 0 -0.1 3.14</pose>
    <uri>model://iCubGazeboV2_5</uri>
</include>

The model:/ string is used to include the model, following the structure model://<name>, where <name> is iCubGazeboV2_5, iCubGazeboV2_7 or a similar identifier. Note that you can also use the structure model://iCub/robots/<name>.

Use the models from C++ helper library

In order to use these models in c++ application you can exploit the icub-models library. icub-models provides native CMake support which allows the library to be easily used in CMake projects. icub-models exports a CMake target called icub-models::icub-models which can be imported using the find_package CMake command and used by calling target_link_libraries as in the following example:

cmake_minimum_required(VERSION 3.5)
project(myproject)
find_package(icub-models REQUIRED)
add_executable(example example.cpp)
target_link_libraries(example icub-models::icub-models)

The example.cpp will contains

#include <iCubModels/iCubModels.h>
#include <iostream>

int main()
{
    std::cout << "Models have been installed in: " << iCubModels::getModelsPath() << std::endl;

    std::cout << "Available robots: " << std::endl;
    for (const auto& robot : iCubModels::getRobotNames())
    {
        std::cout << " - " << robot << ": " <<  iCubModels::getModelFile(robot) << std::endl;
    }

    return EXIT_SUCCESS;
}

Note: The ABI and the API of the C++ helper library has breaking changes only at major releases of the icub-models package.

Use the models from C++ using YARP

To find the model in C++ using YARP, you just need to make sure that YARP_ROBOT_NAME environment variable is set, and search for the model.urdf file:

std::string modelAbsolutePath =yarp::os::ResourceFinder::getResourceFinderSingleton().findFileByName("model.urdf");

Use the models from Python icub-models library

The following script can be used to locate the models

import icub_models

print(f"Models have been installed in: {icub_models.get_models_path()}")

print(f"Available robots: {icub_models.get_robot_names()}")

for robot_name in icub_models.get_robot_names():
    print(f"{robot_name}: {icub_models.get_model_file(robot_name)}")

Use the models from Python using resolve-robotics-uri-py

First of all, make sure that you installed resolve-robotics-uri-py python library. Then, you can find the icub-models models using package:/ or model:/ URIs, as you would use with Gazebo or ROS:

absolute_path = resolve_robotics_uri_py.resolve_robotics_uri("package://iCub/robots/iCubGazeboV2_7/model.urdf")

or

absolute_path = resolve_robotics_uri_py.resolve_robotics_uri("model://iCub/robots/iCubGazeboV2_7/model.urdf")

FAQs

Change the orientation of the root frame

The iCub robot root frame is defined as x-backward, meaning that the x-axis points behind the robot. Nevertheless, in the robotics community, sometimes the root frame of a robot is defined as x-forward. As a consequence, to use the iCub models with software developed for the x-forward configuration (e.g. IHMC-ORS), might be necessary to quickly update the root frame orientation.
For this purpose, locate the joint <joint name="base_fixed_joint" type="fixed"> in the URDF model and perform the following substitution in the origin section:

-  <origin xyz="0 0 0" rpy="0 -0 0"/>
+  <origin xyz="0 0 0" rpy="0 -0 3.14159265358979323846"/>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

icub_models-2.8.1.tar.gz (22.9 MB view details)

Uploaded Source

Built Distribution

icub_models-2.8.1-py3-none-any.whl (19.6 MB view details)

Uploaded Python 3

File details

Details for the file icub_models-2.8.1.tar.gz.

File metadata

  • Download URL: icub_models-2.8.1.tar.gz
  • Upload date:
  • Size: 22.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for icub_models-2.8.1.tar.gz
Algorithm Hash digest
SHA256 2c1d42c8a22b10bc991bb6be5bc500fde287e194b309be8539bbd2146ec1a120
MD5 a75f0288832d54e8e71a84d1fa32df6d
BLAKE2b-256 a1452f66689ecd96737dc4433a63e466af1d467ad1107fb176b3e729e55e991d

See more details on using hashes here.

File details

Details for the file icub_models-2.8.1-py3-none-any.whl.

File metadata

  • Download URL: icub_models-2.8.1-py3-none-any.whl
  • Upload date:
  • Size: 19.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for icub_models-2.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 63e2eff14ed74c29a01fd8501ccc9ab363bf3511369533545e8837cc7e5a7b45
MD5 d34c9fbe79e2368846457cde60e6b1f7
BLAKE2b-256 eb4702ecaac8ce8718c344126d322bddb2bb708609911dda4cb70bd77fa5dd89

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page