- 时间:
20200923
文章目录
-
-
- 一、参考资料
- 二、前言
- 三、Ubuntu mate 18.04 + ROS 安装流程
- 四、小结
-
一、参考资料
- Install Ubuntu MATE 18.04 on Raspberry Pi 3 B+
- Downloading Ubuntu MATE 18.04.2 Bionic Beaver for arm64 systems
- 解决树莓派Unbuntu mate 使用VNC连接灰屏报错“Could not acquire name on session bus”问题
- ubuntu mate 18.04官网下载,烧录及安装
二、前言
- 为什么用
Ubuntu mate
,因为官方提供的用于树莓派的Ubuntu
不包含桌面,命令行进入后设置wifi等比较麻烦,完事后还是要安装桌面系统,不如直接一步到位,mate
是比较轻便的一种。 - 为什么
18.04
,由于16.04
马上失去支持,目前主流还是18.04
,并且另外的主机上也是18.04
的系统,为了ROS
版本也统一为melodic
,树莓派也选择了18.04
安装。 - 烧录SD卡的软件使用了
Ubuntu
官方推荐的balenaEtcher
,SD卡用了32G
的闪迪。 - 本文主要记录出现的问题详解,比较通用的流程比如烧录SD卡的细节,安装
ubuntu
的细节等等,就一带而过了,可以配合其他教程一起服用。
三、Ubuntu mate 18.04 + ROS 安装流程
-
下载镜像,下载链接见参考资料2,烧录镜像,等待烧录完毕,插卡到树莓派,启动系统。
-
出现问题 初次开机,接上鼠标键盘,接上
hdmi
的显示器,发现显示器闪烁,不能正常显示。造成这个问题的原因很多,但是好在大部分可以通过修改config.txt
文件来解决,我这里产生该问题的原因是由于我用了DVI
转HDMI
的接线,所以hdmi driver=
的设置要改成DVI
对应的数字1
,直接在windows
下打开sd
卡,修改根目录下的config.txt
文件保存即可。我是在这里找到答案的Ubuntu MATE 18.04 on Raspberry Pi 3 B won’t boot into GUI,参考了一个路人的经验如下。Hi, this thread helped me thanks, because I was connected to a screen through DVI, using an HDMI to DVI convertor. I had to go into the mentioned config.txt on the boot partition and changed the HDdrive setting from HDMI to DVI. This solved it for me.It worked straight strangely enough when I was using a vga screen with VGA to HDMI convertor. It seems that connecting via DVI does not trigger the autodetection in the boot config.
类似的问题和解决办法还有这些,可以顺着不同的思路找找原因
- 树莓派 respbian和Ubuntu mate 18.04接hdmi后不显示
- Ubuntu MATE Pi not connecting to monitor?
- Ubuntu Server for Raspberry Pi HDMI Problem
-
进入界面后,一路往下点,没什么好说的,我这里选择的英文,进去再装输入法和中文也可以,因为我们要进去换国内源,速度更快。进入桌面后,赶紧换源,可以使用如下命令,不需要打开文件编辑,如果想打开文件编辑,推荐使用
pluma
编辑器(系统自带)打开,跟gedit
没什么区别,命令参考了这个树莓派 Ubuntu Mate 更换国内软件源,注意18.04对应bionic。sudo cp /etc/apt/sources.list /etc/apt/sources.list.bkp sudo sed -i 's#://ports.ubuntu.com#s://mirrors.ustc.edu.cn/ubuntu-ports#g' /etc/apt/sources.list sudo apt-get update sudo apt-get upgrade
-
出现问题 这里最后升级完可能会有一个
Error
提醒sub process usr/bin/dpkg returned an error code 1
,报错信息是dpkg
安装一个关于linux-firmware-respi2_1
的包失败,经过一顿查阅和折腾(网上的常见办法均试过,换源也试了),最后也没有很好的解决这个问题,但是好在发现,最后对ROS
安装和使用没什么影响,不升级也无所谓,暂时不理会这个问题。 -
安装 ROS Melodic,完全按照官网流程,自愿安装合适的版本,树莓派计算能力有限,一般也只是拿来作为数据中继站,或者一个通信节点,所以
gazebo
即使安装了,使用体验应该也不会太好,我这里选择安装desktop
的版本,一般来说,只要使用了国内ROS镜像走到下面这两步之前,都没什么问题。sudo rosdep init rosdep update
-
出现问题 在进行上面两步的时候失败,要么是网络不行导致失败,要么是
github
的网址污染,我这里提供一个方法,是我尝试很多网络上的方案都没有得到很好解决后想到的一种办法,虽然稍微有一点麻烦,但我从来没失败过,所提供的文件针对Arm x64
(树莓派)和Amd x64
(台式机)都是可用的,测试没有问题。本来是免费提供的,CSDN自动加了积分,要是不嫌麻烦,也可以自己一个一个去保存。Ubuntu 18.04 安装 ROS Melodic 中 sudo rosdep init 和 rosdep update 一定能成功的方法,就硬干。 -
测试小乌龟,这里不再多说,前面都没问题的话,这里也不会有啥问题,至此 Ubuntu mate 18.04 + ROS Melodic 就安装完事了。
-
激活树莓派的
ssh
功能,主要是安装ssh server
并设置开机启动。sudo apt install openssh-server sudo systemctl enable ssh.service sudo systemctl start ssh.service sudo dpkg-reconfigure openssh-server
-
无界面远程控制 为了测试方便,还需要配置远程控制树莓派,可以通过
SSH
在Win
或者Linux
下连接树莓派进行无界面控制,win
下可以使用putty下载putty,linux
下直接使用ssh命令,通过下面的命令可以快速查看树莓派的IP,例如在win下,安装并打开putty,输入该IP,点击Open,然后输入树莓派的账户名和密码后回车,就进入到树莓派的命令行环境。linux下更简单,直接输入命令ssh username@ip
即可。hostname -I #树莓派下命令,查看IP地址,和主机在同一局域网
-
图形界面控制 如果需要图形界面,可以使用
VNC
,软件下载链接 VNC-Viewer 控制端,注意明确概念,树莓派作为被控端,需要安装vnc server
,而win
或linux
主机是远程控制端,需要安装vnc viewer
进行查看。这里我用我的win10
笔记本安装vnc-viewer
,并在树莓派的ubuntu mate
上安装vnc-server
。Real VNC官网提供了一个arm版本的server,但是32位的,我的树莓派安装了64位系统,所以安装另外的vnc server
,主要流程如下sudo apt-get install tightvncserver #轻量级vnc server vncserver #提示输入密码,确认 vncserver #再次输入,提示生成新的X桌面
出现问题 上述设置完毕,去电脑端打开
viewer
输入ip连接可能会报错无法连接,解决办法如下,VNC远程连接树莓派报错问题解决-- “由于目标计算机积极拒绝,无法连接”。连接树莓派ip时注意设置端口号。出现问题 连接树莓派成功,但是
viewer
这边是灰色屏幕,并且可能报一个错(如果你用tightvnc viewer
),tightvnc error: Could not acquire name on session bus,这个问题的解决方案在这里,解决树莓派Unbuntu mate 使用VNC连接灰屏报错“Could not acquire name on session bus”问题, 在编辑完文件后,继续打开一个server
并设置分辨率,viewer
那边连接可能还是灰色屏幕,那么可能是你这会树莓派还连着屏幕,重启树莓派,并拔掉hdmi屏幕,等待一会开机后,我们用ssh先连上命令行,然后打开vnc server,这时候在电脑上用viewer去连,应该就没问题了,我到这里就成功了。罗列一下server
的常用命令。vncserver -geometry 1024x768 :1 #分辨率自己设置,开启一个该分辨率的服务,ID号自己设置 sudo pluma ~/.vnc/startup #修改vnc的启动文件 vncserver -kill :1 #ID号自己指定,关闭某个server sudo chmod +x ~/.vnc/startup #赋予执行权限 sudo rm -r ~/.vnc #删除配置,重设密码 ifconfig #查看ip信息
-
最后一步,设置开机启动 vnc server,操作如下
sudo pluma /etc/systemd/system/tightvncserver.service
输入以下内容,这里有一个小tips,如果你默认使用的是
zsh
,那么记得把#!/bin/sh
换成#!/bin/zsh
,否则可能并没有开机启动。#!/bin/sh ### BEGIN INIT INFO # Provides: tightvncserver # Required-Start: $syslog $remote_fs $network # Required-Stop: $syslog $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts VNC Server on system start. # Description: Starts tight VNC Server. Script written by James Swineson. ### END INIT INFO # /etc/init.d/tightvncserver VNCUSER='user_name' case "$1" instart)su $VNCUSER -c '/usr/bin/tightvncserver -geometry 1024x768 :1'echo "Starting TightVNC Server for $VNCUSER";;stop)pkill Xtightvncecho "TightVNC Server stopped";;*)echo "Usage: /etc/init.d/tightvncserver {start|stop}"exit 1;; esac exit 0
赋予执行权限并更新,重启后就可以直接用
vnc viewer
连接了。sudo chmod 755 /etc/init.d/tightvncserver sudo update-rc.d tightvncserver defaults
-
到此,ubuntu 安装,ROS 安装,远程控制,开机自启server都弄好了。
四、小结
- 安装过程中还是会有很多小问题,比如树莓派下面的浏览器还是很慢的,我都是在笔记本查好,保存成txt拷贝过去直接复制命令。
- 手边尽可能准备一个好用的梯子,尽管百度能搜到大量教程,但是CSDN上冗余的文章太多了,不太容易找到一个好用的方案,我也是尽可能用心写每一篇博客,不光是为了自己备忘,也希望不要误导别人,搜索记得多加限定词,看准是不是对应的系统和版本。
- 由于篇幅太长,本篇是上下篇中的上篇,主要集中在前期环境的配置和安装,没有添加图片,是因为网上有大量的图片,为了保持简洁,我这里只是描述性的文字。