#!/bin/bash # UAV-UGV Simulation - Environment Activation # Usage: source activate_venv.sh SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # ROS 2 Setup if [ -f "/opt/ros/jazzy/setup.bash" ]; then source /opt/ros/jazzy/setup.bash ROS_VER="jazzy" elif [ -f "/opt/ros/humble/setup.bash" ]; then source /opt/ros/humble/setup.bash ROS_VER="humble" else echo "[WARN] ROS 2 not found in /opt/ros/" ROS_VER="none" fi # ArduPilot Environment export ARDUPILOT_HOME="$HOME/ardupilot" export PATH="$ARDUPILOT_HOME/Tools/autotest:$PATH" export PATH="$HOME/.local/bin:$PATH" # Deactivate existing venv if [ -n "$VIRTUAL_ENV" ]; then deactivate 2>/dev/null || true fi # Activate project venv if [ -f "$SCRIPT_DIR/venv/bin/activate" ]; then source "$SCRIPT_DIR/venv/bin/activate" fi # Gazebo paths (new Gazebo - Ignition/Harmonic) export GZ_SIM_RESOURCE_PATH="$SCRIPT_DIR/models:$SCRIPT_DIR/worlds:${GZ_SIM_RESOURCE_PATH:-}" # ArduPilot Gazebo plugin if [ -d "$HOME/ardupilot_gazebo/build" ]; then export GZ_SIM_SYSTEM_PLUGIN_PATH="$HOME/ardupilot_gazebo/build:${GZ_SIM_SYSTEM_PLUGIN_PATH:-}" export GZ_SIM_RESOURCE_PATH="$HOME/ardupilot_gazebo/models:$HOME/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH" fi # WSL environment if grep -qEi "(microsoft|wsl)" /proc/version 2>/dev/null; then if [ -d "/mnt/wslg" ]; then export DISPLAY=:0 else export DISPLAY=$(cat /etc/resolv.conf 2>/dev/null | grep nameserver | awk '{print $2}'):0 fi export LIBGL_ALWAYS_INDIRECT=0 export MESA_GL_VERSION_OVERRIDE=3.3 fi echo -e "\033[0;32mEnvironment activated (ROS 2 $ROS_VER)\033[0m" echo "" echo "Run simulation: bash scripts/run_simulation.sh"