当前位置: 代码迷 >> 综合 >> 树莓派3b + Ubuntu mate 18.04 + ROS Melodic + 另一台主机ROS通信【上】
  详细解决方案

树莓派3b + Ubuntu mate 18.04 + ROS Melodic + 另一台主机ROS通信【上】

热度:5   发布时间:2024-02-21 15:57:13.0
  • 时间:20200923

文章目录

      • 一、参考资料
      • 二、前言
      • 三、Ubuntu mate 18.04 + ROS 安装流程
      • 四、小结

一、参考资料

  1. Install Ubuntu MATE 18.04 on Raspberry Pi 3 B+
  2. Downloading Ubuntu MATE 18.04.2 Bionic Beaver for arm64 systems
  3. 解决树莓派Unbuntu mate 使用VNC连接灰屏报错“Could not acquire name on session bus”问题
  4. 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 安装流程

  1. 下载镜像,下载链接见参考资料2,烧录镜像,等待烧录完毕,插卡到树莓派,启动系统。

  2. 出现问题 初次开机,接上鼠标键盘,接上hdmi的显示器,发现显示器闪烁,不能正常显示。造成这个问题的原因很多,但是好在大部分可以通过修改config.txt文件来解决,我这里产生该问题的原因是由于我用了DVIHDMI的接线,所以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
  3. 进入界面后,一路往下点,没什么好说的,我这里选择的英文,进去再装输入法和中文也可以,因为我们要进去换国内源,速度更快。进入桌面后,赶紧换源,可以使用如下命令,不需要打开文件编辑,如果想打开文件编辑,推荐使用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
    
  4. 出现问题 这里最后升级完可能会有一个Error提醒sub process usr/bin/dpkg returned an error code 1,报错信息是dpkg安装一个关于linux-firmware-respi2_1的包失败,经过一顿查阅和折腾(网上的常见办法均试过,换源也试了),最后也没有很好的解决这个问题,但是好在发现,最后对ROS安装和使用没什么影响,不升级也无所谓,暂时不理会这个问题。

  5. 安装 ROS Melodic,完全按照官网流程,自愿安装合适的版本,树莓派计算能力有限,一般也只是拿来作为数据中继站,或者一个通信节点,所以gazebo即使安装了,使用体验应该也不会太好,我这里选择安装desktop的版本,一般来说,只要使用了国内ROS镜像走到下面这两步之前,都没什么问题。

    sudo rosdep init
    rosdep update
    
  6. 出现问题 在进行上面两步的时候失败,要么是网络不行导致失败,要么是github的网址污染,我这里提供一个方法,是我尝试很多网络上的方案都没有得到很好解决后想到的一种办法,虽然稍微有一点麻烦,但我从来没失败过,所提供的文件针对Arm x64(树莓派)和Amd x64(台式机)都是可用的,测试没有问题。本来是免费提供的,CSDN自动加了积分,要是不嫌麻烦,也可以自己一个一个去保存。Ubuntu 18.04 安装 ROS Melodic 中 sudo rosdep init 和 rosdep update 一定能成功的方法,就硬干。

  7. 测试小乌龟,这里不再多说,前面都没问题的话,这里也不会有啥问题,至此 Ubuntu mate 18.04 + ROS Melodic 就安装完事了。

  8. 激活树莓派的ssh功能,主要是安装ssh server并设置开机启动。

    sudo apt install openssh-server
    sudo systemctl enable ssh.service
    sudo systemctl start ssh.service
    sudo dpkg-reconfigure openssh-server
    
  9. 无界面远程控制 为了测试方便,还需要配置远程控制树莓派,可以通过SSHWin或者Linux下连接树莓派进行无界面控制,win下可以使用putty下载putty,linux下直接使用ssh命令,通过下面的命令可以快速查看树莓派的IP,例如在win下,安装并打开putty,输入该IP,点击Open,然后输入树莓派的账户名和密码后回车,就进入到树莓派的命令行环境。linux下更简单,直接输入命令 ssh username@ip即可。

    hostname -I #树莓派下命令,查看IP地址,和主机在同一局域网
    
  10. 图形界面控制 如果需要图形界面,可以使用VNC,软件下载链接 VNC-Viewer 控制端,注意明确概念,树莓派作为被控端,需要安装vnc server,而winlinux主机是远程控制端,需要安装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信息
    
  11. 最后一步,设置开机启动 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
    
  12. 到此,ubuntu 安装,ROS 安装,远程控制,开机自启server都弄好了。

四、小结

  • 安装过程中还是会有很多小问题,比如树莓派下面的浏览器还是很慢的,我都是在笔记本查好,保存成txt拷贝过去直接复制命令。
  • 手边尽可能准备一个好用的梯子,尽管百度能搜到大量教程,但是CSDN上冗余的文章太多了,不太容易找到一个好用的方案,我也是尽可能用心写每一篇博客,不光是为了自己备忘,也希望不要误导别人,搜索记得多加限定词,看准是不是对应的系统和版本。
  • 由于篇幅太长,本篇是上下篇中的上篇,主要集中在前期环境的配置和安装,没有添加图片,是因为网上有大量的图片,为了保持简洁,我这里只是描述性的文字。