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/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/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..6c9da097b 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
-# 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
-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,22 @@ 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
+# CUDA with c++20 requires a newer version of cmake than is provided via apt
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
+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.27.0*
+sudo rm -rf cmake-3.31.8*
# Install tinyxml2
cd
@@ -133,14 +129,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 +149,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 +309,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 +322,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 +354,29 @@ 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
+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'
-# 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.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.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
+
cd /home/ubuntu
git clone https://github.com/triple-Mu/YOLOv8-TensorRT.git
# End of ultralytics YOLOv8 deps
@@ -425,11 +400,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 +418,179 @@ 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
+
+# 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"
+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 \
+ control_toolbox \
+ 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_py \
+ 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 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
+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 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 ..
+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
+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
+
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/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/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/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/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/.clangd b/zebROS_ws/src/.clangd
new file mode 100644
index 000000000..d7a06ed2b
--- /dev/null
+++ b/zebROS_ws/src/.clangd
@@ -0,0 +1,2 @@
+CompileFlags:
+ Remove: [ -ftrack-macro-expansion=0, -fno-var-tracking-assignments ]
\ No newline at end of file
diff --git a/zebROS_ws/src/.rosinstall b/zebROS_ws/src/.rosinstall
index 475825e0d..ab1f7348a 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
@@ -46,15 +35,16 @@
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
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 +54,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/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/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/ctre_interfaces/include/ctre_interfaces/absolute_sensor_range.h b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/absolute_sensor_range.h
deleted file mode 100644
index b746ca173..000000000
--- a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/absolute_sensor_range.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-namespace hardware_interface
-{
-enum AbsoluteSensorRange
-{
- /**
- * Express the absolute position as an unsigned value.
- * E.g. [0,+1) rotations or [0,360) deg.
- */
- Unsigned_0_to_360,
- /**
- * Express the absolute position as an signed value.
- * E.g. [-0.5,+0.5) rotations or [-180,+180) deg.
- */
- Signed_PlusMinus180,
-};
-}
diff --git a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/sensor_initialization_strategy.h b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/sensor_initialization_strategy.h
deleted file mode 100644
index ad7461368..000000000
--- a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/sensor_initialization_strategy.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-namespace hardware_interface
-{
-enum SensorInitializationStrategy
-{
- /**
- * On boot up, set position to zero.
- */
- BootToZero,
- /**
- * On boot up, sync to the Absolute Position signal. The Absolute position signal will be signed according to the selected Absolute Sensor Range.
- */
- BootToAbsolutePosition,
-};
-}
diff --git a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_command_interface.h b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_command_interface.h
index 1ec753e03..f8afe68c7 100644
--- a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_command_interface.h
+++ b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_command_interface.h
@@ -290,20 +290,6 @@ class TalonHWCommand
bool &supply_current_limit_enable);
void resetSupplyCurrentLimit(void);
- void setStatorCurrentLimit(double stator_current_limit);
- double getStatorCurrentLimit(void) const;
- void setStatorCurrentTriggerThresholdCurrent(double stator_current_trigger_threshold_current);
- double getStatorCurrentTriggerThresholdCurrent(void) const;
- void setStatorCurrentTriggerThresholdTime(double stator_current_trigger_threshold_time);
- double getStatorCurrentTriggerThresholdTime(void) const;
- void setStatorCurrentLimitEnable(bool stator_current_limit_enable);
- bool getStatorCurrentLimitEnable(void) const;
- bool statorCurrentLimitChanged(double &stator_current_limit,
- double &stator_current_trigger_threshold_current,
- double &stator_time_trigger_threshold_time,
- bool &stator_current_limit_enable);
- void resetStatorCurrentLimit(void);
-
void setMotionCruiseVelocity(double velocity);
double getMotionCruiseVelocity(void) const;
void setMotionAcceleration(double acceleration);
@@ -367,24 +353,6 @@ class TalonHWCommand
void setConversionFactor(double conversion_factor);
double getConversionFactor(void) const;
- //TalonFX only
- void setMotorCommutation(hardware_interface::MotorCommutation motor_commutation);
- hardware_interface::MotorCommutation getMotorCommutation(void) const;
- bool motorCommutationChanged(hardware_interface::MotorCommutation &motor_commutation);
- void resetMotorCommutation(void);
-
- //TalonFX only
- void setAbsoluteSensorRange(hardware_interface::AbsoluteSensorRange absolute_sensor_range);
- hardware_interface::AbsoluteSensorRange getAbsoluteSensorRange(void) const;
- bool absoluteSensorRangeChanged(hardware_interface::AbsoluteSensorRange &absolute_sensor_range);
- void resetAbsoluteSensorRange(void);
-
- //TalonFX only
- void setSensorInitializationStrategy(hardware_interface::SensorInitializationStrategy sensor_initialization_strategy);
- hardware_interface::SensorInitializationStrategy getSensorInitializationStrategy(void) const;
- bool sensorInitializationStrategyChanged(hardware_interface::SensorInitializationStrategy &sensor_initialization_strategy);
- void resetSensorInitializationStrategy(void);
-
void setEnableReadThread(bool enable_read_thread);
bool getEnableReadThread(void) const;
@@ -531,16 +499,6 @@ class TalonHWCommand
bool clear_position_on_limit_r_{false};
bool clear_position_on_limit_r_changed_{false};
- // TalonFX / Falcon500 specific
- hardware_interface::MotorCommutation motor_commutation_;
- bool motor_commutation_changed_;
-
- hardware_interface::AbsoluteSensorRange absolute_sensor_range_;
- bool absolute_sensor_range_changed_;
-
- hardware_interface::SensorInitializationStrategy sensor_initialization_strategy_;
- bool sensor_initialization_strategy_changed_;
-
bool enable_read_thread_;
bool enable_read_thread_changed_;
diff --git a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_interface.h b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_interface.h
index bf2870160..643302791 100644
--- a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_interface.h
+++ b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_interface.h
@@ -5,8 +5,6 @@
#include
#include
-#include "ctre_interfaces/absolute_sensor_range.h"
-#include "ctre_interfaces/sensor_initialization_strategy.h"
#include "ctre_interfaces/talon_state_types.h"
namespace hardware_interface
@@ -162,15 +160,6 @@ class TalonHWState
void setSupplyCurrentLimitEnable(bool supply_current_limit_enable);
bool getSupplyCurrentLimitEnable(void) const;
- void setStatorCurrentLimit(double stator_current_limit);
- double getStatorCurrentLimit(void) const;
- void setStatorCurrentTriggerThresholdCurrent(double stator_current_trigger_threshold_current);
- double getStatorCurrentTriggerThresholdCurrent(void) const;
- void setStatorCurrentTriggerThresholdTime(double stator_current_trigger_threshold_time);
- double getStatorCurrentTriggerThresholdTime(void) const;
- void setStatorCurrentLimitEnable(bool stator_current_limit_enable);
- bool getStatorCurrentLimitEnable(void) const;
-
void setMotionCruiseVelocity(double velocity);
double getMotionCruiseVelocity(void) const;
void setMotionAcceleration(double acceleration);
@@ -241,18 +230,6 @@ class TalonHWState
void setClearPositionOnLimitR(bool clear_position_on_limit_r);
bool getClearPositionOnLimitR(void) const;
- //TalonFX only
- void setMotorCommutation(hardware_interface::MotorCommutation motor_commutation);
- hardware_interface::MotorCommutation getMotorCommutation(void) const;
-
- //TalonFX only
- void setAbsoluteSensorRange(hardware_interface::AbsoluteSensorRange absolute_sensor_range);
- hardware_interface::AbsoluteSensorRange getAbsoluteSensorRange(void) const;
-
- //TalonFX only
- void setSensorInitializationStrategy(hardware_interface::SensorInitializationStrategy sensor_initialization_strategy);
- hardware_interface::SensorInitializationStrategy getSensorInitializationStrategy(void) const;
-
void setEnableReadThread(bool enable_read_thread);
void setFirmwareVersion(int firmware_version);
int getFirmwareVersion(void) const;
@@ -356,17 +333,12 @@ class TalonHWState
int current_limit_continuous_amps_;
bool current_limit_enable_;
- // TalonFX / Falcon500 only
+ // TalonSRX cuurent limiting
double supply_current_limit_;
double supply_current_trigger_threshold_current_;
double supply_current_trigger_threshold_time_;
bool supply_current_limit_enable_;
- double stator_current_limit_;
- double stator_current_trigger_threshold_current_;
- double stator_current_trigger_threshold_time_;
- bool stator_current_limit_enable_;
-
// Talon expects these in integral sensorUnitsPer100ms,
// but at this level we're still dealing with
// radians/sec (or /sec^2 for acceleration)
@@ -392,11 +364,6 @@ class TalonHWState
bool clear_position_on_limit_f_{false};
bool clear_position_on_limit_r_{false};
- // TalonFX / Falcon500 specific
- hardware_interface::MotorCommutation motor_commutation_;
- hardware_interface::AbsoluteSensorRange absolute_sensor_range_;
- hardware_interface::SensorInitializationStrategy sensor_initialization_strategy_;
-
bool enable_read_thread_;
int firmware_version_;
diff --git a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_types.h b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_types.h
index 339cacafe..297d9b971 100644
--- a/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_types.h
+++ b/zebROS_ws/src/ctre_interfaces/include/ctre_interfaces/talon_state_types.h
@@ -49,7 +49,6 @@ enum FeedbackDevice
FeedbackDevice_Uninitialized,
FeedbackDevice_QuadEncoder,
FeedbackDevice_CTRE_MagEncoder_Relative = FeedbackDevice_QuadEncoder,
- FeedbackDevice_IntegratedSensor,
FeedbackDevice_Analog,
FeedbackDevice_Tachometer,
FeedbackDevice_PulseWidthEncodedPosition,
@@ -199,38 +198,21 @@ enum SetValueMotionProfile
Disable = 0, Enable = 1, Hold = 2,
};
-enum class MotorCommutation {
- Trapezoidal //!< Trapezoidal Commutation
-};
-
struct MotionProfileStatus
{
- int topBufferRem;
- int topBufferCnt;
- int btmBufferCnt;
- bool hasUnderrun;
- bool isUnderrun;
- bool activePointValid;
- bool isLast;
- int profileSlotSelect0;
- int profileSlotSelect1;
- SetValueMotionProfile outputEnable;
- int timeDurMs;
-
- MotionProfileStatus(void):
- topBufferRem(0),
- topBufferCnt(0),
- btmBufferCnt(0),
- hasUnderrun(false),
- isUnderrun(false),
- activePointValid(false),
- isLast(false),
- profileSlotSelect0(0),
- profileSlotSelect1(0),
- outputEnable(Disable),
- timeDurMs(0)
- {
- }
+ size_t topBufferRem{0};
+ size_t topBufferCnt{0};
+ int btmBufferCnt{0};
+ bool hasUnderrun{false};
+ bool isUnderrun{false};
+ bool activePointValid{false};
+ bool isLast{false};
+ int profileSlotSelect0{0};
+ int profileSlotSelect1{0};
+ SetValueMotionProfile outputEnable{Disable};
+ int timeDurMs{0};
+
+ explicit MotionProfileStatus(void) = default;
};
diff --git a/zebROS_ws/src/ctre_interfaces/src/talon_command_interface.cpp b/zebROS_ws/src/ctre_interfaces/src/talon_command_interface.cpp
index c7d259aea..f6402821a 100644
--- a/zebROS_ws/src/ctre_interfaces/src/talon_command_interface.cpp
+++ b/zebROS_ws/src/ctre_interfaces/src/talon_command_interface.cpp
@@ -90,19 +90,13 @@ TalonHWCommand::TalonHWCommand(void) :
current_limit_enable_(false),
current_limit_changed_(true),
- // current limiting - TalonFX / Falcon500
+ // current limiting - TalonSRX
supply_current_limit_(0),
supply_current_trigger_threshold_current_(0),
supply_current_trigger_threshold_time_(0),
supply_current_limit_enable_(false),
supply_current_limit_changed_(true),
- stator_current_limit_(0),
- stator_current_trigger_threshold_current_(0),
- stator_current_trigger_threshold_time_(0),
- stator_current_limit_enable_(false),
- stator_current_limit_changed_(true),
-
motion_cruise_velocity_(0),
motion_acceleration_(0),
motion_s_curve_strength_(0),
@@ -129,15 +123,6 @@ TalonHWCommand::TalonHWCommand(void) :
conversion_factor_(1.0),
- motor_commutation_(hardware_interface::MotorCommutation::Trapezoidal),
- motor_commutation_changed_(true),
-
- absolute_sensor_range_(hardware_interface::Unsigned_0_to_360),
- absolute_sensor_range_changed_(true),
-
- sensor_initialization_strategy_(hardware_interface::BootToZero),
- sensor_initialization_strategy_changed_(true),
-
enable_read_thread_(true),
enable_read_thread_changed_(false),
mutex_(std::make_shared())
@@ -1484,73 +1469,6 @@ void TalonHWCommand::resetSupplyCurrentLimit(void)
supply_current_limit_changed_ = true;
}
-void TalonHWCommand::setStatorCurrentLimit(double stator_current_limit)
-{
- if (stator_current_limit_ != stator_current_limit)
- {
- stator_current_limit_ = stator_current_limit;
- stator_current_limit_changed_ = true;
- }
-}
-double TalonHWCommand::getStatorCurrentLimit(void) const
-{
- return stator_current_limit_;
-}
-void TalonHWCommand::setStatorCurrentTriggerThresholdCurrent(double stator_current_trigger_threshold_current)
-{
- if (stator_current_trigger_threshold_current_ != stator_current_trigger_threshold_current)
- {
- stator_current_trigger_threshold_current_ = stator_current_trigger_threshold_current;
- stator_current_limit_changed_ = true;
- }
-}
-double TalonHWCommand::getStatorCurrentTriggerThresholdCurrent(void) const
-{
- return stator_current_trigger_threshold_current_;
-}
-void TalonHWCommand::setStatorCurrentTriggerThresholdTime(double stator_current_trigger_threshold_time)
-{
- if (stator_current_trigger_threshold_time_ != stator_current_trigger_threshold_time)
- {
- stator_current_trigger_threshold_time_ = stator_current_trigger_threshold_time;
- stator_current_limit_changed_ = true;
- }
-}
-double TalonHWCommand::getStatorCurrentTriggerThresholdTime(void) const
-{
- return stator_current_trigger_threshold_time_;
-}
-void TalonHWCommand::setStatorCurrentLimitEnable(bool stator_current_limit_enable)
-{
- if (stator_current_limit_enable_ != stator_current_limit_enable)
- {
- stator_current_limit_enable_ = stator_current_limit_enable;
- stator_current_limit_changed_ = true;
- }
-}
-bool TalonHWCommand::getStatorCurrentLimitEnable(void) const
-{
- return stator_current_limit_enable_;
-}
-
-bool TalonHWCommand::statorCurrentLimitChanged(double &stator_current_limit,
- double &stator_current_trigger_threshold_current,
- double &stator_current_trigger_threshold_time,
- bool &stator_current_limit_enable)
-{
- stator_current_limit = stator_current_limit_;
- stator_current_trigger_threshold_current = stator_current_trigger_threshold_current_;
- stator_current_trigger_threshold_time = stator_current_trigger_threshold_time_;
- stator_current_limit_enable = stator_current_limit_enable_;
- const bool ret = stator_current_limit_changed_;
- stator_current_limit_changed_ = false;
- return ret;
-}
-void TalonHWCommand::resetStatorCurrentLimit(void)
-{
- stator_current_limit_changed_ = true;
-}
-
void TalonHWCommand::setMotionCruiseVelocity(double velocity)
{
if (fabs(velocity - motion_cruise_velocity_) > double_value_epsilon)
@@ -1858,81 +1776,6 @@ double TalonHWCommand::getConversionFactor(void) const
return conversion_factor_;
}
-//TalonFX only
-void TalonHWCommand::setMotorCommutation(hardware_interface::MotorCommutation motor_commutation)
-{
- if (motor_commutation_ != motor_commutation)
- {
- motor_commutation_ = motor_commutation;
- motor_commutation_changed_ = true;
- }
-}
-hardware_interface::MotorCommutation TalonHWCommand::getMotorCommutation(void) const
-{
- return motor_commutation_;
-}
-bool TalonHWCommand::motorCommutationChanged(hardware_interface::MotorCommutation &motor_commutation)
-{
- motor_commutation = motor_commutation_;
- const bool ret = motor_commutation_changed_;
- motor_commutation_changed_ = false;
- return ret;
-}
-void TalonHWCommand::resetMotorCommutation(void)
-{
- motor_commutation_changed_ = true;
-}
-
-//TalonFX only
-void TalonHWCommand::setAbsoluteSensorRange(hardware_interface::AbsoluteSensorRange absolute_sensor_range)
-{
- if (absolute_sensor_range_ != absolute_sensor_range)
- {
- absolute_sensor_range_ = absolute_sensor_range;
- absolute_sensor_range_changed_ = true;
- }
-}
-hardware_interface::AbsoluteSensorRange TalonHWCommand::getAbsoluteSensorRange(void) const
-{
- return absolute_sensor_range_;
-}
-bool TalonHWCommand::absoluteSensorRangeChanged(hardware_interface::AbsoluteSensorRange &absolute_sensor_range)
-{
- absolute_sensor_range = absolute_sensor_range_;
- const bool ret = absolute_sensor_range_changed_;
- absolute_sensor_range_changed_ = false;
- return ret;
-}
-void TalonHWCommand::resetAbsoluteSensorRange(void)
-{
- absolute_sensor_range_changed_ = true;
-}
-
-//TalonFX only
-void TalonHWCommand::setSensorInitializationStrategy(hardware_interface::SensorInitializationStrategy sensor_initialization_strategy)
-{
- if (sensor_initialization_strategy_ != sensor_initialization_strategy)
- {
- sensor_initialization_strategy_ = sensor_initialization_strategy;
- sensor_initialization_strategy_changed_ = true;
- }
-}
-hardware_interface::SensorInitializationStrategy TalonHWCommand::getSensorInitializationStrategy(void) const
-{
- return sensor_initialization_strategy_;
-}
-bool TalonHWCommand::sensorInitializationStrategyChanged(hardware_interface::SensorInitializationStrategy &sensor_initialization_strategy)
-{
- sensor_initialization_strategy = sensor_initialization_strategy_;
- const bool ret = sensor_initialization_strategy_changed_;
- sensor_initialization_strategy_changed_ = false;
- return ret;
-}
-void TalonHWCommand::resetSensorInitializationStrategy(void)
-{
- sensor_initialization_strategy_changed_ = true;
-}
-
void TalonHWCommand::setEnableReadThread(bool enable_read_thread)
{
enable_read_thread_ = enable_read_thread;
diff --git a/zebROS_ws/src/ctre_interfaces/src/talon_state_interface.cpp b/zebROS_ws/src/ctre_interfaces/src/talon_state_interface.cpp
index 0231eab92..f211430e6 100644
--- a/zebROS_ws/src/ctre_interfaces/src/talon_state_interface.cpp
+++ b/zebROS_ws/src/ctre_interfaces/src/talon_state_interface.cpp
@@ -103,11 +103,6 @@ TalonHWState::TalonHWState(int can_id) :
supply_current_trigger_threshold_time_(0),
supply_current_limit_enable_(false),
- stator_current_limit_(0),
- stator_current_trigger_threshold_current_(0),
- stator_current_trigger_threshold_time_(0),
- stator_current_limit_enable_(false),
-
motion_cruise_velocity_(0),
motion_acceleration_(0),
motion_s_curve_strength_(0),
@@ -123,10 +118,6 @@ TalonHWState::TalonHWState(int can_id) :
conversion_factor_(1.0),
- motor_commutation_(hardware_interface::MotorCommutation::Trapezoidal),
- absolute_sensor_range_(hardware_interface::Unsigned_0_to_360),
- sensor_initialization_strategy_(hardware_interface::BootToZero),
-
// control of read thread
enable_read_thread_(true),
@@ -761,40 +752,6 @@ bool TalonHWState::getSupplyCurrentLimitEnable(void) const
return supply_current_limit_enable_;
}
-// Current limits - TalonFX / Falcon500
-void TalonHWState::setStatorCurrentLimit(double stator_current_limit)
-{
- stator_current_limit_ = stator_current_limit;
-}
-double TalonHWState::getStatorCurrentLimit(void) const
-{
- return stator_current_limit_;
-}
-void TalonHWState::setStatorCurrentTriggerThresholdCurrent(double stator_current_trigger_threshold_current)
-{
- stator_current_trigger_threshold_current_ = stator_current_trigger_threshold_current;
-}
-double TalonHWState::getStatorCurrentTriggerThresholdCurrent(void) const
-{
- return stator_current_trigger_threshold_current_;
-}
-void TalonHWState::setStatorCurrentTriggerThresholdTime(double stator_current_trigger_threshold_time)
-{
- stator_current_trigger_threshold_time_ = stator_current_trigger_threshold_time;
-}
-double TalonHWState::getStatorCurrentTriggerThresholdTime(void) const
-{
- return stator_current_trigger_threshold_time_;
-}
-void TalonHWState::setStatorCurrentLimitEnable(bool stator_current_limit_enable)
-{
- stator_current_limit_enable_ = stator_current_limit_enable;
-}
-bool TalonHWState::getStatorCurrentLimitEnable(void) const
-{
- return stator_current_limit_enable_;
-}
-
void TalonHWState::setMotionCruiseVelocity(double velocity)
{
@@ -1176,36 +1133,6 @@ bool TalonHWState::getClearPositionOnLimitR(void) const
return clear_position_on_limit_r_;
}
-//TalonFX only
-void TalonHWState::setMotorCommutation(hardware_interface::MotorCommutation motor_commutation)
-{
- motor_commutation_ = motor_commutation;
-}
-hardware_interface::MotorCommutation TalonHWState::getMotorCommutation(void) const
-{
- return motor_commutation_;
-}
-
-//TalonFX only
-void TalonHWState::setAbsoluteSensorRange(hardware_interface::AbsoluteSensorRange absolute_sensor_range)
-{
- absolute_sensor_range_ = absolute_sensor_range;
-}
-hardware_interface::AbsoluteSensorRange TalonHWState::getAbsoluteSensorRange(void) const
-{
- return absolute_sensor_range_;
-}
-
-//TalonFX only
-void TalonHWState::setSensorInitializationStrategy(hardware_interface::SensorInitializationStrategy sensor_initialization_strategy)
-{
- sensor_initialization_strategy_ = sensor_initialization_strategy;
-}
-hardware_interface::SensorInitializationStrategy TalonHWState::getSensorInitializationStrategy(void) const
-{
- return sensor_initialization_strategy_;
-}
-
void TalonHWState::setEnableReadThread(bool enable_read_thread)
{
enable_read_thread_ = enable_read_thread;
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
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/CMakeLists.txt b/zebROS_ws/src/ros_control_boilerplate/CMakeLists.txt
index 2f0b6c1a7..d2bb293ed 100644
--- a/zebROS_ws/src/ros_control_boilerplate/CMakeLists.txt
+++ b/zebROS_ws/src/ros_control_boilerplate/CMakeLists.txt
@@ -178,7 +178,7 @@ set (FRCROBOT_HW_MAIN_SRCS
src/as726x_hw_device.cpp
src/cancoder_hw_device.cpp
src/candle_hw_device.cpp
- # src/ctre_v5_motor_controller_hw_device.cpp
+ src/ctre_v5_motor_controller_hw_device.cpp
src/error_queue.cpp
src/frcrobot_hw_main.cpp
src/frcrobot_hw_interface.cpp
@@ -460,14 +460,14 @@ if (NOT (("${ARM_PREFIX}" STREQUAL "arm-frc2025-linux-gnueabi") OR
src/as726x_sim_device.cpp
src/cancoder_sim_device.cpp
src/candle_sim_device.cpp
- # src/ctre_v5_motor_controller_sim_device.cpp
+ src/ctre_v5_motor_controller_sim_device.cpp
src/frcrobot_sim_interface.cpp
src/dummy_powerdistribution.cpp
src/dummy_wpilib_common.cpp
src/dummy_wpilib_sim.cpp
src/joystick_sim_device.cpp
src/match_data_sim_device.cpp
- # src/sim_ctre_v5_motor_controller.cpp
+ src/sim_ctre_v5_motor_controller.cpp
src/sim_talonfxpro_device.cpp
# src/sparkmax_sim_device.cpp
src/talonfxpro_sim_devices.cpp
@@ -524,14 +524,14 @@ if (NOT (("${ARM_PREFIX}" STREQUAL "arm-frc2025-linux-gnueabi") OR
src/as726x_sim_device.cpp
src/cancoder_sim_device.cpp
src/candle_sim_device.cpp
- # src/ctre_v5_motor_controller_sim_device.cpp
+ src/ctre_v5_motor_controller_sim_device.cpp
src/frcrobot_sim_interface.cpp
src/dummy_powerdistribution.cpp
src/dummy_wpilib_common.cpp
src/dummy_wpilib_sim.cpp
src/joystick_sim_device.cpp
src/match_data_sim_device.cpp
- # src/sim_ctre_v5_motor_controller.cpp
+ src/sim_ctre_v5_motor_controller.cpp
src/sim_talonfxpro_device.cpp
# src/sparkmax_sim_device.cpp
src/talonfxpro_sim_devices.cpp
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/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/include/ros_control_boilerplate/ctre_v5_motor_controller.h b/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_motor_controller.h
index 8915f4dee..c586332ca 100644
--- a/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_motor_controller.h
+++ b/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/ctre_v5_motor_controller.h
@@ -1,6 +1,8 @@
#ifndef CTRE_V5_MOTOR_CONTROLLER_INC__
#define CTRE_V5_MOTOR_CONTROLLER_INC__
+#include
+#include
#include
#include
#include
diff --git a/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/sim_ctre_v5_motor_controller.h b/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/sim_ctre_v5_motor_controller.h
index 052ab19c0..a6824478b 100644
--- a/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/sim_ctre_v5_motor_controller.h
+++ b/zebROS_ws/src/ros_control_boilerplate/include/ros_control_boilerplate/sim_ctre_v5_motor_controller.h
@@ -1,10 +1,8 @@
#ifndef SIM_CTRE_V5_MOTOR_CONTROLLER_INC__
#define SIM_CTRE_V5_MOTOR_CONTROLLER_INC__
-#include
-#include
+#include
#include
-#include
#include "ros_control_boilerplate/ctre_v5_motor_controller.h"
namespace gazebo::physics
@@ -26,7 +24,7 @@ class SimCTREV5MotorController : public CTREV5MotorController
const double read_hz);
SimCTREV5MotorController(SimCTREV5MotorController &&other) noexcept = delete;
SimCTREV5MotorController(const SimCTREV5MotorController &) = delete;
- virtual ~SimCTREV5MotorController() = default;
+ ~SimCTREV5MotorController() override = default;
SimCTREV5MotorController &operator=(const SimCTREV5MotorController &) = delete;
SimCTREV5MotorController &operator=(SimCTREV5MotorController &&) noexcept = delete;
@@ -42,7 +40,6 @@ class SimCTREV5MotorController : public CTREV5MotorController
private:
void setSimCollection(int position, int velocity, int delta_position = 0) const;
void setSimCollectionTalonSRX(int position, int velocity, int delta_position) const;
- void setSimCollectionTalonFX(int position, int velocity, int delta_position) const;
boost::shared_ptr gazebo_joint_;
};
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" />