在树莓派4B上安装Ubuntu Mate 20.04 和ROS

本文介绍了在树莓派4B上安装Ubuntu和ROS的方法。已配置好的系统镜像可在公众号“汽车软件杂谈”后台回复“rpi4b img”获取。扫码关注:

在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第1张图片

最近想在树莓派上装个ROS用来学习,但我的树莓派内存只有2G,有点捉急,前前后后试了好多种方法,终于找到一个能用的,在这里总结一下,供大家参考。

一、关于Linux版本的选择

1.尝试1 —— Ubuntu Desktop:因为对ROS支持得最好的Linux版本就是Ubuntu,所以最开始就是想着直接装个官方的带桌面的Ubuntu版本,也没多想就刷了,结果直接开不了机,仔细看了一下,Ubuntu Desktop版只推荐4G和8G的树莓派安装,这才知道要考虑内存的大小。所以如果是4G或8G版的树莓派,这种方法应该还是首选,毕竟简单方便,支持也好。

系统镜像下载链接:

https://ubuntu.com/download/raspberry-pi

2.尝试2 —— Ubuntu Server:Server版本要比Desktop版节省很多资源,但因为ROS有一些图形化开发环境,还是需要有桌面,但可以装好Ubuntu Server后,自己选择一个资源占用小的桌面版本,我试了Xfce,这款桌面据说是资源占用最小的了,安装方法也比较简单:

① 更换国内源:
Linux的国外软件源下载速度很慢,所以要更换成国内的一些镜像源网站。换源的方法网上有很多,我这里介绍一个简单的批量替换指令,不需要一个个手动替换:

sudo sed -i "s#ports.ubuntu.com#mirrors.ustc.edu.cn#g" sources.list

这个指令就可以把前面的网址替换成后面中科大的镜像源网址,当然也可以选择清华等其他国内镜像,方法一样。

② 更新应用:

sudo apt-get update
sudo apt-get upgrade

以上两步是新安装一个Linux系统的必要操作,完事后再安装其他应用程序会快很多,问题也会少。

③ 安装Xfce:

sudo apt install xfce4

安装好后重启就可以进入桌面,但在我的树莓派上还是贼卡,无奈也放弃了。

3.尝试3 —— 树莓派原生系统直接安装ROS:Ubuntu尝试失败后,只能换回树莓派原生的Raspbian系统,这个系统是基于Debian的,尽管都说它对ROS的支持不如Ubuntu好,但它内存占用真的是小,桌面版才不到200M。在Raspbian上安装ROS的方法在ROS官网上有:

http://wiki.ros.org/ROSberryPi

虽然教程比较详细,但实际安装的时候会出现各种各样的问题,我在初始化ROS的时候总是报timeout错误,尝试了网上所有的办法,还是没能解决,这条路又走不通了。

4.尝试4 —— Ubuntu Mate:Ubuntu Mate是一个轻量版的桌面Ubuntu系统,在网上找了很多办法后才发现Ubuntu Mate也有专门针对树莓派的版本,下载链接在下面。我先尝试了arm64版本,启动后内存占用在1G以上,虽然可以运行了,但稍微开点进程就卡死了,最后试了armhf版,这是专门针对低性能树莓派开发的,资源占用少,开启后内存占用大概在500M,总算是勉强能用了!

https://ubuntu-mate.org/raspberry-pi/

成功安装后界面如下:

在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第2张图片

二、安装ROS

ROS的安装方法可以在官网上找到:

http://wiki.ros.org/

因为Ubuntu的版本已经更新到了20.04,所以选择了官方推荐的与这个版本最匹配的ROS Noetic Ninjemys版本。在Ubuntu上安装ROS过程相当顺利,按照教程一步步来即可,我装了好几次都没出过任何问题,想想当时在Raspbian上装ROS的艰难困苦真是想哭。。需要注意的一点就是安装源可以选一个国内的,在教程中也给了相关的说明:

在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第3张图片

三、实现远程控制

通常在使用树莓派的时候并不会给它直接连接一个屏幕,而是在PC端远程操控。实现方法有两种,一种是VNC,在树莓派上安装VNCServer,在PC端用VNCViewer进行连接控制。第二种是安装Xrdp,在PC端用远程桌面控制。我选择的是第二种,因为经过对比发现Xrdp内存占用略小。安装方法如下:

1.安装:

sudo apt install xrdp

2.重启Xrdp服务器:

sudo service xrdp restart

3.查看服务运行状态:

sudo service xrdp status

如果状态像下图一样是Active就可以了:
在这里插入图片描述
4.设置开启自动启动:

sudo update-rc.d xrdp defaults

5.以上步骤完成后,即可用PC端的远程桌面连接树莓派,先查看树莓派IP地址:

ifconfig

然后在远程桌面直接输入树莓派IP地址进行连接。
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第4张图片
6.如果用PC端的远程桌面连接时出现灰屏现象,就需要再进行以下设置:

① 创建一个配置文件:

sudo touch ~/.xsession

② 进入文件编辑:

sudo nano ~/.xsession

③ 复制以下内容到文件:

unset DBUS_SESSION_BUS_ADDRESS
mate-session
TZ='Asia/Shanghai'; export TZ

④ ctrl+x退出编辑,提示是否保存的时候选择Y,再回车即可保存。

⑤ 重启树莓派,再次连接的时候即可进入桌面。

连接时界面:
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第5张图片
输入安装Ubuntu Mate时设置的用户密码,即可进入桌面,连接成功后:
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第6张图片

四、设置静态IP

如果不设置静态IP,每次重启树莓派它的IP地址都会变,需要重新查询IP地址。这里先介绍一个查询树莓派IP地址的方法,当树莓派不能连接显示器无法直接查询IP地址时,可以在PC上用下面的方法进行查询:

Linux:

arp -na | grep -i "b8:27:eb"

或:

arp -na | grep -i "dc:a6:32"

Windows:
运行cmd,输入以下指令:

arp -a | findstr b8-27-eb

或:

arp -a | findstr dc-a6-32

如果树莓派成功连接WIFI,就可以查询到IP地址:
在这里插入图片描述
如果我们设置了静态IP,就不需要每次都查询了,Ubuntu Mate的设置方法如下:

1.查询IP地址等信息,点击网络连接信息,记下红框中的IP地址等内容,一会要填写。
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第7张图片
2. 按下图中的方法,修改IP地址获取方式为手动,在第4步中添加刚刚查询到的IP地址等信息。

这里有可能是不可编辑的状态,这个时候编辑一下/etc/network/interfaces这个文件,网上有一些教程是编辑这个文件来实现静态IP的,但我编辑完之后就直接连不上网了,但上图中的编辑栏变成了可编辑状态,再把interfaces的内容恢复,这里也会维持可编辑状态,就可以进行手动获取IP的设置了。具体原因我也没有深究。
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第8张图片

五、安装系统监视插件

有个系统资源监视小插件很好用,推荐给大家:indicator-sysmonitor

安装步骤如下:

sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor  
sudo apt-get update  
sudo apt-get install indicator-sysmonitor
indicator-sysmonitor &

安装完成后可以设置开机自启:
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第9张图片
可以编辑要显示的内容和更新时间:
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第10张图片
完成后的状态如图:
在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第11张图片

六、安装风扇自动控制程序

买了个小风扇,用一段Python脚本来控制它根据CPU温度自动开启、关闭和调速,脚本如下:

import RPi.GPIO as GPIO  #引入函数库
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)  #设置引脚编号规则
GPIO.setup(7, GPIO.OUT)    #风扇控制引脚为7号,设置成输出模式
pwm=GPIO.PWM(7, 10)
GPIO.output(7, 0)
pwm.start(0)

while True:
 # 获取CPU温度 
    tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
    cpu_temp_raw = tmpFile.read() 
    tmpFile.close() 
    cpu_temp = round(float(cpu_temp_raw)/1000, 1) 
    # print ("te,p = %f" % cpu_temp) 
    if cpu_temp >= 58 :
         pwm.ChangeDutyCycle(cpu_temp-10)
    if cpu_temp <= 50 :
        pwm.ChangeDutyCycle(0)
    time.sleep(10)

注意,这个脚本需要用到rpi.gpio库,如果还没有安装过需要用下面的指令进行安装:

sudo apt-get -y install python3-rpi.gpio

然后设置这个脚本为开机自动运行:

  1. 首先新建一个脚本文件,用来启动上面的Python脚本:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          fanStartup.sh
# Required-start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the svnd.sh daemon
# Description:       starts svnd.sh using start-stop-daemon
### END INIT INFO

#任务脚本
#取得root权限,'123456'为密码,不用加引号,'ls'无实际作用
echo 123456|sudo -S ls
#用python3执行执行脚本~/桌面/python/SmartFan.py,sudo -S需要加上
sudo -S python3 ~/桌面/python/SmartFan.py
  1. 按下图中的方法添加上面的脚本到开机自动程序列表,之后每次登陆后就可以自动启动风扇控制脚本了。
    在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第12张图片

七、系统备份

装完系统配置好之后,最好记得备份一下系统以防系统损坏,这里推荐一篇博客,里面例举了常见的系统备份方法:

https://post.smzdm.com/p/apzkgne7/

我是用第3个gparted这种方法备份成功的,其它几个脚本我试了试都容易出问题。我的系统还把UbuntuMate自带的Firefox浏览器换成了Chromium,占用资源更小。可在下方公众号后台回复“rpi4b img”获取系统镜像,以及刷写和备份工具。镜像刷写进树莓派的方法很简单,用imager工具选好镜像和树莓派SD卡,一键写入。

在树莓派4B上安装Ubuntu Mate 20.04 和ROS_第13张图片

你可能感兴趣的:(树莓派,嵌入式,ubuntu,ros,树莓派)