Ubuntu20.04安装ROS
Excerpt
ubuntu安装方式有两种,一种是安装ubuntu系统,另一种是在windows下安装虚拟机,在虚拟机里安装ubuntu。下面为双系统安装ubuntu(用虚拟机装ubuntu会很卡,bug很多,除非电脑配置极好,否则不建议用虚拟机装ubuntu...
ubuntu安装方式有两种,一种是安装ubuntu系统,另一种是在windows下安装虚拟机,在虚拟机里安装ubuntu。下面为双系统安装ubuntu(用虚拟机装ubuntu会很卡,bug很多,除非电脑配置极好,否则不建议用虚拟机装ubuntu)
一、配置Linux清华镜像源
1.1 介绍
我们在下载很多基础的工具请求的基本上是国外的服务器,这对于国内用户来说,无疑是非常糟糕的体验,其下载速度慢、请求失败往往成为很多刚入门Linux的小白最大的困扰。
不过好在国内有着稳定高速且免费的镜像网站,我们可以通过修改系统配置文件来享受这些优秀的网站资源。
清华源:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
1.2 开始配置
这里我以 Ubuntu 20.04LTS 为例来配置 清华源
首先进入清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn)
在列表里选择自己的系统,这里我选择的是 Ubuntu,点击后面的问号图案
进入后选择自己的系统版本 20.04LTS
随即文本框中会生成你需要的 sources.list 文件内容,打开 Ubuntu 的终端,输入下面的命令
sudo apt update
# 将 sources.list 拷贝到桌面,留个备份,防止修改以后出现问题,备份在主目录下
cp /etc/apt/sources.list ~/Desktop
# 打开 sources.list 进行编辑
sudo gedit /etc/apt/sources.list
打开文件后,将里面的所有内容替换为之前网页内文本框里的内容,例如
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
然后保存关闭,这样清华源就配置好啦!
2.1 开始安装:配置公钥
在前面的操作中,我们已经为完成了国内源的配置,这将会让我们后面的install 一路畅通。不过还需要再做一个准备,那就是配置公钥。
公钥是 Ubuntu 系统的一种安全机制,配置公钥让系统信任。
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
2.2 系统更新
更新系统,确保自己的Debian软件包和索引是最新的。
2.3 安装ROS
大家注意自己的 Ubuntu 版本,我的是 20.04 对应的是 ROS 版本是 noetic
# Ubuntu 20.04
sudo apt install ros-noetic-desktop-full
# Ubuntu 18.04
sudo apt install ros-melodic-desktop-full
在这里遇到了很沙雕的问题,E: 无法定位软件包 ros-noetic-desktop-full,换源阿里云后无效,又输入了两个命令行:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
然后运行sudo apt install ros-noetic-desktop-full,成功!
好吧,当时确实可以正常下载了,但是最后速度很慢,直接回宿舍睡觉,第二天到工位果然又报错了,
E: Sub-process /usr/bin/dpkg returned an error code (1)
输入以下命令成功解决:
现将info文件夹更名
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk
新建一个新的info文件夹
sudo mkdir /var/lib/dpkg/info
安装修复
sudo apt-get update
sudo apt-get install -f
执行完上一步操作后,在info文件夹下生成一些文件,现将这些文件全部移到info.bk文件夹下
sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk
把自己新建的info文件夹删掉
sudo rm -rf /var/lib/dpkg/info
恢复原有info文件夹,修改名字
sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info
然后再执行
sudo apt install ros-noetic-desktop-full
成功!
2023.7.25更新:
E: 无法定位软件包 ros-noetic-desktop-full,也有可能是软件源的问题,可以先换清华或者阿里云试一试。
三、配置ROS
3.1 初始化rosdep
sudo rosdep init && rosdep update
这里再次报错 sudo: rosdep:找不到命令
解决办法:
单独输入 sudo rosdep init 显示
ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize
然后输入命令
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
然后输入命令 sudo rosdep update显示超时,又再次输入sudo rosdep init发现报了新错误
ERROR: cannot download default sources list from:https : //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
输入以下命令:
然后在打开的hosts文件中添加如下的内容,然后保存退出
199.232.28.133 raw.githubusercontent.com
再输入sudo rosdep init命令试试,成功解决。然后再继续输入 sudo rosdep update,发现还是报超时的错误,然后专门查了rosdep update报错的问题,如下:
ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize
由于 rosdep update 请求的网站是 raw.githubusercontent.com,对于大部分人来说,该命令报错的原因主要是 timed out。网上一般的方法都是通过修改 /etc/ros/rosdep/sources.list.d/20-default.list 的请求地址。但我自己通过这个方法并不能解决问题,报错中仍然出现请求 raw.githubusercontent.com 时出现 timed out。
尝试过很多方法,特别复杂的就不说了,有两种方法:
- 一种是修改连接网络,多换几个网络试试,比如换个手机热点,但这种方法是玄学问题,很浪费时间,而且大部分台式机并不会配备无线网卡,需要自己加;
- 一种是将rosdep修改为rosdepc,因为rosdepc使用的是国内的源,rosdep初始化失败是因为其使用的是github,国内无法访问。安装步骤如下:
(此处封神,绝对是rosdep update报超时错误的最佳解决方案!)
安装rosdepc
如果显示没有pip可以试试pip3。
sudo pip3 install rosdepc
如果pip3还没有
sudo apt-get install python3-pip
sudo pip install rosdepc
使用
sudo rosdepc init
rosdepc update
到这应该就没问题了,继续下一步,胜利在望!
3.2 环境变量设置
这里容易出错,大家直接复制粘贴就好
注意对应自己的版本修改目录名
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
3.3 安装 rosinstall
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
3.4 测试ROS
打开第一个终端窗口,运行 roscore
出现如下图的情况,就证明运行成功
打开第二个终端窗口,输入:
rosrun turtlesim turtlesim_node
当出现有一个海龟的窗口,证明运行成功了(每次生成的海龟类型是随机的)
打开第三个终端窗口,输入:
rosrun turtlesim turtle_teleop_key
出现这样的提示后,我们用鼠标聚焦第三个终端窗口,便可以通过按下 ↑ ↓ ← →键来对小海龟进行控制了。
3.5 安装完成
到了这里,恭喜你已经完成了ROS的安装、配置且运行。
ps:本人从今年初已经装过不下10遍ubuntu和ros,但还是有没遇到过的报错,ubuntu本身就极其容易报错,不同的设备报的错还不一样,所以不要用最新版本的ubuntu!刚开始用ubuntu和ros确实很搞心态,耐住性子,最后会发现其实还挺简单的~