ROS 安装详细教程 —— Ubuntu20.04 LTS 安装

2023-11-11

ROS 安装详细教程 —— Ubuntu20.04 LTS 安装

ROS 简介

官方文档对 ROS 的介绍如下:

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source.

简单来说 ROS 就是一款开源的机器人操作系统,可以实现在 Linux 或 Dock 下安装并进行使用。这里我们选择在 Ubuntu 22.04LTS 下进行安装。

版本选择

ROS 目前主要支持 Linux 和 MacOS 系统,新发布的 ROS2 也支持 Windows 和 RTOS 系统。

对 ROS 兼容性最好的当属 Ubuntu 系统。从 ROS 发布以来,每版的 Ubuntu 系统版本都有与之对应 ROS 版本的,每一版 ROS 都有其对应版本的 Ubuntu 版本,切记不可随便装。

ROS 和 Ubuntu 之间的版本对应关系如下:

Ubuntu ROS 1.0 ROS 2.0
16.04 LTS Kinetic LTS Ardent
18.04 LTS Melodic LTS Dashing LTS
20.04 LTS Noetic LTS Foxy LTS
22.04 LTS Noetic Ninjemys Humble Hawksbill

我们使用的系统是 ubuntu 20.04 LTS ,所以这里选择对应的版本

安装

这里推荐安装 apt-fast 进行多线程下载,节约下载时间,安装教程:Ubuntu 下的多线程 apt-get

配置镜像源

这里选择配置清华大学镜像源:清华大学开源软件镜像站

我们进入清华大学镜像源官网,进入 ubuntu 对应的帮助页面:

这里选择我们所使用的系统版本:

然后我们按照提示,配置好镜像源即可

这里使用清华源会比ROS官方源下载快一些

这里也可以直接通过 ubuntu 自动使用下载最快的源

配置及更换最佳软件源:

打开设置,进入关于页面,找到软件更新选项,在下载自一栏中选择其它,然后点击选择最佳服务器即可

这里系统将会自动匹配最佳下载服务器

如果报错显示无法验证数字签名,直接使用以下命令添加公钥即可:

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

ROS1 安装

配置公钥:

钥是 Ubuntu 系统的一种安全机制,配置公钥让系统信任,命令如下:

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

添加 ROS 软件源

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

然后需要更新软件源

sudo apt-get update

安装 ROS :

# Ubuntu 20.04 
sudo apt-get install ros-noetic-desktop-full

初始化 rosdep

直接使用初始化命令:

sudo rosdep init && rosdep update

如果出现错误或者找不到命令,请看报错解决方案部分

环境变量设置

注意对应自己的版本修改目录名,如果使用 Ubuntu 20.04 直接使用即可:

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

安装 rosinstall

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

示例测试

ROS1 示例测试

运行 roscore

直接运行如下命令即可:

roscore

注意:这里不要使用 sudo 权限执行

如果这里提示命令为找到,直接运行如下命令进行安装:

sudo apt install python3-roslaunch

如果再次运行 roscore 还是报错,可以参考后面的报错解决部分

如果运行 roscore 显示如下说明运行成功:

运行小海龟

这里需要三个 terminal 窗口:

第一个窗口运行 roscore

第二个窗口运行如下命令:

rosrun turtlesim turtlesim_node

这样我们就已经得到了小海龟的画面:

第三个窗口运行如下命令:

rosrun turtlesim  turtle_teleop_key

这是我们就可以通过键盘控制小海龟移动了,这就说明我们已经成功安装了 ROS1 并成功运行了示例

报错解决方案

ROS1 相关报错解决方案

初始化 rosdep 提示找不到命令

如果这里提示找不到命令,就需要手动安装以下 rosdep:

sudo apt install python3-rosdep2

安装成功后再次执行即可

执行初始化命令报错
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

这里推荐直接使用 鱼香ROS教程中的使用 rosdepc 安装

这里是由于代理的问题,我们需要将 raw.githubcontent.com 的 ip 添加到 hosts 文件中

使用如下命令打开 hosts 文件

sudo gedit /etc/hosts

添加如下字段:

185.199.109.133 raw.githubusercontent.com

再次执行初始化命令就可以

如果这样还是不能够下载,可以尝试使用手机热点,这里推荐采用以为国内大佬 鱼香ROS 的方法,安装 rosdepc ,一个专门为国内开发的 rosdep ,教程直接参考大神的文章:本文之后,世上再无rosdep更新失败问题!如果有....小鱼就...

这位大神曾开发一行命令安装 ROS ,现在还在使用,感兴趣可以关注他的网站:http://fishros.com

运行 roscore 报错
Resource not found: roslaunch
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/opt/ros/noetic/share
The traceback for the exception was written to the log file

注意将 noetic 替换为对应版本

sudo apt-get install ros-noetic-roslaunch
运行 rosrun 报错
Command 'rosrun' not found, but can be installed with:

sudo apt install rosbash

一般情况下这里按照报错提示,直接安装即可,但是这里并不起作用,我们需要注意将 noetic 替换为对应版本

sudo apt install ros-noetic-rosbash

这里运行命令没有问题了,但是会出现第二个报错:

[rospack] Error: package 'turtlesim' not found

直接执行如下命令可以解决:

sudo apt-get install ros-noetic-turtlesim
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS 安装详细教程 —— Ubuntu20.04 LTS 安装 的相关文章

  • vtk学习教程(一)

    参考博客 02 VTK编译安装 DolingStudio的博客 CSDN博客 vtk 编译 首先是一个最简单的vtk程序 include vtkRenderWindow h include vtkSmartPointer h int mai
  • 安川伺服总线通讯方式_伺服电机如何选择脉冲、模拟量、通讯三种控制方式?...

    原标题 伺服电机如何选择脉冲 模拟量 通讯三种控制方式 伺服电机控制方式有脉冲 模拟量和通讯这三种 在不同的应用场景下 我们该如何选择伺服电机的控制方式呢 记得收藏 关注呀 万一你找不到我了呢 0 1伺服电机脉冲控制方式 在一些小型电机设备
  • Windows安装elasticsearch8(学习用)踩坑记录

    本文介绍的elasticsearch版本是8 8 0 首先去官网下载Windows的elasticsearch Download Elasticsearch Elastic 解压后直接 进入安装目录elasticsearch 8 8 0 b
  • 一种二维条码图像处理流程

    目前 二维条码主要分两类 1 堆叠式二维条码 PDF417 Code 49 2 矩阵式二维条码 QR Code Maxicode Data Matrix 本条码类似于Maxicode 处理过程大致为 1 图像灰度化 最大值法 平均值法 加权
  • js 定时网页点击_反爬 JS 逆向,扣代码解密分析

    挺久没发爬虫相关的教程啦 今天给大伙分享一下关于网站反爬对请求参数值的加密分析例子 主要还是看看思路 定位加密点 在某网站中进行登录请求 简单抓下包 点击登录按钮之后 可以在浏览器的控制台中看到相关的请求 接着往下拉 可以看到 POST 请
  • C语言char类型的存储

    目录 char是如何存储的 char的类型 char的取值范围 例题 char是如何存储的 字符型 char 用于储存字符 character 如英文字母或标点 但是char类型在内存中并不是以字符的形式储存 而是以ASII码的形式储存 也
  • 为什么组件中的data是一个函数,而不是一个对象?

    1 组件是vue实例的服用 我们希望每个组件都是独立的 我们必须保证各组件里面的数据相互分离 所以组件中的data应该定义为函数形式 并且返回一个对象 2 如果组件中的data是一个对象 每一次调用的组件中使用的数据都是对data中的数据的
  • Linux(centos 7.4)升级openssh编译报错checking whether OpenSSL‘s headers match the library... no

    Linux centos 7 4 升级openssh编译报错checking whether OpenSSL s headers match the library no 解决方案 使用root用户打开文件并编辑 vim etc ld so
  • chatgpt赋能python:Python面向对象编程

    Python面向对象编程 Python是一种支持面向对象编程范式的高级编程语言 在Python中 面向对象编程可以很容易实现 同时也可以让代码更加简洁 可读性更高 什么是面向对象编程 面向对象编程 Object Oriented Progr
  • webpack安装遇到问题 webpack -v得到不是版本号信息

    webpack v得到不是版本号信息且vscode终端打包时报错如下 如图所示 使用npm install webpack webpack cli global 安装完webpack后 运行webpack v却出现如下错误 查阅资料分析原因
  • 清除dell服务器面板告警信息,dell服务器报警信息资料.doc

    沈阳鑫微明信息 技术支持 024沈阳鑫微明信息 技术支持 024DELL服务器LCD信息代码 DELL服务器LCD信息代码的意思 E1114Temp Ambient系统周围环境温度超出允许范围 E1116Temp Memory内存已超过允许
  • element-plus获取表格的所有选中项

    1 在el table中定义 selection change事件
  • 生产redis线程池获取不到资源问题排查

    1 查看错误日志7点报redis clients jedis exceptions JedisExhaustedPoolException Could not get a resource since the pool is exhaust
  • NSGA-II算法实战(附MATLAB源码)

    1 NSGA II算法原理 NSGA II算法全称非支配排序遗传算法II Non dominated Sorting Genetic Algorithm II NSGA II 该算法是由 NSGA 改进而来的 用于解决复杂的 多目标优化问题
  • centos7如何配置静态ip?

    1 切换到root用户 su root 2 获取可用IP地址 dhclient 这一步成功后 用ifconfig命令查看已分配的可用ip 并写到下面网卡配置中 本例中是 192 168 154 132 3 编辑网卡配置 修改标记部分 vim
  • 【前后端分离博客】学习笔记05 --- canal

    一 概述 使用canal rabbitMQ 实现 MySQL 和 Elasticsearch 的数据同步 图解 流程如下 给mysql开启binlog功能 mysql完成增 删 改操作都会记录在binlog中 canal监听binlog变化
  • caffe源码导读(六)layer.hpp头文件解析

    文章目录 一 前篇 二 正文layer hpp头文件解析 三 layer cpp相关的一些理解 四 关于序列化以及第57行为什么要先reset的小例子 本篇为基于 lt 深度学习21天实战caffe gt 所做的学习笔记 如果错误 欢迎指导
  • Ruby on rails 或 Ruby Goliath 利用redis + sidekiq 实现异步处理机制

    使用背景 在平常工作中 出于性能考虑 很多工作或者任务可以放到后台悄悄咪咪地执行 而在接口层或者界面交互的地方 给用户快速返回 利用Redis Sidekiq的组合方式 能够在Ruby on Rails web框架或者Ruby Goliat
  • 帧差法、光流法、背景减除法

    运动目标检测是指在序列图像中检测出变化区域并将运动目标从背景图像中提取出来 通常情况下 目标分类 跟踪和行为理解等后处理过程仅仅考虑图像中对应于运动目标的像素区域 因此运动目标的正确检测与分割对于后期处理非常重要然而 由于场景的动态变化 如
  • Java限制泛型可用类型与泛型通配的方式

    1 限制泛型可用类型概念 1 在定义泛型类别时 默认在实例化泛型类型的时候可以使用任何类型 但是如果想要限制泛型类型时 只能用某个特定的类型或者是其子类型才能实例化该类型时 可以定义类型时 使用extends关键字指定这个类型必须是继承某个

随机推荐

  • Apollo配置参数读取后再做替换

    1 先描述业务场景 在Apollo上做配置 然后读取配置 然后做替换 2 一路坎坷 2 1 在Apollo上配置 但是vlue包含有占位符 获取配置报错 Injection of autowired dependencies failed
  • docker mysql镜像忽略表名大小写

    1 安装mysql镜像 docker pull mysql 2 运行mysql docker run net host restart always privileged true v usr docker dat mysql data v
  • Linux基础学习笔记(五)——文件的ACL权限

    Linux基础学习笔记 五 文件的ACL权限 文章目录 Linux基础学习笔记 五 文件的ACL权限 前言 什么是ACL控制 setfacl getfacl mask 最大有效ACL权限 默认的ACL权限和递归的ACL权限 小结 前言 这一
  • Action行动算子 及相应的举例

    7 Action行动算子 转换算子 起始就是记录了数据的一个操作流程 RDD1 gt RDD2 gt RDD3 gt RDD4 流式运算现象 RDD1 到 RDD4 之间维护血缘关系 操作行为 RDD的转换算子是lazy加载 不执行行动算子
  • angular : 自定义组件双向绑定 [(ngModel)]

    NG VALUE ACCESSOR 用于为表单控件提供 ControlValueAccessor interface ControlValueAccessor writeValue obj any void registerOnChange
  • Java进阶9--多线程

    Java进阶9 多线程 文章目录 Java进阶9 多线程 概述 一个线程的生命周期 线程的优先级 创建一个线程 通过实现 Runnable 接口来创建线程 通过继承Thread来创建线程 Thread 方法 实例 通过 Callable 和
  • next.js 源码解析 - getStaticProps、getStaticPaths 篇

    好久前写了关于 getStaticProps 和 getStaticPaths 的内容 然而半年过去了源码解析就一直忘记了 不久前有人提醒才想起来 补下坑 本文主要是解读下 getStaticProps getStaticPaths 相关的
  • 基于主成分分析(PCA)的人脸识别算法

    本次实战的所有数据 文献 代码及输出均在以下百度云链接 链接 https pan baidu com s 1tR3VCyHxL7EZx su 3mxNg 提取码 siso 1 要求 实战的数据及要求如下 用到的数据库为XM2VTS中的前20
  • 二进制转换为三进制 ——C++实现

    二进制转换为三进制 题目 输入一个2进制的数 要求输出该2进制数的3进制表示 在3进制的表示中 只有0 1 2三种符号 Input 第1行是测试数据的组数n 后面跟着n行输入 每组测试数据占1行 包括一个以0和1组成的字符串 字符串长度至少
  • 简单的用Python采集招聘数据内容,并做可视化分析!

    哈喽大家好 现在刚毕业 很多小伙伴因为找不到工作或者找了很多也不喜欢 再有懒一点的 太热了根本不想出门到处找 所以今天给大家分享使用Python批量采集招聘数据 进行可视化分析 轻松找到心仪工作 话不多说 我们直接开始 准备工作 软件工具
  • linux 卸载 rtx,在Ubuntu 18.04系统中安装RTX 2080Ti显卡驱动的方法

    在Ubuntu 18 04操作系统中使用GeForce RTX 2080Ti显卡 但是系统内置的驱动与PPA安装都不行 需要安装NVidia官方的驱动才能运行起来 下面是实现的方法 1 先禁用Ubuntu 18 04系统默认显卡驱动 打开系
  • ECM麦克风电路元器件计算

    ECM麦克风电路元器件设计 一 计算Micbias 偏置电阻R R 偏置电压 micbias电压 静态电流 1 偏置电阻计算案例 供电2V ECM麦克风电流500uA 偏置电阻取值 设置合适的偏置电阻 麦克风实现最大输出 需麦克风两端电压是
  • Multisim14基本介绍(上)

    Multisim14是一种专门用于电路仿真和设计的软件之一 是NI公司下属的ElectroNIcs Workbench Group推出的以Windows为基础的仿真工具 是目前最为流行的EDA软件之一 该软件基于PC平台 采用图形操作界面虚
  • ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

    笔者在使用LogisticRegression模型进行预测时 报错 Traceback most recent call last File D 软件 学习 Python MachineLearing taitannike train py
  • Linux Docker容器 镜像的详解与创建

    一 什么是docker 镜像 就是把业务代码 可运行环境进行整体的打包 二 如何创建docker镜像 现在docker官方共有仓库里面有大量的镜像 所以最基础的镜像 我们可以在公有仓库直接拉取 因为这些镜像都是原厂维护 可以得到即使的更新和
  • 响应式原理

    vue响应式原理 vue2 vue2中使用了ES5里面的Object defineProperty方法 给对应data中的数据的每个值添加了set和get方法 当值被修改时 就会触发对应的set方法 set方法里会通知独影的watcher
  • Python循环结构——for

    for循环是循环结构中的另外一种 基本使用方法 for 变量名 in 目标对象 用于循环的子代码 在for循环中 必定存在一个变量作为游标 且变量会在每次循环开始时自动发生变化 如果没有特别设定变化的值 则默认为 1 当目标对象为列表 字典
  • redis学习:redisKey的基本命令

    Redis是一个开源 BSD许可 内存存储的数据结构服务器 可用作数据库 高速缓存和消息队列代理 它支持字符串 哈希表 列表 集合 有序集合 位图 hyperloglogs等数据类型 内置复制 Lua脚本 LRU收回 事务以及不同级别磁盘持
  • 激光雕刻机:废旧光驱的涅槃之路

    激光雕刻机 废旧光驱的涅槃之路 从 FeedzShare 1天最热 有超过 100 人喜欢此条目 来自 www guokr com FeedzShare 发布时间 2011年04月20日 已有 5 人推荐 DIYer zieak 制作时间
  • ROS 安装详细教程 —— Ubuntu20.04 LTS 安装

    ROS 安装详细教程 Ubuntu20 04 LTS 安装 ROS 简介 官方文档对 ROS 的介绍如下 The Robot Operating System ROS is a set of software libraries and t