Ubuntu20.04安装ROS

Ubuntu20.04安装ROS

Excerpt

ubuntu安装方式有两种,一种是安装ubuntu系统,另一种是在windows下安装虚拟机,在虚拟机里安装ubuntu。下面为双系统安装ubuntu(用虚拟机装ubuntu会很卡,bug很多,除非电脑配置极好,否则不建议用虚拟机装ubuntu…


ubuntu安装方式有两种,一种是安装ubuntu系统,另一种是在windows下安装虚拟机,在虚拟机里安装ubuntu。下面为双系统安装ubuntu(用虚拟机装ubuntu会很卡,bug很多,除非电脑配置极好,否则不建议用虚拟机装ubuntu)

一、配置Linux清华镜像源

1.1 介绍

我们在下载很多基础的工具请求的基本上是国外的服务器,这对于国内用户来说,无疑是非常糟糕的体验,其下载速度慢、请求失败往往成为很多刚入门Linux的小白最大的困扰。

不过好在国内有着稳定高速且免费的镜像网站,我们可以通过修改系统配置文件来享受这些优秀的网站资源。

清华源:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple
中科大:https://pypi.mirrors.ustc.edu.cn/simple/

1.2 开始配置

这里我以 Ubuntu 20.04LTS 为例来配置 清华源

首先进入清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn)

在列表里选择自己的系统,这里我选择的是 Ubuntu,点击后面的问号图案

进入后选择自己的系统版本 20.04LTS

随即文本框中会生成你需要的 sources.list 文件内容,打开 Ubuntu 的终端,输入下面的命令

sudo apt update# 将 sources.list 拷贝到桌面,留个备份,防止修改以后出现问题,备份在主目录下
cp /etc/apt/sources.list ~/Desktop    # 打开 sources.list 进行编辑
sudo gedit /etc/apt/sources.list

打开文件后,将里面的所有内容替换为之前网页内文本框里的内容,例如

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

然后保存关闭,这样清华源就配置好啦!

2.1 开始安装:配置公钥

在前面的操作中,我们已经为完成了国内源的配置,这将会让我们后面的install 一路畅通。不过还需要再做一个准备,那就是配置公钥

公钥是 Ubuntu 系统的一种安全机制,配置公钥让系统信任。

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

2.2 系统更新

更新系统,确保自己的Debian软件包和索引是最新的。

2.3 安装ROS

大家注意自己的 Ubuntu 版本,我的是 20.04 对应的是 ROS 版本是 noetic

# Ubuntu 20.04 
sudo apt install ros-noetic-desktop-full# Ubuntu 18.04 
sudo apt install ros-melodic-desktop-full

在这里遇到了很沙雕的问题,E: 无法定位软件包 ros-noetic-desktop-full,换源阿里云后无效,又输入了两个命令行:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

然后运行sudo apt install ros-noetic-desktop-full,成功!

好吧,当时确实可以正常下载了,但是最后速度很慢,直接回宿舍睡觉,第二天到工位果然又报错了,

E: Sub-process /usr/bin/dpkg returned an error code (1)

输入以下命令成功解决:

现将info文件夹更名

sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk

新建一个新的info文件夹

sudo mkdir /var/lib/dpkg/info

安装修复

sudo apt-get update
sudo apt-get install -f

执行完上一步操作后,在info文件夹下生成一些文件,现将这些文件全部移到info.bk文件夹下

sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk

把自己新建的info文件夹删掉

sudo rm -rf /var/lib/dpkg/info

恢复原有info文件夹,修改名字

sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info

然后再执行

sudo apt install ros-noetic-desktop-full

成功!

2023.7.25更新:

E: 无法定位软件包 ros-noetic-desktop-full,也有可能是软件源的问题,可以先换清华或者阿里云试一试。

三、配置ROS

3.1 初始化rosdep

sudo rosdep init && rosdep update

这里再次报错 sudo: rosdep:找不到命令

解决办法:

单独输入 sudo rosdep init 显示

ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize

然后输入命令

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

然后输入命令 sudo rosdep update显示超时,又再次输入sudo rosdep init发现报了新错误

ERROR: cannot download default sources list from:https : //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.

输入以下命令:

然后在打开的hosts文件中添加如下的内容,然后保存退出

199.232.28.133 raw.githubusercontent.com

再输入sudo rosdep init命令试试,成功解决。然后再继续输入 sudo rosdep update,发现还是报超时的错误,然后专门查了rosdep update报错的问题,如下:

ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize

由于 rosdep update 请求的网站是 raw.githubusercontent.com,对于大部分人来说,该命令报错的原因主要是 timed out。网上一般的方法都是通过修改 /etc/ros/rosdep/sources.list.d/20-default.list 的请求地址。但我自己通过这个方法并不能解决问题,报错中仍然出现请求 raw.githubusercontent.com 时出现 timed out。

尝试过很多方法,特别复杂的就不说了,有两种方法:

  • 一种是修改连接网络,多换几个网络试试,比如换个手机热点,但这种方法是玄学问题,很浪费时间,而且大部分台式机并不会配备无线网卡,需要自己加;
  • 一种是将rosdep修改为rosdepc,因为rosdepc使用的是国内的源,rosdep初始化失败是因为其使用的是github,国内无法访问。安装步骤如下:

(此处封神,绝对是rosdep update报超时错误的最佳解决方案!)

安装rosdepc

如果显示没有pip可以试试pip3。

sudo pip3 install rosdepc

如果pip3还没有

sudo apt-get install python3-pip
sudo pip install rosdepc

使用

sudo rosdepc init
rosdepc update

到这应该就没问题了,继续下一步,胜利在望!

3.2 环境变量设置

这里容易出错,大家直接复制粘贴就好

注意对应自己的版本修改目录名

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

3.3 安装 rosinstall

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

3.4 测试ROS

打开第一个终端窗口,运行 roscore

出现如下图的情况,就证明运行成功

打开第二个终端窗口,输入:

rosrun turtlesim turtlesim_node

当出现有一个海龟的窗口,证明运行成功了(每次生成的海龟类型是随机的)

打开第三个终端窗口,输入:

rosrun turtlesim  turtle_teleop_key

出现这样的提示后,我们用鼠标聚焦第三个终端窗口,便可以通过按下 ↑ ↓ ← →键来对小海龟进行控制了。

3.5 安装完成

到了这里,恭喜你已经完成了ROS的安装、配置且运行。

ps:本人从今年初已经装过不下10遍ubuntu和ros,但还是有没遇到过的报错,ubuntu本身就极其容易报错,不同的设备报的错还不一样,所以不要用最新版本的ubuntu!刚开始用ubuntu和ros确实很搞心态,耐住性子,最后会发现其实还挺简单的~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/61138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java八股文面试[多线程]——Happens-Before规则

TODO 知识来源: 【23版面试突击】你知道什么是 happens-before 原则吗?_哔哩哔哩_bilibili 【2023年面试】Happens-Before规则是什么_哔哩哔哩_bilibili

八、MySQL(DML)如何修改表中的数据?

1、修改表数据 (1)基础语法: update 表名 SET 字段名1数值1,字段名2数值2,…… [where 条件]; (2) 操作实例: 第一步: 先准备一张表 insert into things values (10086,18,0x12…

本地电脑搭建Plex私人影音云盘教程,内网穿透实现远程访问

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语6 总结 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特…

三组学联合→HiC+Meta+Virome

病毒在微生物死亡率、多样性和生物地球化学循环中发挥着重要作用。地下水是全球最大的淡水,也是地球上最贫营养的水生系统之一,但在这个特殊的栖息地中微生物和病毒群落是如何形成的尚未被探索。本次经典文献分享给大家带来,宏基因组宏病毒组…

绿色能源迎来跨越式增长新时代

当今世界,百年未有之大变局加速演进,新一轮科技革命和产业变革深入发展,全球气候治理呈现新局面,新能源和信息技术紧密融合,生产生活方式加快转向低碳化、智能化,能源体系和发展模式正在进入非化石能源主导…

Briefings in Bioinformatics投稿经验分享

期刊名: BRIEFINGS IN BIOINFORMATICS期刊名缩写:BRIEF BIOINFORM期刊ISSN:1467-5463E-ISSN:1477-40542023年影响因子/JCR分区:9.5/Q1latex模板:http://static.primary.prod.gcms.the-infra.com/static/site/journals/document/oup-authoring-template.zip?node=7987de4…

java八股文面试[多线程]——线程间通信方式

多个线程在并发执行的时候,他们在CPU中是随机切换执行的,这个时候我们想多个线程一起来完成一件任务,这个时候我们就需要线程之间的通信了,多个线程一起来完成一个任务,线程通信一般有4种方式: 通过 volat…

gitlab提交项目Log in with Access Token错误

目录 报错信息 问题描述 解决方案 报错信息 问题描述 在提交项目到gitlab时,需要添加账户信息 ,但是报了这样一个错,原因应该就是路径问题,我在填写server地址的时候,就出现了路径问题,我把多余的几个/…

拥抱储能新时代!科士达闪耀EESA第二届中国国际储能展览会

2023年8月30日,EESA第二届中国国际储能展览会在苏州国际博览中心拉开帷幕,科士达以“零碳光储数能未来”为主题,亮相G3-20展台,多维度展现户用光储、工商业储能、大型储能等解决方案,彰显安全、高效、可靠的产品性能和…

postgresql类型转换函数

postgresql类型转换函数 简介CAST 函数to_date 函数to_timestamp 函数to_char 函数to_number 函数隐式类型转换 简介 类型转换函数用于将数据从一种类型转换为另一种类型。 CAST 函数 CAST ( expr AS data_type )函数用于将 expr 转换为 data_type 数据类型;Post…

【python爬虫】—图片爬取

图片爬取 需求分析Python实现 需求分析 从https://pic.netbian.com/4kfengjing/网站爬取图片,并保存 Python实现 获取待爬取网页 def get_htmls(pageslist(range(2, 5))):"""获取待爬取网页"""pages_list []for page in pages:u…

1、Spring是什么?

Spring 是一款主流的 Java EE 轻量级开源框架 。 框架 你可以理解为是一个程序的半成品,它帮我们实现了一部分功能,用这个框架我们可以减少代码的实现和功能的开发。 开源 也就是说,它开放源代码。通过源代码,你可以看到它是如何…

【Linux】基础IO

目录 一、回顾C语言文件操作二、文件系统调用接口1. open2.write3.read 三、文件描述符四、重定向1.输出重定向2.输入重定向 五、dup2 一、回顾C语言文件操作 1 #include<stdio.h>2 #include<stdlib.h>3 4 #define LOG "log.txt"5 6 int main()7 {8 //…

JVM类加载器

一、类与类加载器 类加载器虽然只用于实现类的加载动作&#xff0c;但它在Java程序中起到的作用却远超类加载阶段。对于 任意一个类&#xff0c;都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性&#xff0c;每一个类加载器&#xff0c;都拥有一个独…

「快学Docker」Docker容器安全性探析

「快学Docker」Docker容器安全性探析 引言容器安全性威胁Docker容器安全性目录容器镜像安全性主机与容器隔离访问控制运行时监控与防御网络安全性Docker容器安全性最佳实践 总结 引言 在当今快速发展的软件开发和部署领域&#xff0c;容器化技术已经成为一种不可或缺的工具。然…

金属矿山电子封条系统 yolov5

金属矿山电子封条通过pythonyolov5网络模型框架算法&#xff0c;金属矿山电子封条算法识别到运输设备启动运行或者识别到运输设备运行工作状态下有煤、无煤转换&#xff0c;进行预警分析&#xff0c;金属矿山电子封条算法利用智能化视频识别等技术,实时监测分析矿井出入井人员、…

Java 数组操作工具类Arrays用法

1、判断两个数组是否相等 注意&#xff1a;判断的并不是地址值&#xff0c;而是从元素个数、元素位置、元素顺序上看是否真的相同。 int[] arr1 {1,2,3,4,5,6}; int[] arr2 {1,2,3,4,5,6}; System.out.println(Arrays.equals(arr1,arr2)); //true 2、输出数组信息 我们先看…

Web网站服务器

目录 一、什么是Apache? 二、虚拟目录是什么&#xff1f; 三、Apcahe相关配置文件 四、httpd.conf主配置文件的常用配置参数 五、Web网站配置案例 5.1搭建基于用户的个人主页网站 5.2、配置虚拟目录 5.3、配置虚拟主机 5.3.1搭建两个基于IP地址的虚拟主机 5.3.2搭建两个基于域…

Yolov5 改进之损失函数 SlideLoss 注意力机制 MultiSEAM

用于学习记录 文章目录 前言一、SlideLoss1.1 utils/loss.py1.2 data/hyps/hyp.scratch-low.yaml二、注意力机制 MultiSEAM2.1 models/common.py2.2 models/yolo.py2.3 models/MultiSEAM.yaml三、训练结果图总结前言 一、SlideLoss YOLO-FaceV2: A Scale and Occlusion Aware …

[递归] 子集 全排列和组合问题

1.1 子集I 思路可以简单概括为 二叉树&#xff0c;每一次分叉要么选择一个元素&#xff0c;要么选择空&#xff0c;总共有n次&#xff0c;因此到n1进行保存结果&#xff0c;返回。像这样&#xff1a; #include <cstdio> #include <vector> #include <algorithm&…