虚拟机Ubuntu18.04安装对应ROS版本详细教程!(含错误提示解决)
参考链接:
Ubuntu18.04安装Ros(最新最详细亲测)_向日葵骑士Faraday的博客-CSDN博客
1.4 ROS的安装与配置_哔哩哔哩_bilibili
ROS官网:http://wiki.ros.org/melodic/Installation/Ubuntu
一、检查cmake
安装ROS时会自动安装旧版的Cmake3.10.2。所以在安装Ros之前,需要先检查此先是否有安装Cmake。如果之前已经安装新版的cmake,那电脑中存在多个版本的cmake,如果没有安装,则可以在安装完ROS后再安装需要版本的cmake。如何让cmake命令指向我们所需的特定版本?可参考下面这篇博客:
Unbuntu安装Ros后Cmake变成3.10_ros 默认的cmake版本_向日葵骑士Faraday的博客-CSDN博客
![]()
(安装完ROS后会显示cmake版本为3.10.2)
二、安装版本检查
不同的Ubuntu安装的ROS版本不同。Ubuntu18.04对应的ros版本为RS Melodic,不要安装错了。可以去官网melodic/Installation/Ubuntu - ROS Wiki查看其他对应版本。

三、安装步骤
1.安装Ubuntu的软件和更新源
1)先检查Ubuntu软件和更新源
将四个选项全部选上,同时将下载源更换为国内源。默认的服务器比较慢,换成阿里云,清华,中科大都是可以的。


2)添加ROS软件源
打开终端,输入以下命令:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
2. 设置ROS安装密钥
公钥是Ubuntu系统的一种安全机制,也是ROS安装中不可缺的一部分。设置ROS安装密钥,输入以下命令:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
查看软件包密钥可以使用 apt-key命令。

3. 更新Ubuntu软件源
更新Ubuntu软件源,输入以下命令:

sudo apt update
4. 安装ROS桌面完整版
在终端输入以下命令,慢慢等待安装完成:

这个命令将安装完整的ROS软件,包括ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知等等的全套基础组件。
sudo apt install ros-melodic-desktop-full
5. 设置ROS环境变量
设置ROS环境变量,输入以下命令:
![]()
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
6. 安装ROS工具
安装ROS工具,输入以下命令:

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
7. 初始化ROS安装

在初始化ROS安装时,会从外国的网站raw.githubusercontent.com拉取一些信息和文件。这个网站现在被墙了,导致这一步出错。不用爬楼梯的解决办法如下:
1)修改/etc/hosts文件
终端输入以下命令并回车:sudo gedit /etc/hosts,将hosts文件打开,把下面这些地址拷贝到hosts文件末尾,然后保存。
199.232.28.133 raw.githubusercontent.com
192.30.253.118 gist.github.com
185.199.110.153 github.io
151.101.113.194 github.global.ssl.fastly.net
52.216.227.168 github-cloud.s3.amazonaws.com
52.74.223.119 github.com
199.232.28.133 avatars1.githubusercontent.com
199.232.28.133 avatars2.githubusercontent.com
199.232.28.133 avatars0.githubusercontent.com
199.232.28.133 avatars3.githubusercontent.com
199.232.28.133 user-images.githubusercontent.com
199.232.28.133 avatars.githubusercontent.com
199.232.28.133 github.map.fastly.net
199.232.28.133 avatars7.githubusercontent.com
54.239.31.69 aws.amazon.com
54.239.30.25 console.aws.amazon.com
54.239.96.90 ap-northeast-1.console.aws.amazon.com
54.240.226.81 ap-southeast-1.console.aws.amazon.com
54.240.193.125 ap-southeast-2.console.aws.amazon.com
54.239.54.102 eu-central-1.console.aws.amazon.com
177.72.244.194 sa-east-1.console.aws.amazon.com
176.32.114.59 eu-west-1.console.aws.amazon.com
54.239.31.128 us-west-1.console.aws.amazon.com
54.240.254.230 us-west-2.console.aws.amazon.com
54.239.38.102 s3-console-us-standard.console.aws.amazon.com
54.231.49.3 s3.amazonaws.com
52.219.0.4 s3-ap-northeast-1.amazonaws.com
54.231.242.170 s3-ap-southeast-1.amazonaws.com
54.231.251.21 s3-ap-southeast-2.amazonaws.com
54.231.193.37 s3-eu-central-1.amazonaws.com
52.218.16.140 s3-eu-west-1.amazonaws.com
52.92.72.2 s3-sa-east-1.amazonaws.com
54.231.236.6 s3-us-west-1.amazonaws.com
54.231.168.160 s3-us-west-2.amazonaws.com
52.216.80.48 github-cloud.s3.amazonaws.com
54.231.40.3 github-com.s3.amazonaws.com
52.216.20.171 github-production-release-asset-2e65be.s3.amazonaws.com
52.216.228.168 github-production-user-asset-6210df.s3.amazonaws.com
————————————————
版权声明:本文为CSDN博主「向日葵骑士Faraday」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/KIK9973/article/details/118755045
2)修改/etc/resolv.conf 文件
.终端输入以下命令并回车sudo gedit /etc/resolv.conf,将原有的nameserver那一行注释,并添加以下两行后保存:
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器

3)再次执行sudo rosdep init

显示如上信息则表示rosdep初始化成功,如果出现以下错误提示:

是因为20-default.list 这个文件已经存在,解决办法就是
删除20-default.list这个文件。
终端输入以下命令并回车删除文件:sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
再次执行sudo rosdep init。
8. rosdep update 更新
在终端输入以下命令并回车rosdep update。

网络良好的话,很快就更新完成了,更新成功会显示上述信息。如果出现更新超时read operation timed out的错误提示,是因为raw.githubusercontent.com这个网站被墙,国内网拉取信息网速缓慢。
解决办法1:多次执行rosdep update操作,网络良好的情况下有可能完成所有更新。如果还是不行,使用办法2.
解决办法2:将更新所需要的文件下载放在本地文件夹,并修改执行更新的路径。在本地完成更新,避免向外国网站拉取信息和文件。
CSDN作者银时大魔王已经将更新所需的文件整理好上传云中(大家可以去观摩原文):
链接: https://pan.baidu.com/s/1PhTCqtvScV_XGf9ac0CcCg 提取码: w3ix
将下载提取出的文件夹移动到/etc/ros文件夹下,终端输入sudo cp -r ../ros_github/ /etc/ros/
(注意:../ros_github/为自己提取安放的路径,需要改成自己的)

再修改更新文件路径:
参考链接:Ubuntu 18.04 安装 ROS Melodic 中 sudo rosdep init 和 rosdep update 一定能成功的方法,就硬干-CSDN博客
1)修改index-v4.yaml路径
终端输入以下命令回车:sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py,将该文件中第68行代码注释并添加file:///etc/ros/ros_github/index-v4.yaml,见下图

2)修改 /etc/ros/rosdep/sources.list.d/20-default.list文件
终端输入以下命令回车:sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list,再将原有内容全部注释 或者 删除。最后添加以下内容在文档中。如下图所示

再次执行rosdep update。
常见问题:如果遇到Hit缺失,更新不完整的情况 ,可以尝试关闭终端 再次执行更新命令。多尝试几次就能成功。
到此,ROS安装就算成功了。
四、检查安装情况:运行小海龟和rviz
终端输入命令回车:roscore

出现以上提示则代表安装成功。
接下来运行小海龟。开启第二个终端输入rosrun turtlesim turtlesim_node,会出现一个小海龟


然后开启第三个终端输入rosrun turtlesim turtle_teleop_key ,接下来就可以通过方向键控制海龟的移动。


最后检查rviz等高级功能的运行。新开一个终端输入:rosrun rviz rviz,显示以下界面表示运行成功。


以上就是Unbuntu18.04安装Ros对应版本的全部过程。
相关文章:
虚拟机Ubuntu18.04安装对应ROS版本详细教程!(含错误提示解决)
参考链接: Ubuntu18.04安装Ros(最新最详细亲测)_向日葵骑士Faraday的博客-CSDN博客 1.4 ROS的安装与配置_哔哩哔哩_bilibili ROS官网:http://wiki.ros.org/melodic/Installation/Ubuntu 一、检查cmake 安装ROS时会自动安装旧版的Cmake3.10.2。所以在…...
#力扣:14. 最长公共前缀@FDDLC
14. 最长公共前缀 一、Java class Solution {public String longestCommonPrefix(String[] strs) {for (int l 0; ; l) {for (int i 0; i < strs.length; i) {if (l > strs[i].length() || strs[i].charAt(l) ! strs[0].charAt(l)) return strs[0].substring(0, l);}…...
Android 13.0 解锁状态下禁止下拉状态栏功能实现
1.前言 在13.0的系统定制化开发中,在关于一些systemui下拉状态栏的定制化功能开发中,对于关于systemui的下拉状态栏 是否可以下拉做了定制,用系统属性来判断是否可以在解锁的情况下可以下拉状态栏布局,虽然11.0 12.0和13.0的关于 下拉状态栏相关分析有区别,可以通过分析相…...
chromium线程模型(1)-普通线程实现(ui和io线程)
通过chromium 官方文档,线程和任务一节我们可以知道 ,chromium有两类线程,一类是普通线程,最典型的就是io线程和ui线程。 另一类是 线程池线程。 今天我们先分析普通线程的实现,下一篇文章分析线程池的实现。ÿ…...
uniapp uni.showToast 一闪而过的问题
问题:在页面跳转uni.navigateBack()等操作的前或后,执行uni.showToast,即使代码中设置2000ms的显示时间,也会一闪而过。 解决:用setTimeout延后navigateBack的执行。...
代理模式介绍及具体实现(设计模式 三)
代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问 实例介绍和实现过程 假设我们正在开发一个电子商务网站,其中有一个商品库存管理系统。我们希望在每次查询商品库存之前,先进行权限验证,以确…...
【18】c++设计模式——>适配器模式
c的适配器模式是一种结构型设计模式,他允许将一个类的接口转换成另一个客户端所期望的接口。适配器模式常用于已存在的,但不符合新需求或者规范的类的适配。 在c中实现适配器模式时,通常需要一下几个组件: 1.目标接口(…...
mariadb 错误日志中报错:Incorrect definition of table mysql.column_stats:
数据库错误日志出现此错误原因是因为系统表中字段类型或者数据结构有变动导致,一般是因为升级数据库版本后未同步升级系统表结构。 解决方法: 1.如果错误日志过大,直接删除。 2.执行 mysql_upgrade -u[用户名] -p[密码];,这一步…...
【SpringBoot】多环境配置和启动
环境分类,可以分为 本地环境、测试环境、生产环境等,通过对不同环境配置内容,来实现对不同环境做不同的事情。 SpringBoot 项目,通过 application-xxx.yml 添加不同的后缀来区分配置文件,启动时候通过后缀启动即可。 …...
跨qml通信
****Commet.qml //加载其他文件中的组件 不需要声明称Component //1.用loader.item.属性 访问属性 //2.loader.item.方法 访问方法 //3.用loader.item.方法.connect(槽)连接信号 Item { Loader{ id:loader; width: 200; …...
力扣-404.左叶子之和
Idea attention:先看清楚题目,题目说的是左叶子结点,不是左结点【泣不成声】 遇到像这种二叉树类型的题目呢,我们一般还是选择dfs,然后类似于前序遍历的方式加上判断条件即可 AC Code class Solution { public:void d…...
如何搭建一个 websocket
环境: NodeJssocket.io 4.7.2 安装依赖 yarn add socket.io创建服务器 引入文件 特别注意: 涉及到 colors 的代码,请采取 console.log() 打印 // 基础老三样 import http from "http"; import fs from "fs"; import { Server } from &quo…...
pip常用命令
TOC(pip常用命令) 1.pip 2.where pip 3.pip install --upgrade pip 4.安装 这里暂用flask库举例,安装flask库,默认安装最新版: pip install flask指定要安装flask库的版本: pip install flask版本号我们在安装第三方库时可…...
[QT编程系列-43]: Windows + QT软件内存泄露的检测方法
目录 一、如何查找Windows程序是否有内存泄露 二、如何定位Windows程序内存泄露的原因 二、Windows环境下内存监控工具的使用 2.1 内存监测工具 - Valgrind 2.2.1 Valgrind for Linux 2.2.2 Valgrind for Windows 2.2 内存监测工具 - Dr. Memory 2.2.1 特点 2.2.2 安装…...
【Java-LangChain:使用 ChatGPT API 搭建系统-5】处理输入-思维链推理
第五章,处理输入-思维链推理 在本章中,我们将专注于处理输入,即通过一系列步骤生成有用地输出。 有时,模型在回答特定问题之前需要进行详细地推理。如果您参加过我们之前的课程,您将看到许多这样的例子。有时…...
java Spring Boot RequestHeader设置请求头,当请求头中没有Authorization 直接400问题解决
我在接口中 写了一个接收请求头参数 Authorization 但是目前代理一个问题 那就是 当请求时 请求头中没有这个Authorization 就会直接因为参数不匹配 找不到指向 这里其实很简单 我们设置 value 为我们需要的字段内容 required 是否必填 我们设置为 false 就可以了 这样 没有也…...
[CISCN2019 华北赛区 Day1 Web5]CyberPunk 二次报错注入
buu上 做点 首先就是打开环境 开始信息收集 发现源代码中存在?file 提示我们多半是包含 我原本去试了试 ../../etc/passwd 失败了 直接伪协议上吧 php://filter/readconvert.base64-encode/resourceindex.phpconfirm.phpsearch.phpchange.phpdelete.php 我们通过伪协议全…...
双机并联逆变器自适应虚拟阻抗下垂控制(Droop)策略Simulink仿真模型
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
8月份,誉天79名学员通过HCIE认证!
八月份,誉天又有79名学员顺利通过了HCIE认证,其中:云计算46人、Datacom14人、云服务8人、存储7人、安全3人、大数据1人。一起祝贺他们吧~...
Quarto 入门教程 (2):如何使用并编译出不同文档
接着上一期内容:手把手教你使用 Quarto 构建文档 (1),本文介绍如何使用 Quarto,并编译出文档(PDF,MS Word,html)等。 安装 根据官方链接,选择适合自己电脑的 Quarto 版本并下载&am…...
RocketMQ Dashboard 部署实战:从源码到生产可用的控制台
1. RocketMQ Dashboard 是什么? RocketMQ Dashboard 是 Apache RocketMQ 官方提供的可视化监控管理工具,相当于给 RocketMQ 装上了"仪表盘"。想象一下开车没有仪表盘,不知道油量、车速、发动机状态有多可怕?RocketMQ Da…...
GitHub PR全流程实战:从创建、自动化测试到代码审查与合并
1. 项目概述与核心价值 如果你参与过开源项目,或者在公司内部使用GitHub进行团队协作,那么“Pull Request”(PR)这个流程你一定不陌生。它不仅仅是把代码从一个分支合并到另一个分支那么简单,而是一整套围绕代码质量、…...
PointLLM:让大语言模型看懂三维点云,实现具身智能与机器人交互
1. 项目概述:当大语言模型“睁开双眼”看世界最近在机器人感知与交互领域,一个名为 PointLLM 的项目引起了我的注意。它来自 InternRobotics,核心目标直指一个非常前沿且有趣的问题:如何让大语言模型(LLM)直…...
两种 Linux 发行版:Ubuntu 与 CentOS Shell 环境核心差异对比(查看 Linux 版本,Hadoop 是什么)
Xshell5作为远程连接工具,可通过命令行查看连接的Linux服务器版本。推荐使用cat /etc/os-release或lsb_release -a查看发行版信息,特定系统可用cat /etc/redhat-release(CentOS)或cat /etc/debian_version(Debian)。内核版本用uname -r查看。Ubuntu和Cen…...
2026厦门国际智能交通运输产业博览会开幕:海外需求与国内先进技术的双向奔赴
2026年5月13日,为期三天的2026厦门国际智能交通运输产业博览会(CITSE 2026,以下简称“智交会”)隆重开幕。本届智交会由中国智能交通协会联合厦门会展集团股份有限公司共同举办,以“聚焦产业创新变革,赋能出…...
Beyond Compare 5本地化激活终极指南:三步实现专业文件对比工具永久使用
Beyond Compare 5本地化激活终极指南:三步实现专业文件对比工具永久使用 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare作为专业的文件对比与合并工具,其…...
STL到STEP格式转换:技术选型与实施指南
STL到STEP格式转换:技术选型与实施指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在制造业数字化转型的背景下,3D数据格式互操作性已成为工程团队面临的核心挑战。…...
AWorksLP嵌入式平台FatFs文件系统与SD卡驱动移植实战指南
1. 项目概述:为什么要在AWorksLP上折腾FatFs和SD卡?在嵌入式开发里,存储扩展是个绕不开的话题。尤其是当你手头的MCU片上Flash只有几百KB,却要存点日志、配置文件,甚至是一些小体积的音频、图片资源时,外挂…...
单调栈:高效解决边界查找问题
一、上期回顾 学完并查集 DSU:初始化、查找、合并、路径压缩,连通块、集合合并类题目直接秒杀。今天攻坚单调栈,属于刷题必备、面试常问的线性时间算法。二、单调栈核心概念1. 什么是单调栈栈内元素保持严格递增 / 严格递减,始终维…...
别再只当CANoe/CANape的‘眼睛’了!VN1640A的I/O通道实战:手把手教你采集电压和开关信号
VN1640A硬件接口深度开发:从电压采集到PWM控制的工程实践 在汽车电子测试领域,Vector的VN系列接口设备早已成为行业标准配置。大多数工程师对CAN/LIN通道的应用驾轻就熟,却常常忽略设备上那个不起眼的9针I/O接口——这个被低估的硬件通道实际…...
