################################################################################ # _____ ______ _____ ______ _____ # # / ___| | ___ \ |_ _| | ___ \ |_ _| # # \ \__ | |_/ / | | | |_/ / | | # # \___ \ | __/ | | | _ | | | # # ____/ / | | _| |_ | | \ \ _| |_ # # \____/ \_| \___/ \_| \_| \___/ # # # ######################## Installer ######################## # Maintainer: webmaster@spirirobotics.com # Last Modified: # Copyright: Spiri Holdings, Inc. # License: # Prerequisites: # - TX2 is flashed with current Spiri kernel # - TX2 is installed with JetPack packages CUDA, cuDNN, TensorRT, TensorFlow # _ TX2 is on a network connected to Internet # This function updates the terminal title. PS1=$ PROMPT_COMMAND= setTitle() { echo -en "\033]0;$1\a" } # Initial Setup setTitle "Initial Setup" cd sudo apt update sudo apt install -y bash-completion command-not-found g++ git htop locate nano screen sudo apt install -y ntp git config --global credential.helper store sudo usermod -a -G dialout $USER sudo usermod -a -G video $USER sudo usermod -a -G tty $USER sudo chmod 666 /dev/ttyTHS2 # Gstreamer setTitle "Installing Gstreamer" sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio # Libraries setTitle "Installing Libraries" cd sudo apt install -y --only-upgrade g++-7 cpp-7 gcc-7 sudo apt install -y build-essential cmake cmake-curses-gui ffmpeg gfortran \ liblapack-dev liblapacke-dev libatlas-base-dev libavcodec-dev \ libavdevice-dev libavformat-dev libavutil-dev libdc1394-22-dev libglew-dev \ libgtk-3-dev libjpeg8-dev libjpeg-turbo8-dev libopenblas-dev \ libopenexr-dev libswscale-dev libtiff5-dev libpng-dev libv4l-dev \ libx264-dev libxine2-dev libxml2-dev libxslt1-dev libxvidcore-dev \ libfreetype6-dev make qt5-default libdc1394-22 v4l-utils libtbb-dev \ libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev \ libgphoto2-dev libhdf5-dev doxygen yasm checkinstall unzip libjpeg-dev \ libpng-dev libtiff-dev libavresample-dev x264 libfaac-dev libmp3lame-dev \ libtheora-dev libvorbis-dev libopencore-amrnb-dev libopencore-amrwb-dev # Python setTitle "Installing Pythons" # Python 2.7 sudo apt install -y python-dev python-numpy python-pip python-py \ python-pytest python-tk # Python 3.6 sudo apt install -y python3-dev python3-numpy python3-pip python3-py \ python3-pytest python3-tk sudo -H pip install future matplotlib sudo apt install -y python-wxgtk3.0 python3-cairocffi # Eigen setTitle "Installing Eigen" cd sudo apt install -y libeigen3-dev setTitle "Building OpenCV with CUDA" cd ~/Downloads/ git clone https://git.spirirobotics.com/Spiri/cuda-Tx2.git cd cuda-Tx2/ sudo ./install.sh cd /usr/include/linux sudo ln -s -f ../libv4l1-videodev.h videodev.h cd sudo apt update sudo apt install -y build-essential cmake gfortran libavutil-dev libeigen3-dev \ libatlas-base-dev libavcodec-dev libavformat-dev libavresample-dev \ libcanberra-gtk3-module libgtk2.0-dev libdc1394-22-dev libglew-dev libgtk-3-dev \ libjpeg-dev libjpeg8-dev libjpeg-turbo8-dev liblapack-dev liblapacke-dev \ libopenblas-dev libpng-dev libpostproc-dev libswscale-dev libtbb-dev libtbb2 \ libtesseract-dev libtiff-dev libv4l-dev libxine2-dev libxvidcore-dev libx264-dev \ pkg-config qtbase5-dev qv4l2 v4l-utils v4l2ucp zlib1g-dev cd ~/Downloads/ git clone https://git.spirirobotics.com/Spiri/OpenCV3.4_TX2_Prebuilt.git cd OpenCV3.4_TX2_Prebuilt sudo ./install.sh #======================================================= # Install ROS Melodic setTitle "Installing ROS Melodic" sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt install -y curl # if you haven't already installed curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install -y ros-melodic-desktop-full source /opt/ros/melodic/setup.bash echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc # Install ROS packages that require OpenCV sudo apt install -y libgtk2.0-dev mkdir -p ~/catkin-ws/src sudo -H pip install empy sudo -H pip3 install empy sudo -H pip install rospkg sudo -H pip3 install rospkg sudo apt install -y python-catkin-tools # Must for catkin build sudo apt install -y python3-pyqt5 #export PKG_CONFIG_PATH=/usr/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}} #========================================================== # Set up Spiri catkin workspace and install camera launch files setTitle "Creating Spiri catkin workspace and installing launch files" sudo apt-get -y install v4l-utils cd ~/catkin-ws/src #catkin_init_workspace git clone https://git.spirirobotics.com/Spiri/jetson_csi_cam.git cd jetson_csi_cam git checkout gscam_nodelet # checkout nodulet branch sudo ./camera_override.sh # copies the ISP file cd .. sudo apt install -y gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev sudo apt install -y ros-melodic-gscam sudo apt install -y ros-melodic-mavros ros-melodic-mavros-extras git clone https://git.spirirobotics.com/Spiri/gpu_stereo_image_proc.git git clone https://git.spirirobotics.com/Spiri/apriltag.git git clone https://git.spirirobotics.com/Spiri/apriltag_ros.git git clone https://git.spirirobotics.com/Spiri/ros_rtsp.git sudo apt install -y libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstrtspserver-1.0-dev git clone https://git.spirirobotics.com/Spiri/mavros_fly.git setTitle "Building Catkin workspace" cd ~/catkin-ws catkin config --extend /opt/ros/melodic catkin build apriltag catkin build apriltag_ros catkin build echo "source ~/catkin-ws/devel/setup.bash" >> ~/.bashrc # TODO Set up VNC # Get requirements for mavros setTitle "Setting up geographic libraries" cd sudo geographiclib-get-geoids egm96-5 sudo geographiclib-get-geoids egm2008-2_5 sudo geographiclib-get-gravity egm2008 sudo geographiclib-get-magnetic emm2017 # Ensure prerequisites are still installed (when/where/how are these being removed?) sudo apt install -y libglew-dev sudo apt install -y ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev # Installing mavros setTitle "installing mavros" cd ~/Downloads git clone https://git.spirirobotics.com/Spiri/mavros.git cd /opt/ros/melodic/share/mavros/launch sudo cp ~/Downloads/mavros/mavros/launch/* . sudo usermod -a -G dialout $USER # Background services setTitle "Setting up Background Services" cd Downloads/ git clone https://git.spirirobotics.com/safy/spiri-services.git cd spiri-services #sudo ./install.sh #git clone https://git.spirirobotics.com/Spiri/spiri-services.git #sudo cp -r ~/Downloads/spiri-services/sbin/. /usr/sbin/ #cd /usr/sbin/ #sudo chmod +x apriltaglaunch #sudo chmod +x camlaunch #sudo chmod +x roslaunch #sudo chmod +x ros_radio_listener #sudo cp -r ~/Downloads/spiri-services/service/. /etc/systemd/system/ #mkdir -p /etc/ros/ #sudo cp ~/Downloads/spiri-services/env.sh /etc/ros/ #cd /etc/ros/ #sudo chmod +x env.sh #sudo systemctl enable --now roslaunch #sudo systemctl enable --now ros_radio_listener #sudo systemctl enable --now roscore #sudo systemctl enable --now apriltag #sudo systemctl enable --now camlaunch cd sbin sudo cp * /usr/sbin/ cd .. cd service sudo cp * /etc/systemd/system/ cd .. mkdir -p /etc/ros/ cp env.sh /etc/ros/ cd /etc/ros/ sudo chmod +x env.sh cd /usr/sbin/ sudo chmod +x mavroslaunch sudo chmod +x ros_radio_listener sudo chmod +x apriltaglaunch sudo chmod +x camlaunch sudo chmod +x gpudisplaunch sudo systemctl enable --now mavroslaunch sudo systemctl enable --now ros_radio_listener sudo systemctl enable --now roscore sudo systemctl enable --now apriltag sudo systemctl enable --now camlaunch sudo systemctl enable --now gpudisplaunch # Disable Auto Updates #sudo sed 's/APT::Periodic::Update-Package-Lists "1";/APT::Periodic::Update-Package-Lists "0";/1' /etc/apt/apt.conf.d/10periodic # Perform Cleanup Operation(s) setTitle "Performing Cleanup" sudo apt-get -y autoremove # Installation Complete setTitle "Installation Complete"