欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > JetsonHacksNano RealSense自动安装脚本文件解析

JetsonHacksNano RealSense自动安装脚本文件解析

2025/6/4 14:02:24 来源:https://blog.csdn.net/qq_30150579/article/details/148238776  浏览:    关键词:JetsonHacksNano RealSense自动安装脚本文件解析

文章目录

  1. #!/bin/bash
    #!/bin/bash 是一个 shebang(也称为 hashbang),它是一个特殊的注释行,用于告诉操作系统使用哪个解释器来运行脚本。在这种情况下,/bin/bash 指定了使用 Bash(Bourne Again SHell)作为脚本的解释器。
  2. $PWD指当前的工作目录,${HOME} 的值通常是用户登录时的默认目录路径。例如:
  • 对于用户 user,${HOME} 的值通常是 /home/user。
  • 对于 root 用户,${HOME} 的值通常是 /root。
  1. function usage ():通常用于定义一个帮助函数,用于显示脚本的使用方法和参数说明
  2. 在这里插入图片描述
  3. 错误处理逻辑,用于检查 getopt 解析命令行参数时是否成功。如果 getopt 返回的退出状态码不是 0,说明参数解析失败,此时脚本会调用 usage 函数来显示帮助信息,并退出。
  4. 在这里插入图片描述
#!/bin/bash
# Builds the Intel Realsense library librealsense on a Jetson Nano Development Kit
# Copyright (c) 2016-21 Jetsonhacks 
# MIT LicenseLIBREALSENSE_DIRECTORY=${HOME}/librealsense
INSTALL_DIR=$PWD
NVCC_PATH=/usr/local/cuda/bin/nvccUSE_CUDA=truefunction 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" ]; thenecho ""usage
fieval set -- "$PARSED_ARGUMENTS"LIBREALSENSE_VERSION=""
USE_CUDA=true
NUM_PROCS=""while :
docase "$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 ]] ; thenecho "Number of jobs must be a positive, whole number"usageelseif [ $NUM_PROCS -eq "0" ]; thenecho "Number of jobs must be a positive, whole number" fifi ;;;-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_namewget -qO- https://api.github.com/repos/$1/releases/latest |grep -Po '"tag_name": "\K.*?(?=")' 
}if [[ $LIBREALSENSE_VERSION == "" ]] ; thenecho "Getting latest librealsense version number"LIBREALSENSE_VERSION=$(get_latest_release IntelRealSense/librealsense)
fiecho "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 ""# 用于检查变量 $LIBREALSENSE_DIRECTORY 指定的路径是否不存在,如果该路径不存在,脚本会进入 then 分支
if [ ! -d "$LIBREALSENSE_DIRECTORY" ] ; then# clone librealsensecd ${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  ] ; thenecho ""tput setaf 1echo "==== librealsense Version Mismatch! ============="tput sgr0echo ""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.shcd $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
# 配置环境变量。通常用于配置 CUDA 的开发环境。这些环境变量确保系统能够找到 CUDA 的编译器、工具链和库文件
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 == "" ]] ; thenTOTAL_MEMORY=$(free | awk '/Mem\:/ { print $2 }')if [ $TOTAL_MEMORY -gt 4051048 ] ; thenNUM_CPU=$(nproc)NUM_PROCS=$(($NUM_CPU - 1))elseNUM_PROCS=1fi
fitime make -j$NUM_PROCS
if [ $? -eq 0 ] ; thenecho "librealsense make successful"
else# Try to make again; Sometimes there are issues with the build# because of lack of resources or concurrency issuesecho "librealsense did not build " >&2echo "Retrying ... "# Single thread this timetime make if [ $? -eq 0 ] ; thenecho "librealsense make successful"else# Try to make againecho "librealsense did not successfully build" >&2echo "Please fix issues and retry build"exit 1fi
fi
echo "${green}Installing librealsense, headers, tools and demos${reset}"
sudo make installif  grep -Fxq 'export PYTHONPATH=$PYTHONPATH:/usr/local/lib' ~/.bashrc ; thenecho "PYTHONPATH already exists in .bashrc file"
elseecho 'export PYTHONPATH=$PYTHONPATH:/usr/local/lib' >> ~/.bashrc echo "PYTHONPATH added to ~/.bashrc. Pyhon wrapper is now available for importing pyrealsense2"
ficd $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 triggerecho "${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 " "

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词