在Raspberry Pi 4上安装Ubuntu 20.04 + ROS noetic(不带显示器)
1. 所需设备
所需设备:
-
树莓派 4 B 型
-
wifi
-
microSD 卡:最小 32GB
-
MicroSD 转 SD 适配器
-
(可选)显示器,鼠标等
2. 树莓派镜像烧录器
如果没有显示器,那么需要使用树莓派镜像烧录器,官网下载即可。
首先选择操作系统,接下来找到 Ubuntu Server 20.04.5版本。
接下来配置一下系统的初始化选项:
- “开启SSH服务”以启用 SSH
- “设置用户名”
- “配置wifi”(重要):这将启用 Wi-Fi 并自动连接到提供的网络+密码。当然,这个 Wi-Fi 网络应该与当前电脑连接的网络相同,否则本教程的其余部分将不起作用。
接下来烧录等待即可。
3. 寻找Raspberry Pi 4 的ip地址
从计算机中弹出并取出 SD 卡。确保 Raspberry Pi 已关闭电源(拔掉电源线),将 micro SD 卡放入相应的插槽中,然后再打开 Raspberry Pi 4 的电源。应该看到 Pi 上的绿色 LED 随机闪烁。这意味着 Pi 正在启动并使用 SD 卡工作。如果绿色 LED 没有随机闪烁,可能是因为烧录操作不成功,需要重新烧录。
Pi 4 将尝试使用提供的名称和密码连接到目前的 Wi-Fi 网络。
下一步是查找Raspberry Pi在网络内的 IP 地址是什么。
Notice:如果以下步骤一开始没有看到 Pi 地址,则等待至少 2 分钟后再次关闭/打开树莓派的电源。
3.1 Windows
Windows可以使用Advanced IP Scanner 。
所要做的就是单击“扫描”并等待。
可以看到我的Raspberry Pi的地址是192.168.178.40.
3.2 Linux/Ubuntu
通常使用nmap来实现这一点(需要先安装nmap:sudo apt install nmap)。
首先找到网络IP地址和子网掩码。运行ifconfig命令:
$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.138 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::4024:2554:eea4:f97b prefixlen 64 scopeid 0x20<link>
ether 08:00:27:28:65:38 txqueuelen 1000 (Ethernet)
RX packets 36560 bytes 42335654 (42.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8763 bytes 671459 (671.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 947 bytes 82515 (82.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 947 bytes 82515 (82.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在这个例子中,我的Ubuntu主机的IP地址是192.168.43.138,子网掩码是255.255.255.0(24位)。
现在,使用nmap和刚刚获取的数据:
$ sudo nmap -sP 192.168.43.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2023-04-26 13:50 CEST
Nmap scan report for _gateway (192.168.43.1)
Host is up (0.015s latency).
MAC Address: 8E:F5:A3:DB:03:27 (Unknown)
Nmap scan report for ubuntu (192.168.43.56)
Host is up (0.049s latency).
MAC Address: DC:A6:32:02:46:50 (Raspberry Pi Trading)
Nmap scan report for LAPTOP-27UBLNO7 (192.168.43.234)
Host is up (0.00057s latency).
MAC Address: 7C:B2:7D:9E:95:DA (Intel Corporate)
Nmap scan report for ed-vm (192.168.43.138)
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.07 seconds
然后我们找到了树莓派的IP地址:192.168.43.56。
3.3 有屏幕
直接输入
$ ip addr
输出类似于:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether e4:5f:01:49:a8:b6 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether e4:5f:01:49:a8:b7 brd ff:ff:ff:ff:ff:ff
inet 192.168.178.40/24 brd 192.168.178.255 scope global dynamic wlan0
valid_lft 863983sec preferred_lft 863983sec
4. 连接到树莓派
在Windows上打开终端,只需在Windows搜索栏中键入“cmd”,然后启动“命令提示符”。 我在这里使用了vscode,因为非常适合未来的开发,在这里非常推荐。
键入以下命令:
$ ssh pi@192.168.178.40
将“pi”替换为树莓派镜像烧录器的高级设置中输入的任何其他用户名。同时,使用上一步中刚刚找到的IP地址,而不是192.168.178.40。
然后将看到类似于以下内容:
The authenticity of host '192.168.178.40 (192.168.178.40)' can't be established.
ED25519 key fingerprint is SHA256:WI67l/jru1i2vEnrHWLbzoV+1s71Dt0AJtg6JBP8faI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.178.40' (ED25519) to the list of known hosts.
pi@192.168.178.40's password:
需要在第一个问题中输入“yes”,然后使用烧录器的高级设置中设置的密码。
然后将看到类似于以下内容:
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-1090-raspi aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Aug 6 10:11:16 UTC 2023
System load: 0.47 Temperature: 55.0 C
Usage of /: 31.3% of 28.94GB Processes: 168
Memory usage: 4% Users logged in: 0
Swap usage: 0% IPv4 address for wlan0: 192.168.178.40
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
Expanded Security Maintenance for Applications is not enabled.
183 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
29 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm
New release '22.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Thu Jul 20 12:13:32 2023 from 192.168.163.155
pi@ubuntu:~$
5. 安装ROS noetic
设置sources.list
将计算机设置为接受packages.ros.org的软件。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
这行命令将ROS软件包源添加到sources.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 -
这两行命令用于安装curl(如果还没有安装curl)并导入ROS软件包的公共密钥。
sudo apt update
这行命令用于更新可用的软件包列表。
安装桌面版
ROS-Base中的所有内容以及rqt和rviz等工具。
sudo apt install ros-noetic-desktop
这行命令用于安装ROS桌面版,它包括ROS-Base中的所有内容以及一些工具(如rqt和rviz)。
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
这两行命令用于将ROS环境变量添加到bashrc文件中,并在当前会话中立即加载这些变量。
安装python3-rosdep,python3-rosinstall,python3-rosinstall-generator,python3-wstool和build-essential等软件包。
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
这行命令用于安装一些常用的ROS依赖工具和编译所需的基本软件包。
初始化rosdep
在使用许多ROS工具之前,需要初始化rosdep。rosdep可以为要编译的源代码轻松安装系统依赖项,并且某些ROS核心组件需要它来运行。如果还没有安装rosdep,请按照以下方式安装。
sudo apt install python3-rosdep
这行命令用于安装rosdep。
执行以下命令来初始化rosdep。
sudo rosdep init
rosdep update
这两行命令用于初始化rosdep,并获取最新的rosdep规则。
测试
接下来可以运行roscore来检查ros的安装。
roscore