Skip to content
Snippets Groups Projects
Commit 3b56aa39 authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

adding script and autolauncher for ci

parent 449bcf3e
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/expect
set timeout -1
spawn ./script_install_wolf.sh -e
expect "Enter path for dependencies (either /global/path or relative/path):\r"
send -- ".\r"
expect "Enter path for wolf folder (either /global/path or relative/path):\r"
send -- ".\r"
expect "Do you want to download and install plugin imu? (y/n)\r"
send -- "y\r"
expect "Do you want to download and install plugin gnss? (y/n)\r"
send -- "y\r"
expect "Do you want to download and install plugin laser? (y/n)\r"
send -- "y\r"
expect "Do you want to install CSM to enable ICP processors? (y/n)\r"
send -- "y\r"
expect "Do you want to install FALKO to enable Falko loop closure processors? (y/n)\r"
send -- "y\r"
expect "Do you want to download and install plugin vision (requires to install opencv 3.3.0)? (y/n)\r"
send -- "y\r"
expect "Do you want to download and install plugin apriltag? (y/n)\r"
send -- "y\r"
expect "Do you want to download and install plugin bodydynamics? (y/n)\r"
send -- "y\r"
expect eof
#!/bin/bash
# verbose
VERBOSE="true"
while getopts "he" option; do
case $option in
e) # disable verbose
VERBOSE="false"
;;
esac
done
CORES=$(nproc)
if [ $VERBOSE == "true" ]; then
echo "The number of available cores on this machine is $CORES"
fi
RUN_PATH=$PWD
# UBUNTU
UBUNTU_DISTRO=$(lsb_release -rs);
if [ $UBUNTU_DISTRO == "16.04" ]; then
if [ $VERBOSE == "true" ]; then
echo "Ubuntu 16.04 - OK"
fi
elif [ $UBUNTU_DISTRO == "18.04" ]; then
if [ $VERBOSE == "true" ]; then
echo "Ubuntu 18.04 - OK"
fi
elif [ $UBUNTU_DISTRO == "20.04" ]; then
if [ $VERBOSE == "true" ]; then
echo "Ubuntu 20.04 - OK"
fi
else
echo "Non-supported Ubuntu version: $UBUNTU_DISTRO"
exit 1
fi
# WOLF DEPENDENCIES #####################################################
if [ $VERBOSE == "true" ]; then
echo "You are in folder $PWD"
fi
echo "Enter path for dependencies (either /global/path or relative/path):"
read DEPS_PATH
cd $DEPS_PATH
DEPS_PATH=$PWD
if [ $VERBOSE == "true" ]; then
echo "path dependencies: $DEPS_PATH"
fi
if [ $VERBOSE == "true" ]; then
echo "Installing dependencies via apt install..."
fi
sudo apt install -y dh-autoreconf cmake build-essential libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev git libboost-all-dev libyaml-cpp-dev wget unzip
# Eigen
# Ubuntu 16.04 - Eigen 3.3.7 required
if [ $UBUNTU_DISTRO == "16.04" ]; then
if [ $VERBOSE == "true" ]; then
echo "Installing Eigen 3.3.7 via source..."
fi
# todo check if installed, check version, check
wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zip
unzip eigen-3.3.7.zip
rm eigen-3.3.7.zip
cd eigen-3.3.7
mkdir build
cd build
cmake ..
sudo make install
else
if [ $VERBOSE == "true" ]; then
echo "Installing Eigen 3 via apt install"
fi
sudo apt install -y libeigen3-dev
fi
# ceres
if [ $VERBOSE == "true" ]; then
echo "Installing ceres 2.0 via source..."
fi
cd $DEPS_PATH
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout 2.0
git pull
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$CORES
make test
sudo make install
# spdlog
if [ $VERBOSE == "true" ]; then
echo "Installing spdlog 0.17 via source..."
fi
cd $DEPS_PATH
git clone https://github.com/gabime/spdlog.git
cd spdlog
git checkout v0.17.0
git pull
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fPIC" ..
make -j$CORES
sudo make install
# WOLF #####################################################
cd $RUN_PATH
if [ $VERBOSE == "true" ]; then
echo "You are in folder $PWD"
fi
echo "Enter path for wolf folder (either /global/path or relative/path):"
read WOLF_PATH
cd $WOLF_PATH
mkdir wolf
cd wolf
WOLF_PATH=$PWD
if [ $VERBOSE == "true" ]; then
echo "wolf folder path: $PWD/wolf"
fi
# CORE -----------------------------------------------------
if [ $VERBOSE == "true" ]; then
echo "Cloning wolf core..."
fi
cd $WOLF_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/wolf.git
cd wolf
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling wolf core..."
fi
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing wolf core..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing wolf core..."
fi
ctest -j$CORES
# IMU --------------------------------------------------
echo "Do you want to download and install plugin imu? (y/n)"
read INSTALL_IMU
if [ $INSTALL_IMU == "y" ]; then
if [ $VERBOSE == "true" ]; then
echo "Cloning plugin imu..."
fi
cd $WOLF_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/plugins/imu.git
cd imu
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling plugin imu..."
fi
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPW=Release
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing plugin imu..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing plugin imu..."
fi
ctest -j$CORES
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin imu."
fi
fi
# GNSS --------------------------------------------------
echo "Do you want to download and install plugin gnss? (y/n)"
read INSTALL_GNSS
if [ $INSTALL_GNSS == "y" ]; then
if [ $VERBOSE == "true" ]; then
echo "Installing plugin gnss dependencies..."
fi
cd $DEPS_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/gauss_project/gnss_utils.git
cd gnss_utils
git submodule update --init
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
make -j$CORES
ctest -j$CORES
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Cloning plugin gnss..."
fi
cd $WOLF_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/plugins/gnss.git
cd gnss
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling plugin gnss..."
fi
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing plugin gnss..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing plugin gnss..."
fi
ctest -j$CORES
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin gnss."
fi
fi
# LASER --------------------------------------------------
echo "Do you want to download and install plugin laser? (y/n)"
read INSTALL_LASER
if [ $INSTALL_LASER == "y" ]; then
if [ $VERBOSE == "true" ]; then
echo "Installing plugin laser dependencies..."
fi
# CSM
echo "Do you want to install CSM to enable ICP processors? (y/n)"
read INSTALL_CSM
if [ $INSTALL_CSM == "y" ]; then
cd $DEPS_PATH
git clone https://gitlab.iri.upc.edu/labrobotica/algorithms/csm.git
cd csm
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$CORES
sudo make install
else
if [ $VERBOSE == "true" ]; then
echo "Skipping CSM."
fi
fi
# FALKO
echo "Do you want to install FALKO to enable Falko loop closure processors? (y/n)"
read INSTALL_FALKO
if [ $INSTALL_FALKO == "y" ]; then
cd $DEPS_PATH
git clone https://gitlab.iri.upc.edu/labrobotica/algorithms/falkolib.git
cd falkolib
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$CORES
sudo make install
else
if [ $VERBOSE == "true" ]; then
echo "Skipping Falko."
fi
fi
# LASER_SCAN_UTILS
if [ $VERBOSE == "true" ]; then
echo "Installing laser_scan_utils (required)..."
fi
cd $DEPS_PATH
sudo ldconfig
git clone ssh://git@gitlab.iri.upc.edu:2202/labrobotica/algorithms/laser_scan_utils.git
cd laser_scan_utils
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$CORES
ctest -j$CORES
sudo make install
# PLUGIN
if [ $VERBOSE == "true" ]; then
echo "Cloning plugin laser..."
fi
cd $WOLF_PATH
sudo ldconfig
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/plugins/laser.git
cd laser
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling plugin laser..."
fi
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing plugin laser..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing plugin laser..."
fi
sudo ldconfig
ctest -j$CORES
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin laser."
fi
fi
# VISION --------------------------------------------------
echo "Do you want to download and install plugin vision (requires to install opencv 3.3.0)? (y/n)"
read INSTALL_VISION
if [ $INSTALL_VISION == "y" ]; then
if [ $VERBOSE == "true" ]; then
echo "Installing plugin vision dependencies..."
fi
cd $DEPS_PATH
#install opencv
wget https://github.com/opencv/opencv/archive/3.3.0.zip -O temp.zip
unzip temp.zip
rm temp.zip
cd opencv-3.3.0
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 3.3.0
cd ..
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_CXX_FLAGS="-fPIC -std=c++14" -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
make -j8
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Cloning plugin vision..."
fi
cd $WOLF_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/plugins/vision.git
cd vision
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling plugin vision..."
fi
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing plugin vision..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing plugin vision..."
fi
ctest -j$CORES
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin vision."
fi
fi
# APRILTAG --------------------------------------------------
if [ $INSTALL_VISION == "y" ]; then
echo "Do you want to download and install plugin apriltag? (y/n)"
read INSTALL_APRILTAG
if [ $INSTALL_APRILTAG == "y" ]; then
if [ $VERBOSE == "true" ]; then
echo "Installing plugin apriltag dependencies..."
fi
cd $DEPS_PATH
git clone https://github.com/AprilRobotics/apriltag apriltaglib
cd apriltaglib
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$CORES
ctest -j$CORES
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Cloning plugin apriltag..."
fi
cd $WOLF_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/plugins/apriltag.git
cd apriltag
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling plugin apriltag..."
fi
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing plugin apriltag..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing plugin apriltag..."
fi
ctest -j$CORES
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin apriltag."
fi
fi
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin apriltag since plugin vision was not installed."
fi
fi
# BODYDYNAMICS --------------------------------------------------
if [ $INSTALL_IMU == "y" ]; then
echo "Do you want to download and install plugin bodydynamics? (y/n)"
read INSTALL_BD
if [ $INSTALL_BD == "y" ]; then
if [ $VERBOSE == "true" ]; then
echo "Cloning plugin bodydynamics..."
fi
cd $WOLF_PATH
git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_lib/plugins/bodydynamics.git
cd bodydynamics
git pull
if [ $VERBOSE == "true" ]; then
echo "Compiling plugin bodydynamics..."
fi
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPW=Release
cd build
make -j$CORES
if [ $VERBOSE == "true" ]; then
echo "Installing plugin bodydynamics..."
fi
sudo make install
if [ $VERBOSE == "true" ]; then
echo "Testing plugin bodydynamics..."
fi
ctest -j$CORES
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin bodydynamics."
fi
fi
else
if [ $VERBOSE == "true" ]; then
echo "Skipping plugin bodydynamics since plugin imu was not installed."
fi
fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment