【安装】Ubuntu20.04下安装ROS的完整过程(内含已装好ROS的虚拟机、虚拟机创建过程、ROS安装过程及全过程录屏)

2023-05-16

2022/12/20重制,精简流程,直接去掉网络问题。

现成的虚拟机

为方便大家学习,如果安装ROS遇到的问题实在太多,也可以直接下载我提供给大家的、已经安装好ROS的Ubuntu虚拟机:下载链接, 提取码:1030。
虚拟机的使用说明也在这个文件夹下,虚拟机密码是3edcxsw2。

文章目录

  • 现成的虚拟机
  • 阅读本博客前,请务必瞧一瞧看一看:
    • 1 Ubuntu版本号和ROS版本
    • 2 Linux终端输入密码输入不了
  • 步骤
    • 重要提醒|安装之前先快照!
    • 1 更换软件源
      • ①更换总的软件源(能科学上网则忽略这一步)
      • ②更换ROS软件源
    • 2 密钥
    • 3 添加一个公钥
    • 4 更新软件源
    • 5 安装ROS
      • 5.1 可能遇到的错误:`cn.archive.ubuntu.com`连接失败,然后无法下载。
    • 6 设置环境变量
    • 7 安装rosinstall(可选)
    • 8 测试ros安装情况
      • 8.1 可能出现的错误1:
    • 到第8步就可以停了,不用装rosdep
    • 9 rosdep init和update
    • 假9 常规的rosdep init和update
      • 9.1 可能遇到的错误1:找不到命令
      • 9.2 可能出现的错误2:请求超时(ERROR: Rosdep experienced an error: The read operation timed out)
        • 方案1:自定义域名解析
        • 方案2:修改timed out的时间。
        • 方案3:切换手机热点。
      • 9.3 可能出现的错误3:已存在文件/etc/ros/rosdep/sources.list.d/20-default.list
      • 9.4 可能出现的错误4:[Errno 104] Connection reset by peer
    • 10 根据rosdep列表更新。(可略)
  • 参考博客

阅读本博客前,请务必瞧一瞧看一看:

1 Ubuntu版本号和ROS版本

Ubuntu20.04用的是focal,以下是Ubuntu版本号和版本名称的对应关系:

版本号版本名称
18.04bionic
20.04focal
21.04impish
22.04jammy

如果是其他版本想安装ROS,这篇博客中所有提到focal的,都要替换成其他版本对应的。

例如:Ubuntu21.04、22.04安装ROS,需要继续使用focal,因为ROS1最多只支持到20.04;
Ubuntu18.04安装ROS,需要换成bionic

否则你或许会在更新ros软件源或者其他软件源时,遇到如下错误:Err: 【你的软件源地址】 【版本名称】 Release/InRelease 404 Not Found,例如:

Ign:2 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu impish InRelease
Err:3 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu impish Release
404 Not Found [IP: 101.6.15.130 80]

我其实第一反应只是有些奇怪,我明明标题写了20.04,其他版本的到底是出于什么心理点进我这篇博客,问多了就有点生气,但是——我发现有的人不仅在我博客下这么留言,其他写Ubuntu20.04安装博主也收到了同样的留言。

我的内心首先是一个阴谋论浮现……
然后,打住!我区区一个千粉不到的、单篇阅读量没过万的家伙,应该以最简单的思维去想这件事!

真相只有两个!

  1. 该不会是,有人明明下载了Ubuntu20.04的镜像,成功且顺利地安装之后,跳出一个弹窗问要不要更新Ubuntu,就果断升级了吧?
  2. 该不会是,因为ROS1不再更新,也不再提供支持Ubuntu21和22的发行版,所以网上教程一直停在20,所以有人明明下载了21和22的,还要点进20的教程吧?

需要特别说明的是!!!据我了解的信息,Noetic(也就是Ubuntu20.04对应的ROS版本名字)是ROS1发行版的最后一个版本,ROS1不再开发支持更高版本Ubuntu的ROS1版本,如果已经出现了这个报错,请将/etc/apt/sources.list.d/ros-latest.list中的impish/jammy修改为focal,再重新更新软件源sudo apt update

Ubuntu 可不兴随便升级啊!

当然,要是真升级了就升吧,到20了之后区别也没有那么大了,反倒18到20是个很严重的坎。

如果已经升级了,甚至降级了,其实也都可以用这篇教程。
我针对这个问题在博客每一处会碰到版本问题的地方都用【蓝色小字】标注了。
只要是真的按我这篇的肯定不会碰到版本问题了。

2 Linux终端输入密码输入不了

终端输入密码的时候,出于《安全》考虑,不会直接显示输入内容!如下图所示:

在这里插入图片描述

此时,放心大胆输入即可!

步骤

全过程录屏(虽然貌似没有必要就是说):
https://www.bilibili.com/video/BV1du411d7ho?p=3

Ubuntu iso文件的下载网站:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/在这里插入图片描述

重要提醒|安装之前先快照!

【重要!非常重要!】安装之前先快照,以防万一。

1 更换软件源

①更换总的软件源(能科学上网则忽略这一步)

注意:focal是Ubuntu20.04的版本名,无论如何请改成自己的。

换成阿里云的,点击查看阿里云官方换源教程:

sudo sh -c 'echo "deb http://mirrors.aliyun.com/ubuntu/ focal main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ focal-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ focal main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main multiverse restricted universe" > /etc/apt/sources.list'

②更换ROS软件源

注意:focal是Ubuntu20.04的版本名,如果版本低于Ubuntu20.04请改成自己的,如果高于请别改。

清华的:

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

中科大的(慎用,2022年1月15日~1月22日据小伙伴们反应,解析不了cn.archive.ubuntu.com):

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

2 密钥

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

3 添加一个公钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

4 更新软件源

sudo apt update

5 安装ROS

sudo apt install ros-noetic-desktop-full -y

这一步进行时,最好不要在Ubuntu中使用别的软件,比如gedit,有可能会出现异常。

这一步完成之后,最好是快照一下。

5.1 可能遇到的错误:cn.archive.ubuntu.com连接失败,然后无法下载。

在这里插入图片描述
请看第一步更换软件源,把/etc/apt/sources.list的软件源换成阿里云的:

sudo sh -c 'echo "deb http://mirrors.aliyun.com/ubuntu focal main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-updates main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-backports main multiverse restricted universe" > /etc/apt/sources.list'

然后再执行一次sudo apt update,再重新执行:

sudo apt install ros-noetic-desktop-full -y

这一步完成之后,最好是快照一下。

6 设置环境变量

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

使环境变量生效

source ~/.bashrc

7 安装rosinstall(可选)

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool -y

8 测试ros安装情况

sudo apt install python3-roslaunch -y
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

出现小海龟就说明没问题。到这一步也就差不多了。

8.1 可能出现的错误1:

在这里插入图片描述
这是因为之前安装不够全,应该再次:

sudo apt install ros-noetic-desktop-full -y

直到全装好。

到第8步就可以停了,不用装rosdep

原因如是:rosdep不初始化到底行不行_鱼香ROS。
rosdep只是个包管理工具,我说实话一直没用过它。

9 rosdep init和update

【鱼香ROS】改的rosdep,改成rosdepc了,我不知道他具体改了什么,但确实没网络问题了:

sudo apt install python3-pip -y
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple rosdepc
sudo rosdepc init
sudo rosdepc update

因为我很少用rosdep,所以我觉得挺无所谓的,决定就用它了。

如果你不打算用这个,打算还是按老方法装,可以继续参考以下下文。

假9 常规的rosdep init和update

sudo rosdep init

可能遇到以下错误:

9.1 可能遇到的错误1:找不到命令

sudo apt install python3-rosdep

2022/12/19更新——根据ROS Answer的问答,这里不能装rosdep2,要装rosdep:Missing packages after installing rosdep based on python3-rosdep2 in Noetic:
在这里插入图片描述
否则下一步rosdep update就一直成功不了(恼)。

9.2 可能出现的错误2:请求超时(ERROR: Rosdep experienced an error: The read operation timed out)

方案1:自定义域名解析

sudo gedit /etc/hosts

追加199.232.28.133 raw.githubusercontent.com

其中199.232.28.133可以换成别的IP地址
具体哪个IP能用,可以在网站https://www.ipaddress.com/site/raw.githubusercontent.com中找找。有小伙伴反映185.199.108.133是能用的。

方案2:修改timed out的时间。

sudo gedit /usr/lib/python3/dist-packages/rosdep/sources_list.py

修改DOWNLOAD_TIMEOUT = 15.015.0,改大,可为150。

方案3:切换手机热点。

9.3 可能出现的错误3:已存在文件/etc/ros/rosdep/sources.list.d/20-default.list

删掉就行。

sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

9.4 可能出现的错误4:[Errno 104] Connection reset by peer

你或许正在进行rosdep update,如果尝试过以上所有解决办法都无效,这一步可以略。

10 根据rosdep列表更新。(可略)

rosdep update

若出现错误,按sudo rosdep init(上一步)出错处理。

如果不希望跳过这个步骤,可参考以下三篇博客任一方法,完成rosdep update

  1. 修改修改rosdep源码中下载资源的函数:解决ROS系统 rosdep update超时问题的新方法。
  2. 这篇博客2022年10月11日更新内容提到了如何解决rosdep update的问题:详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)。
  3. ERROR: cannot download default sources list from。(这个方法我亲测,会因为yaml访问不了file://文件然后出错)

参考博客

  1. 《详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装!!!(最新版教程)》
  2. https://github.com/fishros/install/blob/master/tools/tool_config_rosdep.py(用于解决rosdep问题的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【安装】Ubuntu20.04下安装ROS的完整过程(内含已装好ROS的虚拟机、虚拟机创建过程、ROS安装过程及全过程录屏) 的相关文章

随机推荐

  • mysql主从复制&读写分离

    文章目录 本文内容前言1 MySQL主从复制1 1 介绍1 2 搭建1 2 1 准备工作1 2 2 主库配置1 2 3 从库配置 1 3 测试 2 读写分离案例2 1 背景介绍2 2 ShardingJDBC介绍2 3 数据库环境2 4 初
  • 输出所有质数

    1 实验目的 了解数字 布尔值 字符串 列表 元组 字典 集合等Python常用的变量类型 熟练掌握运算符 内置函数的用法 熟练掌握元素常用方法 切片和列表推导式 2 实验内容 xff08 一 xff09 输出所有质数 输入一个整数 xff
  • 声音克隆项目实现

    声音克隆 原理介绍 第一个模块 xff1a 收到说话人音频 xff0c 然后转成这样一个低维表征向量speaker embedding xff0c xff08 这个向量富含说话信息 xff09 实现方式 xff1a 由于是无监督学习 xff
  • c语言枚举类型

    定义 在c语言中 xff0c 枚举类型定义用关键字enum标识 xff0c 形式为 xff1a enum 名字 枚举数据表 xff08 用 xff0c 隔开 xff09 xff1b 注意 xff1a xff08 1 xff09 enum是关
  • 交换机二三层协议及其详细解答

    交换机二三层协议及其详细解答 概述二层协议三层协议以太网协议示例代码 CSMA CD协议示例代码 IP协议示例代码 概述 交换机是网络设备的一种 xff0c 主要用于连接多个网络设备 xff0c 以实现网络通信和数据传输 交换机的协议分为两
  • C++ MVC模式

    概述 C 43 43 是一种流行的编程语言 xff0c 它可以用于构建各种类型的应用程序 xff0c 包括Web应用程序 桌面应用程序和移动应用程序 在这里 xff0c 我将为您介绍C 43 43 中的MVC模式 xff0c 以及如何在C
  • C++ 线程操作

    C 43 43 线程操作 概述 线程是 Linux 操作系统中的一种轻量级进程 xff0c 用于实现并发执行 线程可以共享进程的资源 xff0c 包括内存 文件句柄等 在 C 43 43 中 xff0c 线程操作由标准库提供支持 xff0c
  • QT常用类型字节数组QByteArray及其基本使用

    目录 概述特点常见函数QByteArray append xff1a QByteArray insert xff1a QByteArray replace xff1a QByteArray remove xff1a QByteArray t
  • QT图像处理类QImage常见使用方法

    目录 概述加载和保存图像图像缩放和旋转图像灰度化QImage convertToFormat 图像二值化threshold 函数 loadFromData 从内存加载图像拓展 概述 Qt 是一个跨平台的 C 43 43 库 xff0c 提供
  • pytorch卷积神经网络中间特征层可视化

    前言 在我们使用神经网络的过程中 xff0c 经常会好奇中间的网络到底学到了些什么 xff0c 所以常常想用可视化的方法来输出这些特征层 xff0c 所以惊天带大家用一个简易的网络来输出这些特征层 搭建网络 span class token
  • C++11 lambda表达式在回调函数中的使用

    C 43 43 11 lambda表达式在回调函数中的使用 一 lambda表达式在C 43 43 异步框架中的应用1 一个boost asio的例子2 C 43 43 http框架cutelyst在异步执行PostgreSQL数据库sql
  • MySQL知识点总结(一)

    文章目录 前言最左前缀匹配规则Mysql中sql语句执行太慢 xff0c 是什么原因 xff0c 怎么解决 xff0c 用什么命令查看如何查看是否用到索引为啥加了索引会变快判断是否走联合索引总结 前言 本文来介绍数据库啦 最左前缀匹配规则
  • 基于 NCC/灰度信息 的模板匹配算法(QT + Opencv + C++),10ms内获取匹配结果,部分源码

    文后代码 xff0c 优化效果图结尾处 xff0c 最快3ms得到匹配结果 NCC xff0c 全称为Normalized Cross Correlation xff0c 即归一化互相关系数 xff0c 在模板匹配中使用的非常非常广泛 xf
  • 网络应用基础 ——(2023新星计划文章二)

    一 xff0c TCP报头解析 数据打包与解析直观图 xff1a 1 0报文与报文字段 1 0 1 报文 报文是计算机网络中交换信息的基本单位 xff0c 是一种用于在网络中传递数据的结构化数据格式 在网络通信中 xff0c 数据会被封装成
  • ROS中工作空间和功能包的创建以及发布者Publisher的实现

    最近刚刚开始学习ROS xff0c 对于整个ROS的框架和功能正在一点点的了解 xff0c 跟着B站古月居的 ROS入门21讲 课程 xff0c 在安装好linux和ROS后 xff0c 正式开始ROS的学习 xff0c 动手实践敲代码 x
  • Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu//dists/bionic/main/binary-arm64/Packages

    在jeston nano执行 sudo apt update 的时候出现下列错误 xff1a Failed to fetch https mirrors tuna tsinghua edu cn ubuntu dists bionic ma
  • 场景设计法

    目录 一 场景设计法 1 理解 二 场景法的基本设计步骤 三 场景设计法需要掌握的基本知识 1 基本流和备选流 2 测试用例组成 四 优缺点 1 优点 2 缺点 五 使用场景 六 注意 七 实例 1 案例 2 分析需求 xff0c 确定基本
  • 【第一章】计算机网络知识点整理

    文章目录 第一章 概述1 1 计算机网络的定义及其特点1 定义2 计算机网络系统的组成3 功能4 七个典型特点 1 2 互联网概述1 internet 和 Internet 的区别2 互联网基础结构发展的三个阶段 1 3 互联网的组成一 边
  • C# 窗体应用常用基础控件讲解(萌新版)

    C 窗体应用常用基础控件讲解 xff08 适合萌新 xff09 前言 博主这篇文章主要讲解C 窗体应用的几个常用的控件 对新手很友好 xff0c 这几个控件在C 窗体应用中用的频率特别高 xff0c 如果你第一次学C 窗体应用 xff0c
  • 【安装】Ubuntu20.04下安装ROS的完整过程(内含已装好ROS的虚拟机、虚拟机创建过程、ROS安装过程及全过程录屏)

    2022 12 20重制 xff0c 精简流程 xff0c 直接去掉网络问题 现成的虚拟机 为方便大家学习 xff0c 如果安装ROS遇到的问题实在太多 xff0c 也可以直接下载我提供给大家的 已经安装好ROS的Ubuntu虚拟机 xff