GPIO 如果要在 Jetson 中使用硬件 PWM,则需要修改 Pinmux 表来多路复用。Jetpack 提供了一个名为 jetson-io 的工具,它允许创建和更新可以使用 PWM 的 dtb。
1 sudo /opt/nvidia/jetson-io/jetson-io.py
选择 Configure Jetson 40pin Header > Configure header pins manually , pwm7(32)选择并 Back,Save pin changes ,Save and reboot to reconfigure pins,按下任意键后重启,即可完成设置。
在使用第三方载板时,jetson-io工具无法确定载板型号。需要手动配置引脚复用。
1 2 3 4 5 6 7 8 9 10 nvidia@tegra-ubuntu:/sys/class/pwm/pwmchip4$ sudo cat /sys/kernel/debug/gpio | grep PG.06 gpio-389 (PG.06 |usbhub_power_en ) out lo nvidia@tegra-ubuntu:/sys/class/pwm/pwmchip4$ ^C nvidia@tegra-ubuntu:/sys/class/pwm/pwmchip4$ sudo cat /sys/kernel/debug/gpio | grep PH.00 gpio-391 (PH.00 |m2_KeyB_power_en ) out lo nvidia@tegra-ubuntu:/sys/class/pwm/pwmchip4$ nvidia@tegra-ubuntu:/sys/class/pwm/pwmchip4$ sudo cat /sys/kernel/debug/gpio | grep PN.01 gpio-433 (PN.01 ) nvidia@tegra-ubuntu:/sys/class/pwm/pwmchip4$ sudo cat /sys/kernel/debug/gpio | grep PCC.00 gpio-328 (PCC.00 |user-led ) out lo
但是载板并没有引出PWM引脚,使用GPIO模拟。
sudo apt-get install libgpiod-dev
sudo gpioinfo
设置 GPIO 高低:sudo gpioset —mode=wait gpiochip0 106=1
sudo gpioset —mode=wait gpiochip0 106=0
opencv https://jishuzhan.net/article/2013776823067918337
需要手动编译OpenCV 以支持 CUDA 加速
一键安装脚本,修改version (OpenCV 版本),ARCH_BIN (CUDA 算力架构),PYTHON_VERSION_NUM (Python 版本)
Jetson 设备型号
架构代号
ARCH_BIN 修改值
备注
Jetson AGX Orin
Ampere
“8.7”
脚本默认值
Jetson Orin NX
Ampere
“8.7”
与 AGX Orin 相同
Jetson Orin Nano
Ampere
“8.7”
与 AGX Orin 相同
Jetson AGX Xavier
Volta
“7.2”
Jetson Xavier NX
Volta
“7.2”
Jetson TX2
Pascal
“6.2”
Jetson Nano (B01)
Maxwell
“5.3”
老款 Nano 请填这个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 #!/bin/bash version="4.10.0" ARCH_BIN="8.7" PYTHON_VERSION_NUM="3.8" folder="workspace" set -efor (( ; ; ))do echo "Do you want to remove the default OpenCV (yes/no)?" read rm_old if [ "$rm_old " = "yes" ]; then echo "** Remove other OpenCV first" sudo apt -y purge *libopencv* break elif [ "$rm_old " = "no" ]; then break fi done echo "------------------------------------" echo "** Install requirement (1/4)" echo "------------------------------------" sudo apt-get update sudo apt-get install -y build-essential cmake git pkg-config unzip curl sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt-get install -y libv4l-dev v4l-utils qv4l2 sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev sudo apt-get install -y libtbb-dev if apt-cache search --names-only '^libtbb2$' | grep -q libtbb2; then sudo apt-get install -y libtbb2 elif apt-cache search --names-only '^libtbb12$' | grep -q libtbb12; then sudo apt-get install -y libtbb12 fi sudo apt-get install -y libgtk2.0-dev echo "------------------------------------" echo "** Download opencv ${version} (2/4)" echo "------------------------------------" mkdir -p $folder cd ${folder} if [ ! -f "opencv-${version} .zip" ]; then echo "Downloading OpenCV source..." curl -L https://github.com/opencv/opencv/archive/${version} .zip -o opencv-${version} .zip else echo "opencv-${version} .zip already exists." fi if [ ! -f "opencv_contrib-${version} .zip" ]; then echo "Downloading OpenCV Contrib source..." curl -L https://github.com/opencv/opencv_contrib/archive/${version} .zip -o opencv_contrib-${version} .zip else echo "opencv_contrib-${version} .zip already exists." fi echo "Unzipping..." unzip -o opencv-${version} .zip > /dev/null unzip -o opencv_contrib-${version} .zip > /dev/null cd opencv-${version} /echo "------------------------------------" echo "** Build opencv ${version} (3/4)" echo "------------------------------------" mkdir -p releasecd release/cmake -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D CUDA_ARCH_BIN="${ARCH_BIN} " \ -D CUDA_ARCH_PTX="" \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-${version} /modules \ -D WITH_GSTREAMER=ON \ -D WITH_LIBV4L=ON \ -D BUILD_opencv_python3=ON \ -D BUILD_opencv_gapi=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_EXAMPLES=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local .. echo "Compiling... This may take a while." make -j$(nproc ) echo "------------------------------------" echo "** Install opencv ${version} (4/4)" echo "------------------------------------" sudo make install if ! grep -q "export LD_LIBRARY_PATH=/usr/local/lib" ~/.bashrc; then echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc fi SITE_PACKAGES_PATH="/usr/local/lib/python${PYTHON_VERSION_NUM} /site-packages" if ! grep -q "export PYTHONPATH=${SITE_PACKAGES_PATH} " ~/.bashrc; then echo "export PYTHONPATH=${SITE_PACKAGES_PATH} /:\$PYTHONPATH" >> ~/.bashrc fi echo "------------------------------------" echo "** Install opencv ${version} successfully" echo "** IMPORTANT: Please run the following command to apply changes:" echo " source ~/.bashrc" echo "** Bye :)"
TensorRT 添加工具软链接
1 sudo ln -s /usr/src/tensorrt/bin/trtexec /usr/local/bin/trtexec
转换模型
1 2 3 4 5 6 trtexec \ --onnx=ros2_ws/src/volleyball_stereo_driver/model/best.onnx \ --saveEngine=ros2_ws/src/volleyball_stereo_driver/model/yolo11n.engine \ --fp16 \ --memPoolSize=workspace:4096 \ --verbose