179 lines
8.8 KiB
Bash
179 lines
8.8 KiB
Bash
|
|
#!/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 ""
|