树莓派4B UbuntuMate20 安装 ROS Noetic 笔记

Posted 张竞豪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派4B UbuntuMate20 安装 ROS Noetic 笔记相关的知识,希望对你有一定的参考价值。

前言

最近入手了一块树莓派4B,做项目要用,需要安装ROS,遇到了一些坑,记录下安装过程以及跳坑方法,帮助更多的人避免一些麻烦

硬件准备

  • 树莓派4B一块
  • mini-HDMI 转 HDMI 线,一个有HDMI接口的显示屏
  • 鼠标键盘
  • SD卡及读卡器
  • 网线(可选)用于将树莓派通过网线连接到笔记本,没有也行,可以通过wifi连接

安装UbuntuMate镜像

参考链接
https://shumeipai.nxez.com/download#os
树莓派实验室的教程,里面的教程对新手很友好

对ROS支持最好的操作系统就是UbuntuMate,树莓派原生系统似乎需要下载源码编译安装。于是最后还是选择使用UbuntuMate,版本为UbuntuMate20.04。UbuntuMate版本和ROS版本是一一对应的,如果UbuntuMate是20.04的话,ROS就要安装noetic版本的;如果UbuntuMate是18.04的话,ROS就要安装melodic版本的,详细可以看roswiki上的介绍。

下载镜像

去官网下载UbuntuMate镜像
https://ubuntu-mate.org/raspberry-pi/download/
下载arm64版本

下载出来是压缩包,把压缩包里的镜像解压出来,后缀.img

把插入SD卡的读卡器查到电脑上,使用Win32DiskImager将镜像烧写进SD卡,烧之前记得格式化SD卡,软件和操作看这篇博客
https://shumeipai.nxez.com/download#os

镜像烧写成功后把SD卡插入树莓派

  • HDMI线接上显示屏
  • 接入键盘和鼠标
  • 接上电源
  • 树莓派网线接上自己的电脑

第一次开机会有点慢,过一会会出现以下画面

第一次启动需要输入时区,语言,连接WIFI输入WIFI密码,设置用户名和密码等,等待ubuntu完成一系列的配置后,出现下面的介面,说明安装成功

UbuntuMate设置软件源,SSH,网络和远程桌面

设置软件源

首先将之前的软件源文件复制备份一份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.origin

然后打开软件源文件

sudo pluma /etc/apt/sources.list

把里面的代码替换成以下文本,这里用的是中科大的源,注意20.04要用focal,不同版本相应要改,同时要用ubuntu-ports

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

保存后执行

sudo apt-get update
sudo apt upgrade

更新软件,软件源更换完毕

设置SSH

通过SSH服务可以通过自己的电脑用网络连接上树莓派的终端,这样在无键鼠和显示屏的情况下也能操作树莓派,所以非常重要
ubuntu不像树莓派原生系统,不自带SSH服务,于是要自己安装SSH服务

sudo apt-get install openssh-server

安装完毕后执行以下,启动SSH,并设置SSH服务开启自启动

sudo service ssh start
update-rc.d ssh enable

通过SSH连接树莓派要知道树莓派的IP地址
输入命令ifconfig,但是发现ubuntu mate不自带网络工具,于是安装net-tools

sudo apt install net-tools

然后执行

ifconfig


可以看到无线网卡的IP地址是:192.168.123.102
但是有线网并没有显示IP,这个问题待会解决,先通过无线网连接树莓派测试SSH
使用软件Xshell或者Putty等类似的软件,我这里用的是Xshell,输入树莓派的IP
然后输入用户名和密码后

成功通过SSH连接树莓派

解决有线网无IP地址的问题

https://blog.csdn.net/gg864461719/article/details/109427953
看了这篇博客说是因为没有配置好网卡,导致有线网没有IP,现象如下图,eth0也就是有线网卡不显示IP

执行以下命令,编辑网卡配置信息

sudo nano /etc/network/interfaces

在行末添加以下内容,为有线网设置静态IP


address设置成和电脑的有线网在同一个网段,同时查看自己电脑上有线网的属性,确保所在同一个网段


设置好后重启树莓派网络服务

sudo /etc/init.d/networking restart 

再输入ifconfig,成功出现有线网ip

通过xshell用有线网ip连接树莓派,成功连接

设置远程桌面

可以通过自己的电脑远程显示树莓派的图形化界面
https://shumeipai.nxez.com/2013/09/04/login-rpi-with-vnc.html
参考了上述博客
安装vncviewer

sudo apt-get install tightvncserver

安装好后输入指令设置密码

vncpasswd

设置vnc开机自启动

sudo nano /etc/init.d/tightvncserver

将下面的代码粘贴到文件里,记得把USER改成自己的名字,我这里叫alpha

#!/bin/sh
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO
 
# More details see:
# http://www.penguintutor.com/linux/tightvnc
 
### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='alpha'
### End customization required
 
eval cd ~$USER
 
case "$1" in
  start)
    # 启动命令行。此处自定义分辨率、控制台号码或其它参数。
    su $USER -c '/usr/bin/tightvncserver -depth 16 -geometry 800x600 :1'
    echo "Starting TightVNC server for $USER "
    ;;
  stop)
    # 终止命令行。此处控制台号码与启动一致。
    su $USER -c '/usr/bin/tightvncserver -kill :1'
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver start|stop"
    exit 1
    ;;
esac
exit 0

更改文件权限并设置开机自启动
打开~/.vnc/xstartup文件,把最后一行改成mate-session

sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

如果不想开机自启动,可以改为

sudo update-rc.d tightvncserver disable

第一次安装后要手动启动vnc服务,:1是端口号

tightvncserver -geometry 800x600 :1


然后在电脑端的VNC输入ip地址和端口号

然后就能看到下面的介面,可以在图形界面中打开命令行终端(套娃),图形介面是灰色什么都没显示,应该是哪里配置有问题,图形介面用的不多,不再深究。

在树莓派关掉vnc服务可用

tightvncserver -kill :1

安装ROS

https://wiki.ros.org/noetic/Installation/Ubuntu
这里参考的是roswiki的文档,除了第一步设置软件源的步骤不一样,其他都一样

第一步添加ros软件源,我这里选择的是清华的软件源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

第二步设置密钥

sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

第三步安装ROS,这里安装基础版本的就可以

sudo apt update
sudo apt install ros-noetic-ros-base


第四步添加ROS的运行路径到终端

source /opt/ros/noetic/setup.bash

永久设置ROS的运行路径到终端,这样不用每次打开终端都要source

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

第五步 安装相关依赖项

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo apt install python3-rosdep
sudo rosdep init
rosdep update

第六步 运行ROS
输入roscore

roscore

出现以下介面说明安装成功

以上是关于树莓派4B UbuntuMate20 安装 ROS Noetic 笔记的主要内容,如果未能解决你的问题,请参考以下文章

树莓派4B+Ubuntu22.04 Server安装ROS2 Humble

vmware虚拟机与树莓派4B安装ubuntu1804 + ros遇到的问题

树莓派 4B安装ubuntu18.04与melodic版ROS

树莓派4B装载ROS系统启动摄像头

树莓派4B安装安装Ubuntu Mate 16.04

有个树莓派和一个激光雷达还需要啥配件