From ad1af3fced0c8bd806e447fde2be9303bc0b7ad4 Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Sat, 26 Apr 2025 08:55:31 -0400 Subject: [PATCH 1/8] Update jetson scripts for Jetpack6: --- .../canivore-usb-arm64-Jetpack-5-v3.zip | 3 - .../canivore-usb-arm64-Ubuntu-20.04-v3.zip | 3 - scripts/jetson_install/catkin_tools.patch | 16 - .../libnccl-dev_2.7.6-1+cuda10.2_arm64.deb | 3 - .../libnccl2_2.7.6-1+cuda10.2_arm64.deb | 3 - scripts/jetson_install/setup_ROS.sh | 185 ----------- scripts/jetson_install/setup_environment.sh | 286 +++++++++++++----- 7 files changed, 213 insertions(+), 286 deletions(-) delete mode 100644 scripts/jetson_install/canivore-usb-arm64-Jetpack-5-v3.zip delete mode 100644 scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip delete mode 100644 scripts/jetson_install/catkin_tools.patch delete mode 100644 scripts/jetson_install/libnccl-dev_2.7.6-1+cuda10.2_arm64.deb delete mode 100644 scripts/jetson_install/libnccl2_2.7.6-1+cuda10.2_arm64.deb delete mode 100644 scripts/jetson_install/setup_ROS.sh diff --git a/scripts/jetson_install/canivore-usb-arm64-Jetpack-5-v3.zip b/scripts/jetson_install/canivore-usb-arm64-Jetpack-5-v3.zip deleted file mode 100644 index 5bd59d065..000000000 --- a/scripts/jetson_install/canivore-usb-arm64-Jetpack-5-v3.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:886bc4d70afa1d6e518bb50d3ff3d8a8d0c7119b7118de8050b3ab39eb8bbe46 -size 155655 diff --git a/scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip b/scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip deleted file mode 100644 index d256104cb..000000000 --- a/scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4237be2120cec33c28017098ab57b2e0a7cf2fdd9c8340ab7cc66a0d26f553c8 -size 155115 diff --git a/scripts/jetson_install/catkin_tools.patch b/scripts/jetson_install/catkin_tools.patch deleted file mode 100644 index 3e3742919..000000000 --- a/scripts/jetson_install/catkin_tools.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git catkin_tools/execution/executor.py catkin_tools/execution/executor.py -index 70cefd4..47854e5 100644 ---- catkin_tools/execution/executor.py -+++ catkin_tools/execution/executor.py -@@ -344,7 +344,10 @@ def execute_jobs( - new_queued_jobs, pending_jobs = split( - pending_jobs, - lambda j: j.all_deps_completed(completed_jobs)) -- queued_jobs.extend(new_queued_jobs) -+ new_queued_jobs.extend(queued_jobs) -+ -+ # queued jobs should preserve the original topological sort of jobs -+ queued_jobs = [j for j in jobs if j in new_queued_jobs] - - # Notify of newly queued jobs - for queued_job in new_queued_jobs: diff --git a/scripts/jetson_install/libnccl-dev_2.7.6-1+cuda10.2_arm64.deb b/scripts/jetson_install/libnccl-dev_2.7.6-1+cuda10.2_arm64.deb deleted file mode 100644 index 37f82f8fd..000000000 --- a/scripts/jetson_install/libnccl-dev_2.7.6-1+cuda10.2_arm64.deb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ae11750ab4854b77615d0d4fb386b9ce27b4253ad87c6245523558df69493109 -size 2712492 diff --git a/scripts/jetson_install/libnccl2_2.7.6-1+cuda10.2_arm64.deb b/scripts/jetson_install/libnccl2_2.7.6-1+cuda10.2_arm64.deb deleted file mode 100644 index 468d01c46..000000000 --- a/scripts/jetson_install/libnccl2_2.7.6-1+cuda10.2_arm64.deb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8245f40c9080fecb5849061ed2cc7bc726103baffc3e38dee5d8e1071e8f474b -size 2736556 diff --git a/scripts/jetson_install/setup_ROS.sh b/scripts/jetson_install/setup_ROS.sh deleted file mode 100644 index a9c7dcefa..000000000 --- a/scripts/jetson_install/setup_ROS.sh +++ /dev/null @@ -1,185 +0,0 @@ -/bin/bash -# ROS Setup install script for new jetsons -# Source: https://github.com/jetsonhacks/installROSTX1/blob/master/installROS.sh - -# Run me after running through setup_environment.sh -# TODO - any reason not to merge these files? - -# Setup Locale -# sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX -# Setup sources.lst -sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' -# Setup keys -curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - -# Grab new package lists from ros.org -sudo apt update - -# For intel realsense - from apt for x86 laptops, not yet (if ever) available for AARCH64 -# See https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md or our Dockerfile - -# From source for the Jetson -sudo apt install -y git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev ninja-build libcurl4 -cd -mkdir realsense_src -cd realsense_src -wget https://github.com/IntelRealSense/librealsense/archive/v2.50.0.zip -unzip v2.50.0.zip -cd librealsense-2.50.0 -sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ -sudo udevadm control --reload-rules && udevadm trigger -mkdir build -cd build -cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=false -GNinja .. -sudo ninja uninstall && sudo ninja clean && sudo ninja install -cd -sudo rm -rf realsense_src - -sudo ccache -C -sudo ccache -c -sudo rm -rf /home/ubuntu/.cache /home/ubuntu/.ccache - -# Add Individual Packages here -# You can install a specific ROS package (replace underscores with dashes of the package name): -# sudo apt-get install ros-noetic-PACKAGE -# e.g. -# sudo apt-get install ros-noetic-navigation -# -# To find available packages: -# apt-cache search ros-noetic -# -# Keep each package on a separate line to aid in git merging -# Try to keep them in alphabetic order to make it easier to find duplicates - -# Pin stock ubuntu 20.04 opencv (version 4.2.0) instead of jetpack version 4.5.4 -sudo bash -c "echo Package: libopencv >> /etc/apt/preferences.d/libopencv" -sudo bash -c "echo Pin: release a=* >> /etc/apt/preferences.d/libopencv" -sudo bash -c "echo Pin-Priority: -10 >> /etc/apt/preferences.d/libopencv" - -sudo bash -c "echo Package: libopencv-dev >> /etc/apt/preferences.d/libopencv-dev" -sudo bash -c "echo Pin: version 4.2* >> /etc/apt/preferences.d/libopencv-dev" -sudo bash -c "echo Pin-Priority: 1000 >> /etc/apt/preferences.d/libopencv-dev" - -sudo apt purge -y libopencv -sudo apt install -y \ - ros-noetic-ros-base \ - liblua5.3-dev \ - libsuitesparse-dev \ - ninja-build \ - python3-catkin-tools \ - python3-pyqtgraph \ - python3-rosdep \ - python3-rosinstall \ - python3-wstool \ - ros-noetic-actionlib-tools \ - ros-noetic-camera-calibration \ - ros-noetic-controller-manager \ - ros-noetic-control-msgs \ - ros-noetic-cv-bridge \ - ros-noetic-ecl-geometry \ - ros-noetic-grid-map-core \ - ros-noetic-grid-map-cv \ - ros-noetic-grid-map-ros \ - ros-noetic-hardware-interface \ - ros-noetic-image-transport-plugins \ - ros-noetic-imu-filter-madgwick \ - ros-noetic-joint-limits-interface \ - ros-noetic-joint-state-publisher \ - ros-noetic-joy \ - ros-noetic-map-server \ - ros-noetic-marker-msgs \ - ros-noetic-moveit \ - ros-noetic*mux* \ - ros-noetic-navigation \ - ros-noetic-pcl-conversions \ - ros-noetic-robot-localization \ - ros-noetic-robot-state-publisher \ - ros-noetic-rosbridge-suite \ - ros-noetic-roslint \ - ros-noetic-rosparam-shortcuts \ - ros-noetic-rqt \ - ros-noetic-rqt-common-plugins \ - ros-noetic-rqt-controller-manager \ - ros-noetic-rtabmap-ros \ - ros-noetic-rviz \ - ros-noetic-rviz-imu-plugin \ - ros-noetic-serial \ - ros-noetic-teb-local-planner \ - ros-noetic-tf \ - ros-noetic-tf2-ros \ - ros-noetic-tf2-tools \ - ros-noetic-transmission-interface \ - ros-noetic-usb-cam \ - ros-noetic-xacro \ - terminator - -# Patch catkin tools/pkg for faster builds -cd /usr/lib/python3/dist-packages -sudo patch -p0 < ~/900RobotCode/scripts/jetson_install/catkin_pkg.patch -#sudo patch -p0 < ~/900RobotCode/scripts/jetson_install/catkin_tools.patch - -# Fix bug in released version of catkin_tools - TODO check me -#sudo sed -i 's/ errno.EINTR/ errno.EINTR and e.errno != errno.EAGAIN/' /usr/lib/python2.7/dist-packages/catkin_tools/execution/job_server.py - - -# Install gazebo sim - commented out because we don't -# want/need it taking up space on the Jetson -#curl -sSL http://get.gazebosim.org | sh -# sudo apt install -y \ -# ros-noetic-gazebo-ros-control \ -# ros-noetic-gazebo-ros-pkgs \ - -# Not for noetic - ros-noetic-hector-slam ros-noetic-hector-slam-launch ros-noetic-gmapping -# handled by wstool for now ros-noetic-teraranger-* - -# Initialize rosdep -# ssl certificates can get messed up on TX1 for some reason -sudo c_rehash /etc/ssl/certs -# Initialize rosdep -sudo rosdep init -# To find available packages, use: -rosdep update - -cd ~/900RobotCode/zebROS_ws/src -#wstool init -#cd .. - -# These should all be merged in the GIT repo version -# of the code. Check 900RobotCode/zebROS_ws/src/.rosinstall to -# verify. Leaving the commands here just in case we need to recreate -# a workspace elsewhere - -# Google Cartographer installation forked from https://google-cartographer-ros.readthedocs.io/en/latest/ -# Merge the cartographer_ros.rosinstall file and fetch code for dependencies. -#wstool merge https://raw.githubusercontent.com/FRC900/cartographer_ros/master/cartographer_ros.rosinstall - -# Code to use joystick to control robot -#wstool merge https://raw.githubusercontent.com/FRC900/teleop_twist_joy/indigo-devel/teleop_twist_joy.rosinstall - -# Merge ZED wrapper -#wstool merge https://raw.githubusercontent.com/FRC900/zed-ros-wrapper/master/zed_ros_wrapper.rosinstall - -# Boilerplate control code -#wstool merge https://raw.githubusercontent.com/FRC900/steered_wheel_base_controller/master/steered_wheel_base_controller.rosinstall -#wstool merge https://raw.githubusercontent.com/FRC900/ros_control_boilerplate/noetic-devel/ros_control_boilerplate.rosinstall - -# LIDAR driver -#wstool merge https://raw.githubusercontent.com/FRC900/rplidar_ros/master/rplidar.rosinstall - -# Pull latest version of merged repos -wstool update -j 4 - -# Install deb dependencies. -# The command 'sudo rosdep init' will print an error if you have already -# executed it since installing ROS. This error can be ignored. -rosdep update -rosdep install --from-paths . --ignore-src --rosdistro=noetic -y - -#source /opt/ros/noetic/setup.bash - -#cd ~/900RobotCode/zebROS_ws -#catkin_make - - -sudo apt clean -sudo apt autoclean -sudo apt clean diff --git a/scripts/jetson_install/setup_environment.sh b/scripts/jetson_install/setup_environment.sh index 885c7c98e..cfaffd623 100644 --- a/scripts/jetson_install/setup_environment.sh +++ b/scripts/jetson_install/setup_environment.sh @@ -1,9 +1,8 @@ -# Script to setup Jetson Xavier NX environment. Probably would also work +# Script to setup Jetson Orin NX environment. Probably would also work # with slight modifications on other Jetson hardware #install basic dependencies sudo apt-add-repository ppa:ubuntu-toolchain-r/test -y -sudo apt-add-repository ppa:borglab/gtsam-release-4.1 -y sudo apt update # Keep these the original version to line up with kernel versions supported by arducam? @@ -13,6 +12,10 @@ sudo apt -y upgrade # These are listed 1 package per line to hopefully make git merging easier # They're also sorted alphabetically to keep packages from being listed multiple times + + # libclang1-9 \ + # libgtsam-dev \ + # libgtsam-unstable-dev \ sudo apt install -y \ build-essential \ can-utils \ @@ -23,12 +26,11 @@ sudo apt install -y \ cowsay \ dbus-x11 \ exfat-fuse \ - exfat-utils \ - gcc-10 \ gcc-11 \ + gcc-12 \ gcc-13 \ - g++-10 \ g++-11 \ + g++-12 \ g++-13 \ gdb \ gfortran \ @@ -43,12 +45,9 @@ sudo apt install -y \ libcanberra-gtk-module \ libcanberra-gtk3-module \ libclang-12-dev \ - libclang1-9 \ libeigen3-dev \ libflann-dev \ libgflags-dev \ - libgtsam-dev \ - libgtsam-unstable-dev \ libgoogle-glog-dev \ libgoogle-perftools-dev \ libgmock-dev \ @@ -101,25 +100,23 @@ sudo apt install -y \ zlib1g-dev \ zstd -# gcc-11 fails on CUDA code, so we need to use gcc-10 for now -# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11 --slave /usr/bin/g++ g++ /usr/bin/g++-11 -sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 -sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 --slave /usr/bin/g++ g++ /usr/bin/g++-13 +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120 --slave /usr/bin/g++ g++ /usr/bin/g++-12 +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 sudo update-alternatives --auto gcc #TensorRT requires a newer version of cmake than standard apt repos provide # TODO - we don't use TensorRT anymore, so this can probably be removed -cd -#wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null -wget https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0.tar.gz -tar -xf cmake-3.27.0.tar.gz -cd cmake-3.27.0 -cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release . -sudo ninja install -sudo mv /usr/bin/cmake /usr/bin/cmake.old -sudo ln -s /usr/local/bin/cmake /usr/bin/cmake -cd .. -sudo rm -rf cmake-3.27.0* +# cd +# wget https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0.tar.gz +# tar -xf cmake-3.27.0.tar.gz +# cd cmake-3.27.0 +# cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release . +# sudo ninja install +# sudo mv /usr/bin/cmake /usr/bin/cmake.old +# sudo ln -s /usr/local/bin/cmake /usr/bin/cmake +# cd .. +# sudo rm -rf cmake-3.27.0* # Install tinyxml2 cd @@ -133,14 +130,13 @@ cd ../.. sudo rm -rf tinyxml2 #install zed sdk -wget --no-check-certificate https://download.stereolabs.com/zedsdk/4.2/l4t35.4/jetsons +wget --no-check-certificate https://download.stereolabs.com/zedsdk/5.0/l4t36.4/jetsons chmod 755 jetsons ./jetsons rm ./jetsons rm -rf /home/ubuntu/.local/lib/python3.8/site-packages/numpy -#mount and setup autostart script -sudo mkdir /mnt/900_2 +# Grab repo to make it easier to copy files from there to the Jetson cd git clone https://github.com/FRC900/900RobotCode.git cd ~/900RobotCode @@ -154,20 +150,20 @@ cd ~/900RobotCode #echo " down /sbin/ifconfig can0 down" >> can0 #sudo mv can0 /etc/network/interfaces.d -# sudo curl -s --compressed -o /usr/share/keyrings/ctr-pubkey.gpg "https://deb.ctr-electronics.com/ctr-pubkey.gpg" -# sudo curl -s --compressed -o /etc/apt/sources.list.d/ctr.list "https://deb.ctr-electronics.com/ctr.list" -# sudo curl -s --compressed -o /etc/apt/sources.list.d/ctr2024.list "https://deb.ctr-electronics.com/ctr2024.list" -# sudo sed -i -e 's/tools stable main/tools jetson main/' /etc/apt/sources.list.d/ctr2024.list +sudo curl -s --compressed -o /usr/share/keyrings/ctr-pubkey.gpg "https://deb.ctr-electronics.com/ctr-pubkey.gpg" +sudo curl -s --compressed -o /etc/apt/sources.list.d/ctr.list "https://deb.ctr-electronics.com/ctr.list" +sudo curl -s --compressed -o /etc/apt/sources.list.d/ctr2024.list "https://deb.ctr-electronics.com/ctr2024.list" +sudo sed -i -e 's/tools stable main/tools jetson main/' /etc/apt/sources.list.d/ctr2024.list sudo apt remove linux-headers-generic linux-headers-5.4.0-* linux-headers-5.4.0-*-generic sudo apt update sudo apt install -y dkms -#sudo apt install -y canivore-usb -cd /tmp -unzip /home/ubuntu/900RobotCode/scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip -sudo dpkg -i canivore-usb-kernel_1.13_arm64.deb -sudo dpkg -i canivore-usb_1.13_arm64.deb -sudo apt-mark hold canivore-usb canivore-usb-kernel +sudo apt install -y canivore-usb +# cd /tmp +# unzip /home/ubuntu/900RobotCode/scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip +# sudo dpkg -i canivore-usb-kernel_1.13_arm64.deb +# sudo dpkg -i canivore-usb_1.13_arm64.deb +# sudo apt-mark hold canivore-usb canivore-usb-kernel # Re-enable if we want to use a canivore usb interface # sudo bash -c "echo \"[Match\"] >> /etc/systemd/network/80-can.network" @@ -314,7 +310,7 @@ sudo cp ~/900RobotCode/scripts/jetson_install/calibration_files/*.conf /usr/loca sudo chmod 644 /usr/local/zed/settings/* cp ~/900RobotCode/.vimrc ~/900RobotCode/.gvimrc ~ -sudo cp ~/900RobotCode/kjaget.vim /usr/share/vim/vim81/colors +sudo cp ~/900RobotCode/kjaget.vim /usr/share/vim/vim82/colors git config --global user.email "progammers@team900.org" git config --global user.name "Team900 Jetson NX" @@ -327,17 +323,6 @@ sudo ln -s /usr/include/opencv4 /usr/include/opencv echo "source /home/ubuntu/900RobotCode/zebROS_ws/command_aliases.sh" >> /home/ubuntu/.bashrc -# Install make 4.3 (>4.2 is required for -flto=jobserver support -cd -wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz -tar -xf make-4.3.tar.gz -mkdir make-4.3/build -cd make-4.3/build -../configure --prefix=/usr -sudo make -j`nproc --all` install -cd -sudo rm -rf make-4.3* - # Give the ubuntu user dialout permission, which is used by the ADI IMU sudo adduser ubuntu dialout @@ -370,38 +355,26 @@ sudo python3 -m pip install --no-cache-dir --upgrade psutil sudo python3 -m pip install --no-cache-dir --upgrade 'onnx>=1.12' sudo python3 -m pip install --no-cache-dir --upgrade 'onnxsim>=0.4.1' -wget https://nvidia.box.com/shared/static/mvdcltm9ewdy2d5nurkiqorofz1s53ww.whl -O onnxruntime_gpu-1-15.0-cp38-cp38-linux_aarch64.whl -sudo pip3 install onnxruntime_gpu-1-15.0-cp38-cp38-linux_aarch64.whl -rm onnxruntime_gpu-1-15.0-cp38-cp38-linux_aarch64.whl +wget https://nvidia.box.com/shared/static/6l0u97rj80ifwkk8rqbzj1try89fk26z.whl -O onnxruntime_gpu-1-19.0-cp310-cp310-linux_aarch64.whl +wget https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/869/e41abdc35e093/onnxruntime_gpu-1.22.0-cp310-cp310-linux_aarch64.whl#sha256=869e41abdc35e09345876f047fce49267d699df3e44b67c2518b0469739484ff + +sudo pip3 install onnxruntime_gpu-1-22.0-cp310-cp310-linux_aarch64.whl +rm onnxruntime_gpu-1-22.0-cp310-cp310-linux_aarch64.whl # cpu-only version : sudo python3 -m pip install --no-cache-dir --upgrade 'onnxruntime' -# not available sudo python3 -m pip install --no-cache-dir --upgrade onnxruntime-gpu #sudo python3 -m pip install --no-cache-dir --upgrade nvidia-pyindex #sudo python3 -m pip install --no-cache-dir --upgrade nvidia-tensorrt -#export PYTORCH_URL=https://nvidia.box.com/shared/static/rehpfc4dwsxuhpv4jgqv8u6rzpgb64bq.whl -#export PYTORCH_WHL=torch-2.0.0a0+ec3941ad.nv23.2-cp38-cp38-linux_aarch64.whl -export PYTORCH_URL=https://nvidia.box.com/shared/static/i8pukc49h3lhak4kkn67tg9j4goqm0m7.whl -export PYTORCH_WHL=torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl - sudo apt-get install -y libopenblas-base libopenmpi-dev -wget --quiet --show-progress --progress=bar:force:noscroll --no-check-certificate ${PYTORCH_URL} -O ${PYTORCH_WHL} -sudo pip3 install --no-cache-dir --verbose ${PYTORCH_WHL} -rm ${PYTORCH_WHL} - - -export TORCHVISION_VERSION=0.15 -export TORCH_CUDA_ARCH_LIST="7.2;8.7" -sudo apt install -y libjpeg-dev libpng-dev zlib1g-dev -git clone --branch release/${TORCHVISION_VERSION} --recursive --depth=1 https://github.com/pytorch/vision torchvision -cd torchvision -git checkout release/${TORCHVISION_VERSION} -sudo python3 setup.py install -cd .. -sudo rm -rf torchvision +wget https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/6ef/f643c0a7acda9/torch-2.7.0-cp310-cp310-linux_aarch64.whl#sha256=6eff643c0a7acda92734cc798338f733ff35c7df1a4434576f5ff7c66fc97319 +rm torch-2.7.0-cp310-cp310-linux_aarch64.whl + +wget https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/daa/bff3a07259968/torchvision-0.22.0-cp310-cp310-linux_aarch64.whl#sha256=daabff3a0725996886b92e4b5dd143f5750ef4b181b5c7d01371a9185e8f0402 +sudo pip3 install torchvision-0.22.0-cp310-cp310-linux_aarch64.whl sudo python3 -m pip install --no-cache-dir --upgrade 'pytorch_pfn_extras' sudo python3 -m pip install --no-cache-dir --upgrade ultralytics + cd /home/ubuntu git clone https://github.com/triple-Mu/YOLOv8-TensorRT.git # End of ultralytics YOLOv8 deps @@ -425,11 +398,9 @@ sudo rm -rf /home/ubuntu/.cache /home/ubuntu/.ccache sudo pip3 install pyserial sudo pip3 install cupy-cuda11x -# TODO - figure out a real fix for the build error in newer commits cd /home/ubuntu &&\ git clone https://github.com/abseil/abseil-cpp.git &&\ cd abseil-cpp &&\ - git checkout a3f7e9866c67ca090995aa638276b8fd8938c6f3 &&\ mkdir build &&\ cd build &&\ cmake -DABSL_BUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DABSL_USE_GOOGLETEST_HEAD=ON -DCMAKE_CXX_STANDARD=17 -GNinja .. &&\ @@ -445,3 +416,172 @@ cd ~ wget https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh chmod +x install_full.sh ./install_full.sh -m arducam + +# Install gtsam - tagslam prereq +cd /home/ubuntu &&\ + git clone https://github.com/borglab/gtsam.git &&\ + cd gtsam &&\ + git checkout release/4.2 &&\ + mkdir build &&\ + cd build &&\ + cmake -DCMAKE_BUILD_TYPE=Release -DGTSAM_WITH_TBB=ON -DGTSAM_USE_SYSTEM_EIGEN=ON -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -GNinja .. &&\ + ninja &&\ + sudo ninja install &&\ + cd /home/ubuntu &&\ + sudo rm -rf gtsam + + +### ROS setup +sudo sh -c "echo 'deb [arch=arm64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg' >> /etc/apt/sources.list.d/robotpkg.list" +sudo apt update +sudo apt install -y \ + nlohmann-json3-dev \ + libompl-dev \ + libturbojpeg0-dev \ + ompl-demos \ + python3-rosdistro \ + python3-rosinstall \ + python3-rosinstall-generator +sudo python3 -m pip install --no-cache-dir "catkin-pkg==1.0.0" "catkin-tools==0.9.5" rosdep roslibpy vcstool vcstools &&\ +cd /usr/lib/python3/dist-packages/ +sudo patch -p0 < /home/ubuntu/900RobotCode/scripts/jetson_install/catkin_pkg.patch + +sudo rosdep init +rosdep update + +mkdir ~/ros_catkin_ws +cd ~/ros_catkin_ws +mkdir src +sudo apt update + +# TODO - do we need rqt on the Jetson? +rosinstall_generator \ + apriltag \ + apriltag_ros \ + camera_calibration \ + controller_manager \ + control_msgs \ + cv_bridge \ + ecl_geometry \ + hardware_interface \ + image_pipeline \ + image_transport_plugins \ + imu_filter_madgwick \ + joint_limits_interface \ + joint_state_publisher \ + joint_state_publisher_gui \ + joy \ + map_server \ + marker_msgs \ + moveit \ + navigation \ + pcl_conversions \ + pcl_ros \ + robot_localization \ + robot_state_publisher \ + ros_base \ + ros_type_introspection \ + rosbridge_suite \ + roslint \ + rosparam_shortcuts \ + rospy_message_converter \ + rqt \ + rqt_common_plugins \ + rqt_controller_manager \ + rqt_tf_tree \ + rosserial \ + serial \ + smach \ + smach_ros \ + tf \ + tf2_ros \ + tf2_tools \ + transmission_interface \ + turtlesim \ + twist_mux \ + twist_mux_msgs \ + usb_cam \ + xacro \ + --rosdistro noetic --deps --tar > .rosinstall +grep -n -A2 -B1 rosconsole$ .rosinstall | sed -n 's/^\([0-9]\{1,\}\).*/\1d/p' | sed -i -f - .rosinstall +echo '- git:' >> .rosinstall +echo ' local-name: rosconsole' >> .rosinstall +echo ' uri: https://github.com/ros-o/rosconsole' >> .rosinstall +vcs import --input .rosinstall ./src +sed -i -e 's/python3-catkin-pkg-modules/python3-catkin-pkg/' src/rospack/package.xml +sed -i -e 's$python3-rosdep-modules$$' src/rospack/package.xml +sed -i -e 's/python3-rospkg-modules/python3-rospkg/' src/rqt/rqt_gui/package.xml +sed -i -e 's/set(CMAKE_CXX_STANDARD 14)/set(CMAKE_CXX_STANDARD 20)/' src/robot_localization/CMakeLists.txt +sed -i -e 's/set(CMAKE_CXX_STANDARD 14)/set(CMAKE_CXX_STANDARD 20)/' src/urdf/urdf/CMakeLists.txt +sed -i -e 's/add_compile_options(-std=c++14)/add_compile_options(-std=c++20)/' src/rosparam_shortcuts/CMakeLists.txt +sed -i -e 's/add_compile_options(-std=c++11)/add_compile_options(-std=c++20)/' src/rqt_image_view/CMakeLists.txt +sed -i -e 's/add_compile_options(-std=c++11)/add_compile_options(-std=c++20)/' src/geometry/tf/CMakeLists.txt +sed -i -e 's/add_compile_options(-std=c++14)/add_compile_options(-std=c++20)/' src/perception_pcl/pcl_ros/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/resource_retriever/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/sophus/CMakeLists.txt +sed -i -e 's/option(BUILD_TESTS "Build tests." ON/option(BUILD_TESTS "Build tests." OFF)/' src/sophus/CMakeLists.txt +sed -i -e 's/option(BUILD_EXAMPLES "Build tests." ON/option(BUILD_EXAMPLES "Build tests." OFF)/' src/sophus/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/rosparam_shortcuts/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/robot_state_publisher/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/roscpp_core/rostime/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/g' src/pluginlib/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/geometry/tf/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/geometric_shapes/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/fcl/CMakeLists.txt +sed -i -e 's/-std=c++11/-std=c++20/' src/ros_type_introspection/CMakeLists.txt +sed -i -e 's/set(CMAKE_CXX_STANDARD 14)/set(CMAKE_CXX_STANDARD 20)/' src/class_loader/CMakeLists.txt +sed -i -e 's/set(CMAKE_CXX_STANDARD 14)/set(CMAKE_CXX_STANDARD 20)/' src/kdl_parser/kdl_parser/CMakeLists.txt +sed -i -e 's/project(laser_geometry)/project(laser_geometry)\nset(CMAKE_CXX_STANDARD 17)/' src/laser_geometry/CMakeLists.txt +sed -i -e 's/set(CMAKE_CXX_STANDARD 11)/set(CMAKE_CXX_STANDARD 20)/' src/sophus/CMakeLists.txt +sed -i -e 's/set(CMAKE_CXX_STANDARD 11)/set(CMAKE_CXX_STANDARD 20)/' src/joystick_drivers/joy/CMakeLists.txt +sed -i -e 's/set(CMAKE_CXX_STANDARD 14)/set(CMAKE_CXX_STANDARD 20)/' src/perception_pcl/pcl_ros/CMakeLists.txt +sed -i -e 's/${avcodec_LIBRARIES}/${avcodec_LIBRARIES} ${avutil_LIBRARIES}/' src/usb_cam/CMakeLists.txt +sed -i -e 's/pkg_check_modules(avcodec libavcodec REQUIRED)/pkg_check_modules(avcodec libavcodec REQUIRED)\npkg_check_modules(avutil libavutil REQUIRED)/' src/usb_cam/CMakeLists.txt +sed -i -e 's/project(rviz)/project(rviz)\nunset(CMAKE_CXX_STANDARD)\nset(CMAKE_CXX_STANDARD 17)/' src/rviz/CMakeLists.txt +sed -i -e 's/project(gazebo_ros)/project(gazebo_ros)\nunset(CMAKE_CXX_STANDARD)\nset(CMAKE_CXX_STANDARD 17)/' src/gazebo_ros_pkgs/gazebo_ros/CMakeLists.txt +sed -i -e 's/project(gazebo_plugins)/project(gazebo_plugins)\nunset(CMAKE_CXX_STANDARD)\nset(CMAKE_CXX_STANDARD 17)/' src/gazebo_ros_pkgs/gazebo_plugins/CMakeLists.txt +sed -i -e 's/project(gazebo_ros_control)/project(gazebo_ros_control)\nunset(CMAKE_CXX_STANDARD)\nset(CMAKE_CXX_STANDARD 17)/' src/gazebo_ros_pkgs/gazebo_ros_control/CMakeLists.txt +sed -i -e 's/project(rviz_imu_plugin)/project(rviz_imu_plugin)\nunset(CMAKE_CXX_STANDARD)\nset(CMAKE_CXX_STANDARD 17)/' src/imu_tools/rviz_imu_plugin/CMakeLists.txt +sed -i -e 's/OcTreeBase(double res) : OcTreeBaseImpl(res) {};/OcTreeBase(double res) : OcTreeBaseImpl(res) {};/' src/octomap/octomap/include/octomap/OcTreeBase.h +sed -i -e 's/operator == (const ScanNode\& other)/operator == (const ScanNode\& other) const/' src/octomap/octomap/include/octomap/ScanGraph.h +sed -i -e 's/operator == (const ScanEdge\& other)/operator == (const ScanEdge\& other) const/' src/octomap/octomap/include/octomap/ScanGraph.h +sed -i -e 's/SphereSpecification(S radius_, const Vector3\& center_)/SphereSpecification(S radius_, const Vector3\& center_)/' src/fcl/test/narrowphase/detail/convexity_based_algorithm/test_gjk_libccd-inl_signed_distance.cpp +sed -i -e 's/project(moveit_kinematics)/project(moveit_kinematics)\nset(CMAKE_CXX_STANDARD 17)/' src/moveit/moveit_kinematics/CMakeLists.txt +sed -i -e 's/project(moveit_ros_visualization)/project(moveit_ros_visualization)\nset(CMAKE_CXX_STANDARD 17)/' src/moveit/moveit_ros_visualization/CMakeLists.txt +sed -i -e 's/project(moveit_setup_assistant)/project(moveit_setup_assistant)\nset(CMAKE_CXX_STANDARD 17)/' src/moveit/moveit_setup_assistant/CMakeLists.txt +sed -i -e 's/PlanningContextBase(const std::string\& name, const std::string\& group/PlanningContextBase(const std::string\& name, const std::string\& group/' src/moveit/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/planning_context_base.h +sed -i -e 's/#if span_CPP11_OR_GREATER && span_FEATURE( BYTE_SPAN ) \&\& ( span_HAVE( BYTE ) || span_HAVE( NONSTD_BYTE ) )/#if 0/' src/ros_type_introspection/include/ros_type_introspection/utils/span.hpp +sed -i -e 's/python/python3/' ~/ros_catkin_ws/src/gazebo_ros_pkgs/gazebo_plugins/cfg/*.cfg +cd ./src/roscpp_core/roscpp_serialization/include/ros +rm serialization.h +wget https://raw.githubusercontent.com/ros/roscpp_core/72ce04f8b2849e0e4587ea4d598be6ec5d24d8ca/roscpp_serialization/include/ros/serialization.h +cd ../../../../.. +rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro noetic -y +rosdep update +sed -i 's/${OMPL_LIBRARIES}/\/usr\/lib\/aarch64-linux-gnu\/libompl.so/' ./src/moveit/moveit_planners_ompl/ompl_interface/CMakeLists.txt +sudo cp -r /usr/include/ompl-1.5/ompl/ /usr/include/ompl/ +cd src +rm -rf realtime_tools +git clone -b fix_non_realtime https://github.com/FRC900/realtime_tools +cd .. +catkin config --install --install-space /opt/ros/noetic -DSETUPTOOLS_DEB_LAYOUT=OFF -DPYTHON_EXECUTABLE=/usr/bin/python3 + +sudo bash +catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DPYTHON_EXECUTABLE=/usr/bin/python3 catkin +export PATH=/opt/openrobots/bin:$PATH +export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH +export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH +export CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH +export PYTHONPATH=/opt/openrobots/lib/python3.10/site-packages:$PYTHONPATH +export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/lib/python3.10/dist-packages +export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/lib/python3.10/site-packages +export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/local/lib/python3.10/dist-packages +export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/local/lib/python3.10/site-packages +devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 dynamic_reconfigure +cp -r /opt/ros/noetic/lib/python3.10/site-packages/dynamic_reconfigure/* /opt/ros/noetic/local/lib/python3.10/dist-packages/dynamic_reconfigure +# Build this with a lower number of jobs to prevent running out of memory +devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 -j2 eigenpy +devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 +rsync -avz /opt/ros/noetic/lib/python3.10/site-packages/ /opt/ros/noetic/local/lib/python3.10/dist-packages/ +### Be sure to exit sudo here + From 8cd570d839e1a824b78981cca16decc7b6d42b37 Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Sat, 26 Apr 2025 09:54:44 -0400 Subject: [PATCH 2/8] Fix sed scripting for sophus CMakeLists.txt fix --- scripts/jetson_install/setup_environment.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/jetson_install/setup_environment.sh b/scripts/jetson_install/setup_environment.sh index cfaffd623..f40ee426d 100644 --- a/scripts/jetson_install/setup_environment.sh +++ b/scripts/jetson_install/setup_environment.sh @@ -519,8 +519,8 @@ sed -i -e 's/add_compile_options(-std=c++11)/add_compile_options(-std=c++20)/' s sed -i -e 's/add_compile_options(-std=c++14)/add_compile_options(-std=c++20)/' src/perception_pcl/pcl_ros/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/resource_retriever/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/sophus/CMakeLists.txt -sed -i -e 's/option(BUILD_TESTS "Build tests." ON/option(BUILD_TESTS "Build tests." OFF)/' src/sophus/CMakeLists.txt -sed -i -e 's/option(BUILD_EXAMPLES "Build tests." ON/option(BUILD_EXAMPLES "Build tests." OFF)/' src/sophus/CMakeLists.txt +sed -i -e 's/option(BUILD_TESTS "Build tests." ON)/option(BUILD_TESTS "Build tests." OFF)/' src/sophus/CMakeLists.txt +sed -i -e 's/option(BUILD_EXAMPLES "Build tests." ON)/option(BUILD_EXAMPLES "Build tests." OFF)/' src/sophus/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/rosparam_shortcuts/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/robot_state_publisher/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/roscpp_core/rostime/CMakeLists.txt From 6ed345d2a942b879989d092a9c106683d4cdb971 Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Sat, 26 Apr 2025 09:57:45 -0400 Subject: [PATCH 3/8] Fix sed scripting for sophus CMakeLists.txt fix, once more, with feeling --- scripts/jetson_install/setup_environment.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/jetson_install/setup_environment.sh b/scripts/jetson_install/setup_environment.sh index f40ee426d..253a7da14 100644 --- a/scripts/jetson_install/setup_environment.sh +++ b/scripts/jetson_install/setup_environment.sh @@ -520,7 +520,7 @@ sed -i -e 's/add_compile_options(-std=c++14)/add_compile_options(-std=c++20)/' s sed -i -e 's/-std=c++11/-std=c++20/' src/resource_retriever/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/sophus/CMakeLists.txt sed -i -e 's/option(BUILD_TESTS "Build tests." ON)/option(BUILD_TESTS "Build tests." OFF)/' src/sophus/CMakeLists.txt -sed -i -e 's/option(BUILD_EXAMPLES "Build tests." ON)/option(BUILD_EXAMPLES "Build tests." OFF)/' src/sophus/CMakeLists.txt +sed -i -e 's/option(BUILD_EXAMPLES "Build examples." ON)/option(BUILD_EXAMPLES "Build examples." OFF)/' src/sophus/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/rosparam_shortcuts/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/robot_state_publisher/CMakeLists.txt sed -i -e 's/-std=c++11/-std=c++20/' src/roscpp_core/rostime/CMakeLists.txt From 08f682a679077287306933799a7ee2cb0d7b585d Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Mon, 21 Jul 2025 15:12:28 -0400 Subject: [PATCH 4/8] More updates for Jetpack 6 build fallout --- docker/docker-run | 2 +- docker/docker-run-2 | 2 +- docker/docker-run-gpu | 2 +- docker/docker-run-mac | 2 +- docker/macDockerRun.sh | 2 +- scripts/jetson_install/setup_environment.sh | 5 +- .../setup_environment_xavier.sh | 447 ++++++++++++++++++ scripts/jetson_install/tensorrt.patch | 89 ---- zebROS_ws/create_ros_packages.sh | 2 +- zebROS_ws/rosinstallgenerator.sh | 3 - zebROS_ws/src/.rosinstall | 18 - zebROS_ws/src/cmake_modules/CMakeOpt.cmake | 2 +- zebROS_ws/src/gpu_apriltag/CMakeLists.txt | 4 +- .../ros_control_boilerplate/ctre_v5_device.h | 1 - .../src/ctre_v5_device.cpp | 1 + 15 files changed, 461 insertions(+), 121 deletions(-) create mode 100644 scripts/jetson_install/setup_environment_xavier.sh delete mode 100644 scripts/jetson_install/tensorrt.patch delete mode 100755 zebROS_ws/rosinstallgenerator.sh diff --git a/docker/docker-run b/docker/docker-run index 38a014ab1..1f361f5df 100755 --- a/docker/docker-run +++ b/docker/docker-run @@ -11,4 +11,4 @@ docker run "$@" -it --net=host -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME/tensorflow_workspace:/home/ubuntu/.tensorflow_workspace.readonly \ --ipc=host \ --shm-size=8G \ - -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --privileged --user ubuntu frc900/zebros-2025-dev:latest /bin/bash + -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --privileged --user ubuntu frc900/zebros-2026-dev:latest /bin/bash diff --git a/docker/docker-run-2 b/docker/docker-run-2 index 16a735c5e..5fcfe9933 100755 --- a/docker/docker-run-2 +++ b/docker/docker-run-2 @@ -12,4 +12,4 @@ docker run "$@" -it --net=host -v /tmp/.X11-unix:/tmp/.X11-unix \ --ipc=host \ -v /mnt/hgfs/Zebracorns:/mnt/hgfs/Zebracorns \ --shm-size=8G \ - -e DISPLAY=$DISPLAY --privileged --user ubuntu frc900/zebros-2025-dev:latest /bin/bash + -e DISPLAY=$DISPLAY --privileged --user ubuntu frc900/zebros-2026-dev:latest /bin/bash diff --git a/docker/docker-run-gpu b/docker/docker-run-gpu index 908bcdfca..35ff6652d 100755 --- a/docker/docker-run-gpu +++ b/docker/docker-run-gpu @@ -12,4 +12,4 @@ docker run "$@" -it --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix \ --ipc=host \ -v /dev:/dev --privileged \ --shm-size=8G \ - -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --user ubuntu frc900/zebros-2025-dev:latest /bin/bash + -e DISPLAY=$DISPLAY -e NVIDIA_DRIVER_CAPABILITIES=all --user ubuntu frc900/zebros-2026-dev:latest /bin/bash diff --git a/docker/docker-run-mac b/docker/docker-run-mac index 0dd43cf67..f1e4e4647 100755 --- a/docker/docker-run-mac +++ b/docker/docker-run-mac @@ -11,4 +11,4 @@ docker run "$@" -it --net=host -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME/tensorflow_workspace:/home/ubuntu/.tensorflow_workspace.readonly \ --ipc=host \ --shm-size=8G \ - -e DISPLAY=host.docker.internal:0 -e NVIDIA_DRIVER_CAPABILITIES=all --privileged --user ubuntu frc900/zebros-2025-dev:latest /bin/bash + -e DISPLAY=host.docker.internal:0 -e NVIDIA_DRIVER_CAPABILITIES=all --privileged --user ubuntu frc900/zebros-2026-dev:latest /bin/bash diff --git a/docker/macDockerRun.sh b/docker/macDockerRun.sh index 9758bd133..cb689122f 100755 --- a/docker/macDockerRun.sh +++ b/docker/macDockerRun.sh @@ -1,3 +1,3 @@ ip=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}') docker run -it --privileged -v /tmp/.X11-unix:/tmp/.X11-unix --net=host \ --v $(pwd)/../../other:/home/ubuntu/other -v $(pwd)/..:/home/ubuntu/900RobotCode -e DISPLAY=$ip:0 --user ubuntu frc900/zebros-2025-dev:latest /bin/bash +-v $(pwd)/../../other:/home/ubuntu/other -v $(pwd)/..:/home/ubuntu/900RobotCode -e DISPLAY=$ip:0 --user ubuntu frc900/zebros-2026-dev:latest /bin/bash diff --git a/scripts/jetson_install/setup_environment.sh b/scripts/jetson_install/setup_environment.sh index 253a7da14..40172d1a6 100644 --- a/scripts/jetson_install/setup_environment.sh +++ b/scripts/jetson_install/setup_environment.sh @@ -461,6 +461,7 @@ rosinstall_generator \ camera_calibration \ controller_manager \ control_msgs \ + control_toolbox \ cv_bridge \ ecl_geometry \ hardware_interface \ @@ -560,7 +561,9 @@ rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro noet rosdep update sed -i 's/${OMPL_LIBRARIES}/\/usr\/lib\/aarch64-linux-gnu\/libompl.so/' ./src/moveit/moveit_planners_ompl/ompl_interface/CMakeLists.txt sudo cp -r /usr/include/ompl-1.5/ompl/ /usr/include/ompl/ -cd src +cd src +rm -rf actionlib +git clone -b noetic-devel https://github.com/FRC900/actionlib.git rm -rf realtime_tools git clone -b fix_non_realtime https://github.com/FRC900/realtime_tools cd .. diff --git a/scripts/jetson_install/setup_environment_xavier.sh b/scripts/jetson_install/setup_environment_xavier.sh new file mode 100644 index 000000000..885c7c98e --- /dev/null +++ b/scripts/jetson_install/setup_environment_xavier.sh @@ -0,0 +1,447 @@ +# Script to setup Jetson Xavier NX environment. Probably would also work +# with slight modifications on other Jetson hardware + +#install basic dependencies +sudo apt-add-repository ppa:ubuntu-toolchain-r/test -y +sudo apt-add-repository ppa:borglab/gtsam-release-4.1 -y +sudo apt update + +# Keep these the original version to line up with kernel versions supported by arducam? +# TODO : Test updating after installing camera stuff +sudo apt-mark hold nvidia-l4t-bootloader nvidia-l4t-display-kernel nvidia-l4t-initrd nvidia-l4t-kernel nvidia-l4t-kernel-dtbs nvidia-l4t-kernel-headers nvidia-l4t-tools nvidia-l4t-xusb-firmware +sudo apt -y upgrade + +# These are listed 1 package per line to hopefully make git merging easier +# They're also sorted alphabetically to keep packages from being listed multiple times +sudo apt install -y \ + build-essential \ + can-utils \ + ccache \ + chromium-browser \ + clang-12 \ + cmake \ + cowsay \ + dbus-x11 \ + exfat-fuse \ + exfat-utils \ + gcc-10 \ + gcc-11 \ + gcc-13 \ + g++-10 \ + g++-11 \ + g++-13 \ + gdb \ + gfortran \ + git \ + git-lfs \ + gstreamer1.0-plugins-* \ + hdf5-tools \ + htop \ + libatlas-base-dev \ + libboost-all-dev \ + libblas-dev \ + libcanberra-gtk-module \ + libcanberra-gtk3-module \ + libclang-12-dev \ + libclang1-9 \ + libeigen3-dev \ + libflann-dev \ + libgflags-dev \ + libgtsam-dev \ + libgtsam-unstable-dev \ + libgoogle-glog-dev \ + libgoogle-perftools-dev \ + libgmock-dev \ + libgpiod-dev \ + libgtk2.0-dev \ + libhdf5-dev \ + libhdf5-serial-dev \ + libjpeg8-dev \ + liblapack-dev \ + libleveldb-dev \ + liblmdb-dev \ + liblua5.3-dev \ + libnlopt-cxx-dev \ + libnlopt-dev \ + libpcl-dev \ + libproj-dev \ + libqt5designer5 \ + libqt5designercomponents5 \ + libsnappy-dev \ + libsuitesparse-dev \ + libtinyxml2-dev \ + net-tools \ + ninja-build \ + nmap \ + ntp \ + ntpstat \ + openssh-client \ + pkg-config \ + pyqt5-dev-tools \ + python3-dev \ + python3-matplotlib \ + python3-numpy \ + python3-opencv \ + python3-pip \ + python3-pyqt5 \ + python3-pyqtgraph \ + python3-scipy \ + python3 \ + rsync \ + software-properties-common \ + terminator \ + tree \ + unzip \ + v4l-conf \ + v4l-utils \ + vim-gtk \ + wget \ + xfonts-scalable \ + zip \ + zlib1g-dev \ + zstd + +# gcc-11 fails on CUDA code, so we need to use gcc-10 for now +# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11 --slave /usr/bin/g++ g++ /usr/bin/g++-11 +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 +sudo update-alternatives --auto gcc + +#TensorRT requires a newer version of cmake than standard apt repos provide +# TODO - we don't use TensorRT anymore, so this can probably be removed +cd +#wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null +wget https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0.tar.gz +tar -xf cmake-3.27.0.tar.gz +cd cmake-3.27.0 +cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release . +sudo ninja install +sudo mv /usr/bin/cmake /usr/bin/cmake.old +sudo ln -s /usr/local/bin/cmake /usr/bin/cmake +cd .. +sudo rm -rf cmake-3.27.0* + +# Install tinyxml2 +cd +git clone https://github.com/leethomason/tinyxml2.git +cd tinyxml2 +mkdir build +cd build +cmake -GNinja .. +sudo ninja install +cd ../.. +sudo rm -rf tinyxml2 + +#install zed sdk +wget --no-check-certificate https://download.stereolabs.com/zedsdk/4.2/l4t35.4/jetsons +chmod 755 jetsons +./jetsons +rm ./jetsons +rm -rf /home/ubuntu/.local/lib/python3.8/site-packages/numpy + +#mount and setup autostart script +sudo mkdir /mnt/900_2 +cd +git clone https://github.com/FRC900/900RobotCode.git +cd ~/900RobotCode + +# Set up can0 network interface +#cd +#echo "auto can0" > can0 +#echo "iface can0 inet manual" >> can0 +#echo " pre-up /sbin/ip link set can0 type can bitrate 1000000" >> can0 +#echo " up /sbin/ifconfig can0 up" >> can0 +#echo " down /sbin/ifconfig can0 down" >> can0 +#sudo mv can0 /etc/network/interfaces.d + +# sudo curl -s --compressed -o /usr/share/keyrings/ctr-pubkey.gpg "https://deb.ctr-electronics.com/ctr-pubkey.gpg" +# sudo curl -s --compressed -o /etc/apt/sources.list.d/ctr.list "https://deb.ctr-electronics.com/ctr.list" +# sudo curl -s --compressed -o /etc/apt/sources.list.d/ctr2024.list "https://deb.ctr-electronics.com/ctr2024.list" +# sudo sed -i -e 's/tools stable main/tools jetson main/' /etc/apt/sources.list.d/ctr2024.list + +sudo apt remove linux-headers-generic linux-headers-5.4.0-* linux-headers-5.4.0-*-generic +sudo apt update +sudo apt install -y dkms +#sudo apt install -y canivore-usb +cd /tmp +unzip /home/ubuntu/900RobotCode/scripts/jetson_install/canivore-usb-arm64-Ubuntu-20.04-v3.zip +sudo dpkg -i canivore-usb-kernel_1.13_arm64.deb +sudo dpkg -i canivore-usb_1.13_arm64.deb +sudo apt-mark hold canivore-usb canivore-usb-kernel + +# Re-enable if we want to use a canivore usb interface +# sudo bash -c "echo \"[Match\"] >> /etc/systemd/network/80-can.network" +# sudo bash -c "echo \"Name=can0\" >> /etc/systemd/network/80-can.network" +# sudo bash -c "echo \\"" >> /etc/systemd/network/80-can.network" +# sudo bash -c "echo \"[CAN\"] >> /etc/systemd/network/80-can.network" +# sudo bash -c "echo \"BitRate=1000K\" >> /etc/systemd/network/80-can.network" +# sudo systemctl enable systemd-networkd +# sudo systemctl restart systemd-networkd + +sudo bash -c "echo \"# Modules for CAN interface\" >> /etc/modules" +sudo bash -c "echo can >> /etc/modules" +sudo bash -c "echo can_raw >> /etc/modules" +sudo bash -c "echo can_dev >> /etc/modules" +sudo bash -c "echo gs_usb >> /etc/modules" +#sudo bash -c "echo mttcan >> /etc/modules" + +# This shouldn't be the least bit dangerous +#sudo rm /etc/modprobe.d/blacklist-mttcan.conf + +# Disable l4tbridge - https://devtalk.nvidia.com/default/topic/1042511/is-it-safe-to-remove-l4tbr0-bridge-network-on-jetson-xavier-/ +sudo systemctl disable nv-l4t-usb-device-mode.service +sudo systemctl stop nv-l4t-usb-device-mode.service + +# Set up ssh host config (add port 5801) +sudo sed "s/#Port 22/Port 22\nPort 5801/g" /etc/ssh/sshd_config > sshd_config && sudo mv sshd_config /etc/ssh + +#sudo bash -c "echo NTP=us.pool.ntp.org >> /etc/systemd/timesyncd.conf" +#sudo bash -c "echo FallbackNTP=ntp.ubuntu.com >> /etc/systemd/timesyncd.conf" +sudo cp ~/900RobotCode/scripts/jetson_install/ntp.conf /etc/ntp.conf +# On 10.9.0.9, uncommment last few lines of ntp.conf + +sudo cp ~/900RobotCode/scripts/jetson_setup/hwrtc.service /etc/systemd/system +sudo chmod 664 /etc/systemd/system/hwrtc.service +# The ntp config should read from hwrtc -> system clock if it can't +# get to the internet to read from pool time servers +sudo systemctl enable hwrtc + + +# and keys for connections to Rio +mkdir -p ~/.ssh +cd ~/.ssh +tar -xjf ~/900RobotCode/scripts/jetson_setup/jetson_dot_ssh.tar.bz2 +chmod 640 authorized_keys +cd ~ +chmod 700 .ssh + +sudo mkdir -p /root/.ssh +sudo tar -xjf /home/ubuntu/900RobotCode/scripts/jetson_setup/jetson_dot_ssh.tar.bz2 -C /root/.ssh +sudo chown root:root /root/.ssh/* +sudo chmod 640 /root/.ssh/authorized_keys +sudo chmod 700 /root/.ssh + +cd ~/900RobotCode/scripts +sudo cp ./jetson_setup/10-local.rules ./jetson_setup/99-gpio.rules ./jetson_setup/99-terabee-pico.rules ./jetson_setup/99-terabee-teensy.rules /etc/udev/rules.d/ +sudo service udev reload +sleep 2 +sudo service udev restart + +# Clean up Jetson +sudo rm -rf /home/nvidia/cudnn /home/nvidia/OpenCV /home/nvidia/libvisionworks* +# Save ~400MB +sudo apt remove --purge -y thunderbird libreoffice-* nsight-graphics-for-embeddedlinux-* +# Disable automatic updates +sudo sed -i -e 's/APT::Periodic::Update-Package-Lists "1"/APT::Periodic::Update-Package-Lists "0"/' /etc/apt/apt.conf.d/10periodic + +# Install CTRE & navX libs +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/ctre +mkdir -p /home/ubuntu/ctre +cd /home/ubuntu/ctre +python3 /home/ubuntu/900RobotCode/scripts/jetson_install/download_maven.py https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2024-latest.json +python3 /home/ubuntu/900RobotCode/scripts/jetson_install/download_maven.py https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2024-latest.json +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include +find /home/ubuntu/ctre -name \*headers\*zip | grep -v debug | xargs -n 1 unzip -o +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/ctre +find /home/ubuntu/ctre -name \*linux\*zip | grep -v debug | xargs -n 1 unzip -o +rm -rf /home/ubuntu/ctre + +cd /home/ubuntu +wget http://www.kauailabs.com/maven2/com/kauailabs/navx/frc/navx-cpp/4.0.433/navx-cpp-4.0.433-headers.zip +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include/navx +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include/navx +unzip -o /home/ubuntu/navx-cpp-4.0.433-headers.zip +rm /home/ubuntu/navx-cpp-4.0.433-headers.zip +cd /home/ubuntu +wget http://www.kauailabs.com/maven2/com/kauailabs/navx/frc/navx-cpp/4.0.433/navx-cpp-4.0.433-linuxathena.zip +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/navx +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/navx +unzip -o /home/ubuntu/navx-cpp-4.0.433-linuxathena.zip +rm /home/ubuntu/navx-cpp-4.0.433-linuxathena.zip +cd /home/ubuntu +wget http://www.kauailabs.com/maven2/com/kauailabs/navx/frc/navx-cpp/4.0.433/navx-cpp-4.0.433-linuxathenastatic.zip +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/navx +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/navx +unzip -o /home/ubuntu/navx-cpp-4.0.433-linuxathenastatic.zip +rm /home/ubuntu/navx-cpp-4.0.433-linuxathenastatic.zip + +# And Rev sparkmax stuff +cd /home/ubuntu +mkdir sparkmax +cd sparkmax +python3 /home/ubuntu/900RobotCode/scripts/jetson_install/download_maven.py https://software-metadata.revrobotics.com/REVLib-2024.json +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include +find /home/ubuntu/sparkmax -name \*header\*zip | grep -v debug | xargs -n 1 unzip -o +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/rev +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/rev +find /home/ubuntu/sparkmax -name \*linux\*zip | grep -v debug | xargs -n 1 unzip -o +rm -rf /home/ubuntu/sparkmax + +# Install wpilib headers by copying them from the local maven dir +export WPILIBVER=2025.1.1-beta-1 +cd /home/ubuntu &&\ +wget https://frcmaven.wpi.edu/ui/api/v1/download/contentBrowsing/installer/v$WPILIBVER/Linux/WPILib_Linux-$WPILIBVER.tar.gz &&\ +mkdir -p /home/ubuntu/wpilib/2025 &&\ +cd /home/ubuntu/wpilib/2025 &&\ +tar -xzf /home/ubuntu/WPILib_Linux-$WPILIBVER.tar.gz &&\ +tar -xzf WPILib_Linux-$WPILIBVER/WPILib_Linux-$WPILIBVER-artifacts.tar.gz &&\ +rm /home/ubuntu/WPILib_Linux-$WPILIBVER.tar.gz &&\ +cd /home/ubuntu/wpilib/2025/tools &&\ +python3 ToolsUpdater.py &&\ +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/wpilib &&\ +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/wpilib &&\ +find ../../../.. -name \*athena\*zip | grep -v debug | xargs -n1 unzip -o &&\ +find . -name \*.debug -delete &&\ +mkdir -p /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include/wpilib &&\ +cd /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include/wpilib &&\ +find ../../../.. -name \*headers\*zip | xargs -n1 unzip -o &&\ +cd /home/ubuntu/wpilib/2025/tools &&\ +mv roborioteamnumbersetter roboRIOTeamNumberSetter.py .. &&\ +rm -rf /home/ubuntu/wpilib/2025/advantagescope /home/ubuntu/wpilib/2025/maven /home/ubuntu/wpilib/frc2024/jdk /home/ubuntu/wpilib/2025/WPILib_Linux-$WPILIBVER /home/ubuntu/wpilb2024/utility /home/ubuntu/wpilib/2025/jdk /home/ubuntu/wpilib/2025/documentation /home/ubuntu/wpilib/2025/vsCodeExtensions /home/ubuntu/wpilib/2025/vendordeps /home/ubuntu/wpilib/2025/utility /home/ubuntu/wpilib/2025/tools /home/ubuntu/wpilib/2025/frccode /home/ubuntu/wpilib/2025/installUtils /home/ubuntu/wpilib/2025/WPILIB_Linux-{$wpilibver} &&\ +mv /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include/wpilib/google/protobuf /home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/include/wpilib/google/protobuf.bak &&\ +sed -i -e 's/ || defined(__thumb__) \\/ || defined(__thumb__) \\\n || defined(__aarch64__) \\/' /home/ubuntu/wpilib/2024/roborio/arm-frc2024-linux-gnueabi/include/wpilib/FRC_FPGA_ChipObject/fpgainterfacecapi/NiFpga.h + +# Set up prereqs for deploy script +mv ~/900RobotCode ~/900RobotCode.orig +ln -s ~/900RobotCode.orig ~/900RobotCode +mkdir -p ~/900RobotCode.prod/zebROS_ws +mkdir -p ~/900RobotCode.dev/zebROS_ws + +sudo mkdir -p /usr/local/zed/settings +sudo chmod 755 /usr/local/zed/settings +sudo cp ~/900RobotCode/scripts/jetson_install/calibration_files/*.conf /usr/local/zed/settings +sudo chmod 644 /usr/local/zed/settings/* + +cp ~/900RobotCode/.vimrc ~/900RobotCode/.gvimrc ~ +sudo cp ~/900RobotCode/kjaget.vim /usr/share/vim/vim81/colors + +git config --global user.email "progammers@team900.org" +git config --global user.name "Team900 Jetson NX" + +sudo ccache -C +sudo ccache -c +sudo rm -rf /home/ubuntu/.cache /home/ubuntu/.ccache + +sudo ln -s /usr/include/opencv4 /usr/include/opencv + +echo "source /home/ubuntu/900RobotCode/zebROS_ws/command_aliases.sh" >> /home/ubuntu/.bashrc + +# Install make 4.3 (>4.2 is required for -flto=jobserver support +cd +wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz +tar -xf make-4.3.tar.gz +mkdir make-4.3/build +cd make-4.3/build +../configure --prefix=/usr +sudo make -j`nproc --all` install +cd +sudo rm -rf make-4.3* + +# Give the ubuntu user dialout permission, which is used by the ADI IMU +sudo adduser ubuntu dialout + +git clone https://github.com/VundleVim/Vundle.vim.git /home/ubuntu/.vim/bundle/Vundle.vim +vim +PluginInstall +qall +ln -sf /home/ubuntu/.vim/bundle/vim-ros-ycm/.ycm_extra_conf.py /home/ubuntu/.vim/bundle/vim-ros-ycm/ycm_extra_conf.py +cd /home/ubuntu/.vim/bundle/YouCompleteMe +git fetch origin +git submodule update --init --recursive +python3 ./install.py --clang-completer --system-libclang --ninja + +sudo pip3 install -U setuptools==70.3.0 +sudo -H bash +export PATH=$PATH:/usr/local/cuda/bin +export CUDA_ROOT=/usr/local/cuda +pip3 install pycuda + +# Ultralytics YOLOv8 prereqs here +sudo python3 -m pip install --no-cache-dir --upgrade 'pascal_voc==0.0.7' +sudo python3 -m pip install --no-cache-dir --upgrade 'matplotlib>=3.2.2' +sudo python3 -m pip install --no-cache-dir --upgrade 'opencv-python>=4.6.0' +sudo python3 -m pip install --no-cache-dir --upgrade 'Pillow>=7.1.2' +sudo python3 -m pip install --no-cache-dir --upgrade 'PyYAML==5.4.1' +sudo python3 -m pip install --no-cache-dir --upgrade 'requests>=2.23.0' +sudo python3 -m pip install --no-cache-dir --upgrade 'scipy>=1.4.1' +sudo python3 -m pip install --no-cache-dir --upgrade 'tqdm>=4.64.0' +sudo python3 -m pip install --no-cache-dir --upgrade 'pandas>=1.1.4' +sudo python3 -m pip install --no-cache-dir --upgrade 'seaborn>=0.11.0' +sudo python3 -m pip install --no-cache-dir --upgrade psutil + +sudo python3 -m pip install --no-cache-dir --upgrade 'onnx>=1.12' +sudo python3 -m pip install --no-cache-dir --upgrade 'onnxsim>=0.4.1' +wget https://nvidia.box.com/shared/static/mvdcltm9ewdy2d5nurkiqorofz1s53ww.whl -O onnxruntime_gpu-1-15.0-cp38-cp38-linux_aarch64.whl +sudo pip3 install onnxruntime_gpu-1-15.0-cp38-cp38-linux_aarch64.whl +rm onnxruntime_gpu-1-15.0-cp38-cp38-linux_aarch64.whl + +# cpu-only version : sudo python3 -m pip install --no-cache-dir --upgrade 'onnxruntime' +# not available sudo python3 -m pip install --no-cache-dir --upgrade onnxruntime-gpu +#sudo python3 -m pip install --no-cache-dir --upgrade nvidia-pyindex +#sudo python3 -m pip install --no-cache-dir --upgrade nvidia-tensorrt + +#export PYTORCH_URL=https://nvidia.box.com/shared/static/rehpfc4dwsxuhpv4jgqv8u6rzpgb64bq.whl +#export PYTORCH_WHL=torch-2.0.0a0+ec3941ad.nv23.2-cp38-cp38-linux_aarch64.whl +export PYTORCH_URL=https://nvidia.box.com/shared/static/i8pukc49h3lhak4kkn67tg9j4goqm0m7.whl +export PYTORCH_WHL=torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl + +sudo apt-get install -y libopenblas-base libopenmpi-dev +wget --quiet --show-progress --progress=bar:force:noscroll --no-check-certificate ${PYTORCH_URL} -O ${PYTORCH_WHL} +sudo pip3 install --no-cache-dir --verbose ${PYTORCH_WHL} +rm ${PYTORCH_WHL} + + +export TORCHVISION_VERSION=0.15 +export TORCH_CUDA_ARCH_LIST="7.2;8.7" +sudo apt install -y libjpeg-dev libpng-dev zlib1g-dev +git clone --branch release/${TORCHVISION_VERSION} --recursive --depth=1 https://github.com/pytorch/vision torchvision +cd torchvision +git checkout release/${TORCHVISION_VERSION} +sudo python3 setup.py install +cd .. +sudo rm -rf torchvision + +sudo python3 -m pip install --no-cache-dir --upgrade 'pytorch_pfn_extras' +sudo python3 -m pip install --no-cache-dir --upgrade ultralytics +cd /home/ubuntu +git clone https://github.com/triple-Mu/YOLOv8-TensorRT.git +# End of ultralytics YOLOv8 deps + +echo "export PATH=\$PATH:/home/ubuntu/.local/bin:/home/ubuntu/tensorflow_workspace/tools:/usr/local/cuda/bin" >> /home/ubuntu/.bashrc + +# Set up Gold linker - speed up libPCL links +# Do this after building protoc, since that fails with ld.gold +sudo update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20 +sudo update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10 +sudo update-alternatives --auto ld + +sudo ccache -C +sudo ccache -c +sudo rm -rf /home/ubuntu/.cache /home/ubuntu/.ccache + +# This is handled by the ROS*.sh scripts +#echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/home/ubuntu/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/rev/linux/aarm64/shared:/usr/local/lib" >> /home/ubuntu/.bashrc + +# Install pyserial (for 2023 intake reader) +sudo pip3 install pyserial +sudo pip3 install cupy-cuda11x + +# TODO - figure out a real fix for the build error in newer commits +cd /home/ubuntu &&\ + git clone https://github.com/abseil/abseil-cpp.git &&\ + cd abseil-cpp &&\ + git checkout a3f7e9866c67ca090995aa638276b8fd8938c6f3 &&\ + mkdir build &&\ + cd build &&\ + cmake -DABSL_BUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DABSL_USE_GOOGLETEST_HEAD=ON -DCMAKE_CXX_STANDARD=17 -GNinja .. &&\ + ninja &&\ + sudo ninja install &&\ + cd /home/ubuntu && \ + rm -rf abseil-cpp + +# Jetvariety camera stuff +sudo pip3 install v4l2-fix jetson-stats + +cd ~ +wget https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh +chmod +x install_full.sh +./install_full.sh -m arducam diff --git a/scripts/jetson_install/tensorrt.patch b/scripts/jetson_install/tensorrt.patch deleted file mode 100644 index 87a826cdf..000000000 --- a/scripts/jetson_install/tensorrt.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 358b6f3..436e84a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -159,6 +159,7 @@ else() - if (IS_ARM) - # Xavier (SM72) only supported for aarch64. - list(APPEND GPU_ARCHS 72) -+ list(APPEND GPU_ARCHS 87) - endif() - - if (CUDA_VERSION VERSION_GREATER_EQUAL 11.0) -diff --git a/plugin/common/kernels/decodeBBoxes.cu b/plugin/common/kernels/decodeBBoxes.cu -index f688cef..d59cb57 100644 ---- a/plugin/common/kernels/decodeBBoxes.cu -+++ b/plugin/common/kernels/decodeBBoxes.cu -@@ -77,6 +77,25 @@ inline __device__ float div_fb(const float & a, const float & b) { - return a / b; - } - -+ -+template -+static __device__ T_BBOX saturate(T_BBOX v) -+{ -+ return max(min(v, T_BBOX(1)), T_BBOX(0)); -+} -+ -+template <> -+__device__ __half saturate(__half v) -+{ -+#if __CUDA_ARCH__ >= 800 -+ return __hmax(__hmin(v, __half(1)), __half(0)); -+#elif __CUDA_ARCH__ >= 530 -+ return __hge(v, __half(1)) ? __half(1) : (__hle(v, __half(0)) ? __half(0) : v); -+#else -+ return max(min(v, float(1)), float(0)); -+#endif -+} -+ - template - __launch_bounds__(nthds_per_cta) - __global__ void decodeBBoxes_kernel( -diff --git a/plugin/fcPlugin/fcPlugin.cpp b/plugin/fcPlugin/fcPlugin.cpp -index 66b604c..5d41dad 100644 ---- a/plugin/fcPlugin/fcPlugin.cpp -+++ b/plugin/fcPlugin/fcPlugin.cpp -@@ -168,9 +168,11 @@ void LtGemmSearch(cublasLtHandle_t ltHandle, cublasOperation_t transa, cublasOpe - PLUGIN_CUBLASASSERT(cublasLtMatmulPreferenceSetAttribute( - preference, CUBLASLT_MATMUL_PREF_MAX_WORKSPACE_BYTES, &workSpaceSize, sizeof(workSpaceSize))); - -+#if 0 - const int mathMode = Ctype == CUDA_R_16F ? 1 : 0; - PLUGIN_CUBLASASSERT(cublasLtMatmulPreferenceSetAttribute( - preference, CUBLASLT_MATMUL_PREF_MATH_MODE_MASK, &mathMode, sizeof(mathMode))); -+#endif - // Create operation descriptor; see cublasLtMatmulDescAttributes_t for details - // about defaults; here we just need to set the transforms for A and B - #if CUBLAS_VER_MAJOR < 11 -@@ -215,6 +217,7 @@ void LtGemmSearch(cublasLtHandle_t ltHandle, cublasOperation_t transa, cublasOpe - continue; - } - -+#if 0 - int mathMode = -1; - PLUGIN_CUBLASASSERT(cublasLtMatmulAlgoCapGetAttribute( - &algo, CUBLASLT_ALGO_CAP_MATHMODE_IMPL, &mathMode, sizeof(mathMode), nullptr)); -@@ -224,6 +227,7 @@ void LtGemmSearch(cublasLtHandle_t ltHandle, cublasOperation_t transa, cublasOpe - // if mathMode is 1, cublasLt chooses automatically to run in mixed precision for certain sizes - continue; - } -+#endif - - // Query the tiles enums supported by that algo - PLUGIN_CUBLASASSERT( -diff --git a/plugin/fcPlugin/fcPlugin.h b/plugin/fcPlugin/fcPlugin.h -index 0129e8d..4b75cd9 100644 ---- a/plugin/fcPlugin/fcPlugin.h -+++ b/plugin/fcPlugin/fcPlugin.h -@@ -371,8 +371,10 @@ struct AlgoProps - matmulAlgo, CUBLASLT_ALGO_CONFIG_CTA_SWIZZLING, &swizzle, sizeof(swizzle), nullptr)); - PLUGIN_CUBLASASSERT(cublasLtMatmulAlgoConfigGetAttribute( - matmulAlgo, CUBLASLT_ALGO_CONFIG_CUSTOM_OPTION, &customOption, sizeof(customOption), nullptr)); -+#if 0 - PLUGIN_CUBLASASSERT(cublasLtMatmulAlgoCapGetAttribute( - matmulAlgo, CUBLASLT_ALGO_CAP_MATHMODE_IMPL, &mathMode, sizeof(mathMode), nullptr)); -+#endif - } - }; - diff --git a/zebROS_ws/create_ros_packages.sh b/zebROS_ws/create_ros_packages.sh index edc7adeb4..b429ce538 100755 --- a/zebROS_ws/create_ros_packages.sh +++ b/zebROS_ws/create_ros_packages.sh @@ -1,3 +1,3 @@ -rosinstall_generator --rosdistro noetic --wet-only control_toolbox forward_command_controller imu_sensor_controller joint_state_controller joint_trajectory_controller position_controllers velocity_controllers teraranger teraranger_array teraranger_array_converter teraranger_description > rosinstall.txt +rosinstall_generator --rosdistro noetic --wet-only forward_command_controller imu_sensor_controller joint_state_controller joint_trajectory_controller position_controllers velocity_controllers teraranger teraranger_array teraranger_array_converter teraranger_description > rosinstall.txt wstool merge -t src rosinstall.txt rm rosinstall.txt diff --git a/zebROS_ws/rosinstallgenerator.sh b/zebROS_ws/rosinstallgenerator.sh deleted file mode 100755 index 050910e17..000000000 --- a/zebROS_ws/rosinstallgenerator.sh +++ /dev/null @@ -1,3 +0,0 @@ - rosinstall_generator --rosdistro melodic --wet-only control_toolbox rospy_message_converter forward_command_controller imu_sensor_controller joint_state_controller joint_trajectory_controller position_controllers velocity_controllers teraranger teraranger_array teraranger_array_converter teraranger_description > rosinstall.txt -wstool merge -t src rosinstall.txt -rm rosinstall.txt diff --git a/zebROS_ws/src/.rosinstall b/zebROS_ws/src/.rosinstall index 475825e0d..050c601df 100644 --- a/zebROS_ws/src/.rosinstall +++ b/zebROS_ws/src/.rosinstall @@ -1,11 +1,4 @@ # THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2023-12-20 -- git: - local-name: actionlib - uri: https://github.com/FRC900/actionlib.git -- git: - local-name: control_toolbox - uri: https://github.com/ros-gbp/control_toolbox-release.git - version: release/noetic/control_toolbox/1.19.0-1 - git: local-name: cpu_monitor uri: https://github.com/FRC900/cpu_monitor @@ -17,10 +10,6 @@ local-name: pid uri: https://github.com/FRC900/pid.git version: velocity_feed_forward -- git: - local-name: realtime_tools - uri: https://github.com/FRC900/realtime_tools.git - version: fix_non_realtime - git: local-name: ros_controllers uri: https://github.com/FRC900/ros_controllers.git @@ -52,9 +41,6 @@ local-name: teraranger_description uri: https://github.com/Terabee/teraranger_description-release.git version: release/kinetic/teraranger_description/1.1.0-0 -- git: - local-name: turing_smart_screen - uri: https://github.com/FRC900/turing-smart-screen-ros.git - git: local-name: zed-ros-wrapper uri: https://github.com/FRC900/zed-ros-wrapper.git @@ -64,7 +50,3 @@ - git: local-name: camera_info_manager_py uri: https://github.com/FRC900/camera_info_manager_py -- git: - local-name: cv_camera - uri: https://github.com/FRC900/cv_camera - version: mono16 diff --git a/zebROS_ws/src/cmake_modules/CMakeOpt.cmake b/zebROS_ws/src/cmake_modules/CMakeOpt.cmake index 6e9b59170..5778e79ed 100644 --- a/zebROS_ws/src/cmake_modules/CMakeOpt.cmake +++ b/zebROS_ws/src/cmake_modules/CMakeOpt.cmake @@ -9,7 +9,7 @@ if(NOT CMAKE_BUILD_TYPE) endif() if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD 20) endif() execute_process(COMMAND pgrep -f rosetta OUTPUT_VARIABLE OUT RESULT_VARIABLE NOT_APPLE_SILICON) diff --git a/zebROS_ws/src/gpu_apriltag/CMakeLists.txt b/zebROS_ws/src/gpu_apriltag/CMakeLists.txt index d0b6bdcd2..7b1933611 100644 --- a/zebROS_ws/src/gpu_apriltag/CMakeLists.txt +++ b/zebROS_ws/src/gpu_apriltag/CMakeLists.txt @@ -4,7 +4,6 @@ enable_language(CUDA) include("../cmake_modules/CMakeOpt.cmake") -set(CMAKE_CXX_STANDARD 20) ## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used, also find other catkin packages @@ -26,10 +25,11 @@ find_package(catkin REQUIRED COMPONENTS # find_package(Boost REQUIRED COMPONENTS system) -set(CMAKE_CUDA_STANDARD 17) +set(CMAKE_CUDA_STANDARD 20) set(CMAKE_CUDA_STANDARD_REQUIRED TRUE) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr") +set(CMAKE_CUDA_HOST_COMPILER gcc-13) # Use the correct version of CUDA set(CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda) diff --git a/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_device.h b/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_device.h index 5b82be4d5..c9205025d 100644 --- a/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_device.h +++ b/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_device.h @@ -2,7 +2,6 @@ #define CTRE_V5_DEVICE_INC__ #include -#include #include #include "ctre/phoenix/ErrorCode.h" diff --git a/zebROS_ws/src/ros_control_boilerplate/src/ctre_v5_device.cpp b/zebROS_ws/src/ros_control_boilerplate/src/ctre_v5_device.cpp index d2a131f7d..68bc95526 100644 --- a/zebROS_ws/src/ros_control_boilerplate/src/ctre_v5_device.cpp +++ b/zebROS_ws/src/ros_control_boilerplate/src/ctre_v5_device.cpp @@ -1,3 +1,4 @@ +#include #include "ros/console.h" #include "ros/node_handle.h" #include "hal/DriverStation.h" From f04eafce01dfe017e613cfffefea4756b07a5c55 Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Sat, 2 Aug 2025 08:13:42 -0400 Subject: [PATCH 5/8] Version bumps for jetson setup --- scripts/jetson_install/setup_environment.sh | 28 ++++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/scripts/jetson_install/setup_environment.sh b/scripts/jetson_install/setup_environment.sh index 40172d1a6..e23c209b6 100644 --- a/scripts/jetson_install/setup_environment.sh +++ b/scripts/jetson_install/setup_environment.sh @@ -1,5 +1,5 @@ -# Script to setup Jetson Orin NX environment. Probably would also work -# with slight modifications on other Jetson hardware +# Script to setup Jetson Orin NX environment. +# See _xavier.sh script for a similar script for the Jetson Xavier NX #install basic dependencies sudo apt-add-repository ppa:ubuntu-toolchain-r/test -y @@ -357,20 +357,23 @@ sudo python3 -m pip install --no-cache-dir --upgrade 'onnx>=1.12' sudo python3 -m pip install --no-cache-dir --upgrade 'onnxsim>=0.4.1' wget https://nvidia.box.com/shared/static/6l0u97rj80ifwkk8rqbzj1try89fk26z.whl -O onnxruntime_gpu-1-19.0-cp310-cp310-linux_aarch64.whl wget https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/869/e41abdc35e093/onnxruntime_gpu-1.22.0-cp310-cp310-linux_aarch64.whl#sha256=869e41abdc35e09345876f047fce49267d699df3e44b67c2518b0469739484ff - -sudo pip3 install onnxruntime_gpu-1-22.0-cp310-cp310-linux_aarch64.whl -rm onnxruntime_gpu-1-22.0-cp310-cp310-linux_aarch64.whl +wget https://pypi.jetson-ai-lab.io/jp6/cu126/+f/4eb/e6a8902dc7708/onnxruntime_gpu-1.23.0-cp310-cp310-linux_aarch64.whl#sha256=4ebe6a8902dc7708434b2e1541b3fe629ebf434e16ab5537d1d6a622b42c622b + +sudo pip3 install onnxruntime_gpu-1.23.0-cp310-cp310-linux_aarch64.whl +rm onnxruntime_gpu-1.23.0-cp310-cp310-linux_aarch64.whl # cpu-only version : sudo python3 -m pip install --no-cache-dir --upgrade 'onnxruntime' #sudo python3 -m pip install --no-cache-dir --upgrade nvidia-pyindex #sudo python3 -m pip install --no-cache-dir --upgrade nvidia-tensorrt sudo apt-get install -y libopenblas-base libopenmpi-dev -wget https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/6ef/f643c0a7acda9/torch-2.7.0-cp310-cp310-linux_aarch64.whl#sha256=6eff643c0a7acda92734cc798338f733ff35c7df1a4434576f5ff7c66fc97319 -rm torch-2.7.0-cp310-cp310-linux_aarch64.whl +wget https://pypi.jetson-ai-lab.io/jp6/cu126/+f/62a/1beee9f2f1470/torch-2.8.0-cp310-cp310-linux_aarch64.whl#sha256=62a1beee9f2f147076a974d2942c90060c12771c94740830327cae705b2595fc +sudo pip3 install torch-2.8.0-cp310-cp310-linux_aarch64.whl +rm torch-2.8.0-cp310-cp310-linux_aarch64.whl -wget https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/daa/bff3a07259968/torchvision-0.22.0-cp310-cp310-linux_aarch64.whl#sha256=daabff3a0725996886b92e4b5dd143f5750ef4b181b5c7d01371a9185e8f0402 -sudo pip3 install torchvision-0.22.0-cp310-cp310-linux_aarch64.whl +wget https://pypi.jetson-ai-lab.io/jp6/cu126/+f/907/c4c1933789645/torchvision-0.23.0-cp310-cp310-linux_aarch64.whl#sha256=907c4c1933789645ebb20dd9181d40f8647978e6bd30086ae7b01febb937d2d1 +sudo pip3 install torchvision-0.23.0-cp310-cp310-linux_aarch64.whl +rm torchvision-0.23.0-cp310-cp310-linux_aarch64.whl sudo python3 -m pip install --no-cache-dir --upgrade 'pytorch_pfn_extras' sudo python3 -m pip install --no-cache-dir --upgrade ultralytics @@ -432,17 +435,17 @@ cd /home/ubuntu &&\ ### ROS setup -sudo sh -c "echo 'deb [arch=arm64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg' >> /etc/apt/sources.list.d/robotpkg.list" +# sudo sh -c "echo 'deb [arch=arm64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg' >> /etc/apt/sources.list.d/robotpkg.list" sudo apt update sudo apt install -y \ - nlohmann-json3-dev \ + nlohmann-json3-dev \ libompl-dev \ libturbojpeg0-dev \ ompl-demos \ python3-rosdistro \ python3-rosinstall \ python3-rosinstall-generator -sudo python3 -m pip install --no-cache-dir "catkin-pkg==1.0.0" "catkin-tools==0.9.5" rosdep roslibpy vcstool vcstools &&\ +sudo python3 -m pip install --no-cache-dir "catkin-pkg==1.0.0" "catkin-tools==0.9.5" rosdep roslibpy vcstool vcstools cd /usr/lib/python3/dist-packages/ sudo patch -p0 < /home/ubuntu/900RobotCode/scripts/jetson_install/catkin_pkg.patch @@ -570,6 +573,7 @@ cd .. catkin config --install --install-space /opt/ros/noetic -DSETUPTOOLS_DEB_LAYOUT=OFF -DPYTHON_EXECUTABLE=/usr/bin/python3 sudo bash +pip3 install 'numpy<2.0.0' catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DPYTHON_EXECUTABLE=/usr/bin/python3 catkin export PATH=/opt/openrobots/bin:$PATH export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH From 17860d45c23e2e098e28d964071026c95e3eca06 Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Mon, 4 Aug 2025 07:53:10 -0400 Subject: [PATCH 6/8] Various updates after testing Jetpack 6.2.1 on Orin NX --- .gitignore | 2 +- scripts/jetson_install/setup_environment.sh | 30 ++++++++++--------- scripts/update_rio_wpilib.sh | 22 ++++++++++++++ zebROS_ws/.gitignore | 1 + zebROS_ws/cross_build.sh | 5 ++-- zebROS_ws/native_build.sh | 3 +- zebROS_ws/src/.rosinstall | 8 +++-- zebROS_ws/src/behaviors/package.xml | 1 + .../gazebo_frcrobot_control/CMakeLists.txt | 1 + 9 files changed, 51 insertions(+), 22 deletions(-) create mode 100755 scripts/update_rio_wpilib.sh diff --git a/.gitignore b/.gitignore index c582f713e..a694f5a0a 100644 --- a/.gitignore +++ b/.gitignore @@ -48,7 +48,7 @@ compile_commands.json *.bag *.mcap *.hoot -bagfiles/deeptag-pytorch +bagfiles # Autogenerated .md5sum diff --git a/scripts/jetson_install/setup_environment.sh b/scripts/jetson_install/setup_environment.sh index e23c209b6..6c9da097b 100644 --- a/scripts/jetson_install/setup_environment.sh +++ b/scripts/jetson_install/setup_environment.sh @@ -105,18 +105,17 @@ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120 --slave sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 sudo update-alternatives --auto gcc -#TensorRT requires a newer version of cmake than standard apt repos provide -# TODO - we don't use TensorRT anymore, so this can probably be removed -# cd -# wget https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0.tar.gz -# tar -xf cmake-3.27.0.tar.gz -# cd cmake-3.27.0 -# cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release . -# sudo ninja install -# sudo mv /usr/bin/cmake /usr/bin/cmake.old -# sudo ln -s /usr/local/bin/cmake /usr/bin/cmake -# cd .. -# sudo rm -rf cmake-3.27.0* +# CUDA with c++20 requires a newer version of cmake than is provided via apt +cd +wget https://github.com/Kitware/CMake/releases/download/v3.31.8/cmake-3.31.8.tar.gz +tar -xf cmake-3.31.8.tar.gz +cd cmake-3.31.8 +cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release . +sudo ninja install +sudo mv /usr/bin/cmake /usr/bin/cmake.old +sudo ln -s /usr/local/bin/cmake /usr/bin/cmake +cd .. +sudo rm -rf cmake-3.31.8* # Install tinyxml2 cd @@ -433,6 +432,8 @@ cd /home/ubuntu &&\ cd /home/ubuntu &&\ sudo rm -rf gtsam +# Needed to get catkin to put python libs in the correct locations +sudo pip3 install -U 'setuptools<66' ### ROS setup # sudo sh -c "echo 'deb [arch=arm64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg' >> /etc/apt/sources.list.d/robotpkg.list" @@ -498,6 +499,7 @@ rosinstall_generator \ smach \ smach_ros \ tf \ + tf2_py \ tf2_ros \ tf2_tools \ transmission_interface \ @@ -584,8 +586,8 @@ export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/lib/python3.10/dist-packages export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/lib/python3.10/site-packages export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/local/lib/python3.10/dist-packages export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/local/lib/python3.10/site-packages -devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 dynamic_reconfigure -cp -r /opt/ros/noetic/lib/python3.10/site-packages/dynamic_reconfigure/* /opt/ros/noetic/local/lib/python3.10/dist-packages/dynamic_reconfigure +#devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 dynamic_reconfigure +#cp -r /opt/ros/noetic/lib/python3.10/site-packages/dynamic_reconfigure/* /opt/ros/noetic/local/lib/python3.10/dist-packages/dynamic_reconfigure # Build this with a lower number of jobs to prevent running out of memory devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 -j2 eigenpy devel/env.sh catkin build -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -Wno-nonnull -Wno-float-conversion -Wno-class-memaccess -Wno-register -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion -Wno-deprecated-declarations -DNON_POLLING -ftrack-macro-expansion=0 -fno-var-tracking-assignments" -DPYTHON_EXECUTABLE=/usr/bin/python3 diff --git a/scripts/update_rio_wpilib.sh b/scripts/update_rio_wpilib.sh new file mode 100755 index 000000000..d98d9920f --- /dev/null +++ b/scripts/update_rio_wpilib.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Update a jetson with the header files and libraries needed to build +# code for the robot +# Run me with IP address of the Jetson as argument +# wpilib/2025 has to be installed on local machine - run from docker +# env to make sure that the local build env is correct one +# to push to the Jetson + +which docker | grep -q docker +if [ $? -ne 1 ] ; then + echo "This script must be run from inside a docker container" + return +fi + +ssh -p 22 admin@$1 mkdir wpilib +cd ~/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/wpilib/linux/athena/shared +scp -P 22 *.so admin@$1:wpilib +cd ~/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/ctre/linux/athena/shared +scp -P 22 *.so admin@$1:wpilib +cd ~/wpilib/2025/roborio/arm-frc2024-linux-gnueabi/lib/rev/linux/athena/shared +scp -P 22 *.so admin@$1:wpilib \ No newline at end of file diff --git a/zebROS_ws/.gitignore b/zebROS_ws/.gitignore index d31492f6e..6854473e1 100644 --- a/zebROS_ws/.gitignore +++ b/zebROS_ws/.gitignore @@ -18,3 +18,4 @@ callgrind.out.* allwpilib/ntcore/generated zebROS_ws/src/.vscode/settings.json src/auto_node/scripts/path_info.txt +.cache diff --git a/zebROS_ws/cross_build.sh b/zebROS_ws/cross_build.sh index 437c8fa8c..d24b000ce 100755 --- a/zebROS_ws/cross_build.sh +++ b/zebROS_ws/cross_build.sh @@ -22,7 +22,7 @@ catkin config --profile cross -x _isolated --install --skiplist \ adi_pico_driver \ ar_track_alvar \ apriltag_launch \ - apriltag_ros \ + apriltag_ros \ base_trajectory \ compressed_image_transport \ compressed_depth_image_transport \ @@ -85,7 +85,6 @@ catkin config --profile cross -x _isolated --install --skiplist \ tagslam_test \ tagslam_launch \ template_controller \ - teraranger_array \ teraranger_array_converter \ tf_object_detection \ theora_image_transport \ @@ -99,4 +98,4 @@ catkin config --profile cross -x _isolated --install --skiplist \ wpilib_swerve_odom \ drive_to_object \ norfair_ros -catkin build --profile cross -DCMAKE_TOOLCHAIN_FILE=`pwd`/rostoolchain.cmake -DCMAKE_CXX_STANDARD=17 -DCATKIN_ENABLE_TESTING=OFF -DSETUPTOOLS_DEB_LAYOUT=OFF -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -DNON_POLLING" "$@" +catkin build --profile cross -DCMAKE_TOOLCHAIN_FILE=`pwd`/rostoolchain.cmake -DCMAKE_CXX_STANDARD=20 -DCATKIN_ENABLE_TESTING=OFF -DSETUPTOOLS_DEB_LAYOUT=OFF -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -Wno-deprecated-copy -DNON_POLLING" "$@" diff --git a/zebROS_ws/native_build.sh b/zebROS_ws/native_build.sh index f1feecb91..1d0ac539c 100755 --- a/zebROS_ws/native_build.sh +++ b/zebROS_ws/native_build.sh @@ -96,7 +96,6 @@ catkin config --skiplist \ rosserial_windows \ rosserial_xbee \ spinnaker_camera_driver \ - teraranger_array \ teraranger_array_converter \ turing_smart_screen \ turret_2023 \ @@ -110,7 +109,7 @@ export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/lib/python3.10/site-packages export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/local/lib/python3.10/dist-packages export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/local/lib/python3.10/site-packages -catkin build -DCATKIN_ENABLE_TESTING=OFF -DBUILD_WITH_OPENMP=ON -DCMAKE_CXX_STANDARD=17 -DSETUPTOOLS_DEB_LAYOUT=OFF -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -DNON_POLLING" $EXTRA_CMD_LINE $EXPLICIT_PACKAGE_LIST "$@" +catkin build -DCATKIN_ENABLE_TESTING=OFF -DBUILD_WITH_OPENMP=ON -DCMAKE_CXX_STANDARD=20 -DSETUPTOOLS_DEB_LAYOUT=OFF -DCMAKE_CXX_FLAGS="-DBOOST_BIND_GLOBAL_PLACEHOLDERS -Wno-psabi -DNON_POLLING" $EXTRA_CMD_LINE $EXPLICIT_PACKAGE_LIST "$@" if [ $? -ne 0 ] ; then echo FAIL > .native_build.status diff --git a/zebROS_ws/src/.rosinstall b/zebROS_ws/src/.rosinstall index 050c601df..ab1f7348a 100644 --- a/zebROS_ws/src/.rosinstall +++ b/zebROS_ws/src/.rosinstall @@ -35,8 +35,12 @@ version: master - git: local-name: teraranger - uri: https://github.com/Terabee/teraranger-release.git - version: release/melodic/teraranger/2.1.0-1 + uri: https://github.com/FRC900/teraranger.git + version: master +- git: + local-name: teraranger_array + uri: https://github.com/FRC900/teraranger_array.git + version: master - git: local-name: teraranger_description uri: https://github.com/Terabee/teraranger_description-release.git diff --git a/zebROS_ws/src/behaviors/package.xml b/zebROS_ws/src/behaviors/package.xml index 0539b33bc..4fdaa3522 100644 --- a/zebROS_ws/src/behaviors/package.xml +++ b/zebROS_ws/src/behaviors/package.xml @@ -80,6 +80,7 @@ base_trajectory_msgs controllers_2025_msgs talon_controller_msgs + teleop_orientation_driver diff --git a/zebROS_ws/src/gazebo_frcrobot_control/CMakeLists.txt b/zebROS_ws/src/gazebo_frcrobot_control/CMakeLists.txt index 347bdeadb..edf174e89 100644 --- a/zebROS_ws/src/gazebo_frcrobot_control/CMakeLists.txt +++ b/zebROS_ws/src/gazebo_frcrobot_control/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.6.3) project(gazebo_frcrobot_control) +set(CMAKE_CXX_STANDARD 17) include ("../cmake_modules/CMakeOpt.cmake") # Load catkin and all dependencies required for this package From 87ea3ce0862fff83d4bf2c42dd6de444bd05cfee Mon Sep 17 00:00:00 2001 From: Kevin Jaget Date: Fri, 8 Aug 2025 17:33:16 -0400 Subject: [PATCH 7/8] Update robot in a box launch to match hardware --- .../config/robot_in_a_box_jetson.yaml | 14 +++++++------- .../config/robot_in_a_box_rio.yaml | 14 +++++++------- .../launch/robot_in_a_box_jetson.launch | 6 +++--- .../launch/robot_in_a_box_rio.launch | 8 ++++---- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_jetson.yaml b/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_jetson.yaml index 80afd3045..0fa96047b 100644 --- a/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_jetson.yaml +++ b/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_jetson.yaml @@ -29,7 +29,7 @@ hardware_interface: - {name: robot_code_ready_jetson, local: true, type: ready} - {name: robot_code_ready_rio, local: false, type: ready} # Probably not really needed? -joint_state_controller: +joint_state_controller_jetson: type: joint_state_controller/JointStateController publish_rate: 100 # Settings for ros_control hardware interface @@ -54,10 +54,10 @@ joint_state_controller: # encoder state used by the hw manager and publishes it as # a ROS topic. This is generic ROS stuff, so we'll have # to figure out what to map e.g. effort to in the Talon world -talon_state_controller: +talon_state_controller_jetson: type: talon_state_controller/TalonStateController publish_rate: 100 -talon_config_controller: +talon_config_controller_jetson: type: talon_config_controller/TalonConfigController publish_rate: 5 @@ -114,19 +114,19 @@ talon9_motionmagic_controller: # Used to listen for joint state published from the given topic # (in this case the rio) and copy them to internal copies of # joint data -joint_state_listener_controller: +joint_state_listener_controller_jetson: type: state_listener_controller/JointStateListenerController topic: /frcrobot_rio/joint_states -match_state_listener_controller: +match_state_listener_controller_jetson: type: state_listener_controller/MatchStateListenerController topic: /frcrobot_rio/match_data -pdp_state_controller: +pdp_state_controller_jetson: type: pdp_state_controller/PDPStateController publish_rate: 20 -pcm_state_controller: +pcm_state_controller_jetson: type : pcm_state_controller/PCMStateController publish_rate: 20 diff --git a/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_rio.yaml b/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_rio.yaml index a411ecc40..9fc3dd8f0 100644 --- a/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_rio.yaml +++ b/zebROS_ws/src/ros_control_boilerplate/config/robot_in_a_box_rio.yaml @@ -44,7 +44,7 @@ button_box_controller: name: button_box publish_rate: 50 -joint_state_controller: +joint_state_controller_rio: type: joint_state_controller/JointStateController publish_rate: 100 @@ -63,22 +63,22 @@ spacemouse_controller: # encoder state used by the hw manager and publishes it as # a ROS topic. This is generic ROS stuff, so we'll have # to figure out what to map e.g. effort to in the Talon world -talon_state_controller: +talon_state_controller_rio: type: talon_state_controller/TalonStateController publish_rate: 100 -talon_config_controller: +talon_config_controller_rio: type: talon_config_controller/TalonConfigController publish_rate: 100 -pdp_state_controller: +pdp_state_controller_rio: type: pdp_state_controller/PDPStateController publish_rate: 20 -pcm_state_controller: +pcm_state_controller_rio: type : pcm_state_controller/PCMStateController publish_rate: 20 -match_state_controller: +match_state_controller_rio: type: match_state_controller/MatchStateController publish_rate: 20 @@ -86,7 +86,7 @@ robot_controller_state_controller: type: robot_controller_state_controller/RobotControllerStateController publish_rate: 20 -joint_state_listener_controller: +joint_state_listener_controller_rio: type: state_listener_controller/JointStateListenerController topic: /frcrobot_jetson/joint_states diff --git a/zebROS_ws/src/ros_control_boilerplate/launch/robot_in_a_box_jetson.launch b/zebROS_ws/src/ros_control_boilerplate/launch/robot_in_a_box_jetson.launch index 190080dc9..405e8b73c 100644 --- a/zebROS_ws/src/ros_control_boilerplate/launch/robot_in_a_box_jetson.launch +++ b/zebROS_ws/src/ros_control_boilerplate/launch/robot_in_a_box_jetson.launch @@ -20,9 +20,9 @@ + joint_state_controller_rio + joint_state_listener_controller_rio + match_state_controller_rio + robot_code_ready_controller_rio" />