Files
webots-module-b/install-webots.sh

179 lines
8.8 KiB
Bash
Raw Normal View History

2026-04-01 09:48:40 +03:00
#!/bin/bash
# =============================================================================
# Скрипт установки системы для роботов (ROS2 Jazzy + Webots + Nav2 + SLAM)
# Ubuntu 24.04 LTS
# =============================================================================
set -e # Остановить выполнение при любой ошибке
BASHRC="$HOME/.bashrc"
# Вспомогательная функция: добавить строку в ~/.bashrc, если её там ещё нет
append_bashrc() {
local line="$1"
if ! grep -qF "$line" "$BASHRC"; then
echo "$line" >> "$BASHRC"
echo " -> Добавлено в ~/.bashrc: $line"
else
echo " -> Уже есть в ~/.bashrc: $line"
fi
}
echo ""
echo "============================================================"
echo " Установка системы для роботов на Ubuntu 24.04"
echo "============================================================"
echo ""
# ─────────────────────────────────────────────────────────────────────────────
# ШАГ 0 — Установка базовых инструментов (git, curl и т.д.)
# ─────────────────────────────────────────────────────────────────────────────
echo ">>> [0/4] Установка базовых инструментов..."
sudo apt update -y
sudo apt install -y git curl
# ─────────────────────────────────────────────────────────────────────────────
# ШАГ 1 — Установка ROS2 Jazzy
# ─────────────────────────────────────────────────────────────────────────────
echo ""
echo ">>> [1/4] Установка ROS2 Jazzy..."
# Локаль
sudo apt install -y locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
# Репозиторий ROS2
sudo apt install -y software-properties-common
sudo add-apt-repository -y universe
sudo apt update -y
ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest \
| grep -F "tag_name" | awk -F\" '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb \
"https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb
# Установка ROS2 Jazzy Desktop Full
# (исправлена опечатка оригинала: desctop -> desktop)
sudo apt update -y
sudo apt install -y ros-jazzy-desktop-full
# colcon
sudo apt install -y python3-colcon-common-extensions
# Source ROS2 в текущей сессии и в ~/.bashrc
source /opt/ros/jazzy/setup.bash
append_bashrc "source /opt/ros/jazzy/setup.bash"
echo " ROS2 Jazzy установлен."
# ─────────────────────────────────────────────────────────────────────────────
# ШАГ 2 — Установка симулятора Webots + ROS2-интеграция
# ─────────────────────────────────────────────────────────────────────────────
echo ""
echo ">>> [2/4] Установка Webots..."
# GPG-ключ и репозиторий Cyberbotics
sudo mkdir -p /etc/apt/keyrings
sudo wget -q https://cyberbotics.com/Cyberbotics.asc \
-O /etc/apt/keyrings/Cyberbotics.asc
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/Cyberbotics.asc] \
https://cyberbotics.com/debian binary-amd64/" \
| sudo tee /etc/apt/sources.list.d/Cyberbotics.list
sudo apt update -y
sudo apt install -y webots
# Переменная окружения Webots
append_bashrc "export WEBOTS_HOME=/snap/webots/current/usr/share/webots"
# Пакет интеграции ROS2 <-> Webots (без него ros2 launch не заработает)
sudo apt install -y ros-jazzy-webots-ros2
echo " Webots установлен."
# ─────────────────────────────────────────────────────────────────────────────
# ШАГ 3 — Сборка рабочего пространства ros2_ws (пакеты симулятора)
# ─────────────────────────────────────────────────────────────────────────────
echo ""
echo ">>> [3/4] Сборка пакетов симулятора (ros2_ws)..."
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src # <-- переходим в src перед клонированием
git clone https://gitlab.mobird.dev/fms_group/ar_webots_fms_ros2.git
git clone https://gitlab.mobird.dev/fms_group/ar_arm95_moveit_config.git
git clone https://gitlab.mobird.dev/fms_group/ar_aruco_detect_ros2.git
git clone https://gitlab.mobird.dev/fms_group/ar_dual_lidar_merge_ros2.git
git clone https://gitlab.mobird.dev/fms_group/ar_nav_ros2.git
cd ~/ros2_ws
# rosdep init может упасть, если уже был вызван — игнорируем ошибку
sudo rosdep init 2>/dev/null || true
rosdep update
rosdep install --from-paths src -y --ignore-src
# Обязательный source перед сборкой
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
append_bashrc "source ~/ros2_ws/install/setup.bash"
echo " ros2_ws собран."
# ─────────────────────────────────────────────────────────────────────────────
# ШАГ 4 — Сборка nav2_ws (навигация) и slam_ws (SLAM)
# ─────────────────────────────────────────────────────────────────────────────
echo ""
echo ">>> [4/4] Сборка nav2_ws и slam_ws..."
# --- Nav2 ---
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src # <-- переходим в src перед клонированием
git clone https://github.com/ros-planning/navigation2.git -b 1.3.10
cd ~/nav2_ws
sudo rosdep init 2>/dev/null || true
rosdep update
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro jazzy
echo " Сборка Nav2 (~30 мин)..."
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
append_bashrc "source ~/nav2_ws/install/setup.bash"
echo " nav2_ws собран."
# --- SLAM Toolbox ---
mkdir -p ~/slam_ws/src
cd ~/slam_ws/src # <-- переходим в src перед клонированием
git clone https://github.com/SteveMacenski/slam_toolbox.git -b 2.8.3
cd ~/slam_ws
sudo rosdep init 2>/dev/null || true
rosdep update
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro jazzy
echo " Сборка SLAM Toolbox (~5 мин)..."
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
append_bashrc "source ~/slam_ws/install/setup.bash"
echo " slam_ws собран."
# ─────────────────────────────────────────────────────────────────────────────
# Готово
# ─────────────────────────────────────────────────────────────────────────────
echo ""
echo "============================================================"
echo " Установка завершена успешно!"
echo ""
echo " Выполните в текущем терминале:"
echo " source ~/.bashrc"
echo ""
echo " Или откройте новый терминал — все source-команды"
echo " уже добавлены в ~/.bashrc и применятся автоматически."
echo "============================================================"
echo ""