Skip to content
Open
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
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*~
build/
CMakeLists.txt.user

#CMake-generated files
CMakeFiles/
Expand All @@ -8,7 +9,6 @@ cmake_install.cmake
cmake_uninstall.cmake
.cproject
.project
vicalib
install_manifest.txt
description-pak
.settings/
Expand Down
67 changes: 67 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
language: cpp
os: linux
dist: xenial
jobs:
include:
- name: "Xenial Linux"
os: linux
cache: ccache
compiler: gcc
addons:
apt:
packages:
- ninja-build
env:
- GENERATOR=Ninja
- MKL_INCLUDE_PATH=/opt/intel/mkl/include
- MKL_LIBRARY_PATH=/opt/intel/mkl/lib/intel64
before_script:
# See https://software.intel.com/en-us/articles/installing-intel-free-libs-and-python-apt-repo for details
- curl https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB | sudo apt-key add -
- echo "deb https://apt.repos.intel.com/mkl all main" | sudo tee -a /etc/apt/sources.list
- sudo apt-get -qq update
- sudo apt-get -y install intel-mkl-64bit-2020.0-088
- name: "MacOS"
os: osx
cache:
directories:
- $HOME/.ccache
osx_image: xcode10.2 # macOS 14 required for 2020.1.216 MKL
compiler: clang
env:
- GENERATOR=Ninja
- MKL_VERSION=2020.1.216
- MKL_NAME=m_mkl_$MKL_VERSION
- MKL_INCLUDE_PATH=/opt/intel/mkl/include
- MKL_LIBRARY_PATH=/opt/intel/compilers_and_libraries_$MKL_VERSION/mac/mkl/lib
before_install:
- brew install ninja ccache
- export PATH="/usr/local/opt/ccache/libexec:$PATH"
- curl http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16525/$MKL_NAME.dmg --output $MKL_NAME.dmg
- sudo hdiutil attach $MKL_NAME.dmg
- sed 's/=decline/=accept/g' $(find /Volumes/$MKL_NAME -name "silent.cfg" -print) > ~/silent.cfg
- sudo $(find /Volumes/$MKL_NAME -name "install.sh" -print) --silent ~/silent.cfg
- sudo hdiutil detach /Volumes/$MKL_NAME
- name: "Windows"
os: windows
cache:
directories:
- $LOCALAPPDATA/Mozilla/sccache
env:
- GENERATOR="Visual Studio 14 2015 Win64" # VS2015 required OpenCV 3.2
- MKL_VERSION=2020.1.216
- MKL_NAME=intelmkl.static.win-x64
- MKL_INCLUDE_PATH=C:/Users/travis/.nuget/packages/$MKL_NAME/$MKL_VERSION/lib/native/include
- MKL_LIBRARY_PATH=C:/Users/travis/.nuget/packages/$MKL_NAME/$MKL_VERSION/lib/native/win-x64
before_install:
# https://chocolatey.org/packages/Paket
# microsoft-visual-cpp-build-tools for Visual Studio 2015
- choco install paket microsoft-visual-cpp-build-tools sccache
- paket init
# https://www.nuget.org/packages/intelmkl.static.win-x64/
- paket add $MKL_NAME --version $MKL_VERSION

script:
- mkdir build_dir
- cmake -G "$GENERATOR" -Bbuild_dir -Hmeta_build -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=False
- cmake --build build_dir --config Release
135 changes: 111 additions & 24 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,33 +27,38 @@ endif()
option(BUILD_SHARED_LIBS "Build Shared Library" ON)

set( CMAKE_CXX_FLAGS "-std=c++11 -Wall ${CMAKE_CXX_FLAGS}" )
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" AND NOT ANDROID)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()

string( TOLOWER ${PROJECT_NAME} LIBRARY_NAME )

if (NOT ANDROID)
option(BUILD_GUI "Build GUI" ON)

if (NOT ANDROID AND BUILD_GUI)
add_definitions(-DBUILD_GUI)
else()
add_definitions(-UBUILD_GUI)
endif()

################################################################################
# Find required dependencies
FIND_PACKAGE( tinyxml2 REQUIRED CONFIG)
find_package( Calibu REQUIRED )
find_package( Ceres REQUIRED )
find_package( CVars REQUIRED )
find_package( GFlags REQUIRED )
find_package( GLog REQUIRED )
find_package( HAL REQUIRED )
find_package( gflags REQUIRED CONFIG)
find_package( glog REQUIRED CONFIG)
find_package( protobuf REQUIRED CONFIG)
find_package( hal REQUIRED CONFIG)
find_package( OpenCV REQUIRED COMPONENTS core)
if(OpenCV_VERSION_MAJOR EQUAL 2)
find_package(OpenCV REQUIRED COMPONENTS core imgproc highgui)
elseif(OpenCV_VERSION_MAJOR EQUAL 3)
find_package(OpenCV REQUIRED COMPONENTS core imgproc videoio)
endif()
find_package( Pangolin REQUIRED )
if(NOT ANDROID AND BUILD_GUI)
find_package( Pangolin REQUIRED )
endif()

# Prefer OSX_MODIFIED_GLUT > FREEGLUT > GLUT
if(FREEGLUT_FOUND AND NOT HAVE_MODIFIED_OSXGLUT)
Expand All @@ -66,26 +71,32 @@ elseif(GLUT_FOUND)
endif()

list(APPEND LINK_LIBS
${HAL_LIBRARIES}
hal::hal
${Calibu_LIBRARIES}
${CERES_LIBRARIES}
${CVars_LIBRARIES}
${GFlags_LIBRARIES}
${GLOG_LIBRARIES}
${Pangolin_LIBRARIES}
gflags_shared
glog::glog
${OpenCV_LIBS}
dl)

if(NOT ANDROID AND BUILD_GUI)
list(APPEND LINK_LIBS
${Pangolin_LIBRARIES}
)
endif()

list(APPEND PROJ_INCLUDE_DIRS
${Pangolin_INCLUDE_DIRS}
${HAL_INCLUDE_DIRS}
${CERES_INCLUDE_DIRS}
${Calibu_INCLUDE_DIRS}
${CVars_INCLUDE_DIRS}
${GLOG_INCLUDE_DIRS}
${GFlags_INCLUDE_DIR}
${CERES_INCLUDE_DIRS}
${rapidjson_INCLUDE_DIR}
)

if(NOT ANDROID AND BUILD_GUI)
list(APPEND LINK_LIBS
${Pangolin_INCLUDE_DIRS}
)
endif()


# Basic includes / libraries
list( APPEND LIB_INC_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
Expand All @@ -96,10 +107,15 @@ list( APPEND LIB_INC_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
set(SRC_PREFIX src)
set(VICALIB_SRCS
${SRC_PREFIX}/vicalib-engine.cc
${SRC_PREFIX}/main.cc
${SRC_PREFIX}/vicalib-task.cc
)

if(NOT ANDROID)
list(APPEND VICALIB_SRCS ${SRC_PREFIX}/main.cc)
else()
list(APPEND VICALIB_SRCS ${SRC_PREFIX}/libmain.cc)
endif()

set(VICALIB_CONDITIONS
Calibu_FOUND
Ceres_FOUND
Expand All @@ -112,21 +128,92 @@ set(VICALIB_CONDITIONS

list( APPEND ${PROJ_INCLUDE_DIRS} ${LIB_INC_DIR} )

link_directories(${HAL_LIBRARY_DIRS})

include_directories( ${USER_INC}
${PROJ_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}/include
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/include
)

add_executable( vicalib ${VICALIB_SRCS} )
link_directories(
${Calibu_LIBRARY_DIRS}
${HAL_LIBRARY_DIRS}
${CVars_LIBRARY_DIRS}
${Pangolin_LIBRARY_DIRS}
)

IF(WIN32)
set_property(SOURCE ${SRC_PREFIX}/vicalib-task.cc APPEND_STRING PROPERTY COMPILE_FLAGS " /bigobj ")
ENDIF()
if(NOT ANDROID)
add_executable( vicalib ${VICALIB_SRCS} )
else()
add_library( vicalib SHARED ${VICALIB_SRCS} )
set_target_properties(vicalib PROPERTIES LINK_FLAGS " -Wl,--build-id ")
endif()
target_link_libraries( vicalib ${LINK_LIBS} )

add_executable( tracker src/tracker.cc )
target_link_libraries( tracker ${LINK_LIBS} )

install(TARGETS vicalib RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install(TARGETS tracker RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
target_include_directories (vicalib BEFORE PUBLIC
"$<INSTALL_INTERFACE:include>"
)

#add_executable( tracker src/tracker.cc )
#target_link_libraries( tracker ${LINK_LIBS} )

include (CMakePackageConfigHelpers)

install(TARGETS vicalib
EXPORT vicalib-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
PUBLIC_HEADER DESTINATION include/vicalib
)
#install(TARGETS tracker RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)


set(LOAD_DEPENDENCY "#find_dependency( protobuf )
#find_dependency( gflags )
find_dependency( glog )
#find_dependency( tinyxml2 )
find_dependency( hal )
find_dependency( OpenCV )
find_dependency( Calibu )
find_dependency( Ceres )")

configure_package_config_file (vicalib-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/vicalib-config.cmake
INSTALL_DESTINATION lib/cmake/vicalib
NO_CHECK_REQUIRED_COMPONENTS_MACRO)

write_basic_package_version_file (vicalib-config-version.cmake VERSION
${VICALIB_VERSION} COMPATIBILITY SameMajorVersion)

export (TARGETS vicalib NAMESPACE vicalib:: FILE vicalib-targets.cmake)
export (PACKAGE vicalib)

install (FILES
${CMAKE_CURRENT_BINARY_DIR}/vicalib-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/vicalib-config-version.cmake
DESTINATION lib/cmake/vicalib)

install (EXPORT vicalib-targets NAMESPACE vicalib:: DESTINATION lib/cmake/vicalib)


install( FILES ${CMAKE_SOURCE_DIR}/include/vicalib/vicalib_interface.h
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/vicalib )

if(UNIX)
install (PROGRAMS scripts/run_imu_calibration.sh DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif()
install (PROGRAMS scripts/run_vicalib.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install (PROGRAMS scripts/run_benchmark.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install (PROGRAMS scripts/run_vicalib_evaluation.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

install (FILES data/t26x-initialization.json DESTINATION ${CMAKE_INSTALL_PREFIX}/data)

include(${CMAKE_MODULE_PATH}/cmake_uninstall.cmake.in)
add_custom_target(uninstall
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
vicalib
=======
[![Build Status](https://travis-ci.com/dmirota/vicalib.svg?branch=master)](https://travis-ci.com/dmirota/vicalib)

Vicalib is a calibration tool for visual or visual-inertial sensor systems. The system is able to calibrate camera intrinsics for pinhole, polynomial and r-theta camera models, as well as the camera-to-imu extrinsics, imu biases and scale factors for visual inertial system. Dependencies are as follows:

Expand Down
Loading