ROS学习 一、Debian10安装ROS Noetic,解决rosdep update失败问题(更新一个可修改位置)
目录
- 前言
- ROS安装
- 1.添加ROS的apt源和key(中科大源)
- 2.apt安装ros-noetic核心组件
- 3.配置ROS的bash环境
- 4.安装其他常用ROS依赖项
- 5.解决python3-rosdep安装中出现的rosdep update error问题
- 尝试1.改hosts
- 尝试2.改resolv.conf
- 尝试3.改timeout
- 最终的解决方法:
- 结语
- 更新可修改位置
前言
装了挺多次ROS,每次安装都会卡在rosdep update这一步上,总要靠运气装好。最近发现一种很棒的ROS仓库连接不上的解决方案,因此重新记录一下在Debian10无卡顿安装ROS noetic的方法
注:ROS1 noetic之前所有发行版本的ROS系统都默认采用python2作为python的解释器,而noetic改成了python3,可以说是极大简化了基于python3程序在ROS上的移植
ROS安装
1.添加ROS的apt源和key(中科大源)
添加ROS中科大apt源
sudo sh -c 'echo "deb https://mirrors.ustc.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
添加key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
更新apt源
sudo apt update
2.apt安装ros-noetic核心组件
推荐直接安装完整的ros核心组件
sudo apt install ros-noetic-desktop-full
后续还可以加装特定的ros工具包,比如slam包
sudo apt install ros-noetic-slam-gmapping
3.配置ROS的bash环境
为了在终端terminal中使用ros,必须要先给bash配置环境,
source /opt/ros/noetic/setup.bash
每次打开terminal都必须输入这个指令,这就很麻烦,推荐把这条命令写在~/.bashrc中,这样每次打开terminal会自动读取该命令
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
4.安装其他常用ROS依赖项
除了核心组件外,ros还有一些常用的依赖工具包,可以通过apt进行安装,
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
5.解决python3-rosdep安装中出现的rosdep update error问题
首先python3-rosdep安装方法如下,
sudo apt install python3-rosdep
sudo rosdep init
rosdep update
但是,由于国内裸连ros仓库速度极慢,容易产生卡顿、中断等问题
之前的解决方法是修改hosts、nameserver、timeout等方式
尝试1.改hosts
原理是通过修改访问仓库的ip地址来加速访问
sudo gedit /etc/hosts
# 在末尾添加以下语句
# 151.101.84.133 raw.githubusercontent.com
尝试2.改resolv.conf
原理是修改DNS来防止仓库地址解析错误
sudo gedit /etc/resolv.conf
# 注释掉nameserver行
# 然后添加以下语句
# nameserver 8.8.8.8
# nameserver 8.8.4.4
尝试3.改timeout
原理是rosdep update拉取仓库时的默认timeout太短(15s),修改延长timeout
# 注意对应自己的python3版本
# 找到timeout = 15.0 ,改为timeout = 150
# 以下三个文件timeout都要改
sudo nano /usr/lib/python3/dist-packages/rosdep2/sources_list.py
sudo nano /usr/lib/python3/dist-packages/rosdep2/rep3.py
sudo nano /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
最终的解决方法:
以上三种方法即使改完仍然要多次尝试后才可能rosdep update成功(前两年都是这么硬连)
现在提供一种一次搞定的方法,使用代理来连接github的仓库,方法如下,首先,
sudo apt install python3-rosdep
然后,自己手动创建ros仓库的list
# 手动创建一个ros仓库源的list
sudo nano /etc/ros/rosdep/sources.list.d/20-default.list
在上面的20-default.list中填上以下内容:
# os-specific listings first
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx# generic
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
接着,
sudo rosdep init
然后,再将以下几个文件
/usr/lib/python3/dist-packages/rosdistro/__init__.py
/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
/usr/lib/python3/dist-packages/rosdep2/sources_list.py
/usr/lib/python3/dist-packages/rosdep2/rep3.py
/usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py
中每个文件包含的仓库拉取地址
'https://raw.githubusercontent.com/······'
改成
'https://ghproxy.com/https://raw.githubusercontent.com/······'
例如将
'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
变成
'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
全部修改完毕后,再更新rosdep
rosdep update
大功告成
结语
以上方法终于解决了linux下安装ROS的老大难问题,日后会再更新有关ros的具体操作学习总结。
更新可修改位置
在执行以下命令时容易出现timeout
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
我通过在执行该命令时Ctrl+C强制停止发现了该命令运行时的timeout修改位置:
sudo nano /usr/lib/python2.7/dist-packages/rosdistro/loader.py
其中有一个load_url中的timeout=10,可改成timeout=150,retry=2改成5
ROS学习 一、Debian10安装ROS Noetic,解决rosdep update失败问题(更新一个可修改位置)相关推荐
- ROS学习(二)ROS Noetic的简单测试
文章目录 前言 正文 前言 在上一篇文章ROS学习(一)ROS Noetic安装及环境配置中完成了ROS Noetic安装及环境配置,但可惜的是,在我目前阅读的ROS的wiki文档中并没有说明如何 ...
- Ubuntu18.04 安装 ROS Melodic(同时解决 rosdep update 问题,亲测有效)
该教程参考自ROS官方安装教程,并解决了国内安装时,运行rosdep update经常会遇见了time out问题. http://wiki.ros.org/melodic/Installation/ ...
- Ubunu20.04安装ROS noetic及rosdep update问题解决
Ubunu20.04安装ROS noetic及rosdep update问题解决 一.Ubuntu20.04安装ROS noetic 1.添加ROS软件源 2.添加Keys 3.更新软件源列表 4.安 ...
- 学习使用turtlebot2——安装ROS Indigo系统
最近在学习使用turtlebot2,特此做一些学习记录. 安装ROS前要先决定自己电脑的Ubuntu(乌班图)系统.现在学习ROS常使用的Ubuntu系统有Ubuntu 16.04 和Ubuntu14 ...
- 【ROS】针对ROS安装过程中出现rosdep update超时问题的解决方法
参考:https://blog.csdn.net/leida_wt/article/details/115120940 由于近期国内Github Raw的可用IP越来越少,通过修改hosts文件解决r ...
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters 上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameter ...
- ROS学习笔记十一:ROS中数据的记录与重放
ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...
- 解决rosdep update一直timeout问题
解决rosdep update一直timeout问题 方法一: sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py su ...
- macM1下PD虚拟机中ubuntu安装git过程中apt-get update失败、E: 部分索引文件下载失败等问题
macM1下PD虚拟机中ubuntu安装git过程中apt-get update失败.E: 部分索引文件下载失败等问题 问题描述 怀疑1:更新所用的软件源的问题 怀疑2:多架构支持导致在更新源时链接不 ...
最新文章
- 分布式事务是啥?常用的解决方案有哪些?
- Spring Cloud Netflix尤里卡
- LeetCode 413. 等差数列划分(DP)
- JWT-JSON WEB TOKEN使用详解及注意事项
- HTML5 拖放(Drag 和 Drop)(stage1-39)
- PR 2019 快速入门(8)
- Micro LED将引领小间距显示的未来。
- 从零开始写Python爬虫---1.1 requests库的安装与使用
- Android的UAS及UAP定制
- 森林防火应急指挥GIS系统森林防火监测预警系统
- 主机序、网络序的理解
- Java开发的几个就业方向
- 修改材质球面板shader属性数值
- JDK1.8(jdk8)的下载与安装
- 地理坐标系和投影坐标系的联系_收藏| 地图投影系列介绍(二)——地理坐标系...
- 淮海工学院计算机学院团委,我校第三届“我最喜好的先生”评比运动圆满结束...
- ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据
- Node.js中LTS和Current的两种版本有啥区别?
- pinia中onAction
- 【前端三剑客】JavaScript 网页脚本语言(速览)