Skip to content

Commit

Permalink
using boost on the /test folder, change the test cmakelist. and add c…
Browse files Browse the repository at this point in the history
…test. above passed test but not clear the code. the git action workflow not test
  • Loading branch information
Zichangzhou committed Sep 14, 2024
1 parent 7171003 commit 2686a0b
Show file tree
Hide file tree
Showing 9 changed files with 721 additions and 128 deletions.
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile
{
"name": "RAPTOR",
"name": "RAPTOR-zichang",
"build": {
// Sets the run context to one level up instead of the .devcontainer folder.
"context": "..",
Expand Down
362 changes: 362 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,362 @@
name: Build and Test RAPTOR

on:
push:
branches:
- unit_test_dev
paths-ignore:
# Compiled Object files and Libraries
- '*.d'
- '*.slo'
- '*.lo'
- '*.o'
- '*.obj'
- '*.gch'
- '*.pch'
- '*.so'
- '*.dylib'
- '*.dll'
- '*.mod'
- '*.smod'
- '*.lai'
- '*.la'
- '*.a'
- '*.lib'

# Executables
- '*.exe'
- '*.out'
- '*.app'

# Matlab related
- '*.asv'
- '*.mat'

- '.vscode/**'

- 'build/**'
- 'data/**'
- 'data_safecopy/**'
- 'Examples/Kinova/SystemIdentification/ExcitingTrajectories/data/**'


- 'test_oracle.py'

- 'docker/HSL.zip'
- 'docker/pardiso/**'
- 'HSL/**'

- 'Examples/Digit/singlestep_optimization_settings.yaml'
- 'Examples/Digit-modified/singlestep_optimization_settings.yaml'

- 'test_nanobind_planner.py'

pull_request:
branches:
- unit_test_dev
paths-ignore:
# Same patterns as for push events
- '*.d'
- '*.slo'
- '*.lo'
- '*.o'
- '*.obj'
- '*.gch'
- '*.pch'
- '*.so'
- '*.dylib'
- '*.dll'
- '*.mod'
- '*.smod'
- '*.lai'
- '*.la'
- '*.a'
- '*.lib'

# Executables
- '*.exe'
- '*.out'
- '*.app'

# Matlab related
- '*.asv'
- '*.mat'

- '.vscode/**'

- 'build/**'
- 'data/**'
- 'data_safecopy/**'
- 'Examples/Kinova/SystemIdentification/ExcitingTrajectories/data/**'


- 'test_oracle.py'

- 'docker/HSL.zip'
- 'docker/pardiso/**'
- 'HSL/**'

- 'Examples/Digit/singlestep_optimization_settings.yaml'
- 'Examples/Digit-modified/singlestep_optimization_settings.yaml'

- 'test_nanobind_planner.py'


concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:

runs-on: ubuntu-latest
container: ${{ matrix.container }}
strategy:
matrix:
container: ['ubuntu:20.04', 'ubuntu:22.04', 'ubuntu:24.04']
cmake-version: [3.18.0, 3.22.0, 3.25.0]
# not sure
env:
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 5

steps:
- name: Setup Container
run: |
apt update && DEBIAN_FRONTEND="noninteractive" apt install -y sudo lsb-release gnupg2 cmake git python3
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive

- name: Setup ccache
uses: actions/cache@v4
with:
path: .ccache
save-state: true
key: ccache-linux-${{ matrix.container }}-${{ github.sha }}
restore-keys: |
ccache-linux-${{ matrix.container }}-
- name: Get branch name (merge)
if: github.event_name != 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV

- name: Get branch name (push)
if: github.event_name != 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV

- name: Get branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_ENV

- name: Debug Branch Name
run: echo ${{ env.BRANCH_NAME }}

- name: Register robotpkg
run: |
sh -c "echo \"deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg\" >> /etc/apt/sources.list"
apt-key adv --fetch-keys http://robotpkg.openrobots.org/packages/debian/robotpkg.key
- name: Set and install dependencies
run: |
rm -rf /usr/local/share/boost/1.69.0
export PYTHON3_VERSION=$(python3 -c "import sys; print(str(sys.version_info.major)+str(sys.version_info.minor))")
export APT_DEPENDENCIES="doxygen \
ccache \
curl \
cppcheck \
libomp-dev \
libomp5 \
libboost-system-dev \
libboost-test-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libeigen3-dev \
liburdfdom-dev \
texlive-font-utils \
libboost-python-dev \
python3-numpy \
python3-matplotlib \
robotpkg-py${PYTHON3_VERSION}-eigenpy \
robotpkg-py${PYTHON3_VERSION}-hpp-fcl \
robotpkg-py${PYTHON3_VERSION}-casadi"
echo "APT Dependencies: $APT_DEPENDENCIES"
apt-get update -qq
DEBIAN_FRONTEND="noninteractive" apt-get install -qq ${APT_DEPENDENCIES}
- name: Install Python Packages
run: |
pip3 install --upgrade pip
pip3 install scipy matplotlib pyyaml torch pybullet==3.2.5 mujoco==2.3.7 glfw==2.6.2 pyopengl==3.1.7 numpy==1.25.2 nanobind pygccxml pyplusplus
- name: Install Pinocchio Dependencies
run: |
bash docker/scripts/install-pinocchio.sh
- name: Install HSL Solver
run: |
bash docker/scripts/install-hsl.sh
- name: Install Ipopt Solver
run: |
bash docker/scripts/install-ipopt.sh
- name: Install OMPL
run: |
bash docker/scripts/install-ompl.sh
- name: Free disk space
run: |
apt clean
df -h
- name: Configure CMake
run: |
# Add cloned repo to safe.directory, since it was not cloned by the container
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git submodule update --init
export PATH=$PATH:/opt/openrobots/bin
export PYTHON3_DOT_VERSION=$(python3 -c "import sys; print(str(sys.version_info.major)+'.'+str(sys.version_info.minor))")
export PYTHONPATH=${PYTHONPATH}:/opt/openrobots/lib/python$PYTHON3_DOT_VERSION/site-packages
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openrobots/lib:/usr/local/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
mkdir build
cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_WITH_COLLISION_SUPPORT=ON \
-DBUILD_ADVANCED_TESTING=OFF \
-DBUILD_WITH_CASADI_SUPPORT=ON \
-DPYTHON_EXECUTABLE=$(which python3) \
-DBUILD_WITH_OPENMP_SUPPORT=ON \
-DINSTALL_DOCUMENTATION=ON \
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/.github/workflows/cmake/linux-debug-toolchain.cmake
- name: Build Project
run: |
cd build
make -j$(nproc)
# may overlap
# - name: Build Tests
# run: |
# cd build
# make -j$(nproc) build_tests

- name: Run Tests
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: |
cd build
ctest --output-on-failure
- name: Upload Build Artifacts
if: always()
uses: actions/upload-artifact@v3
with:
name: build-artifacts
path: build/

- name: Run Tests
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: |
cd build
mkdir -p TestResults
ctest --output-on-failure --output-junit TestResults/test-results.xml
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v3
with:
name: test-results
path: build/TestResults/test-results.xml

- name: Upload Test Results to Test Reporter
if: always()
uses: dorny/test-reporter@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: CTest Results
path: build/TestResults/test-results.xml
reporter: junit


- name: Test Packaging
run: |
export PATH=$PATH:/opt/openrobots/bin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/openrobots/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openrobots/lib:/usr/local/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
# Test CMake module packaging
cd ./unittest/packaging/cmake
mkdir build && cd build
export CMAKE_PREFIX_PATH=/usr/local
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j$(nproc)
./run_rnea
./load_urdf
# Test pkg-config packaging
cd ../../pkgconfig
mkdir build && cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j$(nproc)
./run_rnea
./load_urdf
# Test FetchContent packaging
cd ../../external
export PINOCCHIO_GIT_REPOSITORY="file://$GITHUB_WORKSPACE"
export PINOCCHIO_GIT_TAG="test-external-$(git rev-parse --short HEAD)"
git tag $PINOCCHIO_GIT_TAG
mkdir build && cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j$(nproc)
./run_rnea
./load_urdf
# Test CMake module packaging and pinocchio_header target
cd ../../pinocchio_header
mkdir build && cd build
cmake .. \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPYTHON_EXECUTABLE=$(which python3)
make -j$(nproc)
./run_fk
- name: Uninstall Project
run: |
cd build
sudo make uninstall
check:
if: always()
name: check-linux-apt

needs:
- build

runs-on: ubuntu-latest

steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
12 changes: 12 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
# Minimum required CMake version
cmake_minimum_required(VERSION 3.18)


# Project name
project(RAPTOR
DESCRIPTION "Rapid and Robust Trajectory Optimization for Robots")

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
#

include(CTest)
set(CTEST_OUTPUT_ON_FAILURE TRUE)
set(CTEST_CUSTOM_TESTS_IGNORE "")

set(CTEST_JUNIT_OUTPUT_PATH "${CMAKE_BINARY_DIR}/TestResults")
set(CTEST_CUSTOM_TESTS_IGNORE "")

enable_testing()
enable_testing()

# set(CMAKE_CXX_FLAGS "-Wall -Wextra")
set(CMAKE_CXX_FLAGS_DEBUG "-g -fopenmp")
Expand Down
Loading

0 comments on commit 2686a0b

Please sign in to comment.