admin管理员组文章数量:1604460
最近在配置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:80
为 hkp://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 基础软件安装
-
chrome下载:https://www.google/chrome/
-
搜狗拼音下载:https://pinyin.sogou/linux/?r=pinyin
安装参考:
- https://www.linuxprobe/ubuntu20-04-install-sogou.html
- https://pinyin.sogou/linux/help.php
- 网易云下载: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
- 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
然后在运行该命令的命令行窗口选中的情况下,使用键盘的上下左右控制小海龟运动。
如图:
至此安装成功!!!
参考:
- ROS基础系列教程2:ROS环境的搭建
- 在 Ubuntu 中安装 ROS Melodic
- Ubuntu18.04安装ROS Melodic
- Ubuntu20.04安装virtualenv方法
- ROS初始化 sudo rosdep init失败
- VMware虚拟机走主机代理
- 【VM/VBOX】使用桥接和NAT布置代理,实现虚拟机利用宿主机局域网共享
版权声明:本文标题:Ubuntu20.04安装ROS教程(虚拟机双系统,含报错解决) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728460707a1158950.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论