Files
lightweight-cobot/docker/jazzy/ros-iiwa7-webots/run.sh
T

63 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Run the Webots container with X11 forwarding.
#
# Usage:
# ./run.sh [--gpu nvidia|mesa|software] [CMD...]
#
# Examples:
# ./run.sh — software rendering (llvmpipe), по умолчанию
# ./run.sh --gpu mesa — Intel/AMD GPU через DRI (ноутбук без NVIDIA)
# ./run.sh --gpu nvidia — NVIDIA GPU rendering
# ./run.sh --gpu nvidia ros2 launch ... — NVIDIA GPU rendering + команда
set -e
IMAGE="${WEBOTS_IMAGE:-evilfisru/lwc:webots-jazzy}"
GPU_MODE="software"
# Parse --gpu flag
if [[ "${1}" == "--gpu" ]]; then
GPU_MODE="${2:?--gpu requires an argument: nvidia|mesa|software}"
shift 2
fi
# Allow local Docker processes to connect to the X server
xhost +local:docker > /dev/null
case "${GPU_MODE}" in
nvidia)
RENDER_FLAGS=(
--gpus all
-e NVIDIA_VISIBLE_DEVICES=all
-e NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute
)
;;
mesa)
# Intel/AMD integrated/discrete — Mesa через DRI, без NVIDIA toolkit
RENDER_FLAGS=(
--device /dev/dri
)
;;
software)
RENDER_FLAGS=(
-e LIBGL_ALWAYS_SOFTWARE=1
-e GALLIUM_DRIVER=llvmpipe
)
;;
*)
echo "Unknown --gpu value: '${GPU_MODE}'. Use 'nvidia', 'mesa' or 'software'." >&2
exit 1
;;
esac
docker run -it --rm \
--name ros-webots \
--network host \
-e USER=root \
-e DISPLAY="${DISPLAY}" \
-e QT_X11_NO_MITSHM=1 \
"${RENDER_FLAGS[@]}" \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
"${IMAGE}" \
"$@"