admin管理员组

文章数量:1604628

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

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

文章目录

  • 1.虚拟机安装 Ubuntu20.04
    • 1.1 安装VMware Workstation 16 Pro
    • 1.2 下载Ubuntu20.04镜像
    • 1.3 安装Ubuntu20.04虚拟机
  • 2. Win10、Ubuntu双系统
    • 2.1 Ubuntu16.04配置
    • 2.2 Ubuntu18.04配置
  • 3. Ubuntu18.04 配置ROS
    • 3.1 创建虚拟环境 virtualenv
    • 3.2 配置ROS软件仓库
    • 3.3 安装 ROS
    • 3.4 初始化 rosdep
    • 3.5 报错解决
    • 3.6 `rosdep update` time out error(未解决)
  • 4. Ubuntu20.04虚拟机配置ROS(成功!)
    • 4.1 换源
    • 4.2 基础软件安装
    • 4.3 配置ROS环境
      • 4.3.1 安装显卡驱动
      • 4.3.2 安装虚拟环境
      • 4.3.3 安装noetic(对应ubuntu20.04)
    • 4.4 通过桥接解决 `rosdep update` time out error
      • 4.4.1 虚拟机选择桥接(校园网选择NAT):
      • 4.4.2 打开 allow lan:
      • 4.4.3 宿主机查看ip地址:
      • 4.4.4 Ubuntu设置proxy:
      • 4.4.5 Ubuntu安装proxychains
    • 4.5 测试小海龟
  • 参考:


1.虚拟机安装 Ubuntu20.04

1.1 安装VMware Workstation 16 Pro

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


最后一步选择第一项,输入激活密钥


1.2 下载Ubuntu20.04镜像

下载地址:http://releases.ubuntu/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的软件。

sudo sh -c 'echo "deb http://packages.ros/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/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

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

设置密钥

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

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

Linux在安装软件时,需要通过源列表去寻找对应的软件,Ubuntu默认的软件列表是没有ROS的,需要把packags.ros网站配置到软件仓库列表内才能下载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的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/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/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/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/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/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/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/chrome/

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

安装参考:

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


  1. 网易云下载:https://music.163/#/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 --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的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布置代理,实现虚拟机利用宿主机局域网共享

本文标签: 报错虚拟机双系统教程ros