Ubuntu20.04安装ROS教程(虚拟机/双系统,含报错解决)

最近在配置ROS环境时遇到了一些问题,遂在本文做个记录。主要解决了如何通过虚拟机的方式实现ROS的配置。

环境:
宿主机:Windows10
双系统:Ubuntu18.04
虚拟机:Ubuntu20.04


1.虚拟机安装 Ubuntu20.04

1.1 安装VMware Workstation 16 Pro

下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

在这里插入图片描述
最后一步选择第一项,输入激活密钥


1.2 下载Ubuntu20.04镜像

下载地址:http://releases.ubuntu.com/focal/

在这里插入图片描述
直接下载镜像比较慢,使用迅雷通过种子下载比较快。


1.3 安装Ubuntu20.04虚拟机

选择创建新的虚拟机
在这里插入图片描述
选择自定义
在这里插入图片描述
选择:
在这里插入图片描述
选择下载的镜像.iso文件
在这里插入图片描述
输入信息
在这里插入图片描述
选择安装位置
在这里插入图片描述
根据本机情况设置
在这里插入图片描述
选择推荐虚拟内容容量
在这里插入图片描述
使用桥接连接网络

使用校园网拨号上网,Ubuntu18以后不支持拨号,配置PPPOE不管用,设置桥接可以上网。
在这里插入图片描述

默认选项
在这里插入图片描述

SCSI控制器的英文名称是“Small Computer System Interface”,中文翻译为"小型计算机系统专用接口";顾名思义,这是为了小型计算机设计的扩充接口,它可以让计算机加装其他外设设备以提高系统性能或增加新的功能,例如硬盘、光驱、扫描仪等。

在这里插入图片描述
选择
在这里插入图片描述
设置磁盘容量
在这里插入图片描述
默认
在这里插入图片描述
默认
在这里插入图片描述
等待安装
在这里插入图片描述

右击左侧边栏的虚拟机,选择设置,选择NAT模式,这样就把win10下的网络桥接到虚拟机系统了。
在这里插入图片描述


2. Win10、Ubuntu双系统

虚拟机耗内存,有卡顿,使用体验不好,装双系统使用体验更好。

这部分之前配置过了,不再赘述。相关教程比较多,对照着配置一般不会出问题。可能出问题的地方是开机界面卡死,主要是安装显卡驱动不正确导致的。

之前配置的教程记录:

2.1 Ubuntu16.04配置

基于 Ubuntu 16.04 从零开始配置深度学习主机(一)–基础配置
基于 Ubuntu 16.04 从零开始配置深度学习主机(二)–显卡驱动\CUDA\CUDNN配置
基于 Ubuntu 16.04 从零开始配置深度学习主机(五)–Darknet配置与训练

2.2 Ubuntu18.04配置

Ubuntu18.04下 GPU版本 Tensorflow2.0+CUDA10.0 / Tensorflow2.1+CUDA10.1 虚拟环境配置


3. Ubuntu18.04 配置ROS

3.1 创建虚拟环境 virtualenv

安装虚拟环境及扩展包:

pip install virtualenv
pip install virtualenvwrapper

创建用来存放虚拟环境的目录:

//home目录下运行
mkdir .virtualenvs
//非home目录下运行
mkdir ~/.virtualenvs

编辑home目录下的.bashrc文件,添加下面两行内容:

//打开.bashrc文件命令
//vi ~/.bashrc 或者 nano ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

注:ubuntu18及以上版本,virtualenvwrapper.sh被安装到了home目录下的.local/bin/中,非原来的/usr/local/bin/中。
在这里插入图片描述

运行.bashrc,使其生效

//home目录下运行
source .bashrc
//非home目录下运行
//source ~/.bashrc

创建虚拟环境

//创建pyhton2的虚拟环境
mkvirtualenv name
//创建python3的虚拟环境
mkvirtualenv -p python3 name

激活虚拟环境

workon name

退出虚拟环境

deactivate

查看虚拟环境中的包

pip list

查看所有虚拟环境:

lsvirtualenv

删除虚拟环境

rmvirtualenv name

卸载虚拟环境

sudo apt-get remove virtualenv
sudo apt-get remove virtualenvwrapper

3.2 配置ROS软件仓库

创建虚拟环境:

mkvirtualenv -p python3 ros

激活虚拟环境

workon ros

配置Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库。

设置电脑以安装来自packages.ros.org的软件。

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

若下载速度缓慢,推荐就近选择一个镜像源替换上面的命令。例如,Tsinghua University为:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

如果依旧遇到连接问题,请尝试为Ubuntu apt换源

设置密钥

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

若无法连接到密钥服务器,可以尝试替换上面命令中的 hkp://keyserver.ubuntu.com:80hkp://pgp.mit.edu:80

Linux在安装软件时,需要通过源列表去寻找对应的软件,Ubuntu默认的软件列表是没有ROS的,需要把packags.ros.org网站配置到软件仓库列表内才能下载ROS,不然显示的是没有这个软件。

配置公网密钥,这一步是确保系统认为这个路径是安全的,下载文件是没有问题的。不然下载的东西会立刻被清除掉。


3.3 安装 ROS

首先,确保你包索引是最新的:

sudo apt update

在 ROS 中有很多不同的库和工具。ROS提供了四种默认选项。你也可以单独安装 ROS 的软件包。

桌面完整版(推荐): : 包含 ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及 2D/3D 感知包。

sudo apt install ros-melodic-desktop-full

桌面版: 包含 ROS,rqt,rviz 和机器人通用库

sudo apt install ros-melodic-desktop

ROS-基础包: 包含 ROS 包,构建和通信库。没有图形界面工具。

sudo apt install ros-melodic-ros-base

单独的包: 你也可以安装某个指定的ROS软件包(使用软件包名称替换掉下面的PACKAGE):

sudo apt install ros-melodic-PACKAGE

如:

sudo apt install ros-melodic-slam-gmapping

3.4 初始化 rosdep

在使用 ROS 之前,需要初始化 rosdep。rosdep 能够轻松地安装被想要编译的源代码,或被某些 ROS 核心组件需要的系统依赖。

sudo apt install python-rosdep2

sudo rosdep init

执行成功之后,提示输入以下指令:

rosdep update

如果出现Error,可能是网络导致的,多执行几次命令即可。

在这里插入图片描述
在这里插入图片描述
添加到环境变量:

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

启动:

roscore

3.5 报错解决

由于网络原因, 可能会报以下错误:

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.

在这里插入图片描述
解决办法,执行如下命令:

cd /etc
sudo nano hosts

在文件末尾添加:

151.101.84.133 raw.githubusercontent.com

然后查询raw.githubusercontent.com的IP地址,并替换151.101.84.133

raw.githubusercontent.com resolves to the following 4 IPv4 addresses:
185.199.108.133
185.199.109.133
185.199.110.133
185.199.111.133

如果遇到有些包下载不完全,之后又重新 sudo rosdep init 时,可能会遇到如下错误:

ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210409183144963.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTY1Mzk0OA==,size_16,color_FFFFFF,t_70#pic_center

解决办法,执行如下命令:

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

然后再重新运行命令 sudo rosdep init 即可解决。
在这里插入图片描述
.增加TIMEOUT时间

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

搜索

DOWNLOAD_TIMEOUT=45.0

3.6 rosdep update time out error(未解决)

困扰了我四五天,现在还没解决。

尝试过手机热点,安卓和ios都不行,校园网不可以。

尝试配置拨号连连接,未成功。

尝试Science上网,SS和CLASH均配置失败。

遂暂时用虚拟机配置···


在虚拟机上解决了该问题,大概思路就是:通过桥接网络,在宿主机器上科学上网,通过配置虚拟机的proxy,实现虚拟机的科学上网。


4. Ubuntu20.04虚拟机配置ROS(成功!)

4.1 换源

参考:https://zhuanlan.zhihu.com/p/142014944

备份:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

打开/etc/apt/sources.list文件,在前面添加如下条目,并保存。

sudo gedit /etc/apt/sources.list
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse

更新源

sudo apt-get update

如出现依赖问题,解决方式如下:

sudo apt-get -f install

更新软件:

sudo apt-get upgrade

4.2 基础软件安装

  1. chrome下载:https://www.google.cn/chrome/

  2. 搜狗拼音下载:https://pinyin.sogou.com/linux/?r=pinyin

安装参考:

  1. https://www.linuxprobe.com/ubuntu20-04-install-sogou.html
  2. https://pinyin.sogou.com/linux/help.php

在这里插入图片描述


  1. 网易云下载:https://music.163.com/#/download

错误:Gtk-Message: 03:59:19.540: Failed to load module "canberra-gtk-module"

解决:

sudo apt-get install libcanberra-gtk-module

启动:

  • 切换: cd /usr/bin
  • 执行:./netease-cloud-music

  1. Typora
    参考:https://typora.io/#linux
# or run:
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE

wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -

# add Typora's repository

sudo add-apt-repository 'deb https://typora.io/linux ./'

sudo apt-get update

# install typora

sudo apt-get install typora

4.3 配置ROS环境

参考CH3.1——CH3.5

4.3.1 安装显卡驱动

参考:Ubuntu20.04显卡驱动安装

4.3.2 安装虚拟环境

sudo apt install python3-pip
pip3 install virtualenvwrapper

4.3.3 安装noetic(对应ubuntu20.04)

参考:在Ubuntu20.04中安装ROS Noetic

sudo apt update
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt install ros-noetic-desktop-full

在使用 ROS 之前,需要初始化 rosdep。rosdep 能够轻松地安装被想要编译的源代码,或被某些 ROS 核心组件需要的系统依赖。

sudo apt install python3-rosdep

sudo rosdep init

报错:

(ros) datazero@ubuntu:~$ 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.

解决:

cd /etc
sudo nano hosts

在文件末尾添加:

151.101.84.133 raw.githubusercontent.com

然后查询raw.githubusercontent.com的IP地址,并替换151.101.84.133

raw.githubusercontent.com resolves to the following 4 IPv4 addresses:
185.199.108.133
185.199.109.133
185.199.110.133
185.199.111.133

如图:
在这里插入图片描述

执行成功之后,提示输入以下指令:

rosdep update

报错:

reading in sources list data from /etc/ros/rosdep/sources.list.d
ERROR: error loading sources list:
	The read operation timed out

在这里插入图片描述
我是校园网,如果依然报错,请尝试桥接!!!!!!具体解决如下:


4.4 通过桥接解决 rosdep update time out error

过程如下(按顺序):

4.4.1 虚拟机选择桥接(校园网选择NAT):

在这里插入图片描述

4.4.2 打开 allow lan:

设置端口号,clash默认为7890。

4.4.3 宿主机查看ip地址:

打开cmd,ipconfig查看宿主机ipv4地址(一般为第一部分内容之中的ipv4地址):
在这里插入图片描述

4.4.4 Ubuntu设置proxy:

在这里插入图片描述

4.4.5 Ubuntu安装proxychains

在ubuntu命令行使用代理,需要安装proxychains:

sudo apt-get install proxychains

配置端口:

sudo nano /etc/proxychains.conf

添加以下内容:

socks5 宿主机ip地址 端口号

例如:
在这里插入图片描述设置软链接
首先查找文件

find /usr/lib/ -name libproxychains.so.3 -print

在这里插入图片描述

将查找到的内容复制,对下述文件进行修改:

sudo gedit /usr/bin/proxychains

在这里插入图片描述

宿主机不要选择全局模式,而要选择RULE模式。
如果要使用代理,命令行中的命令前添加proxychains即可!


运行命令:

proxychains rosdep update

成功解决如图:
在这里插入图片描述


4.5 测试小海龟

运行:

roscore

在这里插入图片描述
测试:打开第二个终端,运行如下命令,出现一只小海龟

rosrun turtlesim turtlesim_node

如果希望小海龟移动,打开第三个终端,并运行:

rosrun turtlesim turtle_teleop_key

然后在运行该命令的命令行窗口选中的情况下,使用键盘的上下左右控制小海龟运动。

如图:

在这里插入图片描述至此安装成功!!!


参考:

  1. ROS基础系列教程2:ROS环境的搭建
  2. 在 Ubuntu 中安装 ROS Melodic
  3. Ubuntu18.04安装ROS Melodic
  4. Ubuntu20.04安装virtualenv方法
  5. ROS初始化 sudo rosdep init失败
  6. VMware虚拟机走主机代理
  7. 【VM/VBOX】使用桥接和NAT布置代理,实现虚拟机利用宿主机局域网共享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

datamonday

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值