Skip to content

Commit

Permalink
Including setup scripts for realsense SDK.
Browse files Browse the repository at this point in the history
  • Loading branch information
amotaouakkil123 committed Nov 20, 2023
1 parent 8e57796 commit 215a692
Show file tree
Hide file tree
Showing 2 changed files with 211 additions and 0 deletions.
198 changes: 198 additions & 0 deletions .github/SETUP_SCRIPTS/buildLibrealsense.sh
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 " "


13 changes: 13 additions & 0 deletions .github/SETUP_SCRIPTS/installLibrealsense.sh
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

0 comments on commit 215a692

Please sign in to comment.