94 lines
2.5 KiB
Bash
Executable File
94 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "UAV-UGV Simulation Setup"
|
|
echo "Ubuntu 22.04 + Python 3.10 + ROS 2 Humble"
|
|
echo "GPS-Denied Navigation with Geofencing"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo "[1/7] Updating system packages..."
|
|
sudo apt-get update
|
|
|
|
echo "[2/7] Installing system dependencies..."
|
|
sudo apt-get install -y \
|
|
python3-pip \
|
|
python3-venv \
|
|
python3-opencv \
|
|
libopencv-dev \
|
|
ros-humble-mavros \
|
|
ros-humble-mavros-extras \
|
|
ros-humble-cv-bridge \
|
|
ros-humble-image-transport \
|
|
ros-humble-gazebo-ros-pkgs \
|
|
ros-humble-tf2 \
|
|
ros-humble-tf2-ros \
|
|
ros-humble-tf2-geometry-msgs
|
|
|
|
echo "[3/7] Installing MAVROS GeographicLib datasets..."
|
|
if [ ! -f /usr/share/GeographicLib/geoids/egm96-5.pgm ]; then
|
|
sudo /opt/ros/humble/lib/mavros/install_geographiclib_datasets.sh || true
|
|
fi
|
|
|
|
echo "[4/7] Creating Python virtual environment..."
|
|
if [ ! -d "venv" ]; then
|
|
python3 -m venv venv
|
|
fi
|
|
source venv/bin/activate
|
|
|
|
echo "[5/7] Installing Python dependencies..."
|
|
pip install --upgrade pip
|
|
pip install -r requirements.txt
|
|
|
|
echo "[6/7] Building ROS 2 package..."
|
|
source /opt/ros/humble/setup.bash
|
|
|
|
cd ..
|
|
if [ -d "$(dirname "$SCRIPT_DIR")/src" ]; then
|
|
cd "$(dirname "$SCRIPT_DIR")"
|
|
fi
|
|
|
|
if [ -f "$SCRIPT_DIR/package.xml" ]; then
|
|
colcon build --packages-select uav_ugv_simulation --symlink-install 2>/dev/null || \
|
|
echo "Colcon build skipped - run from ROS workspace"
|
|
fi
|
|
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo "[7/7] Making scripts executable..."
|
|
chmod +x scripts/*.sh
|
|
|
|
cat > activate_venv.sh << 'EOF'
|
|
#!/bin/bash
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/venv/bin/activate"
|
|
source /opt/ros/humble/setup.bash
|
|
if [ -f "$SCRIPT_DIR/install/setup.bash" ]; then
|
|
source "$SCRIPT_DIR/install/setup.bash"
|
|
fi
|
|
export GAZEBO_MODEL_PATH="$SCRIPT_DIR/models:$GAZEBO_MODEL_PATH"
|
|
export GAZEBO_RESOURCE_PATH="$SCRIPT_DIR/worlds:$GAZEBO_RESOURCE_PATH"
|
|
echo "Environment activated."
|
|
echo "Run: bash scripts/run_simulation.sh"
|
|
EOF
|
|
chmod +x activate_venv.sh
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Setup Complete!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. source ~/.bashrc"
|
|
echo " 2. source activate_venv.sh"
|
|
echo " 3. bash scripts/run_simulation.sh"
|
|
echo ""
|
|
echo "GPS-Denied Navigation:"
|
|
echo " - All navigation uses LOCAL coordinates"
|
|
echo " - GPS is ONLY used for geofencing"
|
|
echo ""
|