目录

所需应用下载链接:

树莓派家谱:

树莓派硬件:

树莓派操作系统类别与烧录:

        操作系统类别:

        系统烧录:

树莓派基础实操:

树莓派首次开机与关机:

  树莓派如何用网线与树莓派的连接:

利用无线网络连接:

VNC远程控制树莓派:

1.树莓派上面安装VNC服务器:

2.电脑上安装VNC查看器:

3.树莓派和笔记本进行连接:

树莓派设置静止ip地址:

 树莓派换源:

为什么要更换树莓派源:

树莓派与window之间的文件传输:

Linux常用的终端命令:

1.终端会话提示符:

2.超级用户:

3.终端命令:

GPIO:

1.板载编码:

2.BCM编码:

3.WiringPi编码:

如何查看:

YOLOv8在树莓派上的应用:

YOLOv8网络结构与YOLOv5之间的对比:

C3与C2f的区别:

主干网络的区别:

解码头的区别:

yolov8的代码讲解:


感谢mmYOLO的图例

所需应用下载链接:

树莓派官网:

Raspberry Pi

树莓派与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.orghttp://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的代码讲解:

本文不赘述代码内容,有需求可以参考下面的视频

https://www.bilibili.com/video/BV1Ms421u7VH/?spm_id_from=333.337.search-card.all.click&vd_source=e150fe027448aa29e27528beba4d0950

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                         |
└── ...
  1. Workspace(工厂)

    • 定义:工作空间是一个包含多个功能包的目录,用于组织和管理 ROS 2 项目。

    • 作用:提供一个统一的环境,用于编译、安装和运行 ROS 2 包。

    • 文件结构

      • src/:存放所有功能包的源代码。

      • build/:编译过程中生成的中间文件。

      • install/:编译完成后生成的可执行文件和相关资源。

  2. Package(车间)

    • 定义:功能包是 ROS 2 中的最小发行单元,包含节点的源代码、接口定义、启动脚本、配置文件等。

    • 作用:封装特定功能的代码和资源,便于开发、分发和复用。

    • 文件结构

      • interface/:存放接口定义文件,包括 .msg(主题消息格式)、.srv(服务请求和响应格式)、.action(动作目标、反馈和结果格式)。

      • launch/:存放启动脚本,用于启动节点。可以是 .py(Python 启动脚本)或 .xml(XML 格式的启动配置文件)。

      • config/:存放参数配置文件,通常是 .yaml 格式,用于节点的参数初始化。

      • src/:存放节点的源代码,编译后生成可执行文件。

  3. 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 即可

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐