-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Including setup scripts for realsense SDK.
- Loading branch information
1 parent
8e57796
commit 215a692
Showing
2 changed files
with
211 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
#!/bin/bash | ||
# Builds the Intel Realsense library librealsense on a Jetson Nano Development Kit | ||
# Copyright (c) 2016-21 Jetsonhacks | ||
# MIT License | ||
|
||
LIBREALSENSE_DIRECTORY=${HOME}/librealsense | ||
INSTALL_DIR=$PWD | ||
NVCC_PATH=/usr/local/cuda/bin/nvcc | ||
|
||
USE_CUDA=true | ||
|
||
function usage () | ||
{ | ||
echo "Usage: ./buildLibrealsense.sh [-n | -no_cuda] [-v | -version <version>] [-j | --jobs <number of jobs>] [-h | --help] " | ||
echo "-n | --no_cuda Build with no CUDA (Defaults to with CUDA)" | ||
echo "-v | --version Version of librealsense to build | ||
(defaults to latest release)" | ||
echo "-j | --jobs Number of concurrent jobs (Default 1 on <= 4GB RAM | ||
#of cores-1 otherwise)" | ||
echo "-h | --help This message" | ||
exit 2 | ||
} | ||
|
||
PARSED_ARGUMENTS=$(getopt -a -n buildLibrealsense.sh -o nv:j:h --longoptions version:,no_cuda,jobs:,help -- "$@" ) | ||
VALID_ARGUMENTS=$? | ||
|
||
if [ "$VALID_ARGUMENTS" != "0" ]; then | ||
echo "" | ||
usage | ||
fi | ||
|
||
eval set -- "$PARSED_ARGUMENTS" | ||
|
||
LIBREALSENSE_VERSION="" | ||
USE_CUDA=true | ||
NUM_PROCS="" | ||
|
||
while : | ||
do | ||
case "$1" in | ||
-n | --build_no_cuda) USE_CUDA=false ; shift ;; | ||
-v | --version ) LIBREALSENSE_VERSION="$2" ; shift 2 ;; | ||
-j | --jobs) NUM_PROCS="$2" ; | ||
shift 2 ; | ||
re_isanum='^[0-9]+$' | ||
if ! [[ $NUM_PROCS =~ $re_isanum ]] ; then | ||
echo "Number of jobs must be a positive, whole number" | ||
usage | ||
else | ||
if [ $NUM_PROCS -eq "0" ]; then | ||
echo "Number of jobs must be a positive, whole number" | ||
fi | ||
fi ; | ||
;; | ||
-h | --help ) usage ; shift ;; | ||
# -- means the end of arguments | ||
--) shift; break ;; | ||
esac | ||
done | ||
|
||
# From lukechilds gist discussion: https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c | ||
# We use wget instead of curl here | ||
# Sample usage: | ||
# VERSION_STRINGS=$(get_latest_release IntelRealSense/librealsense) | ||
|
||
function get_latest_release () { | ||
# redirect wget to standard out and grep out the tag_name | ||
wget -qO- https://api.github.com/repos/$1/releases/latest | | ||
grep -Po '"tag_name": "\K.*?(?=")' | ||
} | ||
|
||
if [[ $LIBREALSENSE_VERSION == "" ]] ; then | ||
echo "Getting latest librealsense version number" | ||
LIBREALSENSE_VERSION=$(get_latest_release IntelRealSense/librealsense) | ||
fi | ||
|
||
echo "Build with CUDA: "$USE_CUDA | ||
echo "Librealsense Version: $LIBREALSENSE_VERSION" | ||
|
||
red=`tput setaf 1` | ||
green=`tput setaf 2` | ||
reset=`tput sgr0` | ||
# e.g. echo "${red}The red tail hawk ${green}loves the green grass${reset}" | ||
|
||
|
||
echo "" | ||
echo "Please make sure that no RealSense cameras are currently attached" | ||
echo "" | ||
read -n 1 -s -r -p "Press any key to continue" | ||
echo "" | ||
|
||
if [ ! -d "$LIBREALSENSE_DIRECTORY" ] ; then | ||
# clone librealsense | ||
cd ${HOME} | ||
echo "${green}Cloning librealsense${reset}" | ||
git clone https://github.com/IntelRealSense/librealsense.git | ||
fi | ||
|
||
# Is the version of librealsense current enough? | ||
cd $LIBREALSENSE_DIRECTORY | ||
VERSION_TAG=$(git tag -l $LIBREALSENSE_VERSION) | ||
if [ ! $VERSION_TAG ] ; then | ||
echo "" | ||
tput setaf 1 | ||
echo "==== librealsense Version Mismatch! =============" | ||
tput sgr0 | ||
echo "" | ||
echo "The installed version of librealsense is not current enough for these scripts." | ||
echo "This script needs librealsense tag version: "$LIBREALSENSE_VERSION "but it is not available." | ||
echo "Please upgrade librealsense or remove the librealsense folder before attempting to install again." | ||
echo "" | ||
exit 1 | ||
fi | ||
|
||
# Checkout version the last tested version of librealsense | ||
git checkout $LIBREALSENSE_VERSION | ||
|
||
# Install the dependencies | ||
cd $INSTALL_DIR | ||
sudo ./scripts/installDependencies.sh | ||
|
||
cd $LIBREALSENSE_DIRECTORY | ||
git checkout $LIBREALSENSE_VERSION | ||
|
||
# Now compile librealsense and install | ||
mkdir build | ||
cd build | ||
# Build examples, including graphical ones | ||
echo "${green}Configuring Make system${reset}" | ||
# Build with CUDA (default), the CUDA flag is USE_CUDA, ie -DUSE_CUDA=true | ||
export CUDACXX=$NVCC_PATH | ||
export PATH=${PATH}:/usr/local/cuda/bin | ||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64 | ||
|
||
/usr/bin/cmake ../ -DBUILD_EXAMPLES=true -DFORCE_LIBUVC=ON -DBUILD_WITH_CUDA="$USE_CUDA" -DCMAKE_BUILD_TYPE=release -DBUILD_PYTHON_BINDINGS=bool:true | ||
|
||
# The library will be installed in /usr/local/lib, header files in /usr/local/include | ||
# The demos, tutorials and tests will located in /usr/local/bin. | ||
echo "${green}Building librealsense, headers, tools and demos${reset}" | ||
|
||
# If user didn't set # of jobs and we have > 4GB memory then | ||
# set # of jobs to # of cores-1, otherwise 1 | ||
if [[ $NUM_PROCS == "" ]] ; then | ||
TOTAL_MEMORY=$(free | awk '/Mem\:/ { print $2 }') | ||
if [ $TOTAL_MEMORY -gt 4051048 ] ; then | ||
NUM_CPU=$(nproc) | ||
NUM_PROCS=$(($NUM_CPU - 1)) | ||
else | ||
NUM_PROCS=1 | ||
fi | ||
fi | ||
|
||
time make -j$NUM_PROCS | ||
if [ $? -eq 0 ] ; then | ||
echo "librealsense make successful" | ||
else | ||
# Try to make again; Sometimes there are issues with the build | ||
# because of lack of resources or concurrency issues | ||
echo "librealsense did not build " >&2 | ||
echo "Retrying ... " | ||
# Single thread this time | ||
time make | ||
if [ $? -eq 0 ] ; then | ||
echo "librealsense make successful" | ||
else | ||
# Try to make again | ||
echo "librealsense did not successfully build" >&2 | ||
echo "Please fix issues and retry build" | ||
exit 1 | ||
fi | ||
fi | ||
echo "${green}Installing librealsense, headers, tools and demos${reset}" | ||
sudo make install | ||
|
||
if grep -Fxq 'export PYTHONPATH=$PYTHONPATH:/usr/local/lib' ~/.bashrc ; then | ||
echo "PYTHONPATH already exists in .bashrc file" | ||
else | ||
echo 'export PYTHONPATH=$PYTHONPATH:/usr/local/lib' >> ~/.bashrc | ||
echo "PYTHONPATH added to ~/.bashrc. Pyhon wrapper is now available for importing pyrealsense2" | ||
fi | ||
|
||
cd $LIBREALSENSE_DIRECTORY | ||
echo "${green}Applying udev rules${reset}" | ||
# Copy over the udev rules so that camera can be run from user space | ||
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ | ||
sudo udevadm control --reload-rules && udevadm trigger | ||
|
||
echo "${green}Library Installed${reset}" | ||
echo " " | ||
echo " -----------------------------------------" | ||
echo "The library is installed in /usr/local/lib" | ||
echo "The header files are in /usr/local/include" | ||
echo "The demos and tools are located in /usr/local/bin" | ||
echo " " | ||
echo " -----------------------------------------" | ||
echo " " | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#!/bin/bash | ||
# Installs the Intel Realsense library librealsense on a Jetson Nano Development Kit | ||
# The installation is from a RealSense Debian repository | ||
# Copyright (c) 2016-21 Jetsonhacks | ||
# MIT License | ||
# https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md | ||
# Register the server's public key: | ||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key | ||
|
||
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u | ||
|
||
sudo apt-get install apt-utils -y | ||
sudo apt-get install librealsense2-utils librealsense2-dev -y |