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 Github actions #1

Merged
merged 18 commits into from
Jul 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
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
65 changes: 65 additions & 0 deletions .github/workflows/macos-dep-src.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: MacOS-dep-src

# https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events
on:
push:
pull_request:
schedule:
- cron: '0 2 * * SUN'

jobs:
build-macos-dep-sec:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-11, macos-12.0]

steps:
# https://github.com/marketplace/actions/cancel-workflow-action
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout repository
uses: actions/checkout@v2

- name: Print system information
run: |
sysctl -a | grep machdep.cpu
sysctl -a | grep logical

- name: Print OS information
run: system_profiler SPSoftwareDataType

- name: Install dependencies
run: brew install libpng libjpeg libdc1394 opencv pcl librealsense zbar pkg-config nlohmann-json

# Openblas location is exported explicitly because openblas is keg-only,
# which means it was not symlinked into /usr/local/.
# qt@5 is as a requested dependency for vtk and thus for pcl 1.13.0
# qt@5 is keg-only, which means it was not symlinked into /usr/local that's why we need to set Qt5_DIR
- name: Clone and configure ViSP
run: |
git clone --depth 1 https://github.com/lagadic/visp.git ${HOME}/visp
cd ${HOME}/visp
export LDFLAGS="-L/usr/local/opt/openblas/lib"
export CPPFLAGS="-I/usr/local/opt/openblas/include"
export Qt5_DIR="$(brew --prefix qt5)/lib/cmake/Qt5"
mkdir build && cd build
cmake .. -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5 -DBUILD_DEMOS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_TUTORIALS=OFF -DCMAKE_INSTALL_PREFIX=$(pwd)/install
cat ViSP-third-party.txt

- name: Build and install ViSP
run: |
cd ${HOME}/visp/build
make -j$(sysctl -n hw.logicalcpu) install
echo "VISP_DIR=$(pwd)/install" >> $GITHUB_ENV
echo $VISP_DIR

- name: Configure CMake and build visp_sample
run: |
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(sysctl -n hw.logicalcpu)
74 changes: 74 additions & 0 deletions .github/workflows/ubuntu-dep-src.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Ubuntu-dep-src

# https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events
on:
push:
pull_request:
schedule:
- cron: '0 2 * * SUN'

jobs:
build-ubuntu-dep-src:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04]

steps:
# https://github.com/marketplace/actions/cancel-workflow-action
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout repository
uses: actions/checkout@v2

- name: Print system information
run: lscpu

- name: Print OS information
run: lsb_release -a

- name: Install dependencies for ubuntu 18.04 and 20.04
if: matrix.os != 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libx11-dev libdc1394-22-dev libv4l-dev liblapack-dev libopenblas-dev libeigen3-dev libopencv-dev libxml2-dev libpcl-dev nlohmann-json3-dev
sudo apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

- name: Install dependencies for ubuntu 22.04
if: matrix.os == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libx11-dev libdc1394-dev libv4l-dev liblapack-dev libopenblas-dev libeigen3-dev libopencv-dev libxml2-dev libpcl-dev nlohmann-json3-dev
sudo apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

- name: Build librealsense2 from source
run: |
pwd
git clone --depth 1 https://github.com/IntelRealSense/librealsense.git ${HOME}/librealsense
cd ${HOME}/librealsense
mkdir build && cd build && mkdir install
cmake .. -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(pwd)/install
make -j$(nproc) install
echo "REALSENSE2_DIR=$(pwd)/install" >> $GITHUB_ENV
echo $REALSENSE2_DIR

- name: Build ViSP from source
run: |
git clone --depth 1 https://github.com/lagadic/visp.git ${HOME}/visp
cd ${HOME}/visp
mkdir build && cd build && mkdir install
cmake .. -DBUILD_DEMOS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_TUTORIALS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(pwd)/install
cat ViSP-third-party.txt
make -j$(nproc) install
echo "VISP_DIR=$(pwd)/install" >> $GITHUB_ENV
echo $VISP_DIR

- name: Configure CMake and build visp_sample
run: |
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
97 changes: 97 additions & 0 deletions .github/workflows/ubuntu-extra.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Ubuntu-extra

# https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events
on:
push:
pull_request:
schedule:
- cron: '0 2 * * SUN'

jobs:
build-ubuntu-extra:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04]

steps:
# https://github.com/marketplace/actions/cancel-workflow-action
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout repository
uses: actions/checkout@v2

- name: Print system information
run: lscpu

- name: Print OS information
run: lsb_release -a

- name: Install dependencies for ubuntu 18.04 and 20.04
if: matrix.os != 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libx11-dev libdc1394-22-dev libv4l-dev gfortran liblapack-dev libopenblas-dev libeigen3-dev libopencv-dev libxml2-dev libpcl-dev nlohmann-json3-dev
sudo apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

- name: Install dependencies for ubuntu 22.04
if: matrix.os == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libx11-dev libdc1394-dev libv4l-dev gfortran liblapack-dev libopenblas-dev libeigen3-dev libopencv-dev libxml2-dev libpcl-dev nlohmann-json3-dev
sudo apt-get install -y libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

- name: Build librealsense2 from source
run: |
pwd
git clone --depth 1 https://github.com/IntelRealSense/librealsense.git ${HOME}/librealsense
cd ${HOME}/librealsense
mkdir build && cd build && mkdir install
cmake .. -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(pwd)/install
make -j$(nproc) install
echo "REALSENSE2_DIR=$(pwd)/install" >> $GITHUB_ENV
echo $REALSENSE2_DIR

- name: Build ViSP from source
run: |
git clone --depth 1 https://github.com/lagadic/visp.git ${HOME}/visp
cd ${HOME}/visp
mkdir build && cd build && mkdir install
cmake .. -DBUILD_DEMOS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_TUTORIALS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(pwd)/install
cat ViSP-third-party.txt
make -j$(nproc) install
echo "ViSP_WS=${HOME}" >> $GITHUB_ENV
echo $ViSP_WS

- name: Build visp_sample with ViSP from build tree
run: |
mkdir visp_sample-build && cd visp_sample-build
cmake .. -DCMAKE_BUILD_TYPE=Release -DVISP_DIR=$ViSP_WS/visp/build
make -j$(nproc)

- name: Build visp_sample using visp-config from build tree
run: |
make -f Makefile.visp-config VISP_INSTALL_PREFIX=$ViSP_WS/visp/build
make -j$(nproc) -f Makefile.visp-config clean

- name: Build visp_sample with ViSP from install tree
run: |
mkdir visp_sample-build_2 && cd visp_sample-build_2
cmake .. -DCMAKE_BUILD_TYPE=Release -DVISP_DIR=$ViSP_WS/visp/build/install/lib/cmake/visp
make -j$(nproc)

- name: Build visp_sample using visp.pc from install tree
run: |
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$ViSP_WS/visp/build/install/lib/pkgconfig
make -j$(nproc) -f Makefile.visp.pc
make -j$(nproc) -f Makefile.visp.pc clean

- name: Build visp_sample using visp-config from install tree
run: |
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$ViSP_WS/visp/build/install/lib/pkgconfig
make -j$(nproc) -f Makefile.visp-config VISP_INSTALL_PREFIX=$ViSP_WS/visp/build/install
make -j$(nproc) -f Makefile.visp-config clean
7 changes: 3 additions & 4 deletions Makefile.visp-config
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#CXX = g++
VISP_BUILD_DIR = /tmp/usr/local
VISP_CFLAGS = `$(VISP_BUILD_DIR)/bin/visp-config --cflags`
VISP_LDFLAGS = `$(VISP_BUILD_DIR)/bin/visp-config --libs`
CXX = g++
VISP_CFLAGS = `$(VISP_INSTALL_PREFIX)/bin/visp-config --cflags`
VISP_LDFLAGS = `$(VISP_INSTALL_PREFIX)/bin/visp-config --libs`

SOURCES=$(shell find . -name "sample*.cpp")
TARGETS=$(SOURCES:%.cpp=%)
Expand Down
112 changes: 75 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,94 @@

ViSP sample code used as code snippet in ViSP doxygen [documentation](https://visp-doc.inria.fr/doxygen/visp-daily/index.html).

This project uses [ViSP](https://github.com/lagadic/visp) that needs to be build with the following as 3rd-parties:
- OpenCV
- librealsense
- libxml2
- PCL

This project uses [ViSP](https://github.com/lagadic/visp) as 3rd-party.
## 1. Prerequisities

## Build visp_sample with ViSP build tree
### 1.1. Install required 3rd parties

- On ubuntu

- Install required packages:

```
$ sudo apt-get update
$ sudo apt-get install pkg-config libopencv-dev libxml2-dev libpcl-dev
```

- Install librealsense from source following these [instructions](https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-ubuntu.html#install_ubuntu_3rdparty_realsense)

- On OSX
```
$ brew update; brew upgrade
$ brew install opencv librealsense libxml2 pcl
```

### 1.2. Build and install ViSP from source

See ViSP installation from source [tutorials](https://visp-doc.inria.fr/doxygen/visp-daily/tutorial_install_src.html).

Once ViSP is build, you can build `visp_sample` project:
```
$ cd $VISP_WS
$ git clone https://github.com/lagadic/visp.git
$ mkdir $VISP_WS/visp-build
$ cd $VISP_WS/visp-build
$ cmake ../visp -DCMAKE_INSTALL_PREFIX=/tmp/usr/local
$ make -j4 install
```

Once ViSP is build, you can build `visp_sample` project using one of the 5 different ways that are given in the next sections.

## 2. Build visp_sample project

### 2.1. Build visp_sample with ViSP from build tree

```
$ cd $ViSP_WS
$ git clone https://github.com/lagadic/visp_sample
$ mkdir visp_sample-build
$ cd visp_sample-build
$ cmake ../visp_sample -DVISP_DIR=$ViSP_WS/visp-build
$ make -j4
```

### 2.2. Build visp_sample using `visp-config` from build tree

```
$ cd $ViSP_WS/visp_sample
$ make -j4 -f Makefile.visp-config VISP_INSTALL_PREFIX=$ViSP_WS/visp-build
$ make -j4 -f Makefile.visp-config clean
```

## Build visp_sample with ViSP install tree

- build and install ViSP
```
$ cd $ViSP_WS/visp-build
$ cmake ../visp -DCMAKE_INSTALL_PREFIX=/tmp/usr/local
$ make -j4
$ make -j4 install
```

- build `visp_sample` using `cmake`
```
$ cd $ViSP_WS/visp_sample
$ mkdir build
$ cd build
$ cmake ../ -DVISP_DIR=/tmp/usr/local/lib/cmake/visp
$ make -j4
```

- build `visp_sample` using `visp-config`
```
$ cd $ViSP_WS/visp_sample
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/tmp/usr/local/lib/pkgconfig
$ make -j4 -f Makefile.visp-config
$ make -j4 -f Makefile.visp-config clean
```

- build `visp_sample` using `visp.pc`
```
$ cd $ViSP_WS/visp_sample
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/tmp/usr/local/lib/pkgconfig
$ make -j4 -f Makefile.visp.pc
$ make -j4 -f Makefile.visp.pc clean
```
### 2.3. Build visp_sample with ViSP from install tree

```
$ cd $ViSP_WS
$ git clone https://github.com/lagadic/visp_sample
$ mkdir visp_sample-build
$ cd visp_sample-build
$ cmake ../visp_sample -DVISP_DIR=/tmp/usr/local/lib/cmake/visp
$ make -j4
```

### 2.4. Build visp_sample using `visp.pc` from install tree

```
$ cd $ViSP_WS/visp_sample
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/tmp/usr/local/lib/pkgconfig
$ make -j4 -f Makefile.visp.pc
$ make -j4 -f Makefile.visp.pc clean
```

### 2.5. Build visp_sample using `visp-config` from install tree

```
$ cd $ViSP_WS/visp_sample
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/tmp/usr/local/lib/pkgconfig
$ make -j4 -f Makefile.visp-config VISP_INSTALL_PREFIX=/tmp/usr/local
$ make -j4 -f Makefile.visp-config clean
```
2 changes: 0 additions & 2 deletions mbt/sample-vpMbEdgeKltTracker-1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ int main()
display.init(I,100,100,"Mb Hybrid Tracker");
#endif

#if defined VISP_HAVE_PUGIXML
tracker.loadConfigFile("cube.xml"); // Load the configuration of the tracker
#endif
tracker.getCameraParameters(cam); // Get the camera parameters used by the tracker (from the configuration file).
// load the 3d model, to read .wrl model coin is required, if coin is not installed .cao file can be used.
tracker.loadModel("cube.cao");
Expand Down
Loading