1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > ROS学习 一 Debian10安装ROS Noetic 解决rosdep update失败问题(更新一个可修改位置)

ROS学习 一 Debian10安装ROS Noetic 解决rosdep update失败问题(更新一个可修改位置)

时间:2020-07-28 03:57:46

相关推荐

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./ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

添加key

sudo apt-key adv --keyserver 'hkp://: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" >> ~/.bashrcsource ~/.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-rosdepsudo rosdep initrosdep update

但是,由于国内裸连ros仓库速度极慢,容易产生卡顿、中断等问题

之前的解决方法是修改hosts、nameserver、timeout等方式

尝试1.改hosts

原理是通过修改访问仓库的ip地址来加速访问

sudo gedit /etc/hosts# 在末尾添加以下语句# 151.101.84.133

尝试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.pysudo nano /usr/lib/python3/dist-packages/rosdep2/rep3.pysudo nano /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py

最终的解决方法:

以上三种方法即使改完仍然要多次尝试后才可能rosdep update成功(前两年都是这么硬连)

现在提供一种一次搞定的方法,使用代理来连接github的仓库,方法如下,首先,

sudo apt install python3-rosdep

然后,自己手动创建ros仓库的list

# 手动创建一个ros仓库源的listsudo nano /etc/ros/rosdep/sources.list.d/20-default.list

在上面的20-default.list中填上以下内容:

# os-specific listings firstyaml //ros/rosdistro/master/rosdep/osx-homebrew.yaml osx# genericyaml //ros/rosdistro/master/rosdep/base.yamlyaml //ros/rosdistro/master/rosdep/python.yamlyaml //ros/rosdistro/master/rosdep/ruby.yamlgbpdistro //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

中每个文件包含的仓库拉取地址

'/······'

改成

'//······'

例如将

'/ros/rosdistro/master/releases/targets.yaml'

变成

'//ros/rosdistro/master/releases/targets.yaml'

全部修改完毕后,再更新rosdep

rosdep update

大功告成

结语

以上方法终于解决了linux下安装ROS的老大难问题,日后会再更新有关ros的具体操作学习总结。

更新可修改位置

在执行以下命令时容易出现timeout

Query rosdistro index /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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。