Ubuntu 18.04.05 LTS配置ROS Melodic各种问题详细解决(填坑)

本文涉及的产品
资源编排,不限时长
简介: Ubuntu 18.04.05 LTS配置ROS Melodic各种问题详细解决(填坑)

前言

ROS包括多个版本,适应于各不同版本的Linux系统。(查看各版本对应关系

本文主要针对:

操作系统:Ubuntu 18.04.05 LTS
ROS版本:Melodic

进行处理。

安装过程主要参考:ROS官方教程

安装过程介绍

对ROS官方教程简单介绍如下:

1) 打开“软件与更新(soft & update)”,选择"restricted," “universe,” and “multiverse.”,详细说明可见(链接)。

2) 设置下载源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

为了避免后续出现无法定位软件包的错误可以把deb http://packages.ros.org/ros/ubuntu替换为deb http://mirrors.ustc.edu.cn/ros/ubuntu

3) 设置秘钥

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

4) 安装ROS

首先:

sudo apt update

接着使用

sudo apt install ros-melodic-desktop-full

上述命令是安装完整的ROS,若想进行选择还可以参考下述命令:(若没有选择直接安装完整版,可以忽略以下内容)

Desktop Install: ROS, rqt, rviz, and robot-generic libraries

sudo apt install ros-melodic-desktop

ROS-Base: (Bare Bones) ROS package, build, and communication libraries. No GUI tools.

sudo apt install ros-melodic-ros-base

Individual Package: You can also install a specific ROS package (replace underscores with dashes of the package name):

sudo apt install ros-melodic-PACKAGE

e.g.

sudo apt install ros-melodic-slam-gmapping

To find available packages, use:

apt search ros-melodic

5) 环境设置(添加ros环境变量)

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

6) 生成包的依赖项

安装建立ROS的工具:

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

7) 初始化rosdep

先安装一个rosdep

sudo apt install python-rosdep

接着进行初始化:

sudo rosdep init

这一步可能会出现下面的错误:

ERROR: cannot download default sources list from:

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

Website may be down.

这是因为国内访问外网比较慢。

**解决方法(1)**为:

#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133  raw.githubusercontent.com
#保存后退出再尝试,可以多尝试几次

出现下述界面则代表成功:

如果不行,使用解决方法(2) 为:20-default.list文件中的内容进行替换,主要是网址https://raw.githubusercontent.com

替换文件可以从这里下载,然后使用命令进行替换:

sudo cp ./20-default.list /etc/ros/rosdep/sources.list.d
#注意上述命令为:sudo cp 本机路径/20-default.list /etc/ros/rosdep/sources.list.d

或者打开20-default.list文件进行编辑

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

把全部内容修改为以下内容:

# os-specific listings first
# yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
yaml file:/etc/ros/rosdep/sources.list.d/rosdistro-master/rosdep/osx-homebrew.yaml osx
# generic
# yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
# yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
# yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
# gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
yaml file:/etc/ros/rosdep/sources.list.d/rosdistro-master/rosdep/base.yaml
yaml file:/etc/ros/rosdep/sources.list.d/rosdistro-master/rosdep/python.yaml
yaml file:/etc/ros/rosdep/sources.list.d/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:/etc/ros/rosdep/sources.list.d/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

修改后接着使用rosdep update命令进行更新,若出现time out的错误,还是因为访问外网的速度太慢或不能访问。

解决方案(1):增加允许尝试的时间,修改 /usr/lib/python2.7/dist-packages/rosdep2/下的三个文件sources_list.py、gbpdistro_support.py、rep3.py

中的DOWNLOAD_TIMEOUT = 15.0值。打开对应的文件:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py

修改DOWNLOAD_TIMEOUT = 15.0的值为DOWNLOAD_TIMEOUT = 1500.0

然后进行多次尝试,看是否能够成功,若不能则尝试解决方案(2)。


解决方案(2):采用离线下载的方式,把rosdistro-master这个文件下载到本地,然后把修改 /usr/lib/python2.7/dist-packages/rosdep2/中三个文件sources_list.py、gbpdistro_support.py、rep3.py中的位置指向本地位置。

(下载方式1 github,下载方式2 csdn)


把下载的文件解压,然后移动到对应位置:

sudo cp -r ./rosdistro-master/ /etc/ros/rosdep/sources.list.d
#注意上述命令为:sudo cp -r 本机路径/rosdistro-master/ /etc/ros/rosdep/sources.list.d

接着修改 /usr/lib/python2.7/dist-packages/rosdep2/中三个文件sources_list.py、gbpdistro_support.py、rep3.py中指向的位置:

第一个文件:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
# 修改DEFAULT_SOURCES_LIST_URL为离线路径
DEFAULT_SOURCES_LIST_URL = 'file:/etc/ros/rosdep/sources.list.d/20-default.list'

第二个文件:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
# 修改REP3_TARGETS_URL为离线路径
REP3_TARGETS_URL = 'file:/etc/ros/rosdep/sources.list.d/rosdistro-master/releases/targets.yaml'

第三个文件:

sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
# 修改DEFAULT_INDEX_URL为离线路径
DEFAULT_INDEX_URL = 'file:/etc/ros/rosdep/sources.list.d/rosdistro-master/index-v4.yaml'

最后使用rosdep update命令,出现以下界面代表成功:

注意:上述rosdep init与rosdep update出现错误时,上下两个解决方案(1)是对应的(还是尝试通过访问外网实现),解决方案(2)也是对应的(把文件下载到本地,修改链接指向)

案例使用

完成上述步骤后,我们已经完成了ros安装的全过程,接着进行一个案例测试:

终端中使用命令:

roscore

Ctrl+Alt+T 快捷键打开一个新的终端,并使用命令:

rosrun turtlesim turtlesim_node

出现一个静止的小海龟界面:

Ctrl+Alt+T 快捷键再次打开一个新的终端,并使用命令:启用启动turtlesim的键盘控制节点turtle_teleop_key

rosrun turtlesim turtle_teleop_key

把鼠标放在第三个终端界面上,能够键盘上的上下左右进行控制小海龟的移动,轨迹如下。

好了,至此ROS的安装过程就全部完成了。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
11天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
29 2
|
12天前
|
Ubuntu Linux 网络安全
Ubuntu 22.04 LTS有哪些新特性
Ubuntu 22.04 LTS有哪些新特性
|
1月前
|
网络协议 Ubuntu 网络安全
|
1月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
76 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
1月前
|
资源调度
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
37 2
Ubuntu22.04静态ip配置+yarn build后显示内存超限,变异失败
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
275 3
|
1月前
|
Web App开发 Ubuntu 前端开发
【踩坑记】Ubuntu 20.04.6 LTS下编译安装gcc 4.4.0
【踩坑记】Ubuntu 20.04.6 LTS下编译安装gcc 4.4.0
|
1月前
|
Ubuntu 网络协议 Linux
liunx各大发行版(centos,rocky,ubuntu,国产麒麟kylinos)网卡配置和包管理方面的区别
liunx各大发行版(centos,rocky,ubuntu,国产麒麟kylinos)网卡配置和包管理方面的区别
108 0