Ubuntu20.04安装ROS

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确实很搞心态,耐住性子,最后会发现其实还挺简单的~

相关推荐
云泽8089 分钟前
嵌入式环境搭建(一):Keil MDK5 安装流程及 DFP 器件包配置实战
嵌入式硬件·keil5·keil mdk5·dfp器件包配置
亿道电子Emdoor26 分钟前
【Aitium】PCB导出DXF文件出现eDuplicateRecordName报错
stm32·单片机·嵌入式硬件·altium
绿蕉1 小时前
“十五五”5 万亿电网投资落地:新型电力系统带动电力物联网通信模组产业爆发
物联网·5g redcap·新型电力系统·十五五·电力物联网模组·v2g 车网互动 #配网智能化
乐橙开放平台1 小时前
养殖 SaaS 笔记:乐橙 IoT 物模型管环境,视频 OpenAPI 管回看
数据库·笔记·物联网·mysql·音视频
深圳市泰凌微电子16 小时前
HK航顺 HK32F407RGT7替STM32F405RGT6 微控制器32位MCU
stm32·单片机·嵌入式硬件
lzqrzpt17 小时前
LED驱动电源行业品牌格局与技术差异深度总结
python·单片机·嵌入式硬件
SteveSenna17 小时前
直流减速电机 + STM32 控制接线方案
单片机·嵌入式硬件
会周易的程序员18 小时前
Libnodave S7 通信库:架构设计与实现解析
linux·c++·物联网·架构·c·s7·工业协议
云栖梦泽18 小时前
Camera驱动开发与应用开发中的零拷贝与DMA
linux·驱动开发·嵌入式硬件
K成长日志19 小时前
BLE链路层空口包--LE Uncoded PHY
物联网·嵌入式·蓝牙·iot·ble·无线·通信