树莓派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遇到的问题