Skip to content

Conversation

@S-Dafarra
Copy link
Collaborator

@S-Dafarra S-Dafarra commented Oct 27, 2025

This is on top of #1012

It adds trintrin as dependency for the logger in order to allow logging the output of the Human IK and gloves

@S-Dafarra
Copy link
Collaborator Author

Unfortunately, conda fails to resolve the environment

Channels:
 - conda-forge
 - robostack-jazzy
 - robotology
Platform: linux-64
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package libtrintrin-0.0.1-h62e2a63_0 requires libyarp >=3.12.1,<3.12.2.0a0, but none of the providers can be installed

Could not solve for environment specs
The following packages are incompatible
├─ librobometry =* * is installable with the potential options
│  ├─ librobometry [1.1.0|1.2.0|1.2.2] would require
│  │  └─ yarp-cxx [>=3.7.0,<3.7.1.0a0 *|>=3.7.2,<3.7.3.0a0 *], which requires
│  │     └─ jpeg >=9e,<10a *, which can be installed;
│  ├─ librobometry [1.2.0|1.2.1] would require
│  │  └─ yarp-cxx >=3.8.0,<3.8.1.0a0 * with the potential options
│  │     ├─ yarp-cxx [3.7.0|3.7.2|3.8.0], which can be installed (as previously explained);
│  │     └─ yarp-cxx [3.8.0|3.8.1] would require
│  │        └─ libjpeg-turbo >=2.1.5.1,<3.0a0 *, which can be installed;
│  ├─ librobometry [1.2.1|1.2.2] would require
│  │  └─ yarp-cxx >=3.8.1,<3.8.2.0a0 * with the potential options
│  │     ├─ yarp-cxx [3.8.0|3.8.1], which can be installed (as previously explained);
│  │     └─ yarp-cxx 3.8.1 would require
│  │        └─ portaudio >=19.6.0,<19.7.0a0 *, which can be installed;
│  ├─ librobometry [1.2.2|1.2.3|1.2.4] would require
│  │  └─ libyarp >=3.9.0,<3.9.1.0a0 *, which can be installed;
│  ├─ librobometry [1.2.4|1.2.5] would require
│  │  └─ libyarp >=3.10.1,<3.10.2.0a0 *, which can be installed;
│  ├─ librobometry 1.2.5 would require
│  │  └─ libyarp >=3.11.1,<3.11.2.0a0 *, which can be installed;
│  ├─ librobometry [1.2.5|1.2.6|1.2.7] would require
│  │  └─ libyarp >=3.11.2,<3.11.3.0a0 *, which can be installed;
│  ├─ librobometry 1.2.7 would require
│  │  └─ libyarp >=3.12.0,<3.12.1.0a0 *, which can be installed;
│  └─ librobometry [1.2.7|1.2.8] would require
│     └─ libboost >=1.88.0,<1.89.0a0 *, which can be installed;
├─ libtrintrin =* * is not installable because it requires
│  └─ libyarp >=3.12.1,<3.12.2.0a0 *, which requires
│     ├─ libjpeg-turbo >=3.1.0,<4.0a0 *, which requires
│     │  └─ jpeg <0.0.0a *, which conflicts with any installable versions previously reported;
│     ├─ libopencv >=4.12.0,<4.12.1.0a0 * with the potential options
│     │  ├─ libopencv 4.12.0 would require
│     │  │  └─ libprotobuf >=6.31.1,<6.31.2.0a0 *, which can be installed;
│     │  └─ libopencv 4.12.0 would require
│     │     └─ libprotobuf >=5.29.3,<5.29.4.0a0 *, which can be installed;
│     └─ portaudio >=19.7.0,<19.8.0a0 *, which conflicts with any installable versions previously reported;
├─ ros-jazzy-rclcpp =* * is not installable because it requires
│  ├─ ros-jazzy-rcl =* *, which requires
│  │  ├─ ros-jazzy-rcl-logging-spdlog =* * with the potential options
│  │  │  ├─ ros-jazzy-rcl-logging-spdlog 3.1.0 would require
│  │  │  │  └─ spdlog >=1.13.0,<1.14.0a0 *, which can be installed;
│  │  │  ├─ ros-jazzy-rcl-logging-spdlog 3.1.1 would require
│  │  │  │  └─ spdlog >=1.14.1,<1.15.0a0 *, which can be installed;
│  │  │  ├─ ros-jazzy-rcl-logging-spdlog 3.1.1 would require
│  │  │  │  ├─ ros2-distro-mutex =0.7 jazzy_*, which requires
│  │  │  │  │  └─ libprotobuf =5.28.3 *, which conflicts with any installable versions previously reported;
│  │  │  │  └─ spdlog >=1.15.1,<1.16.0a0 *, which conflicts with any installable versions previously reported;
│  │  │  ├─ ros-jazzy-rcl-logging-spdlog 3.1.1 would require
│  │  │  │  ├─ ros2-distro-mutex =0.8 jazzy_*, which requires
│  │  │  │  │  └─ libboost =1.86 *, which conflicts with any installable versions previously reported;
│  │  │  │  └─ spdlog >=1.15.2,<1.16.0a0 *, which conflicts with any installable versions previously reported;
│  │  │  └─ ros-jazzy-rcl-logging-spdlog 3.1.1 would require
│  │  │     ├─ ros2-distro-mutex [=0.10 jazzy_*|=0.11 jazzy_*|=0.9 jazzy_*], which cannot be installed (as previously explained);
│  │  │     └─ spdlog >=1.15.3,<1.16.0a0 *, which conflicts with any installable versions previously reported;
│  │  └─ ros2-distro-mutex [=0.10 jazzy_*|=0.11 jazzy_*|=0.7 jazzy_*|=0.8 jazzy_*|=0.9 jazzy_*], which cannot be installed (as previously explained);
│  └─ ros2-distro-mutex [=0.10 jazzy_*|=0.11 jazzy_*|=0.7 jazzy_*|=0.8 jazzy_*|=0.9 jazzy_*], which cannot be installed (as previously explained);
└─ spdlog >=1.15.1 * is not installable because it conflicts with any installable versions previously reported.

@traversaro would you have any suggestion?

@traversaro
Copy link
Collaborator

@traversaro would you have any suggestion?

Sorry I had missed this comment.

Anyhow, we now:

So hopefully now everything can be installed cleanly, can we rerun the CI?

@traversaro
Copy link
Collaborator

So hopefully now everything can be installed cleanly, can we rerun the CI?

No, the problem is still there, but it is due to something else:

traversaro@IITBMP014LW012:~$ conda create -n test -c conda-forge -c robostack-jazzy libyarp==3.12.1 ros-jazzy-rclcpp librobometry
Retrieving notices: done
Channels:
 - conda-forge
 - robostack-jazzy
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package libyarp-3.12.1-h7fe703c_0 requires ace >=8.0.5,<8.0.6.0a0, but none of the providers can be installed

Could not solve for environment specs
The following packages are incompatible
├─ librobometry =* * is installable with the potential options
│  ├─ librobometry 1.2.2 would require
│  │  └─ yarp-cxx >=3.7.0,<3.7.1.0a0 * with the potential options
│  │     ├─ yarp-cxx 3.7.0 would require
│  │     │  └─ ace >=7.0.7,<7.0.8.0a0 *, which can be installed;
│  │     └─ yarp-cxx [3.7.0|3.7.2|3.8.0|3.8.1] would require
│  │        └─ portaudio >=19.6.0,<19.7.0a0 *, which can be installed;
│  ├─ librobometry [1.1.0|1.2.0|1.2.1|1.2.2] would require
│  │  └─ yarp-cxx [>=3.7.2,<3.7.3.0a0 *|>=3.8.0,<3.8.1.0a0 *|>=3.8.1,<3.8.2.0a0 *], which can be installed (as previously explained);
│  ├─ librobometry [1.2.2|1.2.3|1.2.4] would require
│  │  └─ libyarp >=3.9.0,<3.9.1.0a0 *, which can be installed;
│  ├─ librobometry [1.2.4|1.2.5] would require
│  │  └─ libyarp >=3.10.1,<3.10.2.0a0 *, which can be installed;
│  ├─ librobometry 1.2.5 would require
│  │  └─ libyarp >=3.11.1,<3.11.2.0a0 *, which can be installed;
│  ├─ librobometry [1.2.5|1.2.6|1.2.7] would require
│  │  └─ libyarp >=3.11.2,<3.11.3.0a0 *, which can be installed;
│  ├─ librobometry 1.2.7 would require
│  │  └─ libyarp >=3.12.0,<3.12.1.0a0 *, which can be installed;
│  └─ librobometry [1.2.7|1.2.8] would require
│     └─ libboost >=1.88.0,<1.89.0a0 *, which can be installed;
├─ libyarp ==3.12.1 * is not installable because it requires
│  ├─ ace >=8.0.5,<8.0.6.0a0 *, which conflicts with any installable versions previously reported;
│  └─ portaudio >=19.7.0,<19.8.0a0 *, which conflicts with any installable versions previously reported;
└─ ros-jazzy-rclcpp =* * is not installable because there are no viable options
   ├─ ros-jazzy-rclcpp 28.1.2 would require
   │  └─ ros2-distro-mutex ==0.5 jazzy, which requires
   │     └─ libboost =1.84 *, which conflicts with any installable versions previously reported;
   └─ ros-jazzy-rclcpp [28.1.10|28.1.12|...|28.1.9] would require
      └─ ros2-distro-mutex [=0.10 jazzy_*|=0.11 jazzy_*|...|=0.9 jazzy_*], which requires
         └─ libboost =1.86 *, which conflicts with any installable versions previously reported.

Basically there is no librobometry build with libboost=1.86.*, that is still needed by ROS as the libboost 1.88 migration is taking a long time. The easiest fix for this is to do a dual build of librobometry with both 1.86 and 1.88 for now.

@traversaro
Copy link
Collaborator

There is still an incompat between robostack-jazzy and recent YARP, due to libprotobuf:

traversaro@IITBMP014LW012:~/pixiws/testblf$ pixi add make compilers make ninja pkg-config                       "idyntree>=12.2.1" "yarp>=3.5.0" libmatio libmatio-cpp librobometry                       liblie-group-controllers eigen qhull "casadi>=3.5.5" cppad "spdlog>=1.15.1"                       nlohmann_json manif manifpy pybind11 numpy pytest scipy opencv pcl                       tomlplusplus libunicycle-footstep-planner "icub-models>=1.23.4"                       ros-jazzy-rclcpp onnxruntime-cpp libbayes-filters-lib cmake-package-check catch2 libtrintrin libprotobuf==5.29.3.*
Error:   × failed to solve requirements of environment 'default' for platform 'linux-64'
  ├─▶   × failed to solve the environment
  │
  ╰─▶ Cannot solve the request because of: The following packages are incompatible
      └─ libtrintrin * cannot be installed because there are no viable options:
         └─ libtrintrin 0.0.1 | 0.0.1 would require
            └─ libyarp >=3.12.1,<3.12.2.0a0, which cannot be installed because there are no viable options:
               └─ libyarp 3.12.1 | 3.12.1 would require
                  ├─ ffmpeg >=8.0.0,<9.0a0, which can be installed with any of the following options:
                  │  └─ ffmpeg 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 |
      8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 | 8.0.0 would require
                  │     └─ libopenvino-tensorflow-frontend >=2025.2.0,<2025.2.1.0a0, which can be installed with any of the following options:
                  │        └─ libopenvino-tensorflow-frontend 2025.2.0
                  └─ libopencv >=4.12.0,<4.12.1.0a0, which cannot be installed because there are no viable options:
                     ├─ libopencv 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 |
      4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 |
      4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 would require
                     │  └─ libprotobuf >=6.31.1,<6.31.2.0a0, for which no candidates were found.
                     └─ libopencv 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 | 4.12.0 would require
                        └─ libopenvino-tensorflow-frontend >=2025.0.0,<2025.0.1.0a0, which cannot be installed because there are no viable options:
                           ├─ libopenvino-tensorflow-frontend 2025.0.0, which conflicts with the versions reported above.
                           └─ libopenvino-tensorflow-frontend 2025.0.0 | 2025.0.0 | 2025.0.0 would require
                              └─ libprotobuf >=5.28.3,<5.28.4.0a0, for which no candidates were found.

this is something we may want to fix, but this is not the place. I will add a build of trintrin with YARP 3.12.0 and call it a day.

@traversaro
Copy link
Collaborator

This is now fixed thanks to conda-forge/trintrin-feedstock#3 . The Windows job fails independently.

@S-Dafarra
Copy link
Collaborator Author

This is now fixed thanks to conda-forge/trintrin-feedstock#3 . The Windows job fails independently.

Awesome, thanks a lot!

@S-Dafarra S-Dafarra marked this pull request as ready for review December 2, 2025 15:23
@S-Dafarra
Copy link
Collaborator Author

Also this PR is ready to go

Copy link
Collaborator

@GiulioRomualdi GiulioRomualdi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some minor comments

Comment on lines +23 to +41
void extractMetadata(const trintrin::msgs::HumanState& message,
const std::string& prefix,
BipedalLocomotion::YarpUtilities::VectorsCollectionMetadata& metadata);
void extractMetadata(const trintrin::msgs::WearableTargets& message,
const std::string& prefix,
BipedalLocomotion::YarpUtilities::VectorsCollectionMetadata& metadata);
void extractMetadata(const trintrin::msgs::WearableData& message,
const std::string& prefix,
BipedalLocomotion::YarpUtilities::VectorsCollectionMetadata& metadata);

void convertToVectorsCollection(const trintrin::msgs::HumanState& message,
const std::string& prefix,
BipedalLocomotion::YarpUtilities::VectorsCollection& collection);
void convertToVectorsCollection(const trintrin::msgs::WearableTargets& message,
const std::string& prefix,
BipedalLocomotion::YarpUtilities::VectorsCollection& collection);
void convertToVectorsCollection(const trintrin::msgs::WearableData& message,
const std::string& prefix,
BipedalLocomotion::YarpUtilities::VectorsCollection& collection);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add the documentation here?

Comment on lines +85 to +92
Eigen::Vector3d trintrinVectorXYZToVector3(const trintrin::msgs::VectorXYZ& vec)
{
Eigen::Vector3d eigenVec;
eigenVec(0) = vec.x;
eigenVec(1) = vec.y;
eigenVec(2) = vec.z;
return eigenVec;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would move it in a separate file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants