Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add VectorCollectionServer to dump the desired/feedback joint/axis values #144

Merged
merged 11 commits into from
Sep 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
193 changes: 45 additions & 148 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,194 +17,91 @@ jobs:
matrix:
build_type: [Release]
os: [ubuntu-latest, windows-latest, macOS-latest]
fail-fast: false


steps:
- uses: actions/checkout@master

# Print environment variables to simplify development and debugging
- name: Environment Variables
shell: bash
run: env
- uses: conda-incubator/setup-miniconda@v2
with:
miniforge-variant: Miniforge3
miniforge-version: latest
channels: conda-forge,robostack-staging,robotology
channel-priority: true

# ============
# DEPENDENCIES
# ============

# Remove apt repos that are known to break from time to time
# See https://github.com/actions/virtual-environments/issues/323
- name: Remove broken apt repos [Ubuntu]
if: matrix.os == 'ubuntu-latest'
- name: Dependencies
shell: bash -l {0}
run: |
for apt_file in `grep -lr microsoft /etc/apt/sources.list.d/`; do sudo rm $apt_file; done

- name: Dependencies [Windows]
if: matrix.os == 'windows-latest'
# Workaround for https://github.com/conda-incubator/setup-miniconda/issues/186
conda config --remove channels defaults
# Compilation related dependencies
conda install cmake compilers make ninja pkg-config
# Actual dependencies
conda install yarp ycm-cmake-modules icub-main eigen idyntree bipedal-locomotion-framework human-dynamics-estimation wearables

- name: Linux-only Dependencies [Linux]
if: contains(matrix.os, 'ubuntu')
shell: bash -l {0}
run: |
git clone https://github.com/robotology-dependencies/robotology-vcpkg-binary-ports C:/robotology-vcpkg-binary-ports
vcpkg.exe --overlay-ports=C:/robotology-vcpkg-binary-ports install --triplet x64-windows ace libxml2 eigen3 ipopt-binary catch2
conda install mesa-libgl-devel-cos7-x86_64

- name: Dependencies [macOS]
if: matrix.os == 'macOS-latest'
- name: Windows-only Dependencies [Windows]
if: contains(matrix.os, 'windows')
shell: bash -l {0}
run: |
brew install ace boost eigen swig qt5 orocos-kdl catch2
conda install vs2019_win-64

- name: Dependencies [Ubuntu]
if: matrix.os == 'ubuntu-latest'
- name: Windows-workarounds [Windows]
if: contains(matrix.os, 'windows')
shell: cmd /C CALL {0}
run: |
sudo apt-get update
sudo apt-get install git build-essential cmake libace-dev coinor-libipopt-dev libboost-system-dev libboost-filesystem-dev \
libboost-thread-dev liborocos-kdl-dev libeigen3-dev swig qtbase5-dev qtdeclarative5-dev qtmultimedia5-dev \
libxml2-dev liburdfdom-dev libtinyxml-dev liburdfdom-dev liboctave-dev python3-dev valgrind

- name: Source-based Dependencies [Windows]
if: matrix.os == 'windows-latest'
shell: bash
:: Due to this https://github.com/conda-forge/icub-models-feedstock/issues/18
:: pcl is removed as a workaround for https://github.com/ami-iit/bipedal-locomotion-framework/pull/695#issuecomment-1632208836
:: pcl can be re-added once we have a ros humble build compatible with PCL 1.13.0
:: pybind11 constrained as workaround for https://github.com/conda-forge/pybind11-feedstock/issues/95
conda install "pybind11<2.12.0"
conda remove icub-models pcl

- name: Print used environment
shell: bash -l {0}
run: |
# YCM
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/ycm
cd ycm
mkdir -p build
cd build
cmake -A x64 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..

cmake --build . --config ${{ matrix.build_type }} --target INSTALL


# YARP
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/yarp
cd yarp
mkdir -p build
cd build
cmake -A x64 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target INSTALL
# Workaround for https://github.com/robotology-dependencies/robotology-vcpkg-binary-ports/issues/3
export IPOPT_DIR=${VCPKG_INSTALLATION_ROOT}/installed/x64-windows

# iDynTree
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/iDynTree
cd iDynTree
mkdir -p build
cd build
cmake -A x64 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target install

# icub-main
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/icub-main.git
cd icub-main && mkdir -p build && cd build
cmake -A x64 -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DENABLE_icubmod_cartesiancontrollerserver=ON -DENABLE_icubmod_cartesiancontrollerclient=ON -DENABLE_icubmod_gazecontrollerclient=ON ..
cmake --build . --config ${{ matrix.build_type }} --target install

# wearables
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/wearables.git
cd wearables
mkdir -p build
cd build
cmake -A x64 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DXSENS_MVN_USE_SDK:BOOL=OFF \
-DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target install


- name: Source-based Dependencies [Ubuntu/macOS]
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macOS-latest'
shell: bash
run: |
# YCM
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/ycm
cd ycm
mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target install

# YARP
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/yarp
cd yarp
mkdir -p build
cd build
cmake -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target install

# iDynTree
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/iDynTree
cd iDynTree
mkdir -p build
cd build
cmake -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target install

# icub-main
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/icub-main.git
cd icub-main && mkdir -p build && cd build
cmake -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DENABLE_icubmod_cartesiancontrollerserver=ON -DENABLE_icubmod_cartesiancontrollerclient=ON -DENABLE_icubmod_gazecontrollerclient=ON ..
cmake --build . --config ${{ matrix.build_type }} --target install

# wearables
cd ${GITHUB_WORKSPACE}
git clone https://github.com/robotology/wearables.git
cd wearables
mkdir -p build
cd build
cmake -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake --build . --config ${{ matrix.build_type }} --target install


conda list
env
# ===================
# CMAKE-BASED PROJECT
# ===================

- name: Configure [Windows]
# Use bash also on Windows (otherwise cd, mkdir, ... do not work)
if: matrix.os == 'windows-latest'
shell: bash
shell: bash -l {0}
run: |
mkdir -p build
cd build
cmake -A x64 -DCMAKE_TOOLCHAIN_FILE=${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install \
cmake -G"Visual Studio 17 2022" \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..

- name: Configure [Ubuntu/macOS]
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macOS-latest'
shell: bash
shell: bash -l {0}
run: |
mkdir -p build
cd build
cmake -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..
cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install ..

- name: Build
shell: bash
shell: bash -l {0}
run: |
cd build
# Attempt of fix for using YARP idl generators (that link ACE) in Windows
# See https://github.com/robotology/idyntree/issues/569
export PATH=$PATH:${GITHUB_WORKSPACE}/install/bin:${VCPKG_ROBOTOLOGY_ROOT}/installed/x64-windows/bin
cmake --build . --config ${{ matrix.build_type }}

- name: Install
shell: bash
shell: bash -l {0}
run: |
cd build
cmake --build . --config ${{ matrix.build_type }} --target install
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,6 @@ compile_commands.json
CMakeLists.txt.user
.vscode/

# Visual studio
.vs/*
CMakeSettings.json
7 changes: 6 additions & 1 deletion app/robots/ergoCubGazeboV1/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name HapticGloveRetargeting
robot ergocubSim
samplingTime 0.01
enableMoveRobot 1
enableLogger 0
enableLogger 1
useLeftHand 1
useRightHand 1
isMandatory 0
Expand All @@ -26,6 +26,11 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold -1.0

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersHapticRetargetingParams.ini"]
7 changes: 6 additions & 1 deletion app/robots/ergoCubSN000/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name HapticGloveRetargeting
robot ergocub
samplingTime 0.1
enableMoveRobot 1
enableLogger 0
enableLogger 1
useLeftHand 1
useRightHand 1
isMandatory 0
Expand All @@ -26,6 +26,11 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold -1.0

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersHapticRetargetingParams.ini"]
7 changes: 6 additions & 1 deletion app/robots/ergoCubSN001/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name HapticGloveRetargeting
robot ergocub
samplingTime 0.1
enableMoveRobot 1
enableLogger 0
enableLogger 1
useLeftHand 1
useRightHand 1
isMandatory 0
Expand All @@ -26,6 +26,11 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold -1.0

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersHapticRetargetingParams.ini"]
7 changes: 6 additions & 1 deletion app/robots/ergoCubSN002/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name HapticGloveRetargeting
robot ergocub
samplingTime 0.1
enableMoveRobot 1
enableLogger 0
enableLogger 1
useLeftHand 1
useRightHand 1
isMandatory 0
Expand All @@ -26,6 +26,11 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold -1.0

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersHapticRetargetingParams.ini"]
4 changes: 4 additions & 0 deletions app/robots/iCubErzelli02/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold 0.0001

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
Expand Down
1 change: 0 additions & 1 deletion app/robots/iCubErzelli02/oculusConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ useXsens 0
useiFeel 1
useOpenXr 1
useSenseGlove 0
enableLogger 0
enableMoveRobot 1
# the following value is a threshold used to update the teleoperation frame position
# when the human rotates inside the virtualizer
Expand Down
4 changes: 4 additions & 0 deletions app/robots/iCubGazeboV2_5/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold 0.0001

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
Expand Down
1 change: 0 additions & 1 deletion app/robots/iCubGazeboV2_5/oculusConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ robot icubSim
useXsens 0
useiFeel 1
useSenseGlove 0
enableLogger 0
enableMoveRobot 1
# the following value is a threshold used to update the teleoperation frame position
# when the human rotates inside the virtualizer
Expand Down
5 changes: 5 additions & 0 deletions app/robots/iCubGazeboV3/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ waitingDurationTime 5.0
# threshold in which an skin is considered as working fine [no units]
tactileWorkingThreshold 0.0001

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersHapticRetargetingParams.ini"]
5 changes: 5 additions & 0 deletions app/robots/iCubGenova04/hapticGloveConfig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ tactileWorkingThreshold 0.0001
# threshold in which an skin data is considered updated [no units]
tactileUpdateThreshold 0.0001

[LOGGER]
remote "/logger"
logHumanData true
logKalmanFilterData false

# include fingers parameters
[include LEFT_FINGERS_RETARGETING "leftFingersHapticRetargetingParams.ini"]
[include RIGHT_FINGERS_RETARGETING "rightFingersHapticRetargetingParams.ini"]
Loading
Loading