54 lines
1.4 KiB
Bash
Executable File
54 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
echo "=========================================="
|
|
echo "UAV-UGV Simulation - Run Script"
|
|
echo "GPS-Denied Navigation with Geofencing"
|
|
echo "=========================================="
|
|
|
|
WORLD="${1:-$PROJECT_DIR/worlds/empty_custom.world}"
|
|
|
|
if [ ! -f "$WORLD" ]; then
|
|
echo "World file not found: $WORLD"
|
|
echo "Using default world..."
|
|
WORLD="$PROJECT_DIR/worlds/empty_custom.world"
|
|
fi
|
|
|
|
export GAZEBO_MODEL_PATH="$PROJECT_DIR/models:$GAZEBO_MODEL_PATH"
|
|
export GAZEBO_RESOURCE_PATH="$PROJECT_DIR/worlds:$GAZEBO_RESOURCE_PATH"
|
|
|
|
if command -v nvidia-smi &> /dev/null; then
|
|
echo "NVIDIA GPU detected, enabling acceleration..."
|
|
export __NV_PRIME_RENDER_OFFLOAD=1
|
|
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
|
fi
|
|
|
|
cleanup() {
|
|
echo ""
|
|
echo "Shutting down simulation..."
|
|
pkill -f "gazebo" 2>/dev/null || true
|
|
pkill -f "sim_vehicle.py" 2>/dev/null || true
|
|
pkill -f "mavros" 2>/dev/null || true
|
|
echo "Cleanup complete."
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
echo "Starting simulation with world: $WORLD"
|
|
echo ""
|
|
|
|
if [ -f "$PROJECT_DIR/venv/bin/activate" ]; then
|
|
source "$PROJECT_DIR/venv/bin/activate"
|
|
fi
|
|
|
|
source /opt/ros/humble/setup.bash 2>/dev/null || true
|
|
|
|
if [ -f "$PROJECT_DIR/install/setup.bash" ]; then
|
|
source "$PROJECT_DIR/install/setup.bash"
|
|
fi
|
|
|
|
ros2 launch uav_ugv_simulation full_simulation.launch.py world:="$WORLD"
|