树莓派CM4烧录Ubuntu20镜像与ROS2的安装(无屏)
文章目录
需要的软件
EMMC版本Bootload烧录
https://github.com/raspberrypi/usbboot/raw/master/win32/rpiboot_setup.exe
树莓派镜像下载烧录工具
https://www.raspberrypi.com/software/
说明
适用与带EMMC版本的CM4模块,如无EMMC或者为Raspberry Pi 3/4则直接使用读卡器进入2.2烧录镜像过程,不用进入bootload。
使用Ubuntu Server 20(64bit)版本,无界面也不用外界屏幕。ROS2使用小鱼一键安装脚本安装。
一、镜像烧录
1.1 EMMC版本烧录bootload
https://www.raspberrypi.com/documentation/computers/compute-module.html#steps-to-flash-the-emmc
注意如果需要EMMC模拟成U盘修改配置,则每次上电都需要boot拨到On的位置,并启动rpiboot。
- 下载bootload烧录软件并安装
https://github.com/raspberrypi/usbboot/raw/master/win32/rpiboot_setup.exe
- 进入boot模式
如果是CM4转Pi4B扩展板有一个Boot的拨码开关,拨到On的位置。
如果是大的官方CM4 IO BOARD则将J2上的的nRPI_BOOT使用跳帽短接。
- 连接
使用Type-C连接到Pi4B转换板,由于数据线既要供电又需要通信,建议连接到可单独供电的USB HUB上,树莓派电流较大一般电脑直接引出的USB驱动能力不够。
- 烧录bootload
如果进入了boot并且USB连接没有问题,则打开烧录工具后自动烧录bootload,稍等一会烧录完成后电脑会出现一个U盘。
1.2 烧录Ubuntu镜像
-
下载树莓派镜像烧录器(当前版本v1.7.4)
https://www.raspberrypi.com/software/ -
选择操作系统 -> Other general-purpose OS -> Ubuntu -> Ubuntu Server 20.04.5 LTS (64Bit)
-
选择SD卡 -> RPi-MSD-0001…
-
打开右下角设置
设置主机名
开启SSH服务-使用密码登录
Set username and password(SSH登录的用户名和密码)
配置WiFi - Hidden SSID不打勾 / 显示密码打勾 (配置开机后默认连接的wifi)
语言设置
完成后保存
- 烧录-等待系统下载烧录完成。烧录完成后会生成一个大概200多MB的system-boot U盘分区。
- 出现system-boot分区后可以认为烧录成功,可以额将boot拨码拨为OFF,断电重启后等待系统初始化大概几分钟,启动后自动连接WiFi,路由器配置页面查看设备IP,直接使用SSH工具使用配置的用户名和密码连接到树莓派。如果使用网线连接参考1.3节对network-config的说明。
1.3 system-boot U盘分区简介
EMMC版本想要看到system-boot,每次都需要将boot拨码拨到On,使用rpiboot_setup.exe工具进入bootload模式。SD卡的版本则直接接读卡器即可看到。
system-boot分区需要关注config.txt与network-config两个文件。
config.txt
Raspberry Pi使用配置文件代替传统PC的BIOS。系统启动的一些配置通过config.txt文件传入系统中。
关与可配置项目参考官方文档:
https://www.raspberrypi.com/documentation/computers/config_txt.html
network-config
配置参考:
https://cloudinit.readthedocs.io
https://netplan.io/reference
network-config文件可以让你在不使用屏幕键盘的情况下使树莓派在启动后连接到正确的网络,并直接通过SSH连接到树莓派调试。
注意:network-config文件只有在系统第一次启动的时候有用,后续配置网络需要在ubuntu系统netplan中配置。
在1.2节烧录树莓派镜像时,我们在树莓派镜像烧录器里配置了要连接的wifi,其实就是生成了network-config里对wifi的配置信息,如:
version: 2
wifis:
renderer: networkd
wlan0:
dhcp4: true
optional: true
access-points:
"Ryan":
password: "11111111"
可以自行添加多个想要连接的wifi:
"Ryan":
password: "11111111"
"Ryan1":
password: "22222222"
"Ryan2":
password: "22222222"
在树莓派镜像烧录器里配置了需要连接的wifi后,可能会导致有线网口没有打开,需要添加eth0网卡的使能。
# example
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
renderer: networkd
wlan0:
dhcp4: true
optional: true
access-points:
"Ryan":
password: "11111111"
netplan配置
如果开机后还需要修改网络的配置,则network-config文件已经不起作用了,需要使用netplan工具来修改网络配置。
配置文件在/etc/netplan/50-cloud-init.yaml
格式与network-config稍有些不同,字段是一样的,不管是开启wifi还是开启eth0网卡参考network-config的配置,照猫画虎即可。
例如:
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
version: 2
wifis:
renderer: networkd
wlan0:
access-points:
SeeSee:
password: 11112222
dhcp4: true
optional: true
修改玩该文件后使用netplan命令应用修改:
sudo netplan try
二、ROS2的安装
这里使用一键安装脚本安装
https://fishros.org.cn/forum/topic/20/小鱼的一键安装系列?lang=zh-CN
1.1 安装ROS2 Foxy
- 连接到SSH后直接运行:
wget http://fishros.com/install -O fishros && . fishros
- 提示输入用户密码
- 出现以下选项,输入1回车,选择[1]:一键安装:ROS
[1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
[11]:一键安装:ROS+Docker(支持所有版本ROS/ROS2)
[2]:一键安装:github桌面版(小鱼常用的github客户端)
[3]:一键配置:rosdep(小鱼的rosdepc,又快又好用)
[4]:一键配置:ROS环境(快速更新ROS环境设置,自动生成环境选择)
[5]:一键配置:系统源(更换系统源,支持全版本Ubuntu系统)
[6]:一键安装:nodejs
[7]:一键安装:VsCode开发工具
[8]:一键安装:Docker
[9]:一键安装:Cartographer(内测版v0.1)
[10]:一键安装:微信(可以在Linux上使用的微信)
[12]:一键安装:PlateformIO MicroROS开发环境(支持Fishbot)
[77]:测试模式:运行自定义工具测试
- 选择[1]:更换系统源再继续安装
[1]:更换系统源再继续安装
[2]:不更换继续安装
[0]:quit
- 选择[2]:更换系统源并清理第三方源
[1]:仅更换系统源
[2]:更换系统源并清理第三方源
[0]:quit
- 我们使用的Ubuntu20则安装[2]:foxy(ROS2),其他版本自行决定
[1]:noetic(ROS1)
[2]:foxy(ROS2)
[3]:galactic(ROS2)
[4]:rolling(ROS2)
[0]:quit
- 由于我们使用无界面的ubuntu,则选择[2]:foxy(ROS2)基础版(小),新手也可以选择桌面版
[1]:foxy(ROS2)桌面版
[2]:foxy(ROS2)基础版(小)
[0]:quit
- 安装完成后运行ros2命令看看是否报错