ami-iit/paper_tirupachuri-2021-access-estimation_payload_stresses

Test the repo documentation

yeshasvitirupachuri opened this issue ยท 71 comments

Hi @RiccardoGrieco, this is a dissemination repo for a recent work we published from the AnDy team. Please check the documentation. As discussed with @DanielePucci we would like to check how the readme details of the repo are for a someone new to follow the instructions for running the code related to this paper. In this regard, we would like to request you to try this task according to your availability. Thank you.

Probably @lrapetti can give some support with this, but in general the idea is that we need to ensure that the repo documentation should be clear enough to run the code of the paper.

Hi @Yeshasvitvs, @RiccardoGrieco did not have access to the repo. I just gave him access now

I am trying to install the software from the feature/SOT-Berdy-HDE branch, but I get the following CMake error:

CMake Error at msgs/yarp/CMakeLists.txt:1 (add_subdirectory):
  The source directory

    /home/riccardo/Code/human-dynamics-estimation/msgs/yarp/thrift

  does not contain a CMakeLists.txt file.


--  [x] Plugin: human_state_provider (ENABLE_human_state_provider)
--  [x] Plugin: human_wrench_provider (ENABLE_human_wrench_provider)
CMake Error at devices/HumanDynamicsEstimator/CMakeLists.txt:9 (find_package):
  By not providing "Findgram_savitzky_golay.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "gram_savitzky_golay", but CMake did not find one.

  Could not find a package configuration file provided by
  "gram_savitzky_golay" with any of the following names:

    gram_savitzky_golayConfig.cmake
    gram_savitzky_golay-config.cmake

  Add the installation prefix of "gram_savitzky_golay" to CMAKE_PREFIX_PATH
  or set "gram_savitzky_golay_DIR" to a directory containing one of the above
  files.  If "gram_savitzky_golay" provides a separate development package or
  SDK, be sure it has been installed.

I installed all the required and optional dependencies, so do you have any idea why this happens? @Yeshasvitvs

I guess that in this branch the code from this repo is used.
If this is the case, it should be added in the dependencies section either of this repository or the one of the feature/SOT-Berdy-HDE branch.

CMake Error at msgs/yarp/CMakeLists.txt:1 (add_subdirectory):
  The source directory

    /home/riccardo/Code/human-dynamics-estimation/msgs/yarp/thrift

  does not contain a CMakeLists.txt file.

For what concerns instead this other error, I'm still not very acquainted with thrift, so I don't have suggestions for that.

I also noticed that the build instructions of the idyntree fork actually point to the main robotology fork:

$ git clone https://github.com/robotology/idyntree
```shell
CMake Error at msgs/yarp/CMakeLists.txt:1 (add_subdirectory):
  The source directory

    /home/riccardo/Code/human-dynamics-estimation/msgs/yarp/thrift

  does not contain a CMakeLists.txt file.

For what concerns instead this other error, I'm still not very acquainted with thrift, so I don't have suggestions for that.

For this issue, please check if your local repo is aligned with the latest repo in the upstream, since I think there was an issue recently solved on that branch, and the file that appear to be missing is now there

For this issue, please check if your local repo is aligned with the latest repo in the upstream, since I think there was an issue recently solved on that branch, and the file that appear to be missing is now there

You're right, I must have pulled only the master branch so I was missing the latest commits on this one. Thanks!

I installed all the required and optional dependencies, so do you have any idea why this happens? @Yeshasvitvs

@RiccardoGrieco That is because of another dependency that needs to be installed: https://github.com/arntanguy/gram_savitzky_golay#installation

Updated the installation documentation in 9f38671

When compiling the iDynTree branch, if IPOPT is found within the system (as in my case), it is used, but the following build error occurs:

/home/riccardo/Code/idyntree_yeshi/src/inverse-kinematics/src/InverseKinematicsNLP.cpp: In member function 'void internal::kinematics::InverseKinematicsNLP::testDerivatives(const iDynTree::VectorDynSize&, int, double, double, int)':
/home/riccardo/Code/idyntree_yeshi/src/inverse-kinematics/src/InverseKinematicsNLP.cpp:1608:13: error: reference to 'Vector3' is ambiguous
 1608 |             Vector3 rpy;
      |             ^~~~~~~
In file included from /home/riccardo/Code/idyntree_yeshi/src/inverse-kinematics/include/private/InverseKinematicsNLP.h:15,
                 from /home/riccardo/Code/idyntree_yeshi/src/inverse-kinematics/src/InverseKinematicsNLP.cpp:16:
/home/riccardo/Code/idyntree_yeshi/src/core/include/iDynTree/Core/VectorFixSize.h:285:31: note: candidates are: 'typedef class iDynTree::VectorFixSize<3> iDynTree::Vector3'
  285 |     typedef VectorFixSize<3>  Vector3;
      |                               ^~~~~~~
In file included from /home/riccardo/conda/envs/yeshienv/include/eigen3/Eigen/Core:295,
                 from /home/riccardo/Code/idyntree_yeshi/src/inverse-kinematics/src/InverseKinematicsNLP.cpp:21:
/home/riccardo/conda/envs/yeshienv/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note:                 'template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>'
  541 | EIGEN_MAKE_TYPEDEFS(3, 3)
      | ^~~~~~~~~~~~~~~~~~~
/home/riccardo/Code/idyntree_yeshi/src/inverse-kinematics/src/InverseKinematicsNLP.cpp:1609:51: error: 'rpy' was not declared in this scope
 1609 |             currentTransform.getRotation().getRPY(rpy(0), rpy(1), rpy(2));

and so on.

Just disabling the use of IPOPT did the trick but since I don't think that the issue is due to my environment, maybe it would be better to disable the dependency or at least put a note in the/warning in the readme of the branch.

I think OsqpEigen should be added to the list of dependencies of the HDE branch, since it won't compile without:

CMake Error at devices/HumanStateProvider/CMakeLists.txt:7 (find_package):
  By not providing "FindOsqpEigen.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "OsqpEigen", but CMake did not find one.

  Could not find a package configuration file provided by "OsqpEigen"
  (requested version 0.4.0) with any of the following names:

    OsqpEigenConfig.cmake
    osqpeigen-config.cmake

  Add the installation prefix of "OsqpEigen" to CMAKE_PREFIX_PATH or set
  "OsqpEigen_DIR" to a directory containing one of the above files.  If
  "OsqpEigen" provides a separate development package or SDK, be sure it has
  been installed.

Regarding the previous commet, it looks like using IPOPT is required in order to build and install the inverse-kinematics library (see here), which in turn is required by the HDE:

CMake Error at /home/riccardo/conda/envs/yeshienv/share/yarp/cmake/YarpPlugin.cmake:594 (add_library):
  Target "HumanStateProvider" links to target
  "iDynTree::idyntree-inverse-kinematics" but the target was not found.
  Perhaps a find_package() call is missing for an IMPORTED target, or an
  ALIAS target is missing?
Call Stack (most recent call first):
  devices/HumanStateProvider/CMakeLists.txt:17 (yarp_add_plugin)


CMake Error at /home/riccardo/conda/envs/yeshienv/share/yarp/cmake/YarpPlugin.cmake:594 (add_library):
  Target "HumanStatePublisher" links to target
  "iDynTree::idyntree-inverse-kinematics" but the target was not found.
  Perhaps a find_package() call is missing for an IMPORTED target, or an
  ALIAS target is missing?
Call Stack (most recent call first):
  publishers/HumanStatePublisher/CMakeLists.txt:15 (yarp_add_plugin)

@Yeshasvitvs are you able to compile the iDynTree branch with IPOPT?

@Yeshasvitvs are you able to compile the iDynTree branch with IPOPT?

@RiccardoGrieco I am not certain about it, but the HumanStateProvider from the branch you are checking for this issue has diverged from the HumanStateProvider master branch of HDE. As I have my machine configured for a while, I believe IPOPT has been installed from before.

@lrapetti can you please verify if the IPOPT dependency is dropped completely from the HDE upstream. Thanks.

@lrapetti can you please verify if the IPOPT dependency is dropped completely from the HDE upstream. Thanks.

IPOPT dependency has never changed.

Anyway @RiccardoGrieco, if I'm not wrong you have used conda instead of compiling some components, and you didn't use the superbuild right?

As I was suggesting today, one way could be to use project tags to replicate the same robotology setup as per the working one.

For finding the commit and tag used in that machine, one way could be to use this command in the robotology src folder

find . -mindepth 1 -maxdepth 1 -type d -exec sh -c "(cd {} && echo {} && git config --get remote.origin.url && git log -n 1)" \;
which will show you the URL and the last commit that you have. And then create a project tag file ( this is one example of the kind of file I am referring to https://github.com/robotology/robotology-superbuild/blob/master/releases/2020.05.yaml)

Then, for using the project tag, you can refer to the following documentation https://github.com/robotology/robotology-superbuild/blob/master/doc/change-project-tags.md

โš ๏ธ be careful about the following part of the documentation

ROBOTOLOGY_PROJECT_TAGS option needs to be done before the source code for the CMake packages is downloaded for the first time

Hence you should have no downloaded repository in the src folder of the robotology!

Thank you @CarlottaSartore, I will try this way then!

Thank you all for the contributions. @Yeshasvitvs the only important point for me is that starting from scratch, the installation and code tests go smooth by following the instructions on the README. Please take care of this as soon as possible by checking what actions should be taken so as @RiccardoGrieco can retest the updated procedure. The media release of the paper is currently blocked by this! thanks.

@DanielePucci Sure

@RiccardoGrieco please update the issue once you are able to get this #2 (comment) sorted out. I will update the repo README accordingly and we test it again.

Thanks for the support @RiccardoGrieco @lrapetti @CarlottaSartore

From the IITICUBLAP177

Here are the tags
robotology-superbuild-tags.txt

Here is the cmake cache
CMakeCache.txt

Regarding the previous commet, it looks like using IPOPT is required in order to build and install the inverse-kinematics library (see here), which in turn is required by the HDE:

CMake Error at /home/riccardo/conda/envs/yeshienv/share/yarp/cmake/YarpPlugin.cmake:594 (add_library):
  Target "HumanStateProvider" links to target
  "iDynTree::idyntree-inverse-kinematics" but the target was not found.
  Perhaps a find_package() call is missing for an IMPORTED target, or an
  ALIAS target is missing?
Call Stack (most recent call first):
  devices/HumanStateProvider/CMakeLists.txt:17 (yarp_add_plugin)


CMake Error at /home/riccardo/conda/envs/yeshienv/share/yarp/cmake/YarpPlugin.cmake:594 (add_library):
  Target "HumanStatePublisher" links to target
  "iDynTree::idyntree-inverse-kinematics" but the target was not found.
  Perhaps a find_package() call is missing for an IMPORTED target, or an
  ALIAS target is missing?
Call Stack (most recent call first):
  publishers/HumanStatePublisher/CMakeLists.txt:15 (yarp_add_plugin)

@Yeshasvitvs are you able to compile the iDynTree branch with IPOPT?

This error means that for some reason iDynTree was not compiled with the IDYNTREE_USES_IPOPT option set to ON. That option is set to ON automatically if the apt package coinor-libipopt-dev is installed the first time you configure iDynTree. To avoid problems I would explicitly enable this option (as we do in the robotology-superbuild, see: https://github.com/robotology/robotology-superbuild/blob/master/cmake/BuildiDynTree.cmake#L30), so that if IPOPT for any reason is not found, you will get a clear error.

I forked the robotology-superbuild and created a branch where I'm setting some of the tags/commits from the files of this comment in order to reduce the steps needed. Here the link.

I still experience this issue.
However, if I change the iDynTree code, adding the iDynTree namespace to the Vector3 references, the build is successful.

I don't know why others don't have this issue, maybe I did something wrong. Can you try to run the superbuild from the branch mentioned above? @Yeshasvitvs

I still experience this issue.
However, if I change the iDynTree code, adding the iDynTree namespace to the Vector3 references, the build is successful.

So with this you are able to compile all the code? Did you tried to run it as well?

I don't know why others don't have this issue, maybe I did something wrong. Can you try to run the superbuild from the branch mentioned above? @Yeshasvitvs

That issue is due to Eigen 3.4 (that I guess you are getting as you are installing deps via conda), see robotology/idyntree#860 for the original issue and robotology/idyntree#861 for the PR that fixed. In the @Yeshasvitvs's fork, that fix was not present and this is why you are experiencing this issue. I guess that if you install dependencies via apt on Ubuntu 20.04, the Eigen version is older and you do not have this problem. For the time being, probably it could make sense to backport robotology/idyntree#861 to @Yeshasvitvs's fork as it works fine with older Eigens.

So with this you are able to compile all the code? Did you tried to run it as well?

I haven't yet.

That issue is due to Eigen 3.4 (that I guess you are getting as you are installing deps via conda)

Actually I am not using conda for this issue anymore, I'm using Eigen 3.3.7 installed via apt.

I don't know why others don't have this issue, maybe I did something wrong. Can you try to run the superbuild from the branch mentioned above? @Yeshasvitvs

I do not have an Ubuntu machine at the moment to test

For the time being, probably it could make sense to backport robotology/idyntree#861 to @Yeshasvitvs's fork as it works fine with older Eigens

I did it and I was able to build the code.

So with this you are able to compile all the code? Did you tried to run it as well?

I tried to run the pipeline using the configuration file from the Installation README, but I get this error:

[ERROR] HumanDynamicsEstimator : Failed to find BERDY_OPTIONS configuration parameter
[ERROR] |yarp.dev.PolyDriver| Driver <human_dynamics_estimator> was found but could not open

@Yeshasvitvs @lrapetti can you help me with this?

In addition, it can be useful to add the configuration file into the YARP installation directory, so it is always visible by yarprobotinterface. This would make it more accessible to users not acquainted with YARP.

I will push both the changes related to the fix for older eigen versions and this one for the configuration files to the upstream branches.

I tried to run the pipeline using the configuration file from the Installation README, but I get this error:

[ERROR] HumanDynamicsEstimator : Failed to find BERDY_OPTIONS configuration parameter
[ERROR] |yarp.dev.PolyDriver| Driver <human_dynamics_estimator> was found but could not open

@Yeshasvitvs @lrapetti can you help me with this?

Probably that configuration file is not the one supposed to be used since it is missing the BERDY_OPTIONS group, @Yeshasvitvs? You can try for example with https://github.com/robotology/human-dynamics-estimation/blob/feature/SOT-Berdy-HDE/conf/xml/covariance_tuning_dataset_tpose_5kgs_right_hand.xml wich seems to have the option. meanwhile I will check which one I was using on the other working laptop

I did it and I was able to build the code.

Great! Thanks @traversaro @lrapetti for the support.

I tried to run the pipeline using the configuration file from the Installation README, but I get this error:

@lrapetti is right, the config file pointed in the readme Is miss BERDY_OPTIONS group. The config file pointed in #2 (comment) has the option and it should work for running the code. I will update the readme with the missing BERDY_OPTIONS group.

I will update the readme with the missing BERDY_OPTIONS group

UPDATE: The file that needs to be updated with BERDY_OPTIONS is in upstream. Updated in robotology/human-dynamics-estimation@5e5816b

@RiccardoGrieco I updated the configuration file with the missing BERDY_OPTIONS group. Please try it at your convenience, and let me know if you are able to run it. After that we can update the repo readme based on your inputs. Thanks ๐Ÿ˜‰

I'm trying to run the pipeline. So now yarporobotinterface -- config Human_AMTI.xml starts, but it looks like somehow it does not receive data from yarpdataplayer:

[INFO] HumanStateProvider : IWear interface waiting for first data. Waiting...

test

Nevertheless, I can see the data being streamed via yarp read.
According to the HumanStateProvider log, it is connected to the data ports...

Opened PR ami-iit/idyntree-hde-fork#1 for the Eigen issue.

but it looks like somehow it does not receive data from yarpdataplayer:

[INFO] HumanStateProvider : IWear interface waiting for first data. Waiting...

You should run yarpdataplayer with the following option

yarpdataplayer --withExtraTimeCol 2

if not mentioned, the documentation should be updated

Thanks for the heads-up @lrapetti. I was finally able to run the application.
Below, the video of the test:

Test_Payload_Stress.mp4

Is the estimated object mass not supposed to change? I guess it should by looking at the video in installation.md @Yeshasvitvs

Anyway, by looking at the link regarding how to run the dynamics estimation, it says to run:

  yarprobotstatepublisher --period 0.0001 --name-prefix Human --tf-prefix /Human/ --model humanSubject01_66dof.urdf --reduced-model true --base-frame Pelvis --jointstates-topic "/Human/joint_states"

so with the humanSubject01_66dof.urdf model.
Besides, in the HDERviz.launch we have this parameter:

<arg name="humanModel" default="$(find HDERviz)/urdfs/humanSubject02_66dof.urdf"/>

I ran the first instruction with subject02, but I don't really know which one is supposed to be used.

Also, in order for an inexperienced user to run the pipeline, it would be better to list the steps inside this repo.

The steps would be the following ones:

Run the example

  1. Run the ROS server:
roscore
  1. Run the YARP server:
yarpserver --ros --write
  1. Open the dataset:
    a. Launch yarpdataplayer
    yarpdataplayer --withExtraTimeCol 2 
    b. File->"Open Directory" -> open the directory extracted by the dataset zip file
  2. Launch the Human Dynamics Estimation:
yarprobotinterface --config Human_AMTI.xml
  1. Run the state publisher:
yarprobotstatepublisher --period 0.0001 --name-prefix Human --tf-prefix /Human/ --model humanSubject02_66dof.urdf --reduced-model true --base-frame Pelvis --jointstates-topic "/Human/joint_states"
  1. Launch RVIZ with the HDE configuration:
roslaunch HDERviz HDERviz.launch
  1. Play the dataset by pressing โ–ถ๏ธ on yarpdataplayer

NOTE: each of the steps from 1 to 6 require a dedicated terminal

I ran the first instruction with subject02, but I don't really know which one is supposed to be used.

Very good point @RiccardoGrieco, thank you! It is in fact, subject03. Also, I think it will be helpful to write a short text description or link a short video in the readme, under a Dataset Description section, so that reader can understand the details of the dataset better.

UPDATE: Changed the subject in robotology/human-dynamics-estimation@734ab19

Is the estimated object mass not supposed to change? I guess it should by looking at the video in installation.md @Yeshasvitvs

Yes, it is odd. The estimated object mass should definitely not be zero secco ๐Ÿ˜…

I checked other configuration files and see that a parameter group is missing. Fixed it in robotology/human-dynamics-estimation@d973847.

if not mentioned, the documentation should be updated

Thanks @lrapetti , updated in 55c1a9a

Thanks @RiccardoGrieco for the detailed write up in #2 (comment)

Created the usage document and updated the repo readme. Also, added the offset removal step details.

Thank you all guys. @RiccardoGrieco let us know if we can close the issue then

CC
@Yeshasvitvs @lrapetti

There are still the following points I would address before closing this issue:

  • Modify the HDE/conf CMakeLists.txt so that Human_AMTI.xml is visible to YARP from any directory.
    The change is straightforward, we just need to change line 3 of the file from file(GLOB HDE_XML_FILES xml/applications/*.xml) to file(GLOB HDE_XML_FILES xml/*.xml).
    @Yeshasvitvs I don't have the rights to make a commit on the repo, so maybe you can do it without opening a PR. - DONE robotology/human-dynamics-estimation@caeeabc#diff-1d4b2b0a9cdd97638d00640a9001f1d65f4ddd1dbf702528e319b3c55fe39ffa
  • Close this PR for the Eigen issue.
  • Use a fork/branch of the robotology-superbuild setting the correct branches and tags for the repos involved like I did (see #2 (comment)).
    I would also explicitly put the steps inside the Installation.md on how to use such fork of the superbuild.
    In order to complete this point, point 1 and 2 must be completed (so that we have the final commits for HDE and the iDynTree fork)

Great @RiccardoGrieco. @Yeshasvitvs let us know once these three steps are done so as we can close the issue

The change is straightforward, we just need to change line 3 of the file from file(GLOB HDE_XML_FILES xml/applications/.xml) to file(GLOB HDE_XML_FILES xml/.xml).

There are many experimental configuration files in the SOT branch, that are not up updated. So, to keep things simple, we can install only Human_AMTI.xml configuration file. @lrapetti what do you think ? May be you have the configuration file handling of the repo planned in upcoming sprints.

Use a fork/branch of the robotology-superbuild setting the correct branches and tags for the repos involved like I did

I am not sure which upstream repo can have the branch. Can this branch be pushed to https://github.com/ami-iit/robotology-superbuild @DanielePucci ?

There are many experimental configuration files in the SOT branch, that are not up updated. So, to keep things simple, we can install only Human_AMTI.xml configuration file. @lrapetti what do you think ? May be you have the configuration file handling of the repo planned in upcoming sprints.

I suggested this since it is also how it changed in the master branch (see here). I think it is up to the user to follow the instructions, so it shouldn't be a problem keeping those file in the resource path.

We should also consider that the SOT branch will be merged into the master, so I wouldn't diverge much from it.

@Yeshasvitvs

I am not sure which upstream repo can have the branch. Can this branch be pushed to https://github.com/ami-iit/robotology-superbuild @DanielePucci ?

I think it is ok for this time. Let us know once it is done

Let me say - as a general comment and for future references - that for scientific reproducibility purposes, I strongly discourage the use of multiple branches on forks whose future is not easy to determine beforehand.

3. Use a fork/branch of the robotology-superbuild setting the correct branches and tags for the repos involved like I did (see Test the repo documentation #2 (comment)).
I would also explicitly put the steps inside the Installation.md on how to use such fork of the superbuild.
In order to complete this point, point 1 and 2 must be completed (so that we have the final commits for HDE and the iDynTree fork)

I think there should be a better way for achieving this without creating a fork of the robotology-superbuild but simply sharing a configuration file. I think @traversaro or @CarlottaSartore can help us on this

Let me say - as a general comment and for future references - that for scientific reproducibility purposes, I strongly discourage the use of multiple branches on forks whose future is not easy to determine beforehand.

To complement this: if you need to have a custom function, if you see it is tricky to merge it back in the upstream repo, better to copy the function/class you need and copy it in a paper-specific repo.

  1. Use a fork/branch of the robotology-superbuild setting the correct branches and tags for the repos involved like I did (see Test the repo documentation #2 (comment)).
    I would also explicitly put the steps inside the Installation.md on how to use such fork of the superbuild.
    In order to complete this point, point 1 and 2 must be completed (so that we have the final commits for HDE and the iDynTree fork)

I think there should be a better way for achieving this without creating a fork of the robotology-superbuild but simply sharing a configuration file. I think @traversaro or @CarlottaSartore can help us on this

Yes, this was sugged and documented in #1 .

You are right, I wanted to keep the installation as easy as possible, but it's way better not to create a branch/fork for this purpose only.

So basically we need to create the yaml file with the tags from here and and the new commits on HDE and the iDynTree fork, and update the Installation.md with the instructions from #1 (comment).

The action points from #2 (comment) are done

CC @DanielePucci

I read quickly the Installation readme. I added the Usage mention #3 @Yeshasvitvs

Thanks @DanielePucci
Can this issue be closed now ?

The url of iDynTree was not correct. I opened #4 to fix it.

@Yeshasvitvs

Thanks @DanielePucci
Can this issue be closed now ?

For me it is ok, I would however say that the last word is of @RiccardoGrieco who was the one in charge of testing the repo documentation.

So, @RiccardoGrieco let us know if we can close the issue now

I will do a final test to see if everything is ok between today and tomorrow!

Opened PR #5.

I had issues running yarprobotstatepublisher since it was not installed with iDynTree.
Apparently the reason of that is that the CMake variable IDYNTREE_USES_YARP is set to FALSE.

A solution to this issue for me was forcing the value of the variable inside the iDynTree CMakeLists.txt right after the line:

include(iDynTreeOptions)

@traversaro do you know if there is a way to fix this without updating the file? I tried setting the variable with the -D option when calling cmake in the superbuild but it didn't work.

@Yeshasvitvs I tried running all the steps but even after calling the rpc as mentioned in the usage file I'm still not able to see the mass estimation changing.

Also, the name of the rpc is incorrect. I used /HumanDynamicsEstimator/rpc:i instead of `/HumanDynamicsEstimation/rpc:i. I will add this change in #5.

@traversaro do you know if there is a way to fix this without updating the file? I tried setting the variable with the -D option when calling cmake in the superbuild but it didn't work.

If you are using v2021.08 release of the superbuild, the yarprobotstatepublisher tool should be installed by the idyntree-yarp-tools repository, see:

Do you have any idea why it was not installed?

@traversaro I can see from the first link that it is build only if the DYNAMICS profile is enable, while we are enabling only the HUMAN_DYNAMICS one.

Do you think it is the case to enable also the DYNAMICS profile? Another concern of mine is that the version from that repo may be incompatible with the iDynTree branch we are using.

@traversaro I can see from the first link that it is build only if the DYNAMICS profile is enable, while we are enabling only the HUMAN_DYNAMICS one.

Do you think it is the case to enable also the DYNAMICS profile? Another concern of mine is that the version from that repo may be incompatible with the iDynTree branch we are using.

Ahhh, I see. The problem is that if we want to force the installation of iDynTree with the YARP dependency enabled, a few changes are necessary to the superbuild, that otherwise will try to build iDynTree before of YARP, resulting in a compilation error. Given that this changes were done in robotology/robotology-superbuild#818, I guess you can either try to use the v2021.05 release of the superbuild, or otherwise just creating a new branch of the robotology-superbuild in the ami-iit fork (even if we wanted to avoid that) and revert some changes done in robotology/robotology-superbuild#818 .

@Yeshasvitvs I tried running all the steps but even after calling the rpc as mentioned in the usage file I'm still not able to see the mass estimation changing.

@RiccardoGrieco do you at least see the change in arrow magnitude at the hands, after the offset removal ? If possible please share a video. @lrapetti If there is a possibility of checking in person, please take a look at the Rviz visualization. Thanks.

As alignment on getting the software to work, a possible way forward may be to put all the instrutions in a Dockerfile meant to be used in Gitpod, so that multiple users can access the resulting workspace and quickly debug what is still not working. An example on (almost) vanilla Ubuntu 20.04 machine can be found in https://github.com/traversaro/gitpod-ubuntu-20.04, we could copy all the files in this repo and just add to the Dockerfile the missing instructions.

All the magic on the noVNC machinery on GitPod goes to @pattacini that first set it up for https://github.com/robotology/icub-gazebo-grasping-sandbox .

To clarify what needs to be done to get a nice VNC-enabled gitpod workspace, I added a few steps in traversaro/gitpod-ubuntu-20.04#2 .

@traversaro I was able to build the v2021.05 and run the pipeline, thanks for the heads-up! I had to change the yaml file since the name of the repo was different human-dynamics-estimation instead of HumanDynamicsEstimation. I will update the file.

As for the visualization, @lrapetti will drop his comments from the test we were able to run on my pc.

@RiccardoGrieco @traversaro based on your testing and comment above, I updated to using superbuild v2021.05, and opened a PR #7.

Thanks @traversaro and @pattacini for a really nice infrastructure. I tested the documentation of this repo on gitpod

vokoscreen-2021-11-27_17-27-00.mp4

I'm still not able to see the mass estimation changing.

@RiccardoGrieco it is related to configuration file. Fixed it in robotology/human-dynamics-estimation@791c5cf#diff-88fe3162ba062a1b1fcb58263740a8cb3631b6fc873497eb03104ec5645212c2

That's cool @Yeshasvitvs

As for the visualization, @lrapetti will drop his comments from the test we were able to run on my pc.

The required changes I noticed were the following:

  • the dataset corresponds to a right-hand lifting but the configuration file was set to estimate both right and left hand -> this has been addressed by @Yeshasvitvs with the change mentioned in the comment above
  • The estimated wrench arrow was not showed because it was probably smaller then the threshold. In order to visualize the arrow we had to disable the hide small value flag in rviz. That seems not to be the case in the video shown above by @Yeshasvitvs right? Not sure what could be the reason, probably we can record a video with @RiccardoGrieco condition
  • If I am not wrong in @RiccardoGrieco setup the Estimate Object Mass was always zero, again probably better to have a video from @RiccardoGrieco.

The estimated wrench arrow was not showed because it was probably smaller then the threshold. In order to visualize the arrow we had to disable the hide small value flag in rviz. That seems not to be the case in the video shown above by @Yeshasvitvs right? Not sure what could be the reason, probably we can record a video with @RiccardoGrieco condition

It is related to force threshold for the estimated hand wrench. This is what I changed in the test above, but Rviz was not running smooth on gitpod.

If I am not wrong in @RiccardoGrieco setup the Estimate Object Mass was always zero, again probably better to have a video from @RiccardoGrieco.

I had the same behavior when I ran the configuration file pointed by the documentation, and noticed it is related to incorrect configuration options in the file. This is fixed in the commit pointed in #2 (comment)

@lrapetti also, I noticed human-gazebo is pointed to master. So, opened a PR to add hands com frames
robotology/human-gazebo#25

I used the yaml file from PR #7 (branch patch).

As indicated by @Yeshasvitvs I changed the tags of humman-gazebo to the current master branch, and the updated HDE branch.
I pushed the changed into the patch.

I was finally able to run the pipeline:

Screencast.2021-11-29.19.14.55.mp4

The usage file has to updated since I experienced some crashes of RViz when running it before starting to play the dataset.
If the dataset is played before opening RViz everything is fine, so I would change the usage file indicating to play the dataset (in loop too).

Also, as a side note, I would also write in the usage file to change on RViz the "Force Arrow Scale" of each hand (even only the right one) to 0.02/0.03 in order to make them visible.

@RiccardoGrieco Updated the usage document 48d2695

@DanielePucci, @Yeshasvitvs we can finally close this issue! With the updates in PR #7 the documentation and the tags are complete.

Closing then!