树莓派基础以及YOLOv8模型的应用
目录
感谢mmYOLO的图例
所需应用下载链接:
树莓派官网:
树莓派与window之间传输数据软件:
两个都能很好使用
WinSCP软件下载:WinSCP :: Official Site :: Free SFTP and FTP client for Windows
MobaXterm:https://mobaxterm.mobatek.net/
远程控制树莓派:
VNC:Download VNC Viewer by RealVNC®
SD卡格式化工具(SDFormatter)
链接:https://pan.baidu.com/s/1RoAkkW8nNaOCGMrPIpCFvg
提取码:wujq
链接:https://pan.baidu.com/s/1KQLYxaxAPAaz-zB2eeoA5g
提取码:b54j
树莓派家谱:
树莓派硬件:
博主使用的是树莓派4代B版,搭载1.5GHz 64位四核Cortex-A72 CPU,内存可选1/2/4/8GB,支持蓝牙5.0、USB 3.0、双4K输出,供电为5V Type-C,其余配置与3代B+相近。


摄像机模块排线:3.5mm圆孔耳机线的右边
视频输出接口:2个mini-HDMI
再右边是type-c的电源接口
40针GPIO连接器
支持POE供电:4个小针脚
sd卡插在树莓派的背面
树莓派操作系统类别与烧录:
操作系统类别:
管理计算机硬件与软件资源的计算机的程序
eg:Win11系统、苹果系统、UNIX、Linux
UNIX:需要专业的硬件设备
Linux:规避了UNIX和苹果系统的缺点;通过命令行操作;用于服务器;安卓系统基于Linux开发而来
树莓派官方系统:Raspberry Pi OS
树莓派非官方系统:Ubuntu、LibreElec、RetroPie、TLXOS
系统烧录:
SD卡、读卡器、系统(官网上找)
SD卡格式化工具(SDFormatter)
链接:https://pan.baidu.com/s/1KQLYxaxAPAaz-zB2eeoA5g
提取码:b54j
链接:https://pan.baidu.com/s/1RoAkkW8nNaOCGMrPIpCFvg
提取码:wujq
准备32Gb的内存卡
首先要将内容卡格式化:
rasberrypi.org-Software-Raspberry Pi OS
直接下载:(16:16)
每天十分钟带你学会树莓派--入门篇-03系统烧录_哔哩哔哩_bilibili
官方系统烧录:(13:25)
每天十分钟带你学会树莓派--入门篇-03系统烧录_哔哩哔哩_bilibili
树莓派基础实操:
树莓派首次开机与关机:
电源:5V-3A
sd卡(tf卡):用于存储系统---建议8g以上
(+读卡器)
鼠标键盘:有线usb接口的(无线可能影响自检和驱动)
显示屏+HDMI线
接线注意事项:
1.连接显示器不显示:
(顺序相反屏幕会什么都不显示)
2.树莓派一直重启:
3.关机方式:
方法一:
左上角的黑色窗口(相当于windows里面的cmd)
sudo poweroff^C
关闭电源
sudo shutdown -h now
立刻关机
sudo shutdown -r now
立刻重启
sudo shutdown -h +2
2分钟后关机
方法二:
树莓派如何用网线与树莓派的连接:
1.连线:网线一端插树莓派上,一端插电脑上
2.共享:将电脑的网络共享给树莓派
3.查找:查找树莓派的IP地址
cmd窗口中:
arp -a
4.利用树莓派的IP地址连接树莓派
树莓派学习教程基础篇05:无显示屏键鼠等外设,一根网线远程连接树莓派,十分钟玩转系列之基础篇_哔哩哔哩_bilibili
利用无线网络连接:
树莓派网络配置信息
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=*无线网名字*
psk=*密码*
priority=10
}
无线网名字与密码都为电脑热点的名字、密码

将树莓派连接上笔记本的热点:(7:37)
远程桌面连接:(8:51)
树莓派中安装工具xrdp:(9:15)
sudo apt-get install xrdp
下载好安装工具,继续电脑远程桌面连接:(11:23)
每天十分钟带你学会树莓派--基础篇 06 RDP远程控制树莓派(无网线连接)_哔哩哔哩_bilibili
VNC远程控制树莓派:
每天十分钟带你学会树莓派 基础篇07 树莓派VNC连接,配置树莓派的静态IP地址_哔哩哔哩_bilibili

1.树莓派上面安装VNC服务器:
(4:04)
每天十分钟带你学会树莓派 基础篇07 树莓派VNC连接,配置树莓派的静态IP地址_哔哩哔哩_bilibili
法一:桌面模式


法二:命令行模式
sudo raspi-config


2.电脑上安装VNC查看器:
(7:09)
每天十分钟带你学会树莓派 基础篇07 树莓派VNC连接,配置树莓派的静态IP地址_哔哩哔哩_bilibili
vnc官网:RealVNC® - Remote access software for desktop and mobile | RealVNC
3.树莓派和笔记本进行连接:
运行树莓派的VNC,命令行:
vncserver
树莓派设置静止ip地址:
每天十分钟带你学会树莓派 基础篇07 树莓派VNC连接,配置树莓派的静态IP地址_哔哩哔哩_bilibili
1.查找默认网关:(12:25)
cmd:
ipconfig

默认网关不一定为最后一行
2.分配给树莓派的ip地址:(12:40)
3.修改树莓派的DHCP配置文件:(13:40)
树莓派的终端窗口:
sudo nano /ect/dhcpcd.conf
打开的文件末尾添加上配置信息:
interface wlan0
static ip_address=你的ip地址 /24
static routers=你的默认网关
static domain_name_servers=你的默认网关

(这里的无线网关是因为老师使用的笔记本连接的是wifi)

粘贴完成后按
ctrl+s 写入
ctrl+x 退出
重启树莓派
树莓派换源:
Raspberry Pi OS 中国软件源 | 树莓派实验室
视频教学:全网最全、最详细树莓派换源?!是的,没有之一!(附笔记文本)_哔哩哔哩_bilibili
树莓派系统有三种版本,每个版本的源又分为32位与64位,需要根据自己树莓派的实际情况进行换源操作
stretch
buster
bullseye
getconf LONG_BIT #查看树莓派系统多少位 32/64
cat /etc/os-release #查看系统版本
uname -a #查看系统构架 armxxx
一定要注意自己树莓派是什么系统以及版本
为什么要更换树莓派源:
更换软件源(package repository)的本质,是把 apt 系统解析到的 base-URL 从官方默认的 http://archive.raspberrypi.org 与 http://raspbian.raspberrypi.org 替换为地理位置更近、网络质量更优、同步延迟更低的镜像站。此举可通过缩短 RTT、增大可用带宽、降低丢包率,显著减少 TCP 握手与 TLS 协商时间,并提高 HTTP/2 多路复用的效率,从而使软件包索引(InRelease、Packages.xz)与二进制文件(.deb)的下载时间从分钟量级降至秒量级。实测表明,在 100 Mbit/s 教育网出口下,官方源平均 RTT≈280 ms、带宽≈1.2 MB/s,切换至清华大学 TUNA 镜像后 RTT≈8 ms、带宽可跑满 11 MB/s,速度提升接近一个数量级。
此外,镜像站通常对上游仓库做 hourly 级 rsync 同步,延迟控制在 1 h 以内,与官方源保持版本一致性;同时提供多架构(armhf/arm64)与多分支(main/contrib/non-free/rpi)完整快照,可在本地软件包版本冻结、回退或构建私有 fork 时提供确定性来源
列如博主使用的系统:
1、编辑 /etc/apt/sources.list 文件(软件源)
sudo chmod 777 /etc/apt/sources.list
sudo nano /etc/apt/sources.list
2、源代码前面都加一个 # 用来注销源代码,bookworm 系统用以下内容取代:
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free-firmware

然后 Ctrl+x 退出,接着 y 保存,再按一次ctrl退出。
树莓派与window之间的文件传输:
通过在window上训练的模型转移到树莓派上,实现树莓派yolov8的应用
视频教学:
如何实现树莓派与Windows之间传输文件?_哔哩哔哩_bilibili
【终端】全能终端神器MobaXterm_哔哩哔哩_bilibili
WinSCP软件下载:WinSCP :: Official Site :: Free SFTP and FTP client for Windows
MobaXterm:https://mobaxterm.mobatek.net/
Linux常用的终端命令:
1.终端会话提示符:

2.超级用户:


3.终端命令:
#目录切换命令
pwd # 显示当前所在目录
cd ~/home # 切换到主目录(/home/pi),~也可省略不写
cd dir # 切换到指定目录,dir表示文件路径
cd .. # 切换到上一级目录
cd / # 直接切换到系统根目录 /
cd ./subdir # 进入当前目录下的子目录 subdir(./ 可省)
#文件展示命令
ls # 展示当前目录下所有的文件与文件夹(不包含隐藏文件)
ls -a # 展示当前目录下所有的文件与文件夹(包含隐藏文件)
ls -l # 长格式列表(权限、大小、日期等)
ls -F # 给目录加 /,可执行文件加 *,链接加 @
ls -t # 按修改时间倒序(最新在前)
ls -tr # 按修改时间正序(最旧在前)
ls -d */ # 只列出当前目录下的文件夹
ls *.txt # 只列出 txt 结尾的文件(支持通配符)
#创建
touch file #创建文件file
touch file{1..3} # 批量创建 file1、file2、file3
touch -c file # 若 file 不存在,则不创建(仅改时间戳)
mkdir dir #创建目录dir
mkdir dir1 dir2 # 一次建多个同级目录
mkdir -p a/b/c # 递归创建多级目录
mkdir -m 700 private_dir # 创建目录并直接给 700 权限
#查看
cat file # 查看文件file内容
more file # 查看文件file内容
head file # 查看文件file前10行
tail file # 查看文件file后10行
cat -n file # 带行号输出全部内容
cat -b file # 非空行才编号
tac file # 从最后一行开始倒着显示
less file # 分页查看,可搜索、上下翻页(q 退出)
more -5 file # 每次只显示 5 行
head -n 20 file # 查看前 20 行
head -c 1K file # 查看前 1KB 内容
tail -n 50 file # 查看后 50 行
tail -f file # 实时跟踪文件新增内容(Ctrl+C 退出)
tail -F file # 类似 -f,但文件被轮转后也能继续跟踪
nl file # 自带行号打印(比 cat -n 更专业)
od -c file # 以八进制/字符方式查看二进制文件
xxd file # 十六进制+ASCII 视图(vim 也支持 :%!xxd)
#删除
rm file # 删除文件file
rm -r dir # 删除目录dir
rm -i file # 交互式确认删除
rm -f file # 强制删除,不提示
rm -v file # 删除时显示过程
rm -rf dir # 递归强制删除目录(高危操作,三思!)
rmdir dir # 仅删除空目录
rm *.log # 删除当前目录所有 .log 文件
rm -rf -- -f # 删除以 - 开头的异常文件名(-- 表示选项结束)
#重命名或移动
mv file1 file2 # 若file2不存在,则将file1改名为file2
# 若file2存在,则file1覆盖掉原file2,并更名为file2
mv file dir # 将文件file移动到目录dir中
mv -i old new # 若目标存在则询问是否覆盖
mv -n old new # 不覆盖已存在目标
mv -v old new # 显示移动过程
mv *.txt backup/ # 把所有 txt 文件移动到 backup 目录
mv -t backup/ *.log # 使用 -t 指定目标目录,效果同上
mv file{.bak,} # 快速去掉扩展名(等价于 mv file.bak file)
mv dir1 dir2 # 若 dir2 不存在,dir1 改名为 dir2;若存在,则 dir1 整个移进去
GPIO:

树莓派的引脚共有三种编码:

1.板载编码:

2.BCM编码:
这种参考Broadcom SOC的通道编号侧重CPU寄存器
使用Python控制树莓派引脚时,使用BCM编码

3.WiringPi编码:
WiringPi编码,把扩展GPIO端口从0开始编码
使用C语言控制树莓派引脚时,使用WiringPi

如何查看:
1. 查看板载编码
pinout
2.查看全部编码:
gpio readall

YOLOv8在树莓派上的应用:
网络结构的一些基础概念在这片文章有所提及:https://blog.csdn.net/Klusfsc/article/details/144015984?spm=1011.2415.3001.5331

YOLOv8网络结构与YOLOv5之间的对比:
模型训练都是在window上训练的,树莓派的算力不足以跑模型训练
YOLOv8的网络结构:

YOLOv5的网络结构:

YOLOv8的Head部分从原先的耦合头变成了解耦头结构,简化了模型结构并提高了推理速度。
YOLOv8在LOSS计算方面采用了TaskAlignedAssigner正样本分配策略,并引入了Distribution Focal Loss,确保了检测结果的准确性和鲁棒性。
YOLOv8的Backbone类似于YOLOv5的Backbone,不同点是将C3换成了C2F,以及将第一个Convolution层设置为kernel size等于3,stride为2(YOLOv5的Kernel Size为6,padding为2)。

C3与C2f的区别:
主干网络的区别:

C3有个残差的链接在左侧
(chat)
分组卷积(Group Convolution)
分组卷积是一种特殊的卷积操作,它将输入通道分割成多个组,每个组单独进行卷积操作,最后将结果合并。这种做法减少了不同通道之间的信息交互,可以有效降低计算复杂度。例如,在PyTorch中,可以通过设置groups参数来实现分组卷积,如nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding, groups=in_channel)。
深度可分离卷积(Depthwise Separable Convolution)
深度可分离卷积是一种更为极端的分组卷积形式,其中每个组的通道数为1。它由两部分组成:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度卷积只对每个通道进行卷积操作,而逐点卷积则通过1x1卷积来调整输出通道数。这种方法显著减少了参数量和计算量,是轻量化模型设计中常用的技巧。
瓶颈结构(Bottleneck)
瓶颈结构是一种在深度卷积层前后添加1x1卷积层的策略,旨在减少卷积层的输入和输出维度,从而降低计算复杂度。通常,瓶颈结构包括一个1x1卷积来减少通道数,接着是一个较大的卷积核(如3x3)来提取特征,最后再通过一个1x1卷积恢复到原始通道数。这种结构在ResNet和Inception等网络中广泛应用。
Split 操作
在神经网络中,Split 操作用于将一个输入张量分割成多个输出张量。在ncnn框架中,Split 操作是一个无参数无权重的操作,其输出张量的数量和形状由输入张量的维度和分割参数决定。例如,split(x, 2)将输入张量x分割成两个等大小的输出张量。
Concat 操作
Concat 操作与Split相反,它将多个输入张量沿特定维度连接成一个输出张量。在ncnn中,Concat操作也是一个无参数无权重的操作,它根据输入张量的形状和连接参数来决定输出张量的维度。例如,concat([x1, x2])将两个输入张量x1和x2沿通道维度连接起来。
Partial Convolution(PConv)
Partial Convolution是一种新的卷积技术,旨在减少冗余计算和内存访问,特别是在处理部分掩码图像时。PConv通过将输入张量分割成处理区域和未处理区域,只对处理区域进行卷积操作,从而提高了效率。这种技术在某些神经网络中被用于加速推理。
简而言之:
C2f 用“劈叉-并行-串接”代替 C3 的“整块-串行”,同样深度却更少参数、更快推理、更好梯度回传
解码头的区别:

yolov5从主干特征提取网络送入到卷积层,
boundingbox:边界框 4个数值表示
object: 置信度 1个数值表示
cls:类别 有几类就有几个数值
相比之下yolov8
边界框回归用的是clou损失函数
置信度与分类:二进制交叉熵的一个损失函数
yolov8的代码讲解:
本文不赘述代码内容,有需求可以参考下面的视频
yolov5的代码讲解:https://blog.csdn.net/Klusfsc/article/details/144015984?spm=1011.2124.3001.6209
ROS2:
Workspace(工厂)-----------------------------------------------+
├── Package(车间)--------------------------------------------+
│ ├── interface/ ← .msg .srv .action(图纸) |
│ │ ├── .msg ← 定义主题消息格式 |
│ │ ├── .srv ← 定义服务请求和响应格式 |
│ │ └── .action ← 定义动作目标、反馈和结果格式 |
│ ├── launch/ ← .py/.xml 启动脚本 |
│ │ ├── .py ← Python 启动文件,用于启动节点 |
│ │ └── .xml ← XML 格式的启动配置文件 |
│ ├── config/ ← .yaml 参数文件 |
│ │ ├── .yaml ← 参数配置文件,用于节点的参数初始化 |
│ └── src/ ← 源码 |
│ ├── node_A.cpp → 可执行 node_A |
│ │ ├── pubs/subs → Topics |
│ │ │ ├── pubs ← 发布者,向主题发布消息 |
│ │ │ └── subs ← 订阅者,从主题接收消息 |
│ │ ├── services → Services |
│ │ │ ├── server ← 服务端,处理客户端的请求并返回响应 |
│ │ │ └── client ← 客户端,向服务端发送请求并接收响应 |
│ │ ├── actions → Actions |
│ │ │ ├── server ← 动作服务端,处理动作目标并发送反馈 |
│ │ │ └── client ← 动作客户端,发送动作目标并接收结果 |
│ │ └── parameters → Parameters |
│ │ ├── param1 ← 参数1,节点运行时可动态修改的配置项 |
│ │ └── param2 ← 参数2,节点运行时可动态修改的配置项 |
│ └── node_B.cpp → 可执行 node_B |
│ ├── pubs/subs → Topics |
│ ├── services → Services |
│ ├── actions → Actions |
│ └── parameters → Parameters |
└── ...
-
Workspace(工厂)
-
定义:工作空间是一个包含多个功能包的目录,用于组织和管理 ROS 2 项目。
-
作用:提供一个统一的环境,用于编译、安装和运行 ROS 2 包。
-
文件结构:
-
src/:存放所有功能包的源代码。 -
build/:编译过程中生成的中间文件。 -
install/:编译完成后生成的可执行文件和相关资源。
-
-
-
Package(车间)
-
定义:功能包是 ROS 2 中的最小发行单元,包含节点的源代码、接口定义、启动脚本、配置文件等。
-
作用:封装特定功能的代码和资源,便于开发、分发和复用。
-
文件结构:
-
interface/:存放接口定义文件,包括.msg(主题消息格式)、.srv(服务请求和响应格式)、.action(动作目标、反馈和结果格式)。 -
launch/:存放启动脚本,用于启动节点。可以是.py(Python 启动脚本)或.xml(XML 格式的启动配置文件)。 -
config/:存放参数配置文件,通常是.yaml格式,用于节点的参数初始化。 -
src/:存放节点的源代码,编译后生成可执行文件。
-
-
-
Node(节点)
-
定义:节点是 ROS 2 中的最小执行单元,负责特定的功能模块。
-
作用:执行具体任务,如传感器数据采集、路径规划、电机控制等。
-
通信机制:
-
Topics(主题):
-
pubs:发布者,向主题发布消息。
-
subs:订阅者,从主题接收消息。
-
-
Services(服务):
-
server:服务端,处理客户端的请求并返回响应。
-
client:客户端,向服务端发送请求并接收响应。
-
-
Actions(动作):
-
server:动作服务端,处理动作目标并发送反馈。
-
client:动作客户端,发送动作目标并接收结果。
-
-
Parameters(参数):
-
param1:参数1,节点运行时可动态修改的配置项。
-
param2:参数2,节点运行时可动态修改的配置项。
-
-
-
# 0. 打开新终端,先加载 ROS 2 环境(Humble 为例)
fishros@fishros-VirtualBox:~$ source /opt/ros/humble/setup.bash
# 作用:把 ROS 2 的所有可执行文件、包路径、环境变量导入当前 shell
# 定义:setup.bash 是 ROS 2 的“环境入口”,必须 source 后才能用 ros2 指令
# 1. 创建工作空间并进入
fishros@fishros-VirtualBox:~$ mkdir -p ~/ros2_ws/src
# 作用:-p 递归建立两级目录,ros2_ws 是工作空间根目录,src 用来放功能包源码
# 定义:ROS 2 工作空间(workspace)= 编译 + 安装 + 源码的顶层文件夹
fishros@fishros-VirtualBox:~$ cd ~/ros2_ws
fishros@fishros-VirtualBox:~/ros2_ws$
# 2. 创建功能包(cpp 或 python 二选一)
# 2-A Python 包
fishros@fishros-VirtualBox:~/ros2_ws$ ros2 pkg create --build-type ament_python --node-name my_py_node --license Apache-2.0 my_py_pkg
# 作用:一次性生成符合 ROS 2 规范的 Python 功能包骨架
# 定义:ament_python = 用 setuptools 构建的纯 Python 包;--node-name 自动生成演示节点
# 2-B C++ 包(可选,与 Python 不冲突)
fishros@fishros-VirtualBox:~/ros2_ws$ ros2 pkg create --build-type ament_cmake --node-name my_cpp_node --license Apache-2.0 my_cpp_pkg
# 作用:生成 CMakeLists.txt + src/my_cpp_node.cpp 模板
# 定义:ament_cmake = 基于 CMake + ament 扩展的构建类型,适合 C++
# 3. 编译整个工作空间
fishros@fishros-VirtualBox:~/ros2_ws$ colcon build --symlink-install
# 作用:递归编译 src 下所有包,生成 install、build、log 目录
# 定义:colcon = ROS 2 官方构建工具链;--symlink-install 对 Python 节点改代码后无需重新编译即可生效
# 4. 加载当前工作空间环境(每次新终端都要做)
fishros@fishros-VirtualBox:~/ros2_ws$ source install/setup.bash
# 作用:把刚编译好的自定义包、可执行文件、消息、launch 等加入环境变量
# 定义:install/setup.bash 是“本地 overlay”,优先级高于系统 /opt/ros/humble
# 5. 运行节点
fishros@fishros-VirtualBox:~/ros2_ws$ ros2 run my_py_pkg my_py_node
# 作用:启动刚才生成的 Python 演示节点
# 定义:ros2 run <包名> <可执行文件名>,可执行名 = 你在 setup.py 里 entry_points 定义的 console_script
# 6. 查看节点/话题/服务列表(另开终端,同样先 source install/setup.bash)
fishros@fishros-VirtualBox:~$ source ~/ros2_ws/install/setup.bash
fishros@fishros-VirtualBox:~$ ros2 node list
# 作用:列出当前存活的所有节点
# 定义:ROS 2 图(graph)中的节点通过 DDS 自动发现
fishros@fishros-VirtualBox:~$ ros2 topic list
# 作用:列出所有正在发布/订阅的话题
# 定义:话题(topic)= 匿名发布/订阅的异步数据总线,默认使用 DDS 中间件
fishros@fishros-VirtualBox:~$ ros2 service list
# 作用:列出所有已注册的服务
# 定义:服务(service)= 请求/应答式同步通信,客户端阻塞等待服务端返回
# 7. 实时打印话题数据
fishros@fishros-VirtualBox:~$ ros2 topic echo /chatter
# 作用:把指定话题上的消息内容实时打印到终端
# 定义:echo 命令底层对应 ROS 2 的订阅节点,消息格式自动解析为 YAML 文本
# 8. 手动发布一条消息(用于调试)
fishros@fishros-VirtualBox:~$ ros2 topic pub /chatter std_msgs/msg/String "data: 'Hello ROS 2'"
# 作用:从命令行以 1 Hz 频率发布 String 消息到 /chatter
# 定义:pub 子命令 = 临时创建发布节点;std_msgs/msg/String 是内置消息类型
# 9. 使用 launch 文件一次启动多个节点
fishros@fishros-VirtualBox:~/ros2_ws$ ros2 launch my_py_pkg demo.launch.py
# 作用:通过 Python 写的 launch 文件批量启动节点、设置参数、重映射话题
# 定义:launch 系统 = ROS 2 的统一起始管理器,支持 Python/XML/YAML 三种格式
# 10. 查看包依赖
fishros@fishros-VirtualBox:~/ros2_ws$ ros2 pkg deps my_py_pkg
# 作用:列出该功能包在 package.xml 中声明的全部依赖
# 定义:依赖 = 构建依赖(build_depend)+ 运行依赖(exec_depend)
# 11. 给节点传参数(命令行方式)
fishros@fishros-VirtualBox:~/ros2_ws$ ros2 run my_py_pkg my_py_node --ros-args -p my_param:=3.14
# 作用:在运行时把参数 my_param 设为 3.14,节点内可通过 declare_parameter 读取
# 定义:ROS 2 参数系统 = 分布式键/值数据库,支持运行时增删改查
# 12. 记录/回放数据(rosbag2)
fishros@fishros-VirtualBox:~$ ros2 bag record /camera/image /imu
# 作用:把指定话题的数据流序列化到磁盘,生成 .db3 文件
# 定义:rosbag2 = ROS 2 官方数据记录工具,基于 SQLite3 存储,支持压缩
fishros@fishros-VirtualBox:~$ ros2 bag play rosbag2_2023_10_23-14_05_00
# 作用:按时间戳回放记录文件,重新发布话题,节点无感知
# 定义:play 命令会启动一个播放器节点,速率、开始/结束时间均可调
# 13. 清理编译产物(节省磁盘)
fishros@fishros-VirtualBox:~/ros2_ws$ rm -rf build log install
# 作用:删除所有编译输出,回到“源码状态”
# 定义:colcon build 生成的三个目录均可安全删除,仅保留 src 即可
更多推荐

所有评论(0)