【完美解决】树莓派4B从Ubuntu20.04到ROS(noetic)

本文详细介绍了如何在树莓派4B上安装Ubuntu20.04系统,包括系统配置、SSH设置、更新源以及安装ROS-Noetic的过程。在配置过程中,特别提到了解决SSH连接和rosdep更新超时问题的方法,最后通过小海龟测试验证了ROS的安装成功。
摘要由CSDN通过智能技术生成

一、树莓派4B上安装ubuntu20.04

树莓派的前期准备

1.下载ubuntu版本安装包

在ubuntu官网中可以找到
在这里插入图片描述

2. 使用DiskGenius格式化SD卡,将所有扇区删除,然后格式化。

在这里插入图片描述

3. 写入SD卡

下载官方烧录工具、用读卡器将SD卡连接至电脑,将镜像写入SD卡。镜像选择刚才下载的.xz文件,SD卡选择自己的卡,写入即可。
在这里插入图片描述
写完后将SD卡插入树莓派中。

二、ubuntu20.04系统配置

1.寻找树莓派的ip地址

1.首次利用网线将树莓派和电脑连接,若有外接显示器将会十分轻松。该教程为无显示器的悲惨教程。
2.为树莓派连接电源(电源可以是2.5mm圆头电源线,也可以是microUSB或者TypeC接口的线,但要求充电头能够达到5V 3A,最低5V 2.5A)
3.控制面板->网络共享中心->更改适配器设置->WiFi->属性->共享
勾选允许其他用户连接
在这里插入图片描述
在这里插入图片描述
4.进入cmd命令行,在命令提示符里输入arp -a
树莓派地址一般为192.168.137.xxx,可通过拔插网线来确认树莓派地址对应的接口,图片中的不是树莓派接口!!!
确认接口之后就需要逐个去试地址,地址范围为192.168.137.1~192.168.137.254
在这里插入图片描述

2.配置ubuntu系统

1.再开一个cmd窗口,输入ssh ubuntu@这里填树莓派地址
在这里插入图片描述

2.开机,等待一段时间后进入系统,首先需要登录,初始用户名和密码都是ubuntu,登陆后会要求重新设置密码。

1)WiFi配置

获取root权限

sudo passwd root 

用此命令切换到root管理员:

su root 要输入密码     sudo su直接登录  

从root用户切回user用户

su user (user是你安装时候的用户名),或直接输入exit,也可Ctrl+D退出

进入root管理员后

cd /etc/netplan

在该目录下,如果是服务器,则会有一个50-cloud-init.yaml的文件,如果是桌面环境,会有一个01-network-manager-all.yaml
输入ls或ls -a可浏览该目录下文件

这里以50-cloud-init.yaml为例
注意文件的缩进格式

network:
  version: 2
  wifis:
    wlan0:
      dhcp4: true
      optional: true
      access-points:
        "你的wifi名称":
          password: "wifi密码"

然后执行命令使配置生效

sudo netplan generate
sudo netplan apply

若此方法仍然无法连接热点
则将TF卡取下来,插上windows电脑,在powershell(即是在TF卡根目录下进入cmd)里执行:

new-item wpa_supplicant.conf -type file

打开该文件(wpa_supplicant.conf),写入

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
 ssid="此处填手机热点的名称,注意手机热点不能有中文字符"
 psk="手机热点密码"
 priority=99
 #priority是优先级,数字越大,说明优先级越高
 #注意不要把填ssid和psk时不要把""删掉
}

2)SSH配置

输入

 sudo raspi-config

如果提示出错请按照提示解决

选择“5 Interfacing Options”
在这里插入图片描述

选择“SSH”
在这里插入图片描述

选择是,回车

在这里插入图片描述
最后选择finish

ssh自启动服务
如果要ssh能随系统一起启动,则需要在tf卡的根目录下创建一个空白的文件,文件名叫:ssh
将TF卡取下来,插上windows电脑,在powershell(即是在TF卡根目录下进入cmd)里执行:

new-item ssh -type file

将TF卡插回树莓派即可

3)更新及安装桌面环境

更新源

sudo vim /etc/apt/sources.list

将该文件内的内容注释掉,换成下列内容

deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse

进行更新

sudo apt-get update
sudo apt-get upgrade

安装桌面环境

sudo apt install ubuntu-desktop
sudo apt install xrdp

三、ubuntu20.04安装ROS

1.添加密钥和安装ROS

1.添加ROS软件源

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

2.添加密钥

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

结果如下
在这里插入图片描述
3.更新软件源

sudo apt update

4.安装ROS

sudo apt install ros-noetic-desktop-full

5.初始化rosdep
rosdep可以方便在你需要编译某些源码的时候为其安装一些系统依赖, 同时也是某些ROS核心功能组件所必需用到的工具。

sudo apt install python3-rosdep2

安装完成后继续运行 sudo rosdep init 命令一般将会出现下面错误,当然,如果你成功执行了sudo rosdep init(见下),则可直接到
在这里插入图片描述
输入下面命令解决上面错误后再输入sudo rosdep init

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

之后成功出现下面的命令 ,如果超时继续sudo rosdep init
在这里插入图片描述
如果多次尝试均失败,那么则尝试以下方法

2.解决sudo rosdep init的问题

首先要加快github 访问速度

1)修改本地 hosts 文件
mac/linux 系统的 hosts 文件的位置如下:/etc/hosts

2)增加 http://github.global.ssl.fastly.net 和 http://github.com 的映射

获取 Github 相关网站的 ip
访问 https://www.ipaddress.com,
分别输入 github.global.ssl.fastly.net和github.com,查询 ip 地址

这是我的配置
140.82.112.3 github.com
199.232.69.194 github.global.ssl.fastly.net

sudo vim /etc/hosts

加入你自己的配置,保存后退出

返回主目录后,执行以下指令切换至root用户

sudo su //或者su root 然后输入密码切换至root用户

输入

sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d

然后

sudo gedit 20-default.list  或者 sudo vim 20-default.list

进入文档之后,复制以下代码进入文档,保存。

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
 
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
 
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
exit 或Crtl+D//退出root用户

3.解决rosdep update的问题

在成功执行sudo rosdep init后,则可执行rosdep update,但是正常情况下,会一直出现超时的错误。
因此
利用GitHub Proxy 代理加速
这个方法的起因和安装 ROS 软件时,利用镜像源的原理类似,如将 ROS 软件镜像源替换成清华源,以及日常的 apt 库替换成清华源。

利用 GitHub Proxy 代理,实现的是不直接访问 GitHub,故不直接访问 GitHub 下载资源,而是通过代理间接访问。

1)修改 sources_list.py 文件

sudo vim /usr/lib/python3/dist-packages/rosdep2/sources_list.py

添加内容如下,见下图:

url="https://ghproxy.com/"+url # 新添加

在这里插入图片描述
2)修改 init.py 文件

sudo vim /usr/lib/python3/dist-packages/rosdistro/__init__.py 

添加内容如下,并注释被替换内容,见下图:

DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

在这里插入图片描述
除此处外,下述文件中也含有 github 地址,分别是:

/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py  36 行
/usr/lib/python3/dist-packages/rosdep2/sources_list.py  72 行
/usr/lib/python3/dist-packages/rosdep2/rep3.py  39 行
/usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py  68 行  119 行

将https://ghproxy.com/加到github 地址前面进行代理

最后,在 /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py 的第204行添加如下代码:

gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url

在这里插入图片描述

在终端输入
rosdep update

rosdep update 成功

在这里插入图片描述

3.小海龟测试验证ROS安装成功

1)远程桌面连接实现功能
使用Windows系统自带的远程桌面连接工具(通过【开始菜单】->【Windows附件】->【远程桌面连接】打开)连接树莓派,SSH连接是通过命令行对树莓派进行远程操作,而远程桌面是直接通过树莓派的GUI界面进行操作,就像是树莓派直接连接显示器一样,操作简单,交互性更好。

2)远程桌面连接实现原理
xrdp是一个开源的远程桌面服务器,支持Windows远程桌面连接,但是xrdp需要使用tightvncserver作为其基础服务,所以在树莓派上需要同时安装xrdp和tightvncserver两个服务,Windows才能远程连接到树莓派。

3)树莓派远程桌面连接服务安装

在树莓派上安装xrdp服务

sudo apt-get install xrdp

在树莓派上安装tightvncserver服务

sudo apt-get install tightvncserver

安装好以上两个服务后,即可使用WIndows自带工具远程连接到树莓派。

4)树莓派远程桌面连接示例

打开Windows自带远程桌面连接工具
输入树莓派地址
在这里插入图片描述
连接验证,选择【是】即可

在这里插入图片描述

填写连接用户名和密码,用户名ubuntu,密码是ubuntu的开启密码
连接成功将进入ubuntu的图形化界面。

5)小海龟测试

设置环境变量

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

安装rosinstall等工具

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential python3-roslaunch

rosinstall 是ROS中一个独立分开的常用命令行工具, 它可以方便让你通过一条命令就可以给某个ROS软件包下载很多源码树。

按正常来说ROS已经安装完成了,现在我们来验证一下,输入以下命令:

roscore

如果出现了以下的问题,则说明之前的安装没有安装全,继续输入下面的命令补全安装包
在这里插入图片描述

sudo apt install ros-noetic-desktop-full

到这里再输入roscore看一下,若安装成功会显示如下界面:
在这里插入图片描述
然后我们启动一下小海龟的仿真器试一试,按ctrl+alt+t打开一个新的终端,输入以下命令

rosrun turtlesim turtlesim_node

按ctrl+alt+t再打开一个新的终端,输入以下命令

rosrun turtlesim turtle_teleop_key

这时候你按键盘上的↑↓←→键就可以控制小海龟移动了!
那么你的ROS已经成功安装了

在这里插入图片描述


总结

本文参考了大量的教程,经过不断的试错之后总结所得。
参考:
在ubuntu20.4下安装ROS-noetic(全步骤经反复验证成功)
【已解决】完美解决 ROS 安装 rosdep update(timed out)报错超时问题

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值