ubuntu20.04中安装ROS系统,详细介绍各种错误解决方法,直达小海龟

2023-05-16

因为最近学习的缘故,花了半天的时间安装了ROS,期间因为ubuntu也是临时安装的双系统,遇到了各种各样的问题,这里记录一下,主要集中在ROS系统安装问题的解决。

Ubuntu系统的安装

ubuntu系统的安装网上已经有很多详细的教程,这里就不展开详述了,安装的各种问题都可以在网上找到。我遇到的最大的问题是nvidia的显卡驱动不兼容,使得安装完系统重新启动后一直黑屏,这个问题网上查到的方法很乱,我也尝试了一些不同的解决方式,这个可以后面再总结一下,这篇主要讲ROS的安装

ROS系统的安装

ROS的安装其实非常的简单,需要运行命令行不超过10行,总共就四步:添加密钥 ➡ 下载ROS ➡ 初始化 ➡ 设置环境变量。期间遇到了一些错误或者问题其实都是相应的库没有配置好或者网络的问题。所以遇到任何问题就去溯根溯源,定位问题去解决就好了。

0. ROS版本

ROS 虽说也叫操作系统,但它是寄生在 LINUX 操作系统之下的。Ubuntu20.04是ROS1支持的最后一个版本,如果安装Ubuntu22.04的话需要用ROS2。当然ROS2有很多的优点,大家都可以去尝试用一下。安装的时候注意版本的名字,版本名字对应了安装包的命名。

UbuntuROS 1.0ROS 2.0
18.04 LTSMelodic LTSDashing LTS
20.04 LTSNoetic LTSFoxy LTS

1. 添加ROS软件源

将下面这条命令复制到ubuntu的终端执行:

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'

2. 添加密钥

将以下命令复制到ubuntu的终端执行,成功后会显示已导入。

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

3. 更新软件源

为了保证后面下载速度,一般需要使用国内的镜像源。一般使用过Linux相关的系统都会进行这一步的操作。更改起来很简单,在命令行或者软件更新器更改都可以。具体可以参考https://blog.csdn.net/qq_44339029/article/details/108916820这篇博客。
更新后记得运行:

sudo apt update

4. 安装ROS

执行命令:(注意安装包的版本,noetic是ubunutu20.04里对应ROS1的版本命名)

sudo apt install ros-noetic-desktop-full

5. 初始化rosdep

执行命令:

sudo rosdep init

成功的话会显示 please run rosdep update。

这一步非常建议开VPN,否则会经常性的网络链接错误。主要原因是因为 www.rawgithubusercontent.com 这个网站被墙。

可能遇到的问题如下:

  • 错误1:找不到命令
    执行命令:
sudo apt install python3-rosdep
  • 错误2 ERROR: cannot download default sources list from:https: //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
    执行命令:
sudo gedit /etc/hosts

185.199.109.133 raw.githubusercontent.com 加在hosts文件最后。主要原因是增加raw.githubusercontent.com网站的真实IP地址。

  • 错误3: 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 init命令试试,遇到其他错误再对应解决。最后成功会显示 please run rosdep update ,一定要开VPN科学上网!!!!

6. 更新rosdep

既然上一步让我们run rosdep update,那肯定得run是吧。
执行命令:

rosdep update

不出意外的话会出意外,报错:reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: error loading sources list: (‘The read operation timed out’)
这一步正常网络下基本不可能跑通,主要问题还是刚刚那个网站被墙,上一步可以VPN解决,但这一步不行,必须更改对应的链接。解决方法主要参考了这个博客:https://blog.csdn.net/leida_wt/article/details/115120940?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
基本用这篇博客里的修改方式便可以解决,注意一个问题就是文件夹的位置,因为我们装的是python3-rosdep,所以对应的文件夹在python3而不是python2.7里面,还有一个问题就是注意python的标准换行是四个空格,有时候tab键换行是否可行和你的编辑器的配置有关。

修改命令如下:

  1. 打开包含资源下载函数的文件:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
  1. 添加代理
    在 download_rosdep_data 函数里添加url:
url="https://ghproxy.com/"+url
  1. 修改/usr/lib/python3/dist-packages/rosdistro/init.py文件中的DEFAULT_INDEX_URL
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
  1. 修改其余文件中的地址,在地址 https://raw.githubusercontent.com/… 前添加https://ghproxy.com/,需要自己定位一下网址在的行数
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py 72sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py
  1. 解决 Hit 第五个地址的报错
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
// 在 给gbpdistro_url赋值前添加
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
  1. 运行 rosdep update ,完美解决问题

7. 设置环境变量

执行命令:(注意这里的文件夹名字也是和ros的版本名字匹配的)

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

8. 安装rosinstall

执行命令:

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

9. 验证ROS是否安装成功

按理说ROS到这里就安装完成了,执行roscore测试一下:

roscore

如果报错有对应的安装包没有装,那就安装提示重新安装一下。
成功的话会显示 started core service.

可以启动一下小海龟的仿真器试一试,分别打开两个新的终端,每个输入一行以下命令:

rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

这时候你按键盘上的方向键就可以控制小海龟移动,ROS成功安装!

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

ubuntu20.04中安装ROS系统,详细介绍各种错误解决方法,直达小海龟 的相关文章

随机推荐

  • cdn方式使用vue和element-ui进行前端开发

    安装 按照vue和element ui的官网开发指南中提供的cdn安装方式 xff0c 直接以script方式引入 要注意引入顺序 span class token comment lt 引入样式 gt span span class to
  • vue el-table 如何实现表格根据分页索引自增长

    在el table 里设置type 61 index xff0c 可以实现表格的索引自增长 xff0c 但是如果我们给表格增加了分页 xff0c 切换页面索引任然是从1 20 xff08 20是自己分页的数量 xff09 xff0c 那么想
  • Vue的计算属性和监听属性

    1 计算属性 computed 当依赖数据发生变化时 xff0c 计算属性会被重新计算 有且只有在依赖数据发生变化时它才会重新计算 xff0c 其他的数据变化对计算属性 应用场景 xff1a 数据的计算显示 v for用v if的计算 sp
  • Element UI el-form-item 遍历表单校验规则

    一 遍历表单校验规则实现案例 prop内容为 遍历数据 43 index 43 校验数据 span class token operator lt span div span class token keyword class span s
  • uni-app引入uView2.0的步骤

    引入uVIew组件可以使用uni app市场插件安装插件即可 xff0c 也可以使用npm下载安装 xff0c 不过使用npm需要在pages json使用easycom属性引用需要的组件类 在uni app插件市场右上角选择使用HBuil
  • Vue-cli创建项目步骤

    一 使用 vue cli 搭建项目 下面整个过程是基于已经安装node js和cnpm的基础上 xff0c node js如何安装就不在这里详说了 xff08 1 xff09 全局安装 vue cli xff0c 在命令提示窗口执行 xff
  • keil5建立工程

    1 xff0c 确认工程代码 主要包括代码的目录或者代码的svn路径 xff0c 其次再来确认代码的编译方法 xff0c 确认该代码是需要keil5编译还是linux gcc 43 makefile 编译 2 xff0c 确认编译手段 确认
  • win10下 frpc的开机自启动

    frp可以用来进行内网穿透 xff0c 其具体实现原理可以参考网上其他教程 xff0c 本文主要描述用户端程序frpc exe在win10下的一种开机自启动方法 本地组策略 在完成配置最后 xff0c 需要进行自启动配置 xff0c 一般的
  • qt 设置背景图片、背景色步骤

    拖一个label 控件 label 上右键选择改变样式表 xff0c 添加资源选择图片 一 设置背景图 background image xff1a 二 铺满整个label border image xff1a 三 添加图片 xff0c i
  • QT 设置按钮QPushButton 圆角、渐变色背景、背景图片、鼠标放上去、鼠标按下效果、透明背景

    设置按钮圆角 渐变色背景 背景图片 鼠标放上去 鼠标按下效果 透明背景 效果 xff1a 一 设置四角圆角 xff1a 二 设置下 左圆角 按钮鼠标放上去改变背景色 三 设置上 右圆角 四 按钮设置背景图片 xff0c 鼠标放上去 按下 更
  • processlist中状态详解

    在processlist中 xff0c 看到哪些运行状态时要引起关注 xff0c 主要有下面几个 xff1a 状态建议copy to tmp table执行ALTER TABLE修改表结构时建议 xff1a 放在凌晨执行或者采用类似pt o
  • 在oVirt上安装Win11虚拟机

    在oVirt上安装Win11虚拟机
  • 【Debugging】树莓派 SSH连接失败解决

    问题描述 在使用SSH连接时出现如下错误 xff1a Remote side unexpectedly closed network connection 解决方案 修改ssh的配置文件 etc ssh sshd config xff0c
  • ubantu 18.x 学习记录

    安装net tools 用于 ifconfig命令 span class token function sudo span span class token function apt get span span class token fu
  • 雷达辐射源调制信号仿真

    雷达辐射源调制信号仿真 说明 xff1a 通过Matlab进行单载频 xff08 CW xff09 xff0c 线性调频 xff08 LFM xff09 非线性调频 xff08 NLFM xff09 二相编码 xff08 BPSK xff0
  • nvidia-smi报错 NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.

    1 报错 xff1a nvidia smi报错 NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver Make sure that the
  • 自定义Request数据包欺骗服务器拿数据

    自定义Request数据包欺骗服务器拿数据 背景思路 xff1a 值得记录的知识点 背景 一个连接服务器的APK xff0c 登录方式 xff1a 电话号码 43 短信验证 xff0c 登录后可以查询到该账号下的几百条数据 xff0c 每一
  • Qt下C++的cout输出中文信息乱码问题解决

    在Qt中使用C 43 43 的cout时 xff0c 发现打印出的中文时乱码的 xff0c 如下 xff1a 解决办法 xff1a 第一步 xff1a 加入头文件 61 61 include lt windows h gt 61 61 解决
  • C51单片机学习笔记(六)——液晶显示屏的使用

    C51单片机学习笔记 六 液晶显示屏的使用 文章目录 C51单片机学习笔记 六 液晶显示屏的使用1 LCD1602的认识2 LCD1602的引脚及其功能3 LCD模块的内部结构4 LCD1602的工作时序5 LCD1602的指令说明6 LC
  • ubuntu20.04中安装ROS系统,详细介绍各种错误解决方法,直达小海龟

    因为最近学习的缘故 xff0c 花了半天的时间安装了ROS xff0c 期间因为ubuntu也是临时安装的双系统 xff0c 遇到了各种各样的问题 xff0c 这里记录一下 xff0c 主要集中在ROS系统安装问题的解决 Ubuntu系统的