diff --git a/install-webots.sh b/install-webots.sh new file mode 100644 index 0000000..579f9e6 --- /dev/null +++ b/install-webots.sh @@ -0,0 +1,179 @@ +#!/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 "" \ No newline at end of file