当前位置: 首页 > 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开发感兴…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...