#!/usr/bin/env bash # Export YOLO .pt/.onnx → TensorRT .engine (FP16). # # bash ~/ros2/scripts/export_yolo_trt.sh # bash ~/ros2/scripts/export_yolo_trt.sh /home/cc/ros2/models/yolo/detect_best.onnx 640 # # Needs: tensorrt-cu12 + onnx + onnxslim in ros_flexiv (do NOT pip install # the meta package `tensorrt`, it pulls CUDA 13 wheels). # Then set yolo.backend: tensorrt in site.yaml and restart visual servo. set -eo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # shellcheck disable=SC1091 source "${ROOT}/scripts/lib/load_site_config.sh" PT="${1:-${SITE_YOLO_WEIGHTS:-${ROOT}/models/yolo/detect_best.onnx}}" IMGSZ="${2:-${SITE_YOLO_IMGSZ:-640}}" PY="${HOME}/anaconda3/envs/ros_flexiv/bin/python" if [[ ! -f "${PT}" ]]; then echo "ERROR: weights not found: ${PT}" >&2 exit 1 fi # Pip TensorRT shared libs (needed at export + runtime). TRT_LIBS="$("${PY}" - <<'PY' import pathlib, tensorrt p = pathlib.Path(tensorrt.__file__).resolve().parent cands = [p, p.parent / "tensorrt_libs", p.parent / "nvidia" / "tensorrt" / "lib"] print(":".join(str(x) for x in cands if x.exists())) PY )" export LD_LIBRARY_PATH="${TRT_LIBS}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" export YOLO_AUTOINSTALL=false echo "Export TensorRT engine from ${PT} imgsz=${IMGSZ}" "${PY}" - <