当前位置: 首页 > news >正文

在Raspberry Pi 4上安装Ubuntu 20.04 + ROS noetic(不带显示器)

在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 1500inet 192.168.43.138  netmask 255.255.255.0  broadcast 192.168.43.255inet6 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 0TX 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 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::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 0TX 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 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::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 1000link/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 1000link/ether e4:5f:01:49:a8:b7 brd ff:ff:ff:ff:ff:ffinet 192.168.178.40/24 brd 192.168.178.255 scope global dynamic wlan0valid_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/advantageSystem information as of Sun Aug  6 10:11:16 UTC 2023System 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 MicroK8sjust raised the bar for easy, resilient and secure K8s cluster deployment.https://ubuntu.com/engage/secure-kubernetes-at-the-edgeExpanded Security Maintenance for Applications is not enabled.183 updates can be applied immediately.
To see these additional updates run: apt list --upgradable29 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esmNew 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

相关文章:

在Raspberry Pi 4上安装Ubuntu 20.04 + ROS noetic(不带显示器)

在Raspberry Pi 4上安装Ubuntu 20.04 ROS noetic&#xff08;不带显示器&#xff09; 1. 所需设备 所需设备&#xff1a; 树莓派 4 B 型 wifi microSD 卡&#xff1a;最小 32GB MicroSD 转 SD 适配器 &#xff08;可选&#xff09;显示器&#xff0c;鼠标等 2. 树莓派…...

CommStudio for .NET Crack

CommStudio for .NET Crack CommStudio for.NET使您的应用程序可以轻松地使用串行端口和调制解调器进行通信。CommStudio for.NET是一套全面的组件和可视化调试工具&#xff0c;可将远程系统和设备与visual Studio 2005和visual Studio 2008集成。开发与遗留系统和外部设备集成…...

蓝桥杯上岸考点清单 (冲刺版)!!!

大家好 我是寸铁&#x1f4aa; 真题千千万万遍&#xff0c;蓝桥省一自然现&#xff01; ✌️ 日更3000里&#xff0c;蓝桥眷顾你 &#x1f31f; 暴力出奇迹&#xff0c;打表过样例 &#x1f44a; 冲刺蓝桥杯省一模板大全来啦 &#x1f525; 蓝桥杯4月8号就要开始了 &#…...

AI一键生成短视频

AI一键生成推文短视频 阅读时长&#xff1a;10分钟 本文内容&#xff1a; 结合开源AI&#xff0c;一键生成短视频发布到常见的某音&#xff0c;某手平台&#xff0c;狠狠赚一笔 前置知识&#xff1a; 1.基本的 python 编程知识 2.chatGPT 使用过 3.stable diffution 使用过 成果…...

基于MATLAB长时间序列遥感数据分析(以MODIS数据处理为例)

MATLAB MATLAB是美国MathWorks公司出品的商业数学软件&#xff0c;用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 [1] MATLAB是matrix&laboratory两个词的组合&#xff0c;意为矩阵工厂&a…...

postgresql之内存池-AllocsetContext

一、简介 postgresql大部分的内存分配管理都是通过MemoryContext进行操作的&#xff0c; 多个相关的MemoryContext构成了一个树型结构&#xff0c; 多个树构成了一个森林。 实现了三种MemoryContext: SlabContextGenerationContextAllocSetContext 使用全局变量CurrentMemo…...

QT 使用单例模式

目录 1. 单例模式介绍 2.单例模式实现 1. 单例模式介绍 有些时候我们在做 qt 项目的时候,要用到很多类. 例如我们用到的类有 A,B,C,D. 其中,A 是 B,C,D 中都需要用到的类,A 类非常的抢手. 但是,A 类非常的占内存,定义一个 A 对象需要 500M 内存,假如在 B,C,D 中都定义一个 A 类…...

接口测试——postman接口测试(三)

目录 1. postman介绍与安装 2. postman发送get请求 3. postman发送post请求 1. postman介绍与安装 安装网址&#xff1a;Postman安装教程&#xff1a;留言找我要即可 2. postman发送get请求 import pymysql from flask import Flask,request# 这里是mysql的基本连接信息 c…...

react中hooks的理解与使用

一、作用 我们知道react组件有两种写法一种是类组件&#xff0c;另一种是函数组件。而函数组件是无状态组件&#xff0c;如果我们要想改变组件中的状态就无法实现了。为此&#xff0c;在react16.8版本后官方推出hooks&#xff0c;用于函数组件更改状态。 二、常用API 1、use…...

STM32的电动自行车信息采集上报系统(学习)

摘要 针对电动自行车实时监管不便的问题&#xff0c;设计了一种基于STM32的电动自行车信息采集系统&#xff0c;通过获取电池、位置和行驶状态信息并上报到服务器中&#xff0c;实现实时监管。 通过多路串口请求电池、行驶状态和位置信息&#xff0c;以并发方式进行数据接收、…...

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)&#xff01;&#xff01;&#xff01; 同步收录 &#x1f447; 蓝桥杯上岸必背&#xff01;&#xff01;&#xff01;(第四期DFS) 大家好 我是寸铁&#x1f4aa; 冲刺蓝桥杯省一模板大全来啦 &#x1f525; 蓝桥杯4月8号就要开始了 &a…...

【Linux系统编程】冯诺依曼体系结构

目录 前言 什么是冯诺依曼体系结构&#xff1f; 冯诺依曼体系结构如何进行数据处理的&#xff1f; 存储器在冯诺依曼体系中有什么作用&#xff1f; 冯诺依曼体系结构为什么要这样设计&#xff1f; 冯诺依曼结构总结 前言 相信对于冯诺依曼这个人的名字大家一定不会感到陌…...

数据结构--动态顺序表

文章目录 线性表动态顺序表数组与顺序表 接口实现初始化&#xff1a;尾插&#xff1a;尾删头插头删指定位置插入指定位置删除查找摧毁 完整代码 线性表 线性表是数据结构中最基本、最简单也是最常用的一种数据结构。线性表是指由n个具有相同数据类型的元素组成的有限序列。 线…...

笔试数据结构选填题

目录 卡特兰数Catalan&#xff1a;出栈序列/二叉树数 树 二叉树 N01N2 哈夫曼树&#xff08;最优二叉树&#xff09;Huffman 度m的哈夫曼树只有度为0和m的结点&#xff1a;Nm(n-1)/(m-1) 平衡二叉树AVL Nh表示深度为h最少结点数&#xff0c;则N00&#xff0c;N11&#…...

# 鸢尾花的案例学习

# 鸢尾花的案例学习 # 1. 导入小型的数据 from sklearn.datasets import load_iris import numpy as np import pandas as pd import seaborn as sbn import matplotlib.pyplot as plt # 2. 获取数据 irisload_iris() # 3.查看数据print("数据集\n ",len(iris.d…...

线程、进程的区别

线程、进程的区别 在开发中&#xff0c;我们经常听到线程和进程两个概念&#xff0c;它们都是操作系统的基本概念&#xff0c;操作系统以进程为基本单位分配存储器&#xff0c;以线程为基本单位分配CPU。虽然它们有很多相似之处&#xff0c;但是它们也有很大的区别。本文将详细…...

在 Ubuntu 上安装 Docker 桌面

Ubuntu 22.04 (LTS) 安装 Docker 桌面 要成功安装 Docker Desktop&#xff0c;您必须&#xff1a; 满足系统要求拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。对于非 Gnome 桌面环境&#xff0c;必须安装 gnome-terminal&#xff1a;…...

【WebRTC---序篇】(七)RTC多人连麦方案

服务端可以选择mediasoup&#xff0c;作为SFU服务器&#xff0c;只负责转发数据 下图举例三个Client (browser或者客户端)同时加入一个房间&#xff0c;每个app同时发布一路视频和一路音频&#xff0c;并且接受来自其他app的音视频流&#xff0c;mediasoup内部的结构如下&…...

【Java可执行命令】(十六)诊断命令请求发送工具 jcmd:提供一种简单而强大的方式来管理和监控 Java 进程 ~

Java可执行命令之jcmd 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 jcmd -l&#xff1a;列出正在运行的 Java 进程3.3 jcmd < pid> help&#xff1a;列出特定进程的诊断命令列表3.4 jcmd < pid> < command>&#xff1a;执行诊断命令 4️⃣ 应用场景…...

如何创建无序列表和有序列表?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 无序列表⭐ 无序列表⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

linux设备重启后时间与网络时间不同步怎么解决?

linux设备重启后时间与网络时间不同步怎么解决&#xff1f; 设备只要一重启&#xff0c;时间又错了/偏了&#xff0c;明明刚刚对时还是对的&#xff01; 这在物联网、嵌入式开发环境特别常见&#xff0c;尤其是开发板、树莓派、rk3588 这类设备。 解决方法&#xff1a; 加硬件…...

mcts蒙特卡洛模拟树思想

您这个观察非常敏锐&#xff0c;而且在很大程度上是正确的&#xff01;您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些&#xff0c;您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”&#xff0c;这个观察非…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具&#xff0c;支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上&#xff1a; sudo apt update sudo apt install certbot申请证书 纯手动方式&#xff08;不自动配置&#xff09;&…...

Python 解释器安装全攻略(适用于 Linux / Windows / macOS)

目录 一、Windows安装Python解释器1.1 下载并安装Python解释1.2 测试安装是否成功1.3 设置pip的国内镜像------永久配置 二、macOS安装Python解释器三、Linux下安装Python解释器3.1 Rocky8.10/Rocky9.5安装Python解释器3.2 Ubuntu2204/Ubuntu2404安装Python解释器3.3 设置pip的…...