Brainrot_Muxa/docker/demo.sh
2026-09-27 01:50:28 +03:00

48 lines
2.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Показ одной командой: узел, проигрывание записи, RViz со схемой мозга мухи.
#
# bash docker/demo.sh /папка/с/записями [запись] [с какой секунды]
# bash docker/demo.sh /root/bags cloud_with_fake_obj
# bash docker/demo.sh /root/bags doubleT_obstacle
#
# Видеокарта для RViz и CUDA выбирается сама: под WSL 2 — через /dev/dxg (одного
# --gpus all там мало, RViz рисовал бы процессором), на Linux с NVIDIA — --gpus all,
# со встроенной графикой — /dev/dri. Пульт проигрывания — из второго терминала:
# docker exec -it flyguard_demo flyguard-keys /data/<запись>
# Масштаб схемы мозга: BRAIN_SCALE=1|2|3 (по умолчанию 2 — под экран 2K).
set -euo pipefail
BAGS=${1:?"укажите папку с записями: bash docker/demo.sh /папка/с/записями [запись]"}
BAG=${2:-cloud_with_fake_obj}
START=${3:-0}
IMAGE=${IMAGE:-flyguard}
if [ ! -d "$BAGS/$BAG" ]; then
echo "нет записи $BAGS/$BAG" >&2
exit 1
fi
if [ -e /dev/dxg ]; then
GPU=(--device /dev/dxg -v /usr/lib/wsl:/usr/lib/wsl:ro -e LD_LIBRARY_PATH=/usr/lib/wsl/lib)
WHERE="WSL 2, видеокарта через /dev/dxg"
elif command -v nvidia-smi >/dev/null 2>&1; then
GPU=(--gpus all)
WHERE="NVIDIA, --gpus all"
elif [ -e /dev/dri ]; then
GPU=(--device /dev/dri)
WHERE="встроенная графика, /dev/dri"
else
GPU=()
WHERE="без видеокарты: считает и рисует процессор"
fi
TTY=(-it)
[ -t 0 ] || TTY=() # без терминала (из другого скрипта) — без -it
xhost +local: >/dev/null 2>&1 || true
docker rm -f flyguard_demo >/dev/null 2>&1 || true
echo "показ: $BAG с $START с, $WHERE"
exec docker run --rm "${TTY[@]}" --name flyguard_demo --network host --ipc host "${GPU[@]}" \
-e DISPLAY="${DISPLAY:-:0}" -v /tmp/.X11-unix:/tmp/.X11-unix -v "$BAGS":/data:ro \
"$IMAGE" ros2 launch flyguard detect.launch.py bag:=/data/"$BAG" start:="$START" \
rviz:=true brain_view:=true brain_scale:="${BRAIN_SCALE:-2}"