2.0 安装 ROS

目录

2.1 . 配置Ubuntu软件仓库

2.1.1 为什么配置Ubuntu软件仓库

2.1.2 如何配置Ubuntu的软件仓库

2.2设置sources.list

2.2.1 为什么要设置source.list

2.2.2 设置与更换source.list

2.3 设置密钥

2.4  安装

2.5 初始化 rosdep

2.6 设置环境

2.6.1 为什么设置

2.6.2 如何设置

2.7 构建工厂依赖


2.1 . 配置Ubuntu软件仓库

配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库。你可以根据Ubuntu软件仓库指南来完成这项工作。

2.1.1 为什么配置Ubuntu软件仓库

配置Ubuntu的软件仓库(repositories)是为了能够让你的系统知道从哪里获取和安装软件包。Ubuntu的软件仓库包括“main”,“restricted”,“universe”和“multiverse”。这些仓库中包含了各种不同类型的软件包,以及它们的元数据文件,元数据文件中记录了软件包的信息,包括软件包名称、版本号、软件包描述和软件存储库名称等2。

“main”:Canonical支持的自由开源软件
“restricted”:设备的专有驱动程序
“universe”:社区维护的自由开源软件
“multiverse”:受版权或法律问题限制的软件
如果你不配置Ubuntu的软件仓库,你可能无法获取和安装你需要的软件包。因为Linux的运作是建立在本地的可用软件包数据库上,而这个缓存需要同步以便你能够安装软件。此外,如果你自行添加了某些软件存储库,或者sources.list中的条目有误,你可能会遇到一些更新错误2。

2.1.2 如何配置Ubuntu的软件仓库

 你可以根据Ubuntu软件仓库指南来完成这项工作。

或者

步骤1:

打开终端
备份你的源列表文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

使用文本编辑器打开源列表文件。例如,使用nano编辑器:
sudo nano /etc/apt/sources.list

在文件中,你可以添加或者取消注释(删除行首的#)以下行来启用“restricted”,“universe”和“multiverse”存储库:
deb http://archive.ubuntu.com/ubuntu/ YOUR_UBUNTU_VERSION_HERE restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ YOUR_UBUNTU_VERSION_HERE restricted universe multiverse

请将YOUR_UBUNTU_VERSION_HERE替换为你的Ubuntu版本的代号,例如focal(对应20.04版本)。

保存并关闭文件。如果你正在使用nano,你可以按Ctrl+X,然后按Y,然后按Enter来保存并退出。
最后,运行以下命令来更新你的包列表:
sudo apt-get update

2.2设置sources.list

设置电脑以安装来自packages.ros.org的软件。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2.2.1 为什么要设置source.list

在安装ROS时,sources.list文件的设置是必要的,因为它决定了系统在哪里查找ROS软件包12。sources.list文件保存了Ubuntu系统的软件源地址3,这些地址是系统在安装软件时需要访问的网络位置。

如果不设置sources.list,系统可能无法找到正确的ROS软件包,导致安装失败1。此外,如果你在国内,直接使用默认的国外ROS源可能会导致连接超时或者下载速度过慢的问题14。因此,一般建议将ROS源设置为国内的镜像源,以提高下载速度和稳定性13。

此外,ROS依赖于shell环境变量,如果不设置这些环境变量,系统可能无法找到ROS命令56。因此,在安装ROS时,通常需要将相关的环境变量添加到~/.bashrc文件中15。

总的来说,正确设置sources.list和环境变量是安装和使用ROS的关键步骤。

2.2.2 设置与更换source.list


若下载速度缓慢,推荐就近选择一个镜像源替换上面的命令。例如,Tsinghua University为:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

如果依旧遇到连接问题,请尝试为Ubuntu apt换源(非ROS网站)。

2.3 设置密钥

  • sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

若无法连接到密钥服务器,可以尝试替换上面命令中的 hkp://keyserver.ubuntu.com:80 为 hkp://pgp.mit.edu:80 。

你也可以使用curl命令替换apt-key命令,这在使用代理服务器的情况下比较有用:

  • curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

2.4  安装

首先,确保你的 Debian 包索引是最新的:

  • sudo apt update

在 ROS 中有很多不同的库和工具。我们提供了四种默认选项供你开始。你也可以单独安装 ROS 的软件包。

如果下面的步骤出现问题,你可以用这个源来替代上面提到的源:ros-shadow-fixed(英文页面)

  • 桌面完整版(推荐): : 包含 ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及 2D/3D 感知包。

    桌面版: 包含 ROS,rqt,rviz 和机器人通用库

    ROS-基础包: 包含 ROS 包,构建和通信库。没有图形界面工具。

    单独的包: 你也可以安装某个指定的ROS软件包(使用软件包名称替换掉下面的PACKAGE):

    • sudo apt install ros-melodic-desktop-full

      或 单击这里

    • sudo apt install ros-melodic-desktop

      或 单击这里

    • sudo apt install ros-melodic-ros-base

      或 单击这里

    • sudo apt install ros-melodic-PACKAGE
      如:
      sudo apt install ros-melodic-slam-gmapping
      
      要查找可用软件包,请运行:
apt search ros-melodic

2.5 初始化 rosdep

在你使用 ROS 之前,需要初始化 rosdep。rosdep 让你能够轻松地安装被想要编译的源代码,或被某些 ROS 核心组件需要的系统依赖。

sudo rosdep init
rosdep update

在使用ROS之前,需要初始化rosdep,这是因为rosdep是ROS的一个命令行工具,用于安装系统依赖1。具体来说,就是ROS包的依赖1。例如,当你需要编译某些源码时,rosdep可以为其安装一些系统依赖21。同时,rosdep也是某些ROS核心功能组件所必需用到的工具。
初始化rosdep的步骤通常如下:
sudo rosdep init
rosdep update
这将在/etc/ros/rosdep/sources.list.d中创建20-default.list文件,文件中包含ROS官网的5个下载路径4。然后,通过rosdep update命令更新缓存。

2.6 设置环境

2.6.1 为什么设置

在使用ROS时,需要将ROS环境变量自动添加到新的bash会话中,主要有以下几个原因:
方便使用:将ROS环境变量添加到bash会话中,可以使得每次打开一个新的终端时,ROS的环境变量都能够自动配置好。这样,用户就可以直接在新的终端中使用ROS命令,而不需要每次都手动设置环境变量。


支持ROS功能:ROS的许多功能,如roscd、rosls等,都依赖于环境变量。如果不设置环境变量,这些功能可能无法正常工作。


支持ROS包管理:ROS使用环境变量来管理ROS包4。例如,ROS_PACKAGE_PATH环境变量用于指定ROS包的搜索路径。如果不设置这个环境变量,ROS可能无法找到安装的ROS包。


如果不将ROS环境变量自动添加到新的bash会话中,那么每次打开一个新的终端时,用户都需要手动运行source命令来设置环境变量。否则,ROS的命令可能无法在新的终端中使用,并且ROS的一些功能也可能无法正常工作。

2.6.2 如何设置

将 ROS 环境变量自动添加到新 bash 会话会很方便:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

如果你不只安装了一个 ROS 发行版, ~/.bashrc 只能使用你需要的 ROS 版本的 setup.bash 。

如果你只想设置当前 bash 会话的 ROS 环境变量,只需要输入:

source /opt/ros/melodic/setup.bash

如果你使用 zsh,那么你需要将上述命令改为:

echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

理解一:

这段代码的含义是将source /opt/ros/melodic/setup.bash这条命令添加到~/.bashrc文件的末尾。这里,我们分解一下这段代码:

source /opt/ros/melodic/setup.bash:这条命令的作用是运行/opt/ros/melodic/setup.bash这个脚本。source命令可以在当前bash会话中执行一个脚本,这样脚本中定义的环境变量就可以在当前bash会话中使用。在这个例子中,/opt/ros/melodic/setup.bash脚本定义了ROS需要的环境变量。

>> ~/.bashrc:这部分的作用是将前面的命令添加到~/.bashrc文件的末尾。~/.bashrc文件是一个特殊的脚本,当你打开一个新的bash会话(比如打开一个新的终端窗口)时,这个脚本会被自动执行。因此,将source /opt/ros/melodic/setup.bash添加到~/.bashrc文件中,就可以确保每次打开新的bash会话时,ROS的环境变量都会被自动设置好。

总的来说,echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc这条命令的作用是让ROS的环境变量在每次打开新的bash会话时都能够自动设置好。

理解二:

.bashrc是Linux系统中的一个特殊文件,它位于用户的home目录下。这个文件是一个shell脚本,用于存储并加载用户的终端配置和环境变量。当你打开一个新的bash会话(比如打开一个新的终端窗口)时,这个脚本会被自动执行。

添加命令到.bashrc文件的原因主要有以下几点:

自动化配置:将命令添加到.bashrc文件中,可以使得每次打开一个新的终端时,这些命令都能够自动执行。这样,用户就可以直接在新的终端中使用这些命令,而不需要每次都手动输入。

个性化设置:.bashrc文件可以用来存储用户的个性化设置,比如命令别名、环境变量等。这些设置可以帮助用户更方便地使用终端。

环境变量管理:.bashrc文件也常常用来设置环境变量。环境变量是一种在操作系统中用来指定操作环境的参数。例如,PATH环境变量用于指定系统查找命令的路径。

如果不将命令添加到.bashrc文件中,那么每次打开一个新的终端时,用户都需要手动输入这些命令。这可能会使得使用终端变得不那么方便

理解三:

用户的终端配置"和"环境变量"是操作系统中的两个重要概念:

用户的终端配置:这是指用户在终端(也就是命令行界面)中的个性化设置。例如,你可以设置命令提示符的样式,或者为常用的命令创建别名。在Linux系统中,这些设置通常保存在一个叫做.bashrc的文件中。当你打开一个新的终端会话时,.bashrc文件会被自动执行,从而应用你的个性化设置1。

环境变量:环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如,PATH环境变量用于指定系统查找命令的路径。当你在终端中输入一个命令时,系统会在PATH环境变量指定的所有路径中查找这个命令。在Linux系统中,环境变量可以在.bashrc文件中设置,或者在终端中使用export命令临时设置。

2.7 构建工厂依赖

到目前为止,你已经安装了运行核心 ROS 包所需的内容。为了创建和管理自己的 ROS 工作区,有各种各样的工具和需求分别分布。例如:rosinstall 是一个经常使用的命令行工具,它使你能够轻松地从一个命令下载许多 ROS 包的源树。

要安装这个工具和其他构建ROS包的依赖项,请运行:

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

理解1:

在ROS中,"构建工厂依赖"通常是指在构建或安装ROS包时所需要的依赖项。这些依赖项可能包括其他的ROS包、系统库、或者其他的软件组件。

例如,一个ROS包可能依赖于roscpp或std_msgs这样的ROS包。在构建这个ROS包时,需要先确保所有的依赖项都已经被正确地安装和配置。

在ROS中,可以使用rosdep这个命令行工具来自动识别和安装依赖项。当你运行rosdep install命令时,rosdep会检查你的ROS包的package.xml文件,找出所有的依赖项,然后尝试安装这些依赖项。

你可能感兴趣的:(ROS,学习和理解,ROS)