ROS安利 | ROS一键安装脚本

科技   2024-11-19 17:20   湖北  

前言


ROS从2007年发展到现在(2024年)已经有17年了,在之前很长的一段时间中国用户都会因为网络问题造成ROS无法安装。本文将安利一个一键安装ROS的工具,包含了安装ROS2 Foxy、Humble和Jazzy,对应了Ubuntu20.04、22.04和24.04的三个版本。



脚本功能


这个安装脚本主要实现以下功能:


1. 自动检测Ubuntu版本(20.04/22.04/24.04),并选择对应的ROS2版本(Foxy/Humble/Jazzy)进行安装


2. 添加ROS2的APT源,并导入GPG密钥,确保安装过程安全可靠


3. 安装ROS2桌面版,以及相关的开发工具和依赖包


4. 配置rosdep,并设置ROSDISTRO_INDEX_URL环境变量,方便后续使用


5. 设置bashrc,自动source ROS2环境变量,避免每次终端重启后重新配置


6. 最后验证安装,提示用户如何使用rosdep安装工作空间依赖


整个安装过程全自动化,无需人工干预,大大简化了ROS2环境的搭建。



# 使用方法


wget oss.guyuehome.com/upload/2024/11/111120478121/install.txt -O install_ros && . install_ros




# 代码内容


#!/bin/bash#author:guyuehoem-qiaolongLi#email:liqiaolong@guyuehome.com# 自动选择并安装ROS2脚本set -e# 获取Ubuntu的版本信息UBUNTU_VERSION=$(lsb_release -sr)UBUNTU_CODENAME=$(lsb_release -cs)ARCH=$(dpkg --print-architecture)# 根据Ubuntu版本选择ROS2版本case "$UBUNTU_VERSION" in"20.04")ROS2_VERSION="foxy";;"22.04")ROS2_VERSION="humble";;"24.04")ROS2_VERSION="jazzy";;*)echo "不支持的Ubuntu版本: $UBUNTU_VERSION"exit 1;;esacecho "检测到Ubuntu版本: $UBUNTU_VERSION ($UBUNTU_CODENAME)"echo "选择安装ROS2版本: $ROS2_VERSION"# 更新系统echo "更新系统包列表..."sudo apt update && sudo apt upgrade -y# 安装必要的依赖echo "安装必要的依赖包..."sudo apt install -y curl gnupg lsb-release software-properties-common# 创建密钥目录sudo mkdir -p /usr/share/keyrings# 下载并添加ROS2 GPG密钥sudo rm -f /usr/share/keyrings/ros-archive-keyring.gpgcurl -sSLf https://gitlab.com/qiaolongli/qiaolongLi.gitlab.io/-/raw/master/ros.asc?ref_type=heads | sudo gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg# 验证密钥文件是否存在if [ ! -f "/usr/share/keyrings/ros-archive-keyring.gpg" ]; thenecho "错误:无法创建ROS2 GPG密钥文件"exit 1fi# 添加ROS2的APT源(使用新的格式)echo "添加ROS2的APT源..."echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $UBUNTU_CODENAME main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null# 更新包列表echo "更新包列表..."sudo apt update# 安装ROS2echo "安装ROS2 ${ROS2_VERSION}..."sudo apt install -y ros-${ROS2_VERSION}-desktopecho "安装开发工具和依赖..."sudo apt install -y \ros-$ROS_DISTRO-rosidl-default-generators \ros-$ROS_DISTRO-rosidl-default-runtime \python3-colcon-common-extensions \python3-colcon-ros \python3-colcon-cmake \build-essential \python3-flake8 \python3-pytest-cov \python3-pip \python3-setuptools \libzbar-dev \ntpdate# 时间同步sudo ntpdate ntp.ubuntu.com# 安装额外的Python工具echo "安装额外的Python工具..."# 检查pip版本并相应调整安装命令PIP_VERSION=$(pip3 --version | awk '{print $2}' | cut -d. -f1)if [ "$PIP_VERSION" -ge 23 ]; then# 新版本pip使用 --break-system-packagespip3 install -U -i https://pypi.tuna.tsinghua.edu.cn/simple \argcomplete \pytest-repeat \pytest-rerunfailures \--break-system-packageselse# 旧版本pip不需要 --break-system-packagespip3 install -U -i https://pypi.tuna.tsinghua.edu.cn/simple \argcomplete \pytest-repeat \pytest-rerunfailuresfiecho "配置并初始化rosdep..."if [ ! -f "/etc/ros/rosdep/sources.list.d/20-default.list" ]; then# 创建rosdep文件夹sudo mkdir -p /etc/ros/rosdep/sources.list.d/# 设置rosdistro源export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml# 下载rosdep源文件echo "下载rosdep源文件..."sudo wget https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list -O /etc/ros/rosdep/sources.list.d/20-default.list# 初始化rosdepsudo rosdep init || true# 更新rosdepecho "更新rosdep..."rosdep updatefi# Add ROSDISTRO_INDEX_URL to environment variablesif ! grep -q "export ROSDISTRO_INDEX_URL=" ~/.bashrc; thenecho "export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml" >> ~/.bashrcfi# 使用方法(先进入工作空间)# rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y# 卸载rosdep# # 删除 rosdep 配置文件和目录# sudo rm -rf /etc/ros/rosdep# sudo rm -rf ~/.ros/rosdep# # 使用 apt 卸载 python3-rosdep 包# sudo apt remove --purge -y python3-rosdep# sudo apt autoremove -y# 设置环境变量echo "设置环境变量..."if ! grep -q "source /opt/ros/${ROS2_VERSION}/setup.bash" ~/.bashrc; thenecho "source /opt/ros/${ROS2_VERSION}/setup.bash" >> ~/.bashrcfi# 立即应用环境变量source ~/.bashrcecho "ROS2 ${ROS2_VERSION} 安装完成!"# 验证安装echo "验证ROS2安装..."if command -v ros2 &> /dev/null; thenecho "ros2已安装成功"elseecho "警告:ros2 命令未找到,可能需要重新启动终端或手动source环境变量"echo "请运行: source ~/.bashrc"fi
echo "依赖包安装方式请使用如下指令:'cd ~/dev_ws & rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y'



附件


https://oss.guyuehome.com/upload/2024/11/111120478121/install.txt



讲师招募


招募要求

完成符合要求的机器人相关视频制作

总时长需达到 3小时以上

视频内容需为精品课程,确保高质量和专业性


讲师奖励

享受课程收入分成

赠送 2门 古月学院在售精品课程(训练营除外)


联系我们

添加工作人员微信:GYH-xiaogu




古月居
专业的ROS机器人知识社区和产业服务平台
 最新文章