【安装】Ubuntu20.04下安装ROS的完整过程(内含已装好ROS的虚拟机、虚拟机创建过程、ROS安装过程及全过程录屏)_ros虚拟机现成的-程序员宅基地

技术标签: 科普  笔记  ubuntu  linux  ros  

2022/12/20重制,精简流程,直接去掉网络问题。
如果要装ROS2请看这篇博客:【安装】Ubuntu 20.04下快速安装ROS2 Foxy,这篇文章是装ROS1的。

现成的虚拟机

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

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

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

1 Ubuntu版本号和ROS版本

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

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

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

例如:Ubuntu20.04安装ROS,需要使用focal
Ubuntu18.04安装ROS,需要换成bionic

可以看到,上表中我将Ubuntu21.04、22.04划掉了,这是因为Noetic(也就是Ubuntu20.04对应的ROS版本名字)是ROS1发行版的最后一个版本,ROS1不再开发支持更高版本Ubuntu的ROS1版本。

因此,如果你在Ubuntu21.04、22.04安装ROS,你或许会在更新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]

所以如果你在Ubuntu21.04、22.04安装ROS,请将/etc/apt/sources.list.d/ros-latest.list中的impish/jammy修改为focal,再重新更新软件源sudo apt update

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

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

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

在这里插入图片描述

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

3 Ubuntu镜像站

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,要装rosdepMissing 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问题的)。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46106285/article/details/120982412

智能推荐

大一python基础编程题列表,大一python程序设计考题_大一python编程题-程序员宅基地

文章浏览阅读697次,点赞18次,收藏18次。大家好,小编来为大家解答以下问题,大一python基础编程题点菜,大一python基础编程题答案,现在让我们一起来看看吧!这篇文章主要介绍了大一python基础编程题答案,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。_大一python编程题

耕作方式对微生物群落的影响_cropping practices manipulate abundance patterns o-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏10次。Cropping practices manipulate abundance patterns of root and soil microbiome members paving the way to smart farming C:普通耕作 O:有机耕作NT:免耕 RT:少耕 IT:密集耕作C-IT C-NT O-IT O-RT Hartman et al. M..._cropping practices manipulate abundance patterns of root and soil microbiome

tableau表计算--柏拉图曲线_tableau柏拉图-程序员宅基地

文章浏览阅读1.5k次。各个领域都存在着二八定律:比如零售行业,80%的利润可能来自其中20%的用户。今天学到了怎么用tableau来做一个这样的柏拉图曲线。成果图:开始吧把利润、客户名称分别拖到行、列;客户名称拖到标记里的详细详细:2.选择【客户名称】然后点击排序3.右键选择【利润】添加表计算4.上一步得到了利润排序后累计百分比的曲线,如果你想看看是否在利润达到累计80%时客户数在20%左右那就..._tableau柏拉图

【linux】串口编程(二)——非阻塞接收_linux串口非阻塞例程-程序员宅基地

文章浏览阅读2k次。项目中很少会使用阻塞接收,一般都是select+read监听模式来实现非阻塞接收。 使用selece时,需要处理一些异常情况的返回,比如:系统中断产生EINTR错误;超时错误ETIMEDOUT。 使用read时,需要处理读取时可能出现的错误,比如:对方关闭连接(ECONNRESET),连接被拒绝(ECONNREFUSED),文件描述符错误(EBADF)等_linux串口非阻塞例程

Qt 5.9.5 webengine 开发_webengine 淘汰-程序员宅基地

文章浏览阅读9k次。QtWebkits在Qt5.6以上版本被淘汰了,目前而言,QWebEngine有以下缺点:MinGW版本的Qt不支持,即便是Qt5.9.5版本以上也是不支持的。仅仅支持MSVC版本,接口暂时不丰富,无法和QWebFrame进行交互(使用了新的QWebChannel和QWebEnginePage组合进行交互)在使用的时间安装新版本的Qt要安装Qt MSVC版本的,记得选择webengine组件在ex..._webengine 淘汰

BUUCTF Misc Page2-6部分题目_b0d3e5f34e36b189b47a1a57a0a43ba4.png-程序员宅基地

文章浏览阅读6.7w次,点赞4次,收藏29次。BUUCTF Misc Page2-6部分题目_b0d3e5f34e36b189b47a1a57a0a43ba4.png

随便推点

BAT面试Spring全家桶:Spring+SpringBoot+SpringCloud,十位互联网一线高工手写Java高级知识-程序员宅基地

文章浏览阅读687次,点赞18次,收藏30次。无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。针对以上面试技术点,我在这里也做一些分享,希望能更好的帮助到大家。一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

Eclipse 扁平化滚动条、背景色美化_jeeeyul is themes-程序员宅基地

文章浏览阅读1.7k次。Eclipse 扁平化滚动条、背景色美化_jeeeyul is themes

[Vue warn]: Error in onLoad hook (Promise/async): “ReferenceError: hpvPack is not defined“-程序员宅基地

文章浏览阅读1.6k次。#Error in onLoad hook (Promise/async): "ReferenceError: hpvPack is not defined"#vue#uniapp框架开发#_error in onload hook (promise/async)

经典算法问题 - 最大连续子数列和_c语言给定n个整数的数列,其中有可能是正数和负数,找出其中一个连续子数列-程序员宅基地

文章浏览阅读716次。原文:最大连续子数列和一道很经典的算法问题,给定一个数列,其中可能有正数也可能有负数,我们的任务是找出其中连续的一个子数列(不允许空序列),使它们的和尽可能大。我们一起用多种方式,逐步优化解决这个问题。为了更清晰的理解问题,首先我们先看一组数据:8-2 6 -1 5 4 -7 2 3第一行的8是说序列的长度是8,然后第二行有8个数字,即待计算的序列。对于这个序列,我们的答案应该是14,..._c语言给定n个整数的数列,其中有可能是正数和负数,找出其中一个连续子数列

CH32V307 LVGL移植笔记-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏7次。第二步:把lv_conf_template.h 文件名修改成 lv_conf.h,同时打开lv_conf.h 文件,修改条件编译指令,把#if 0 修改成#if 1。移植前准确,CH32V307核心板,1.8"的TFT显示屏。第六步:测试,在main.c中包含#include "lvgl.h"和#include "lv_port_disp_template.h",并加入以下测试代码。第三步:添加头文件路径,右键选中工程,弹出菜单中选择属性,依次打开下图所示界面,选择从worksapce中添加路径信息。_ch32v307

我的Qt作品(11)使用Qt+OpenCV实现一个带旋转角度的NCC灰度模板匹配演示软件_灰度模板旋转匹配-程序员宅基地

文章浏览阅读9.8k次,点赞10次,收藏97次。使用Qt+OpenCV自己写了一个带旋转角度的NCC灰度模板匹配算子。算子的原理是基于NCC灰度匹配。在opencv代码中,matchTemplate函数保存在文件imgproc文件夹下的templmatch.cpp中,NCC算子的计算方式是cv::TM_CCOEFF_NORMED。https://github.com/opencv/opencv/blob/4.5.5/modules/imgproc/src/templmatch.cpp部分头文件#ifndef CNCCMATCH_H#d_灰度模板旋转匹配

推荐文章

热门文章

相关标签