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

2023-05-16

目录

  • 前言
  • 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

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

ROS学习 一、Debian10安装ROS Noetic,解决rosdep update失败问题(更新一个可修改位置) 的相关文章

随机推荐

  • PVE虚拟机篇-pve软件换源

    起因 由于安装pve的第二天突然发现后台显示执行错误 xff0c 更新软件源失败 xff1a 更新软件源方法 注释企业源 echo 34 deb https enterprise proxmox com debian pve bullsey
  • 解决android opengl glReadPixels 慢的问题 二

    解决android opengl glReadPixels 慢的问题 二 上篇讲到使用pbo解决glreadpix慢的问题 xff0c 但是效果不太理想 xff0c 后来参考链接 xff1a OpenGL Pixel Buffer Obje
  • Tesseract 3.02中文字库训练

    下载chi sim traindata字库 下载tesseract ocr setup 3 02 02 exe 下载地址 xff1a http code google com p tesseract ocr downloads list 下
  • Windows下使用pip安装包 出错 TLS/SSL

    Windows下使用pip安装包的时候出现如下问题 xff1a WARNING pip is configured with locations that require TLS SSL however the ssl module in
  • C++进阶(七)-模板与群体数据8

    选择排序 选择排序的基本思想 每次从待排序序列中选择一个关键字最小的元素 xff0c xff08 当需要按关键字升序排列时 xff09 xff0c 顺序排在已排序序列的最后 xff0c 直至全部排完 例9 12 简单选择排序函数模板 tem
  • Ubuntu 20.04 WARNING笔记(长期更新,欢迎交流)

    记录使用Ubuntu 20 04过程的报错 以及解决 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 循环嵌套例题

    循环嵌套例题 1 例题1 span class token comment 代码 span span class token keyword for span span class token punctuation span span c
  • java实现学生信息管理(对象数组实现)

    java实现学生信息管理 xff08 对象数组实现 xff09 1 例题 实体类 学生类 id 姓名 xff0c 年龄 xff0c 性别 xff0c 成绩 需要使用数组保存学生信息 Student allStu 需要完成的方法 1 根据学生
  • java基础语法思维导图

    java从入门到放弃 简单总结之前的
  • 学生管理系统2.0 (可对学生数组扩容)

    学生管理系统2 0 可对学生数组扩容 1 用户可初始化数组长度 xff0c 不够用时可以扩充数组容量 尝试完成以下功能 实体类 学生类 id 姓名 xff0c 年龄 xff0c 性别 xff0c 成绩 需要使用数组保存学生信息 Studen
  • LinkedList和Set

    LinkedList和Set 1 LinkedList 1 1 LinkedList概述 底层存储数据是一个双向链表结构 自行车链子 就是一个生活中链表结构 xff0c 环环相扣 xff0c 替换 xff0c 拆除非常方便 1 2 Link
  • shiro与springboot整合

    Shiro 与 SpringBoot 的整合 1 创建SpringBoot工程 xff0c 导入依赖 span class token generics function span class token punctuation lt sp
  • Vue

    Author Thor Version 9 0 1 文章目录 一 Vue简介1 1 简介1 2 MVVM 模式的实现者 双向数据绑定模式1 3 其它 MVVM 实现者1 4 为什么要使用 Vue js1 5 Vue js 的两大核心要素1
  • android AudioRecord 音频录制 噪音消除

    android AudioRecord 音频录制 噪音消除 因为公司APP做适配 xff0c 一些低端机的噪音比较严重 xff0c 所以再一些低端机上做了简单除噪音功能 xff0c 1 xff0c 由于APP使用场景的限制 xff0c 所以
  • springboot 常用注解

    springboot 常用注解 在spring boot中 xff0c 摒弃了spring以往项目中大量繁琐的配置 xff0c 通过自身默认配置 xff0c 极大的降低了项目搭建的复杂度 在spring boot中 xff0c 大量注解的使
  • X86架构基本汇编指令详解

    文章目录 汇编指令伪指令1 MODEL2 STACK3 ENDP4 END 汇编指令1 MOV xff1a 将源操作数复制到目的操作数2 MOVZX 和 MOVSX3 XCHG 交换两个操作数内容4 INC 和 DEC5 ADD 和 SUB
  • 详解 C++ 对象模型

    文章目录 何为 C 43 43 对象模型 xff1f 基本 C 43 43 对象模型C 43 43 对象模型中加入单继承1 无重写的单继承2 有重写的单继承 C 43 43 对象模型中加入多继承C 43 43 对象模型中加入虚继承1 简单虚
  • Ubuntu 扩大/home磁盘分区

    在删除或重命名home目录之前 xff0c 千万确保你可以使用root账户 xff01 xff01 xff01 sudo 无用 xff01 xff01 xff01 根目录一共212G xff0c 已经使用了80 了 xff0c 其中130G
  • 正则表达式学习的个人小结

    正则表达式是对字符串的一种操作 xff0c 运用到JS中可以帮助我们去寻找符合要求的字符串 表单验证 http xff1a regexper com xff08 这个网站可以把正则表达式输入进去然后用图形显示出来 xff0c 因为是国外的网
  • ROS学习 一、Debian10安装ROS Noetic,解决rosdep update失败问题(更新一个可修改位置)

    目录 前言ROS安装1 添加ROS的apt源和key xff08 中科大源 xff09 2 apt安装ros noetic核心组件3 配置ROS的bash环境4 安装其他常用ROS依赖项5 解决python3 rosdep安装中出现的ros