| 12345678910111213141516171819202122232425262728293031323334353637 |
- #!/usr/bin/env bash
- # Keep the NPU runtime isolated from the system Python used by ROS Noetic.
- set -uo pipefail
- script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
- camera_device="/dev/video0"
- child_pid=""
- # This is deliberately in the outer process: rknnlite/rospy shutdown may not
- # run Python callbacks after roslaunch sends SIGINT. The profile is global to
- # the USB camera, so always leave it in the normal automatic state on exit.
- restore_camera_profile() {
- v4l2-ctl -d "$camera_device" --set-ctrl=exposure_auto=3 >/dev/null 2>&1 || true
- v4l2-ctl -d "$camera_device" --set-ctrl=exposure_auto_priority=0 >/dev/null 2>&1 || true
- v4l2-ctl -d "$camera_device" --set-ctrl=white_balance_temperature_auto=1 >/dev/null 2>&1 || true
- v4l2-ctl -d "$camera_device" --set-ctrl=brightness=0 >/dev/null 2>&1 || true
- v4l2-ctl -d "$camera_device" --set-ctrl=contrast=50 >/dev/null 2>&1 || true
- v4l2-ctl -d "$camera_device" --set-ctrl=saturation=50 >/dev/null 2>&1 || true
- v4l2-ctl -d "$camera_device" --set-ctrl=gamma=300 >/dev/null 2>&1 || true
- echo "traffic_sign_node: camera profile restored to automatic exposure" >&2
- }
- forward_shutdown() {
- if [[ -n "$child_pid" ]]; then
- kill -INT "$child_pid" 2>/dev/null || true
- wait "$child_pid" 2>/dev/null || true
- fi
- exit 0
- }
- trap restore_camera_profile EXIT
- trap forward_shutdown INT TERM
- /home/ucar/venv3.9/bin/python3 "$script_dir/traffic_sign_node.py" "$@" &
- child_pid=$!
- wait "$child_pid"
- exit $?
|