Skip to content

Commit

Permalink
Add Human Dynamics profile to superbuild (#231)
Browse files Browse the repository at this point in the history
  • Loading branch information
kouroshD authored and traversaro committed Aug 19, 2019
1 parent f3419a9 commit 26ec360
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 3 deletions.
19 changes: 17 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,12 @@ option(ROBOTOLOGY_ENABLE_CORE "Enable compilation of core software libraries." T
option(ROBOTOLOGY_ENABLE_DYNAMICS "Enable compilation of software for balancing and walking." FALSE)
option(ROBOTOLOGY_ENABLE_TELEOPERATION "Enable compilation of software for teleoperation." FALSE)
option(ROBOTOLOGY_ENABLE_ICUB_HEAD "Enable compilation of software necessary on the system running in the head of the iCub robot." FALSE)
option(ROBOTOLOGY_ENABLE_HUMAN_DYNAMICS "Enable compilation of software for human dynamics estimation." FALSE)
include(CMakeDependentOption)
cmake_dependent_option(ROBOTOLOGY_USES_CFW2CAN "Enable compilation of software that runs on the head of the iCub and depends on CFW2CAN." FALSE "ROBOTOLOGY_ENABLE_ICUB_HEAD" FALSE)

cmake_dependent_option(ROBOTOLOGY_USES_CFW2CAN "Enable compilation of software that runs on the head of the iCub and depends on CFW2CAN." FALSE "ROBOTOLOGY_ENABLE_ICUB_HEAD" FALSE)
cmake_dependent_option(ROBOTOLOGY_USES_ESDCAN "Enable compilation of software that runs on the head of the iCub and depends on ESDCAN." FALSE "ROBOTOLOGY_ENABLE_ICUB_HEAD" FALSE)
cmake_dependent_option(ROBOTOLOGY_USES_XSENS_MVN_SDK "Enable compilation of software that runs on the wearable producer machine and depends on Xsens MVN SDK." FALSE "ROBOTOLOGY_ENABLE_HUMAN_DYNAMICS" FALSE)

# Mark as advanced all the profiles that do not have a mantainer
option(ROBOTOLOGY_ENABLE_GRASPING "Enable compilation of software for grasping." FALSE)
Expand Down Expand Up @@ -150,6 +153,16 @@ if(ROBOTOLOGY_ENABLE_TELEOPERATION)
find_or_build_package(walking-teleoperation)
endif()

# Human Dynamics Estimation
if(ROBOTOLOGY_ENABLE_HUMAN_DYNAMICS)
find_or_build_package(forcetorque-yarp-devices)
find_or_build_package(wearables)
if(NOT WIN32)
find_or_build_package(human-dynamics-estimation)
endif()
find_or_build_package(human-gazebo)
endif()

# Grasping
if(ROBOTOLOGY_ENABLE_GRASPING)
find_or_build_package(icub-grasp-demo)
Expand All @@ -167,7 +180,9 @@ endif()
if(ROBOTOLOGY_ENABLE_ICUB_HEAD)
find_or_build_package(icub-firmware-shared)
find_or_build_package(ICUB)
find_or_build_package(xsensmt-yarp-driver)
if((NOT WIN32) AND (NOT APPLE))
find_or_build_package(xsensmt-yarp-driver)
endif()
endif()

# R1 Robot
Expand Down
49 changes: 48 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@ Table of Contents
* [Dynamics profile](#dynamics)
* [iCub Head profile](#icub-head)
* [Teleoperation profile](#teleoperation)
* [Human Dynamics profile](#human-dynamics)
* [Dependencies-specific documentation](#dependencies-specific-documentation)
* [Gazebo simulator](#gazebo)
* [MATLAB](#matlab)
* [Octave](#octave)
* [Python](#python)
* [Oculus](#oculus)
* [Cyberith](#cyberith)
* [Xsens](#xsens)
* [FTShoes/FTSkShoes](#shoes)
* [FAQs](#faqs)
* [Mantainers](#mantainers)

Expand Down Expand Up @@ -62,6 +65,7 @@ Note that any dependencies of the included packages that is not available in the
| `ROBOTOLOGY_ENABLE_DYNAMICS` | The robotology software packages related to balancing, walking and force control. | [`iDynTree`](https://github.com/robotology/idyntree), [`blockfactory`](https://github.com/robotology/blockfactory), [`wb-Toolbox`](https://github.com/robotology/wb-Toolbox), [`whole-body-controllers`](https://github.com/robotology/whole-body-controllers), [`walking-controllers`](https://github.com/robotology/walking-controllers). [`icub-gazebo-wholebody`](https://github.com/robotology-playground/icub-gazebo-wholebody) if the `ROBOTOLOGY_USES_GAZEBO` option is enabled. | `OFF` | [Documentation on Dynamics profile.](#dynamics) |
| `ROBOTOLOGY_ENABLE_ICUB_HEAD` | The robotology software packages needed on the system that is running on the head of the iCub robot, or in general to communicate directly with iCub low-level devices. | [`icub-firmware`](https://github.com/robotology/icub-firmware), [`icub-firmware-shared`](https://github.com/robotology/icub-firmware-shared). Furthermore, several additional devices are compiled in `YARP` and `ICUB` if this option is enabled. | `OFF` | [Documentation on iCub Head profile.](#icub-head) |
| `ROBOTOLOGY_ENABLE_TELEOPERATION` | The robotology software packages related to teleoperation. | [`walking-teleoperation`](https://github.com/robotology/walking-teleoperation). To use Oculus or Cyberith Omnidirectional Treadmill enable `ROBOTOLOGY_USES_OCULUS_SDK` and `ROBOTOLOGY_USES_CYBERITH_SDK` options. | `OFF` | [Documentation on teleoperation profile.](#teleoperation) |
| `ROBOTOLOGY_ENABLE_HUMAN_DYNAMICS` | The robotology software packages related to human dynamics estimation. | [`human-dynamics-estimation`](https://github.com/robotology/human-dynamics-estimation), [`wearables`](https://github.com/robotology/wearables), [`forcetorque-yarp-devices`](https://github.com/robotology/forcetorque-yarp-devices). For options check the profile documentation. | `OFF` | [Documentation on human dynamics profile.](#human-dynamics) |

If any of the packages required by the selected profiles is already available in the system (i.e. it can be found by the [`find_package` CMake command](https://cmake.org/cmake/help/v3.5/command/find_package.html) ), it will be neither downloaded, nor compiled, nor installed. In `robotology-superbuild`, this check is done by the [`find_or_build_package` YCM command](http://robotology.github.io/ycm/gh-pages/git-master/module/FindOrBuildPackage.html) in the main [`CMakeLists.txt`](https://github.com/robotology/robotology-superbuild/blob/db0f68300439ccced8497db4c321cd63416cf1c0/CMakeLists.txt#L108) of the superbuild.

Expand All @@ -78,6 +82,8 @@ The dependencies CMake options specify if the packages dependending on something
| `ROBOTOLOGY_USES_OCULUS_SDK` | Include software and plugins that depend on [Oculus](https://www.oculus.com/). | `OFF` | [Documentation on Oculus dependency.](#oculus) |
| `ROBOTOLOGY_USES_CYBERITH_SDK` | Include software and plugins that depend on [Cyberith](https://www.cyberith.com/). | `OFF` | [Documentation on Cyberith dependency.](#cyberith) |
| `ROBOTOLOGY_USES_CFW2CAN` | Include software and plugins that depend on [CFW2 CAN custom board](http://wiki.icub.org/wiki/CFW_card). | `OFF` | No specific documentation is available for this option, as it is just used with the [iCub Head profile](#icub-head), in which the related documentation can be found. |
| `ROBOTOLOGY_USES_ESDCAN` | Include software and plugins that depend on [Esd Can bus](http://wiki.icub.org/wiki/Esd_Can_Bus). | `OFF` | [Documentation on FTShoes/FTSkShoes dependency](#shoes) |
| `ROBOTOLOGY_USES_XSENS_MVN_SDK` | Include software and plugins that depend on [Xsens MVN SDK](https://www.xsens.com/products/). | `OFF` | [Documentation on Xsens MVN dependency](#xsens) |


Installation
Expand Down Expand Up @@ -293,6 +299,9 @@ These installers will set automatically all the enviroment variables necessary t
If you want to enable a [profile](#profile-cmake-options) or a [dependency](#dependencies-cmake-options) specific CMake option, you may need to install additional system dependencies following the dependency-specific documentation:
* [`ROBOTOLOGY_USES_OCULUS_SDK`](#oculus)
* [`ROBOTOLOGY_USES_CYBERITH_SDK`](#cyberith)
* [`ROBOTOLOGY_USES_XSENS_MVN_SDK`](#xsens)
* [`ROBOTOLOGY_USES_ESDCAN`](#shoes)


### Superbuild
If you didn't already configured your git, you have to set your name and email to sign your commits:
Expand Down Expand Up @@ -360,6 +369,8 @@ Software installed by the following [profile](#profile-cmake-options) or [depend
* [`ROBOTOLOGY_USES_OCTAVE`](#octave)
* [`ROBOTOLOGY_USES_OCULUS_SDK`](#oculus)
* [`ROBOTOLOGY_USES_CYBERITH_SDK`](#cyberith)
* [`ROBOTOLOGY_USES_XSENS_MVN_SDK`](#xsens)
* [`ROBOTOLOGY_USES_ESDCAN`](#shoes)

**If you have problems in Windows in launching executables or using libraries installed by superbuild, it is possible that due to some existing software on your machine your executables are not loading the correct `dll` for some of the dependencies. This is the so-called [DLL Hell](https://en.wikipedia.org/wiki/DLL_Hell#Causes), and for example it can happen if you are using the [Anaconda](https://www.anaconda.com/) Python distribution on your Windows installation. To troubleshoot this kind of problems, you can open the library or executable that is not working correctly using the [`Dependencies`](https://github.com/lucasg/Dependencies) software. This software will show you which DLL your executable or library is loading. If you have any issue of this kind and need help, feel free to [open an issue in our issue tracker](https://github.com/robotology/robotology-superbuild/issues/new).**

Expand Down Expand Up @@ -503,6 +514,16 @@ In this scenario, we use both [Oculus](#oculus) and [cyberith treadmill](#cyberi
### Configuration
The steps necessary to install the system dependencies of the Teleoperation profile are provided in operating system-specific installation documentation, and no additional system dependency is required.


## Human Dynamics
This profile is enabled by the `ROBOTOLOGY_ENABLE_HUMAN_DYNAMICS` CMake option.

### System Dependencies
To run a human dynamics estimation scenario, we need a Windows machine to install the Xsens suit SDK for getting the sensory information of the human motions from [Xsens](https://www.xsens.com/) and [ESD USB CAN driver](https://esd.eu/en/products/can-usb2) to get the FTShoes/FTSkShoes sensory information. Refer to [Xsens](#xsens) and [FTShoes/FTSkShoes](#shoes) for more information about the dependencies.

### Configuration
The steps necessary to install the system dependencies of the Human Dynamics profile are provided in operating system-specific installation documentation, and no additional system dependency is required.

Dependencies-specific documentation
===================================

Expand Down Expand Up @@ -636,6 +657,31 @@ To check and install the Cyberith SDK, please follow the steps for Cyberith SDK
### Configuration
To configure the Cyberith SDK please follow the steps for Cyberith SDK mentioned in [here](https://github.com/robotology/walking-teleoperation/blob/master/docs/Dependencies.md).

## Xsens
Support for `ROBOTOLOGY_USES_XSENS_MVN_SDK` option is only enabled when the `ROBOTOLOGY_ENABLE_HUMAN_DYNAMICS` CMake option is set to ON.

**Warning: at the moment the Xsens MVN SDK does not support macOS and Linux, so this option is only supported
on Windows.**

### System Dependencies
To check and install the Xsens MVN SDK, please follow the steps for Xsens MVN SDK mentioned in [here](https://github.com/robotology/human-dynamics-estimation/wiki/Set-up-Machine-for-running-HDE#xsens-only-for-windows).

### Configuration
To configure the Xsens MVN SDK please follow the steps for Xsens MVN SDK mentioned in [here](https://github.com/robotology/human-dynamics-estimation/wiki/Set-up-Machine-for-running-HDE#xsens-only-for-windows).

## Shoes
Support for FTShoes/FTSkShoes depends on operating system.
- For Windows the support is provided by`ROBOTOLOGY_USES_ESDCAN` option (shoes force/torque sensors) is only enabled when the `ROBOTOLOGY_ENABLE_ICUB_HEAD` CMake option is set to ON.
- For Linux OS enable the `socketCan` option in [`ICUB`](https://github.com/robotology/icub-main) (not tested).
- This option does not support in macOS.


### System Dependencies
To get the information from FTShoes/FTSkShoes, check and install the ESD USB CAN driver, please follow the steps for USB-CAN2 driver mentioned in [here](https://github.com/robotology/human-dynamics-estimation/wiki/Set-up-Machine-for-running-HDE#usb-can-2) (Windows OS).

### Configuration
To configure the FTShoes/FTSkShoes please follow the steps for USB-CAN2 mentioned in [here](https://github.com/robotology/human-dynamics-estimation/wiki/Set-up-Machine-for-running-HDE#usb-can-2) (Windows OS).

FAQs
====

Expand Down Expand Up @@ -671,8 +717,9 @@ The `robotology-superbuild` is based on [YCM](https://github.com/robotology/ycm)
Mantainers
==========

| Profile | Mantainer |
| Profile | Maintainer |
|:--------:|:-----------------------------:|
| Core | Silvio Traversaro [@traversaro](https://github.com/traversaro) |
| Dynamics | Silvio Traversaro [@traversaro](https://github.com/traversaro) |
| Teleoperation | Kourosh Darvish [@kouroshD](https://github.com/kouroshD) |
| Human Dynamics | Yeshasvi Tirupachuri [@Yeshasvitvs](https://github.com/Yeshasvitvs) |
1 change: 1 addition & 0 deletions cmake/BuildICUB.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ ycm_ep_helper(ICUB TYPE GIT
-DENABLE_icubmod_canBusSkin:BOOL=${ROBOTOLOGY_ENABLE_ICUB_HEAD}
-DENABLE_icubmod_canBusVirtualAnalogSensor:BOOL=${ROBOTOLOGY_ENABLE_ICUB_HEAD}
-DENABLE_icubmod_cfw2can:BOOL=${ROBOTOLOGY_USES_CFW2CAN}
-DENABLE_icubmod_ecan:BOOL=${ROBOTOLOGY_USES_ESDCAN}
-DENABLE_icubmod_embObjFTsensor:BOOL=${ROBOTOLOGY_ENABLE_ICUB_HEAD}
-DENABLE_icubmod_embObjIMU:BOOL=${ROBOTOLOGY_ENABLE_ICUB_HEAD}
-DENABLE_icubmod_embObjInertials:BOOL=${ROBOTOLOGY_ENABLE_ICUB_HEAD}
Expand Down
17 changes: 17 additions & 0 deletions cmake/Buildforcetorque-yarp-devices.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright (C) 2019 iCub Facility, Istituto Italiano di Tecnologia
# CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT

include(YCMEPHelper)
include(FindOrBuildPackage)

find_or_build_package(YARP QUIET)

ycm_ep_helper(forcetorque-yarp-devices TYPE GIT
STYLE GITHUB
REPOSITORY robotology/forcetorque-yarp-devices.git
TAG master
COMPONENT iCub
FOLDER robotology
DEPENDS YARP
CMAKE_CACHE_ARGS -DENABLE_ftshoe:BOOL=ON)

23 changes: 23 additions & 0 deletions cmake/Buildhuman-dynamics-estimation.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright (C) 2018 iCub Facility, Istituto Italiano di Tecnologia
# CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT

include(YCMEPHelper)
include(FindOrBuildPackage)

find_or_build_package(YARP QUIET)
find_or_build_package(iDynTree QUIET)
find_or_build_package(wearables QUIET)
find_or_build_package(osqp QUIET)
find_or_build_package(OsqpEigen QUIET)

ycm_ep_helper(human-dynamics-estimation TYPE GIT
STYLE GITHUB
REPOSITORY robotology/human-dynamics-estimation.git
TAG master
COMPONENT human_dynamics
FOLDER robotology
DEPENDS iDynTree
YARP
wearables
osqp
OsqpEigen)
12 changes: 12 additions & 0 deletions cmake/Buildhuman-gazebo.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright (C) 2019 iCub Facility, Istituto Italiano di Tecnologia
# CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT

include(YCMEPHelper)
include(FindOrBuildPackage)

ycm_ep_helper(human-gazebo TYPE GIT
STYLE GITHUB
REPOSITORY robotology/human-gazebo.git
TAG master
COMPONENT human_dynamics
FOLDER robotology)
23 changes: 23 additions & 0 deletions cmake/Buildwearables.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright (C) 2018 iCub Facility, Istituto Italiano di Tecnologia
# CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT

include(YCMEPHelper)
include(FindOrBuildPackage)

find_or_build_package(YARP QUIET)
find_or_build_package(iDynTree QUIET)

set(WEARABLES_CMAKE_ARGS "")
if(WIN32)
list(APPEND WEARABLES_CMAKE_ARGS -DXSENS_MVN_USE_SDK:BOOL=${ROBOTOLOGY_USES_XSENS_MVN_SDK} )
endif()

ycm_ep_helper(wearables TYPE GIT
STYLE GITHUB
REPOSITORY robotology/wearables.git
TAG master
COMPONENT human_dynamics
FOLDER robotology
DEPENDS YARP
iDynTree
CMAKE_ARGS ${WEARABLES_CMAKE_ARGS})

0 comments on commit 26ec360

Please sign in to comment.