<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>akatsuki kaze</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>http://www.akatsuki-kaze.com.cn/</id>
  <link href="http://www.akatsuki-kaze.com.cn/" rel="alternate"/>
  <link href="http://www.akatsuki-kaze.com.cn/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, akatsuki kaze</rights>
  <subtitle>a personal blog</subtitle>
  <title>akatsuki kaze's blogs</title>
  <updated>2026-08-21T13:01:02.730Z</updated>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="robocon" scheme="http://www.akatsuki-kaze.com.cn/categories/robocon/"/>
    <category term="tutorial" scheme="http://www.akatsuki-kaze.com.cn/tags/tutorial/"/>
    <content>
      <![CDATA[<h1 id="1-算法入门"><a href="#1-算法入门" class="headerlink" title="1. 算法入门"></a>1. 算法入门</h1><h2 id="1-1-先认识什么是算法组"><a href="#1-1-先认识什么是算法组" class="headerlink" title="1.1 先认识什么是算法组"></a>1.1 先认识什么是算法组</h2><p>其实对于“算法组”而言，叫他算法组是不太恰当的。但是如果叫他“视觉组”，那么其误解就更大了。首先，我们来认识什么是算法组。以及在robocon当中，算法组大体上需要完成什么任务。<br>以目前的RC趋势而言，自动机器人的重要性是逐年增加的。对于自动机器人，他需要进行复杂的感知，决策，控制。因此，应运而生专精于上位机的算法组。传统rm队伍当中，算法组一般叫做“视觉组”，视觉组主要负责装甲板自瞄，烧饼导航规划，雷达算法等。但是由于rc差异化更大，以及潜在需求更加多样，私以为视觉组这个名称对于实际任务已经不太妥当，因此我认为目前嵌入式linux任务统称为算法组更为合适。<br>在rc中，不仅只有视觉识别，导航规划，还有运动控制算法（足式多见），部分方案也有以上位机控制为主。在目前robotic到智能硬件，上下位机之间任务差距也在逐渐缩小。尤其是运动控制算法，已经基本上迁移到上位机进行。一方面是因为单片机成本逐渐增加（stm32系列都在涨价），另一方面运控基本普及的强化学习算法基本上直接输出电机控制参数，因此在使用强化学习的队伍中已经很少见单片机控制了。<br>接下来，由于笔者本人技术栈限制，本文将不会涉及运控方面的内容，想了解运控方面内容请移步<a href="https://locowiki.com/">loco wiki</a>继续阅读，loco wiki由Lain维护。<br>（文章最底下有个音乐播放器，可以边听歌边读哦）</p><h2 id="1-2-算法组的任务"><a href="#1-2-算法组的任务" class="headerlink" title="1.2 算法组的任务"></a>1.2 算法组的任务</h2><p>上面提到，算法组将会主要负责视觉识别，导航规划内容。本文也将会从比赛角度，尽量不涉及专业数学计算对上位机任务进行解读。<br>以下是本文可能涉及的部分内容：</p><ul><li>电脑硬件</li><li>可能使用的传感器</li><li>串口通信协议</li><li>视觉识别</li><li>导航规划</li><li>运动控制（参考loco wiki）<br>首先我们将会从计算机基本原理进行解读。对于一些专业化内容，本文将会援引外部链接，不会进行详细解读。</li></ul><h1 id="2-计算机硬件组成"><a href="#2-计算机硬件组成" class="headerlink" title="2. 计算机硬件组成"></a>2. 计算机硬件组成</h1><p>这一节只讲四样东西：CPU、内存、硬盘、GPU，以及它们之间是怎么协作的。理解了这四样，你对计算机硬件就有了基本的认知。</p><h2 id="2-1-CPU"><a href="#2-1-CPU" class="headerlink" title="2.1 CPU"></a>2.1 CPU</h2><p><strong>CPU（中央处理器，Central Processing Unit）</strong> 是计算机的核心芯片，负责执行指令。所谓指令，就是告诉 CPU 该做什么的一串二进制数字，比如做一次加法、读取一个数据、把结果写回去。</p><p>CPU 的工作就是不断重复以下循环：</p><ol><li><strong>取指（Fetch）</strong>：从内存中读取一条指令</li><li><strong>译码（Decode）</strong>：解析这条指令要做什么操作</li><li><strong>执行（Execute）</strong>：完成这个操作</li><li><strong>写回（Write Back）</strong>：把运算结果存回寄存器或内存</li></ol><p>这个循环称为<strong>指令周期</strong>，CPU 一秒钟能完成几十亿次。所有程序，无论是你写的 Python 脚本还是原神，最终都会被编译成这种最基础的指令，被 CPU 一条条地执行。</p><p>CPU 有几个关键参数：</p><ul><li><strong>核心数（Core）</strong>：CPU 内部独立的运算单元，每个核心可以同时执行一个指令流。多核心意味着可以真正并行处理多个任务。比如 4 核 CPU 可以同时跑视觉识别、导航规划、串口通信，互不干扰</li><li><strong>主频（Clock Speed）</strong>：CPU 的工作频率，单位是 GHz。3.0GHz 表示每秒执行 30 亿次时钟周期。主频越高，单条指令执行越快</li></ul><h2 id="2-2-内存"><a href="#2-2-内存" class="headerlink" title="2.2 内存"></a>2.2 内存</h2><p><strong>内存（RAM，Random Access Memory，随机存取存储器）</strong> 是 CPU 直接访问的存储空间。程序要运行，必须先从硬盘加载到内存里，因为 CPU 只能直接读写内存，不能直接读写硬盘。</p><p>内存有两个重要特点：</p><ul><li><strong>断电即丢失</strong>：内存是易失性存储，关机后数据就没了，所以写文档要记得保存到硬盘</li><li><strong>速度快但容量小</strong>：读取速度远快于硬盘，但容量通常只有 8GB~64GB</li></ul><p>在算法组的场景下，内存大小直接决定了能处理的图像分辨率和并发任务数。跑深度学习模型时，模型参数要全部加载到内存（如果用 GPU 跑则是加载到显存）里，不够就会直接报错。</p><h2 id="2-3-硬盘"><a href="#2-3-硬盘" class="headerlink" title="2.3 硬盘"></a>2.3 硬盘</h2><p>硬盘是永久存储数据的设备，断电不丢。主要分两类：</p><p><strong>机械硬盘（HDD，Hard Disk Drive）</strong>：内部有物理磁盘在高速旋转，通过磁头读写数据。容量大、价格便宜，但读取速度慢（约 100~200MB&#x2F;s），而且有机械结构，怕震动。比赛机器人的上位机一般不用 HDD，因为机器人运动时的震动可能导致磁头划伤磁盘导致硬盘报废。但是由于价格美丽，经常有人会将其作为数据存储使用。</p><p><strong>固态硬盘（SSD，Solid State Drive）</strong>：没有机械结构，纯电子存储（本质是闪存芯片）。速度快（约 500~7000MB&#x2F;s），抗震动，但价格更贵。现在笔记本基本都用 SSD。</p><h2 id="2-4-GPU"><a href="#2-4-GPU" class="headerlink" title="2.4 GPU"></a>2.4 GPU</h2><p><strong>GPU（图形处理器，Graphics Processing Unit）</strong> 最初是为了渲染 3D 画面发明的，但后来人们发现它的架构特别适合做<strong>并行计算</strong>–也就是同时执行大量简单的运算。</p><p>CPU 和 GPU 的设计取向不同。CPU 的核心少但每个核心都很强，擅长处理复杂的逻辑判断和串行任务；GPU 的核心多但每个核心都比较简单，擅长同时处理大量结构相同的运算。</p><p>深度学习本质上就是海量的矩阵乘法运算，正好是 GPU 擅长的场景。所以训练神经网络、跑模型推理时，GPU 是必需品。</p><p>GPU 有一个关键参数：<strong>显存（VRAM，Video RAM）</strong>，也就是 GPU 专用的内存。模型越大、图像分辨率越高，需要的显存越大。跑 YOLOv8神经网络视觉识别模型 通常需要 2GB 以上。</p><h2 id="2-5-它们是怎么协作的"><a href="#2-5-它们是怎么协作的" class="headerlink" title="2.5 它们是怎么协作的"></a>2.5 它们是怎么协作的</h2><p>把这四样东西串起来，计算机的工作流程是这样的：</p><ol><li>程序和数据的”老家”在<strong>硬盘</strong>里，长期存储</li><li>你双击运行程序时，程序代码和所需数据从<strong>硬盘</strong>加载到<strong>内存</strong>里</li><li><strong>CPU</strong> 从<strong>内存</strong>中逐条读取指令并执行，中间结果存在<strong>内存</strong>里</li><li>如果遇到深度学习这类大规模并行计算任务，<strong>CPU</strong> 会把数据转交给 <strong>GPU</strong>，GPU 用自己的<strong>显存</strong>暂存数据，算完再把结果返回给 CPU</li><li>程序运行结束后，如果要保存结果，数据从<strong>内存</strong>写回<strong>硬盘</strong></li></ol><p>所以你会发现，这几个部件构成了一个层次结构：硬盘容量最大但最慢，内存居中，CPU 缓存最快但最小。数据从慢的逐级搬运到快的，CPU 才能高效工作。这也是为什么程序需要”加载”才能运行，为什么内存不够会卡顿，为什么有 GPU 跑深度学习会快很多。</p><h2 id="2-7-关于CUDA技术"><a href="#2-7-关于CUDA技术" class="headerlink" title="2.7 关于CUDA技术"></a>2.7 关于CUDA技术</h2><p>上一节说到 GPU 擅长并行计算，但 GPU 原本是为了画图设计的，直接用图形 API 来做通用计算非常不方便。为了让开发者能用类似写 C 语言的方式来调用 GPU，NVIDIA 推出了 <strong>CUDA（Compute Unified Device Architecture，统一计算设备架构）</strong>。</p><p>简单来说，CUDA 是 NVIDIA 提供的一套软件平台和编程模型，让你可以写代码直接控制 GPU 做通用计算，而不仅仅是画图。你在写 PyTorch、TensorFlow 时，底层调用的就是 CUDA。</p><p>这里有一个前提：<strong>CUDA 只支持 NVIDIA 的 GPU</strong>。如果你买的是 AMD 显卡或者 Intel 核显，是无法使用 CUDA 的，只能走 OpenCL 或 ROCm 等替代方案，但这些方案在深度学习生态中的支持远不如 CUDA 完善。这也是为什么算法组选电脑时首选 NVIDIA 显卡。</p><p>不过截止本文攥写时，Rocm已经被不少人验证其性能并不弱于cuda。</p><h2 id="2-8-算法组如何挑选电脑"><a href="#2-8-算法组如何挑选电脑" class="headerlink" title="2.8 算法组如何挑选电脑"></a>2.8 算法组如何挑选电脑</h2><p>首先说一个暴论：MacBook绝对是算法组的最佳选择（笑）。<br>首先，mac有以下优点：</p><ul><li>类linux操作逻辑，也支持ros2</li><li>续航优秀，重量较轻</li><li>性能相对于续航，重量而言较高</li><li>工具链齐全，写电控也没问题。<br>至于缺点，贵是我的缺点不是他的（x）</li></ul><p>但是在MacBook大幅涨价的现在，MacBook neo的性价比都已经不如8845笔记本。在这个现状下，最优选基本上是带有4060显卡的上一代笔记本了。</p><p>挑选电脑的第一原则：轻。不要买你接受不了天天端着跑的电脑，不然调车会比较享福。<br>第二：尽量选择可加装内存硬盘的电脑，不然在你没有额外存储设备的情况下，你的存储会爆炸的。<br>第三：别碰那个不能说的品牌，homo系统啥都干不了。<br>第四：最好不要对二手有歧视，别人调好的人妻说不定更温柔，不要有处女情结。</p><p>综上，目前市场行情下个人最推荐梯度：</p><ul><li>第一：MacBook Air系列二手，华硕天选，拯救者7000系列</li><li>第二：MacBook neo系列二手，机械革命，天选和拯救者二手机</li><li>第三：MacBook neo和Air系列新机，机械革命二手机，其他品牌新机<br>由于大部分家长确实不太接受二手电脑，上述顺序自行剔除二手机即可。若家里人非得买那个品牌，首先尝试劝说能否购买荣耀笔记本，若还是不能则选择win11系统的旧款电脑。真买了也别着急认栽，也别拆封直接转手，然后自行购入AMD7840 CPU的笔记本。</li></ul><h2 id="2-9-电脑到手该做什么"><a href="#2-9-电脑到手该做什么" class="headerlink" title="2.9 电脑到手该做什么"></a>2.9 电脑到手该做什么</h2><p>首先，需要确认是否是新机或者无故障暗病的二手机。全程录制开箱视频，不要着急充电。首先我们来进行新机开箱：<br>新机就不要学网上花里胡哨的，首先检查快递盒有无严重变形，然后拆封后看电脑包装是否八角尖尖，查看封条贴纸是否有拆封痕迹（是否有胶痕就能看出来）。若正常，拆封进入下一步。首先拿出电脑，检查外壳磕碰，屏幕是否有落灰。若正常，继续下一步。接下来，打开电脑，正常<strong>没充电过按下开机键时是没反应的</strong>，如果开机了趁着还没激活，申请退换货吧。在运输模式下，未充电应该是不能开机的。在这一步正常后，插电开机进入系统，若正常为激活界面，直接照着电脑走流程即可，其余不用操作。进入系统后右键底下任务栏空白处，找到任务管理器，性能页面，检查存储，内存，cpu，显卡是否是自己购买的型号。若都正确，则安全下车。<br>对于二手机：录制开箱视频，然后下载图吧工具箱，使用甜甜圈和cpuz进行跑分测试，若在误差范围内，安全下车。二手机建议在老二道贩子处购买，价格适当，也没那么多个人卖家的扯皮，确保安全。</p><p>然后，现在你已经进入系统了，首先下载一个图吧工具箱，然后先进入系统设置搜索BitLocker，关闭它。如果不关，你电脑哪天不开机了就只能重装系统了。接下来，进入图吧工具箱，打开diskgenuis，把一个盘分一个卷，乱七八糟的分卷统统不要，不然以后空余空间这里一点那里一点，会非常难受。届时你就像个无能的丈夫一样看着空间一点一点被吞你啥都干不了。好了，现在你想干嘛都行，先去下个steam开始打游戏吧，玩爽了记得回来把这个文档读完。</p><h1 id="3-算法前期准备"><a href="#3-算法前期准备" class="headerlink" title="3. 算法前期准备"></a>3. 算法前期准备</h1><h2 id="3-1-环境搭建"><a href="#3-1-环境搭建" class="headerlink" title="3.1 环境搭建"></a>3.1 环境搭建</h2><p>首先，目前很多算法都是基于ubuntu构建的，因此先尽量尝试拥有一个安全的ubuntu环境。ubuntu是一个linux操作系统，它基于debian发行版，提供了一个安全、稳定、易用的环境。关于<a href="https://www.bilibili.com/video/BV1jWsPzSEvx/?share_source=copy_web&vd_source=e8caabe5da0dc4bf7a619e550ef0bb37">Ubuntu系统介绍</a>援引以上视频，本文不做过多介绍。总之，Ubuntu系统将会是很多ROS开发的硬性要求，根据电脑自己的情况可以考虑虚拟机，WSL或者双系统。个人最推荐双系统，有两块物理硬盘的同学可以酌情考虑自行搜索教程安装双系统。其次就是WSL，直接运行在windows下的子系统，但是在一些环境兼容性上可能会有问题。接着就是虚拟机，性能损耗会大点，但是十分安全，不怕带着win系统一起炸了。<br>目前ubuntu版本选择多样，个人建议Ubuntu22.04和24.04，性能较高的算法都是基于这两个版本的兼容性。尤其是ubuntu22.04，截止本文攥写时兼容性最佳。</p><p>安装完ubuntu，接着就需要准备好你的python环境了。python是一个解释型语言，它有丰富的库和工具，可以快速开发出各种应用。目前很多导航和建图算法都是基于python的，因此需要先准备好python环境。近几年最常用的版本是3.10-3.12，建议安装一个3.10版本的python。部分ubuntu版本自带python，可以直接使用，但是要注意版本检查。</p><p>接下来，需要安装ros2环境了。这里推荐小鱼的一键安装脚本<code>wget http://fishros.com/install -O fishros &amp;&amp; . fishros</code>跟着脚本一步到位即可。</p><p>按需自行根据教程安装conda或者直接使用venv（建议），他会创建虚拟环境，防止你库下太多主环境爆炸。同时虚拟环境也像一个杯子，里面需要的东西随时可以端走，十分方便。</p><p>Ubuntu系统可能缺失PIP（一种python包管理工具），需要手动安装。</p><pre><code class="language-bash">sudo apt updatesudo apt install python3-pip</code></pre><p>即可安装pip。</p><h2 id="3-2-部分基本素养介绍"><a href="#3-2-部分基本素养介绍" class="headerlink" title="3.2 部分基本素养介绍"></a>3.2 部分基本素养介绍</h2><p>算法最重要的就是编程，编程并不是开个shell再开个记事本就能完成的。虽然确实有人纯靠VIM就能编写一个C语言项目，但是能达到这个水平的人绝对不会来读这个文档。<br>对于算法，C语言基础和python基础都是必须的。python不建议作为第一门语言学习，虽然他可以培养很好的格式习惯（python对缩进格式有严格要求）但是它并不能很好的培养你的代码习惯。具体原因学习到一定程度就能理解。因此这里建议先学习C语言，再学习python。C语言学习无须精通，可以学会基础语法格式，如何调用库，如何封装自己的库即可。python同理。接下来很多语法细节通过开源代码或者一些教程网站如菜鸟教程，还有bilibili等渠道自行学习即可。</p><p>其次，就是对于系统架构的把控。这个功能和这个功能是否该放在一个文件下？main文件该放什么？这些都需要根据具体的情况来判断。如果是一个简单的算法，那么main文件就可以直接放所有代码。但是如果是一个复杂的算法，那么就需要将代码拆分成多个文件，每个文件负责一个功能。甚至在我的开源项目中，你就可以看到我把文件分为了HAL（硬件抽象层）和基础功能层。在26赛季的R2上位机代码中，GUI执行更是直接将UI，动作组，执行层解耦实现灵活变更。对于系统架构优化清晰，不论是在agent进行vibecoding时还是自己进行古法编程时都是有利的。ai编程不会帮你把控系统架构，因此只能靠自己进行把控。关于ai编程，本文最后会提到。</p><p>正视ai编程，ai是一个很好用的高效率工具而不是洪水猛兽。但是在进行ai编程时需要注意盯好思考过程和代码修改。全流程一定要注意把关好，否则高低要给你整点大活。而AI编程最需要的，则是你的表达能力。如何准确，简洁，直接的说出你的需求。事实上，和其他人沟通最高效的语句反而是最优的promote。语言表达能力，组织架构能力都是ai时代ai编程很重要的一环。至于ai思考的时候你能做什么，那就见仁见智了。</p><p>除去软件部分，传感器，硬件也是需要了解的。算法常见的传感器，例如相机根据调用方式分类有USB相机，工业相机（需要使用专门SDK），还有激光雷达（需要使用专门驱动），IMU（需要使用专门SDK）等可以直接读取的传感器。当然，关节电机的力矩，3508的电流等也可以近似作为力传感器。后面将会对部分我所了解的传感器做专门介绍。</p><p>既然已经进入机器人开发，对于机器人整体也是需要有所认知的。机械，电控，硬件，算法在机器人系统中起到什么角色，各自开发都做了什么，了解这些将会更加有利于整体合作流程。机器人是脱离不开硬件的，任何sim不谈real都是耍流氓。对于硬件理解越加深入，排查问题时越能对症下药。</p><h2 id="3-3算法学习路径"><a href="#3-3算法学习路径" class="headerlink" title="3.3算法学习路径"></a>3.3算法学习路径</h2><p>首先，先把C艹或者python学清楚。尽管本人真的十分不推荐先学python，但是不可否认在AI coding趋势下C艹语言各种复杂的api可以依靠AI进行处理，甚至可以让python调用C艹语言的库。而python的大部分高性能的库更是主要由c语言编写的。并且实际在ROS开发中跨语言是很常见的事。C语言个人建议在bilibili或者菜鸟教程中，尝试跟进部分小项目进行学习。这样快速掌握C语言语法基础后，再开始准备python的学习。尽管python有很多语法和c有较大差距，但是c语言的大部分编程习惯很容易迁移到py中。接下来在学习py的时候，只需要注意最核心的一件事——py和c的区别。<br>c语言就像很多教材教的那样，作为一个高级语言是需要编译为计算机语言的。在很多教材中，通常会用翻译的例子。c语言的运行过程就像是邮件，需要翻译为计算机能看懂的语言后运行。而py则是解释器语言，解释器逐行翻译py给计算机执行。这也带来一个问题，第一就是由于python需要运行解释器，因此py的运行速度普遍比c慢很多，部分简单项目甚至能达到十倍级的速度差。而c虽然经常因为语法问题被人吐槽诸多，但是其高性能和高速扩张时期的红利使其长时间内也难以被取代。具体需要使用哪种语言，可以通过任务区别进行选择。<br>对两种基础编程语言有概念后，就该继续学习如何成为调包侠了。首先尝试学习ROS的相关库，以及ros有一些很方便的用法，然后就可以尝试调用rosbag进行数据回放。rosbag是记录了ros话题数据的一种文件，可以在硬件设备不足的情况下进行算法的调试和学习工作。</p><h2 id="3-4算法组建议时间安排"><a href="#3-4算法组建议时间安排" class="headerlink" title="3.4算法组建议时间安排"></a>3.4算法组建议时间安排</h2><p>基础的语言基础建议花上两个月好好沉淀一下。毕竟人不是只能打比赛，还是需要管好课内成绩。一不小心开了无敌模式那就往死里干吧</p><ul><li>大一八月，建议自行安装好vscode，尝试学习python和c艹语言的基础语法。顺便，好好享受最后的暑假。</li><li>大一九月，开始了解纳新安排，学习纳新课程，直到十月都不需要额外学习新的内容。</li><li>大一十月，可以尝试自行安装双系统了。比较建议的是双系统+WSL的配置，WSL相对方便，而双系统才能提供较好的开发环境。</li><li>大一十一月，着手准备校内赛。一般而言校内赛难度不会很高，但是也是一个小小的完成项目的机会。</li><li>大一十二月，此时可以接触到学长代码了，不要去读代码，让AI对代码进行总结架构，然后去了解各个模块的内容。对于AI如何使用后文会提及。</li><li>大一次年一月到七月，可以开始辅助学长备赛同时，尝试学习opencv和pytorch，熟悉常用的slam算法，熟悉这两项将会是后续开发的基础。</li><li>接下来你是大二了，该敲定选用的算法方案了。到这里你应该就有自己的备赛节奏了。</li></ul><h1 id="4-基础传感器知识"><a href="#4-基础传感器知识" class="headerlink" title="4. 基础传感器知识"></a>4. 基础传感器知识</h1><blockquote><p>本文章最重要的饺子醋</p></blockquote><h2 id="4-1-图像传感器"><a href="#4-1-图像传感器" class="headerlink" title="4.1 图像传感器"></a>4.1 图像传感器</h2><p>图像传感器，大部分都是相机，比如常用的USB免驱相机，帧率和分辨率以及各种图像参数不方便调整，但是稳定性很高。其次就是需要使用专业SDK的工业相机，经典的就是海康威视的工业相机，从帧率和参数可调上都是深入开发的最佳选择。<br>相机一般由多个部分组成，包括传感器，镜头，外围电路。传感器分为堆栈式和背照式，堆栈式读出速度较快，不容易触发明显果冻效应<br>相机传感器是逐行扫描的：曝光时从第一行开始逐行读出，这种曝光方式称为<strong>卷帘快门（Rolling Shutter）</strong>。因为每一行的曝光时刻有先后，当画面中存在高速运动的物体时，先曝光和后曝光的行拍到的位置不同，物体就会出现倾斜、扭曲，这就是常说的<strong>果冻效应（Jello Effect）</strong>。与之对应的是<strong>全局快门（Global Shutter）</strong>，所有像素在同一时刻曝光，高速运动场景下画面不会变形，很多工业高速相机采用的就是全局快门。</p><p>要理解这些现象，需要从传感器的硬件原理说起。图像传感器的核心是一块感光芯片，最常见的是 <strong>CMOS（Complementary Metal Oxide Semiconductor，互补金属氧化物半导体）</strong> 传感器。芯片表面排列着密密麻麻的感光单元，也就是<strong>像素（Pixel）</strong>。每个像素本质上是一个光电二极管：光线照射后，光子被转换为电子并积累起来，积累的电荷量就代表这一点的亮度；随后电荷经过放大和 ADC（模数转换）变成数字信号，再按行读出，最终组合成一幅完整的图像。分辨率指的就是像素阵列的大小，比如 1920×1080 表示水平 1920 个像素、垂直 1080 个像素。</p><p>根据内部结构，CMOS 传感器还可以分为前照式、背照式和堆栈式：</p><ul><li><strong>前照式（FSI，Front-Side Illuminated）</strong>：电路层位于感光层上方，光线必须穿过电路层才能到达感光二极管，进光效率有损失，暗光下噪点较多</li><li><strong>背照式（BSI，Back-Side Illuminated）</strong>：把感光层翻转放到上方，光线直接照射感光二极管，进光效率大幅提升，暗光表现更好</li><li><strong>堆栈式（Stacked）</strong>：在背照式的基础上，把图像处理电路堆叠到感光芯片的下方，读出速度更快，果冻效应更轻，还能集成缓存等电路</li></ul><p>因此在选型时，堆栈式或背照式传感器通常是优先考虑的方向。</p><p>除了芯片结构，<strong>传感器尺寸</strong>同样重要。常见尺寸有 1&#x2F;3”、1&#x2F;2.5”、1&#x2F;1.8”、1” 等，尺寸越大，同等分辨率下单像素面积越大，单个像素能接收的光子越多，噪点越少、动态范围越好。这也是为什么同样的分辨率，大底相机的画质明显更好。</p><p>曝光参数方面，图像亮度主要由三个量决定：<strong>快门时间（曝光时间）</strong>、<strong>增益（ISO）</strong> 和 <strong>光圈</strong>。快门时间越长进光越多，但运动物体更容易模糊；增益提高可以提亮画面，但会放大噪点；光圈由镜头控制，决定进光口径。在算法组的场景下，比赛场地光线变化大，通常需要根据环境动态调整曝光时间与增益，保证图像不过曝、不欠曝，识别算法才有稳定的输入。</p><p>最后是<strong>镜头</strong>。镜头决定相机的视场角与成像质量：焦距越短，视场越广，能看到更大的范围，但远处的物体在图像里更小；焦距越长，视场越窄，等效于”拉近”。镜头的畸变也是需要注意的，普通的广角镜头存在桶形畸变，画面边缘的直线会向外弯曲，如果要做像素坐标和物理坐标的映射，一般需要先做相机标定来矫正畸变。</p><h2 id="4-2-IMU-传感器"><a href="#4-2-IMU-传感器" class="headerlink" title="4.2 IMU 传感器"></a>4.2 IMU 传感器</h2><blockquote><p>本小节作者：<a href="https://github.com/uwvwko-zzz">uwvwko-zzz</a></p></blockquote><p>IMU（惯性测量单元）是机器人上最常用的传感器之一，用来测量载体自身的角速度和加速度，进而解算出姿态和运动状态。可以说，只要是会动的东西——无人机、平衡车、四足机器人、人形机器人——上面几乎都有一颗 IMU。</p><p>IMU 一般由加速度计和陀螺仪组成，两者各三个轴，合称 6 轴；再加上三轴磁力计就是 9 轴（俗称 AHRS 参考系统）。加速度计感受比力（静止时能读到重力大小和方向），陀螺仪感受角速度，两者互补：陀螺仪短期精度高但会漂移，加速度计长期不漂但动态响应差、振动干扰大，所以工程上几乎总是用互补滤波或卡尔曼滤波把两者融合起来，得到稳定的姿态角。</p><p>从芯片原理上讲，消费级 IMU 基本都是 MEMS（微机电系统）工艺：在硅片上刻蚀出微米级的悬浮机械结构。加速度计的核心是一个由弹性梁支撑的检测质量块，加速度使质量块相对基座发生位移，带动梳齿状电极的极距&#x2F;正对面积变化，通过差分电容检测把机械位移转成电信号；陀螺仪则利用科氏效应工作，先驱动质量块沿某个方向做持续微振动，芯片一旦旋转，质量块就会受到垂直于振动方向的科氏力，引起检测模态的位移，同样由电容变化读出，其大小正比于角速度。单芯片内还集成了温度传感器（用于温漂补偿）和 ADC，直接输出数字量。MEMS 器件体积小、集成度高、耐冲击、便宜，但相比光纤、激光陀螺噪声和零偏大得多，这是消费级 IMU 必须做滤波和标定的根本原因。</p><p>入门最经典的是 MPU6050，便宜、资料多，I2C 接口直接读原始数据，适合第一次写驱动和理解数据处理流程，但它的噪声和温漂比较大，并且鉴于其作为初代六轴芯片早已停产，不建议用在任何正式设计上，只适合学习。做机器人项目常用 BMI088 和 ICM 系列（如 ICM-42688），噪声密度低、支持 SPI 高采样率。如果不想自己写姿态解算，也可以直接买维特智能 WT901&#x2F;达妙imu 这类成品模块，通过封装好的串口&#x2F;ros2模块直接输出欧拉角和四元数，上手快。</p><p>使用 IMU 时要重点关注三个参数：量程、噪声密度和零偏稳定性。量程按应用选，平衡车 ±2g 够用，无人机会摔会翻滚，一般选 ±16g、±2000°&#x2F;s；噪声决定了姿态解算的最终精度；零偏（bias）则是温漂的主要来源，高精度场合要做全温标定。使用前必须做静止校准：陀螺仪去零偏，加速度计校水平。安装上也有讲究，IMU 要尽量刚性固定在机体上、远离电机和振动源，实在避不开就加软垫减振，否则陀螺仪会被振出虚假角速度，这是四足机器人和无人机上非常常见的坑。</p><p>数据读取方面，I2C 适合低速场合（400kHz 下 100~200Hz 够用），SPI 适合高采样率（1kHz 以上，飞控和腿部姿态估计常用）；输出的是原始值，要乘以分辨率转换系数才得到物理单位。拿到数据后，典型处理流程是：校准去零偏 → 低通或陷波滤波去振动 → 与其他传感器（编码器里程计、相机、激光）做融合。</p><p>在上位机上使用 IMU 一般有三条路线。最底层的是直读裸芯片：按寄存器手册通过 I2C&#x2F;SPI 读出原始值，乘以分辨率系数得到物理量，再自己写 Mahony&#x2F;Madgwick 或 EKF 做姿态解算，适合吃透原理；成品模块走串口更省事，模块内部已经解算好姿态，通过 USB 转 TTL（CH340&#x2F;CP2102）按固定协议帧输出，例如维特智能的 0x55 帧头系列，每帧携带欧拉角&#x2F;角速度&#x2F;加速度等字段，上位机用 pyserial 按”帧头 + 长度 + 数据 + 校验和”解析字节流即可；ROS2 中则把解析封装成节点，将数据填入 sensor_msgs&#x2F;Imu 发布到 &#x2F;imu&#x2F;data 话题，轴向定义要对齐 REP 103&#x2F;REP 145，并且要在收到数据的当下打时间戳（而不是用处理或转发时刻），否则下游 EKF 融合的时序会错乱。之后交给 robot_localization 的 EKF 节点，IMU 提供姿态和角速度，编码器提供速度，最终输出稳定的 odom→base_link 里程计。达妙、维特这类成品模块官方一般都提供 ROS2 驱动包，拿来即用。</p><p>以上方案主要用于导航定位。而在四足机器人强化学习部署中，IMU 的用法不太一样：它不再服务于 EKF 里程计，而是直接为策略模型提供本体状态观测。典型流程是：策略在 Isaac Gym&#x2F;Isaac Lab 中训练时，观测里就包含机体系角速度和投影重力向量（即重力单位向量旋转到机体坐标系下的表示，训练日志里的 proj_gravity，它隐含了机体的俯仰和横滚姿态）；部署到实机时，IMU 以足够高的频率（通常 200Hz 以上）输出角速度和四元数，上位机用四元数把世界系重力向量旋转到机体系得到投影重力向量，再经过和训练时一致的缩放与截断，拼进 obs 送入网络推理，控制频率一般 50Hz。这套链路对延迟非常敏感——IMU 采样到关节指令下发每多 10ms，机器人在快速步态下就多一点打滑和摔跤的倾向，所以实机上往往绕开 ROS 话题，直接在控制进程里读 IMU。另外要注意观测一致性：训练时通常对角速度和投影重力加了噪声做 domain randomization，如果实机 IMU 噪声特性差异过大，需要重新标定或调大训练噪声，否则会出现仿真里能跑、实机上抖动甚至站不稳的 sim2real 落差。</p><h2 id="4-3-激光雷达（LiDAR）"><a href="#4-3-激光雷达（LiDAR）" class="headerlink" title="4.3 激光雷达（LiDAR）"></a>4.3 激光雷达（LiDAR）</h2><p>激光雷达（LiDAR，Light Detection and Ranging）是机器人感知距离的主力传感器。和相机”被动感光”不同，激光雷达<strong>主动发射激光</strong>：激光器发出脉冲，遇到物体反射回来，接收器测量光从发出到返回的时间差，乘以光速再除以 2 就得到距离。因为光速恒定，这种 <strong>TOF（Time of Flight，飞行时间）测距</strong> 精度很高，而且不依赖环境光照——漆黑的夜晚、逆光、炫光环境下相机可能直接导致数据不可用，而激光雷达照样稳定输出。</p><p>激光雷达输出的是一帧<strong>点云（Point Cloud）</strong>：每个点包含三维坐标（x，y，z）和一个<strong>反射强度（intensity）</strong>，强度值反映了物体表面的反射率。一帧点云就相当于告诉你”这周围哪里有障碍物、分别在哪个方向、多远”，非常适合建图、定位和避障。不过由于没有rgb信息，通常而言激光雷达难以分辨物体种类。但是结合点云语义分割也是可以识别出一些特定特征的。</p><p>按扫描机构的不同，激光雷达主要分为<strong>机械式旋转激光雷达</strong>和<strong>固态&#x2F;半固态激光雷达</strong>两大类。下面用两款最经典的雷达说明结构差异。</p><h3 id="VLP-16（机械式，重复线扫描的代表）"><a href="#VLP-16（机械式，重复线扫描的代表）" class="headerlink" title="VLP-16（机械式，重复线扫描的代表）"></a>VLP-16（机械式，重复线扫描的代表）</h3><p>VLP-16 是 Velodyne 的经典 16 线机械雷达，早期自动驾驶和 SLAM 研究几乎人手一台。它的结构非常直观：<strong>16 对激光收发器竖直排列</strong>在电机底座上，每对收发器对应一个固定的<strong>垂直仰角</strong>，从 -15° 到 +15° 均匀分布（垂直视场 30°，相邻两线夹角 2°）。工作时电机带动整组收发器<strong>绕竖直轴高速旋转</strong>，一边转一边发射激光，于是扫出水平 360° 的点云。值得一提的是vlp并没有使用滑环达到交换数据和电源，而是使用电磁感应进行数据交换。这也使得其使用寿命几乎不受零件老化影响。</p><p>关键参数：点率 <strong>300,000 点&#x2F;秒</strong>；水平角分辨率取决于转速，10Hz 转速下约 0.2°；量程约 100m。电机每转一圈，16 条激光就扫出 16 圈”圆环”，而且这个扫描图案<strong>每一圈、每一帧都一模一样</strong>，这就是<strong>重复线扫描（Repetitive Scanning）</strong>。</p><h3 id="Mid-360（棱镜式，非重复扫描的代表）"><a href="#Mid-360（棱镜式，非重复扫描的代表）" class="headerlink" title="Mid-360（棱镜式，非重复扫描的代表）"></a>Mid-360（棱镜式，非重复扫描的代表）</h3><p>Mid-360 是 Livox 的<strong>混合固态</strong>雷达，内部没有旋转电机，靠的是 <strong>Risley 棱镜</strong>：四线激光穿过两个以不同角速度旋转的楔形棱镜，出射方向被连续折射改变，光斑在视场内走出<strong>李萨如（Lissajous）花瓣形</strong>轨迹。三个棱镜模组围成一圈，拼接出水平 360°、垂直 -7°~+52°（共 59°）的视场；点率 <strong>200,000 点&#x2F;秒</strong>，量程约 70m，近处盲区只有 10cm。</p><p>棱镜式雷达的扫描轨迹每一时刻都在变化，<strong>每一帧的图案都不重复</strong>，这就是<strong>非重复扫描（Non-Repetitive Scanning）</strong>。随着扫描时间增加，视场内的覆盖越来越密、盲区越来越少，官方描述就是”每帧扫描轨迹均不重复，随着扫描时长增加，视野盲区逐渐减少”。具体积分时间对应扫描率可以在官网查询。</p><h3 id="重复线扫描-vs-非重复线扫描"><a href="#重复线扫描-vs-非重复线扫描" class="headerlink" title="重复线扫描 vs 非重复线扫描"></a>重复线扫描 vs 非重复线扫描</h3><table><thead><tr><th>对比项</th><th>重复线扫描（VLP-16）</th><th>非重复线扫描（Mid-360）</th></tr></thead><tbody><tr><td>扫描轨迹</td><td>每帧固定：16 条圆环</td><td>每帧不同：花瓣形轨迹持续填充视场</td></tr><tr><td>帧间一致性</td><td>高，帧与帧图案完全相同</td><td>低，轨迹时刻在变</td></tr><tr><td>视场覆盖</td><td>线与线之间有固定间隙，细长物（电线、杆子）可能漏检</td><td>随时间累积覆盖趋于完整，细小物体识别更好</td></tr><tr><td>近距盲区</td><td>旋转机构体积大，盲区较大</td><td>棱镜式结构紧凑，Mid-360 盲区仅 10cm</td></tr><tr><td>运动畸变校正</td><td>相对简单，逐线时间戳固定</td><td>更困难，轨迹不规则</td></tr><tr><td>SLAM 算法</td><td>经典算法直接可用（ALOAM、LIO-SAM、NDT 等）</td><td>需要专门适配（FAST-LIO、LIO-Livox、Point-LIO）</td></tr><tr><td>典型场景</td><td>室外大范围建图、自动驾驶</td><td>室内&#x2F;近距导航、移动机器人、手持扫描</td></tr></tbody></table><p>一句话总结：<strong>重复线扫描”稳”</strong>——帧间关系好、算法成熟；<strong>非重复线扫描”密”</strong>——覆盖全、细节好，但算法要专门适配。</p><p>实战层面，算法组做导航时：室外场地建图可以选 VLP-16 这类机械雷达，走经典的 LOAM 系算法；室内或近距避障更推荐 Mid-360，配合 FAST-LIO 系列（FAST-LIO2 官方就有 Livox 适配）。点云处理用 PCL，ROS2 下用 livox_ros_driver2 驱动直接输出 sensor_msgs&#x2F;PointCloud2，接进自己的导航栈即可。</p><h2 id="4-4-接触式传感器"><a href="#4-4-接触式传感器" class="headerlink" title="4.4 接触式传感器"></a>4.4 接触式传感器</h2><p>以上提到的传感器，都是不需要和探测物体产生接触的，并且有部分直接支持和上位机通信，这一小节中介绍的一些传感器大部分都不支持与上位机直接通信，因此在后续的一些章节将会介绍具体用法，这里只介绍传感器用途和原理。</p><h3 id="关节电机"><a href="#关节电机" class="headerlink" title="关节电机"></a>关节电机</h3><p>关节电机（Joint Motor）是一种用于控制机器人运动的电机，通常用于机器人人的关节处。关节电机的输出力可以控制机器人的运动，也因此关节电机本身就是个丰富的传感器，包括位置检测，力矩检测，速度检测等都可以实现。</p><h3 id="气压计（Barometer）"><a href="#气压计（Barometer）" class="headerlink" title="气压计（Barometer）"></a>气压计（Barometer）</h3><p>一般接入气路当中，用于测量环境压力。</p><h3 id="微动开关（Microswitch）"><a href="#微动开关（Microswitch）" class="headerlink" title="微动开关（Microswitch）"></a>微动开关（Microswitch）</h3><p>用于检测物体是否触摸到传感器，通常用于触发事件。例如在2026MTI的R2夹爪原定就是使用微动开关进行检测的。</p><h3 id="霍尔传感器（Hall-Sensor）"><a href="#霍尔传感器（Hall-Sensor）" class="headerlink" title="霍尔传感器（Hall Sensor）"></a>霍尔传感器（Hall Sensor）</h3><p>霍尔传感器是一种用于检测磁场的传感器，通常用于检测转动副的位置。霍尔传感器的输出信号是模拟信号，需要通过模数转换（ADC）转换为数字信号。进阶用法也可以检测到速度。</p><h1 id="5-嵌入式软硬件基础"><a href="#5-嵌入式软硬件基础" class="headerlink" title="5. 嵌入式软硬件基础"></a>5. 嵌入式软硬件基础</h1><p>你可能会疑惑，为什么需要嵌入式基础？这不是算法文档吗？事实上，算法拥有一定的嵌软能力甚至是个加分项。毕竟甚至有一部分算法可以在单片机上运行，而且算法基础也基本适用于单片机，因此单片机基础也是值得花上一点时间来玩的。<br>目前主流的单片机有两个方向，一个是以stm为代表的arm单片机，在几乎所有比赛队伍中都是arm单片机较为常见。另一种则是以esp32为代表的riscv单片机，其实也只有esp用的比较多。arm指令集由于较为精简，其处理器低功耗和实时性都较为优秀，开发工具链成熟，是目前使用较多的单片机。而riscv则是今年兴起的单片机，主力就是esp32.esp系列由于较高的性能加上自带射频控制器，能够简单的就调用wifi和蓝牙，也因此成为个人爱好者和部分智能家居青睐的芯片。<br>按照目前的趋势来看，arm单片机仍然是主流，而riscv单片机则是在快速成长中。因此个人建议按照喜欢的功能去选择即可。本文将会尽量少涉及技术细节，以防止在学习过程中造成阻碍。<br>首先，单片机都有各自成熟的开发工具链，例如stm32的keil，esp32的vscode等。当然也不乏第三方工具链，比如stm32也可以选择通过插件在vscode中编译烧录，而esp32还有arduinoIDE高度硬件抽象化和platformIO插件进行开发的选择。在一些简单项目中，也不必要使用上位机进行开发。很多时候mcu其实足以处理各种工作。尤其是一些在边缘计算运行视觉和神经网络的平台。具体该如何取舍需要根据项目抉择。<br>对于单片机的学习路径，个人推荐是找感兴趣的开源项目进行复刻，然后深入修改项目。在修改项目过程中即可学习相关技术细节。在后续需要一些传感器验证的时候，拥有嵌软开发能力可以极大的方便验证甚至完成开发。<br>同理，在硬件中，也需要寻找开源项目，了解芯片，电路选型，电路走线等等基础内容。事实上很多技术栈不用很深入，只需要有一定基础就已经可以独立完成很多东西了。能够独自快速完成全链路测试，才能更好的排查问题而不是甩锅。</p><h1 id="6-如何使用ai编程"><a href="#6-如何使用ai编程" class="headerlink" title="6. 如何使用ai编程"></a>6. 如何使用ai编程</h1><blockquote><p>本文章第二重要的饺子醋</p></blockquote>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2026/08/05/doc-for-fresh-man/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2026/08/05/doc-for-fresh-man/"/>
    <published>2026-08-05T12:22:43.000Z</published>
    <summary>对于算法入门的一些路标，本文有小部分由agent辅助完成</summary>
    <title>doc_for_fresh_man</title>
    <updated>2026-08-21T13:01:02.730Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="robocon" scheme="http://www.akatsuki-kaze.com.cn/categories/robocon/"/>
    <category term="tutorial" scheme="http://www.akatsuki-kaze.com.cn/tags/tutorial/"/>
    <category term="robocon" scheme="http://www.akatsuki-kaze.com.cn/tags/robocon/"/>
    <content>
      <![CDATA[<h1 id="CURC-ROBOCON2026-R2代码解析"><a href="#CURC-ROBOCON2026-R2代码解析" class="headerlink" title="CURC-ROBOCON2026 R2代码解析"></a>CURC-ROBOCON2026 R2代码解析</h1><blockquote><p>Robocon 2026 “功夫探秘”主题赛 — R2上位机代码</p></blockquote><h2 id="硬件平台"><a href="#硬件平台" class="headerlink" title="硬件平台"></a>硬件平台</h2><table><thead><tr><th>项目</th><th>型号</th><th>说明</th></tr></thead><tbody><tr><td>LiDAR</td><td>Livox MID-360</td><td>360°×59° 非重复扫描，40m 量程，内置 IMU</td></tr><tr><td>深度相机</td><td>Intel RealSense D415</td><td>RGB-D，用于视觉检测与测距</td></tr><tr><td>USB 相机</td><td>任意 USB 相机</td><td>OpenCV 采集，自动重连</td></tr><tr><td>底盘</td><td>全向轮（地沟哎A板下位机）</td><td>CH340 USB 串口，115200 baud</td></tr><tr><td>计算平台</td><td>9300H + 1650</td><td>Ubuntu 24.04, ROS2 Jazzy</td></tr></tbody></table><h2 id="顶层目录结构"><a href="#顶层目录结构" class="headerlink" title="顶层目录结构"></a>顶层目录结构</h2><pre><code>├── src/                          # ROS2 功能包│   ├── spark_fast_lio/           # FAST-LIO2 LiDAR-IMU 里程计│   ├── omni_chassis_bridge/      # 全向轮底盘串口桥接（Nav2 → STM32）│   ├── usb_cam_node/             # USB 相机节点│   ├── registration/             # 点云配准与全局重定位│   │   ├── KISS-Matcher/         # 全局点云匹配（FPFH + TEASER++）│   │   └── global_relocalization_kiss_matcher/│   └── kfs_core/                 # KFS 推理核心（C++ ONNX YOLO）├── launch/                       # 一键启动脚本├── config/                       # 配置文件（LiDAR / Nav2 / URDF）├── maps/                         # 建图输出（map.pgm + map.yaml）├── scripts/                      # 工具脚本└── docs/                         # 文档</code></pre><h2 id="ROS2-功能包（src-）"><a href="#ROS2-功能包（src-）" class="headerlink" title="ROS2 功能包（src/）"></a>ROS2 功能包（<code>src/</code>）</h2><h3 id="spark-fast-lio-—-FAST-LIO2-里程计"><a href="#spark-fast-lio-—-FAST-LIO2-里程计" class="headerlink" title="spark_fast_lio — FAST-LIO2 里程计"></a>spark_fast_lio — FAST-LIO2 里程计</h3><p>基于 MIT-SPARK 的 FAST-LIO2，使用 ESIKF（误差状态迭代卡尔曼滤波）结合 ikd-Tree 实现轻量级 LiDAR-IMU 里程计。核心算法（IKFoM、ikd-Tree、点云去畸变）保持原版不变，在预处理、后处理、配置和 Nav2 集成层面进行了大量定制。</p><ul><li><strong>输入</strong>：<code>/livox/lidar</code>（Livox CustomMsg，<code>xfer_format=1</code>）+ <code>/imu/data</code>（经 <code>mid360_imu_converter.py</code> 从 g 转换为 m&#x2F;s²）</li><li><strong>输出</strong>：<code>/cloud_registered</code>（世界帧配准点云）+ <code>map → base</code> TF + <code>/odometry</code>（含 twist 速度）</li><li><strong>三套 Launch 配置</strong>：</li></ul><table><thead><tr><th>模式</th><th>Launch 文件</th><th>配置文件</th><th>用途</th></tr></thead><tbody><tr><td><code>mapping</code></td><td><code>mapping_mid360.launch.yaml</code></td><td><code>mid360.yaml</code></td><td>建图，累积点云，Ctrl-C 自动导出 PCD</td></tr><tr><td><code>loc</code></td><td><code>mapping_mid360_loc.launch.yaml</code></td><td><code>mid360_loc.yaml</code></td><td>加载先验 PCD 到 ikd-Tree，ICP 匹配纯定位</td></tr><tr><td><code>odom</code></td><td><code>mapping_mid360_odom.launch.yaml</code></td><td><code>mid360_odom.yaml</code></td><td>里程计模式，发布 <code>odom → base</code> TF，供 KISS-Matcher 全局重定位</td></tr></tbody></table><h4 id="代码架构"><a href="#代码架构" class="headerlink" title="代码架构"></a>代码架构</h4><p><code>spark_fast_lio.h</code> 中的 <code>SPARKFastLIO2</code> 类继承自 <code>rclcpp::Node</code>，核心成员：</p><ul><li><code>Preprocess</code>（<code>preprocess.h</code>）：Livox CustomMsg 解析、点云去畸变、方向性盲区过滤、时间同步</li><li><code>ImuProcess</code>（<code>imu_processing.hpp</code>）：IMU 前向传播、ESIKF 预测步骤</li><li><code>KD_TREE&lt;PointType&gt;</code>（<code>ikd_Tree.h</code>）：增量 kd-tree，支持动态插入、删除和重平衡</li><li><code>esekfom::esekf</code>（<code>esekfom.hpp</code>）：误差状态迭代卡尔曼滤波器</li></ul><p>主循环（1ms wall timer → <code>main()</code>）：<code>syncPackages()</code> 同步 LiDAR-IMU 数据 → IMU 前向传播 → 点云去畸变 + 降采样 → 滤波链（见下文）→ <code>lasermapFovSegment()</code> 提取局部地图 → <code>calcHModel()</code> 计算观测模型 → EKF 迭代更新 → <code>mapIncremental()</code> 增量更新 ikd-Tree。</p><p><strong>50Hz 独立 odom 发布</strong>：主循环只在收到 LiDAR 帧时触发，但 Nav2 和动作组控制回路需要稳定的 odom 流。为此新增了 <code>odom_timer_</code>（20ms 周期），独立于主循环以 50Hz 持续发布最新的 <code>map → base</code> TF 和 odometry，避免下游控制回路更新频率过低。</p><h4 id="数据预处理链路"><a href="#数据预处理链路" class="headerlink" title="数据预处理链路"></a>数据预处理链路</h4><p>FAST-LIO 的输入数据在到达主循环之前需要经过两个外部节点：</p><pre><code>MID-360 硬件 ──CustomMsg──→ livox_ros_driver2 ──/livox/lidar──→ FAST-LIO                                 └── /livox/imu ──→ mid360_imu_converter ──/imu/data──→ FAST-LIO</code></pre><p><strong>mid360_imu_converter.py</strong>：MID-360 内置 IMU 的加速度输出单位是 <strong>g</strong>（重力加速度），而 FAST-LIO 需要 <strong>m&#x2F;s²</strong>。这个 35 行的节点纯粹做单位转换——订阅 <code>/livox/imu</code>，将 <code>linear_acceleration</code> 三轴分量乘以南京本地重力加速度 <code>G = 9.7949 m/s²</code>，重新发布到 <code>/imu/data</code>。代码中直接修改入参对象以复用内存，避免 200Hz IMU 流产生不必要的分配开销：</p><pre><code class="language-python">def cb(self, msg: Imu):    msg.linear_acceleration.x *= G  # g → m/s²    msg.linear_acceleration.y *= G    msg.linear_acceleration.z *= G    self.pub.publish(msg)</code></pre><h4 id="与原版-MIT-SPARK-的主要差异"><a href="#与原版-MIT-SPARK-的主要差异" class="headerlink" title="与原版 MIT-SPARK 的主要差异"></a>与原版 MIT-SPARK 的主要差异</h4><p><strong>1. Livox MID-360 传感器适配</strong></p><ul><li>预处理新增方向性盲区参数 <code>blind_front</code>（建图 0.85m &#x2F; 定位 0.30m）和 <code>blind_rear</code>（建图 0.35m &#x2F; 定位 0.50m），根据点的 X 坐标方向选择不同盲区距离——前方用小盲区保留障碍物检测，后方用大盲区过滤机器人自身结构</li><li><code>is_from_pilot_zone()</code> 新增 <code>&quot;livox&quot;</code> 模式，过滤动态点云和操作人员干扰（<code>blind_for_human_pilots: 0.45</code>）</li><li>配置 MID-360 专用外参：<code>extrinsic_T = [0.011, 0.02329, -0.04412]</code>（来自 MID-360 用户手册，IMU 相对 LiDAR 光心位置）</li><li>每套 Launch 文件通过 <code>static_transform_publisher</code> 硬编码 MID-360 安装位姿：<ul><li><strong>建图模式</strong>：<code>base → livox_frame</code> 无偏移（x&#x3D;0, z&#x3D;0, pitch&#x3D;0, yaw&#x3D;0），便于直接从地图原点开始建图</li><li><strong>定位&#x2F;里程计模式</strong>：<code>base → livox_frame</code>（x&#x3D;-0.324, z&#x3D;0.324, pitch&#x3D;45°, yaw&#x3D;180°），对应实际安装位姿</li></ul></li></ul><p><strong>2. 先验地图重定位（Loc 模式）</strong></p><p>原版 MIT-SPARK 不具备此功能，在 <code>spark_fast_lio.cpp</code> 的构造函数中实现：</p><ul><li>启动时通过 <code>prior_map_path</code> 加载 PCD 先验地图，经体素降采样（<code>prior_map_voxel: 0.3m</code>）后直接 <code>ikd_tree_.Build()</code> 初始化</li><li><strong>坐标系转换</strong>：PCD 保存在 <code>map</code>（base 世界帧 W_b），而 ICP 匹配的实时点云在 IMU 世界帧 W_i。加载时通过 <code>offset_R_B_I = offset_R_L_I × lidar_R_wrt_base⁻¹</code> 将 PCD 点转换到 W_i 帧，才能与实时扫描正确匹配</li><li><code>/initialpose</code> 回调：将 Nav2 提供的 map 系位姿转换为 IMU 系位姿，膨胀 EKF 协方差（pos&#x3D;0.25m, rot&#x3D;0.1rad），让 ICP 在初始猜测附近收敛</li><li>定位模式下关闭所有非必要发布（<code>scan_publish_en: false</code>, <code>dense_publish_en: false</code>, <code>path_en: false</code>），节省 CPU 和网络带宽</li></ul><p><strong>3. 四种点云滤波器</strong></p><p>原版完全没有这些滤波器，全部为本地新增：</p><table><thead><tr><th>滤波器</th><th>实现方式</th><th>参数</th><th>适用场景</th></tr></thead><tbody><tr><td>动态点滤波</td><td>多帧一致性检测：维护最近 N 帧体素化历史，只保留至少在 K 帧中出现的体素</td><td><code>dyn_filter.{num_frames:5, min_hits:3, voxel_size:0.3}</code></td><td>建图时关闭（低纹理场景会过度删除），导航时可用</td></tr><tr><td>去顶滤波</td><td>Z 轴 PassThrough 滤波，去除 z &gt; 3.0m 的天花板点</td><td><code>ceiling_filter.{enabled:true, max_z:3.0}</code></td><td>室内场地常开</td></tr><tr><td>离群点滤波</td><td>RadiusOutlierRemoval，搜索半径内邻居不足则移除</td><td><code>radius_filter.{enabled:false, radius:0.3, min_neighbors:2}</code></td><td>建图时关闭（稀疏场景易误删），复杂地形可开启</td></tr><tr><td>机器人本体滤波</td><td>在 livox_frame 坐标系中定义盒体，盒内点直接丢弃</td><td><code>robot_body_filter.{x:[-0.75,0.05], y:[-0.30,0.30], z:[-0.32,0.08]}</code></td><td>常开</td></tr></tbody></table><p>滤波调用顺序：<code>机器人本体滤波（body帧）→ 转世界帧 → 去顶 + 离群点滤波 → 动态点滤波 → 加入 ikd-Tree</code></p><p>此外，<code>lidar_body_filter_node.py</code> 还提供了一个独立的 Python ROS2 节点，使用 numpy 向量化在 livox_frame 中做相同的盒式过滤，发布 <code>/livox/lidar_filtered</code> 和 <code>/robot_body_box</code>（RViz Marker 可视化），可独立于 FAST-LIO 运行。</p><p><strong>4. Nav2 集成适配</strong></p><ul><li>Odometry 发布中新增 twist（速度）计算：线速度由位姿差分得到并转换到 base 帧，角速度由四元数差计算——Nav2 的 DWB 规划器依赖 twist 数据</li><li>PCD 保存坐标系改为 base 世界帧（<code>W_b = &quot;map&quot;</code>），与 odometry 发布的 TF 保持一致</li><li>析构函数 flush：Ctrl-C 退出时自动将累积点云写入 PCD，同时修复了原版 <code>interval &lt;= 0</code> 时不累积的 bug</li></ul><p><strong>5. 工程改进</strong></p><ul><li><code>timediff_lidar_wrt_imu</code> 类型从 <code>double</code>（秒）改为 <code>int64_t</code>（纳秒），提高时间同步精度</li><li>IMU 时间戳回环检测增强：回环时重置 <code>kf_for_preintegration_</code> 并禁用时间同步偏移</li><li>支持多帧点云发布：<code>/cloud_registered</code>（世界帧）、<code>/cloud_registered_lidar</code>（livox_frame）、<code>/cloud_registered_body</code>（imu 帧）、<code>/cloud_registered_base</code>（base 帧），方便调试不同坐标系下的点云形态</li><li>通过 <code>pcl_verbose: false</code> 关闭 PCL 控制台输出，减少日志噪音</li></ul><p><strong>6. 配置参数对比</strong></p><table><thead><tr><th>参数</th><th>原版 MIT-SPARK</th><th>本地版本</th><th>说明</th></tr></thead><tbody><tr><td><code>lidar_type</code></td><td>2&#x2F;3&#x2F;4（Velodyne&#x2F;Ouster）</td><td>1（AVIA&#x2F;Livox）</td><td>MID-360 CustomMsg</td></tr><tr><td><code>scan_line</code></td><td>16&#x2F;64</td><td>6</td><td>MID-360 扫描模组数</td></tr><tr><td><code>blind</code></td><td>0.3</td><td>0.4</td><td>近距离噪声适配</td></tr><tr><td><code>blind_front/rear</code></td><td>无</td><td>0.85&#x2F;0.35（建图）</td><td>新增方向性盲区</td></tr><tr><td><code>det_range</code></td><td>300.0</td><td>40.0</td><td>MID-360 量程</td></tr><tr><td><code>extrinsic_T</code></td><td>Velodyne&#x2F;Ouster</td><td>[0.011, 0.02329, -0.04412]</td><td>MID-360 手册值</td></tr><tr><td><code>prior_map_path</code></td><td>无</td><td>有（loc 模式）</td><td>新增先验地图重定位</td></tr><tr><td><code>pcd_save.interval</code></td><td>-1</td><td>100</td><td>修复原版不累积 PCD 的 bug</td></tr><tr><td><code>gravity_alignment</code></td><td>默认开启</td><td>关闭</td><td>否则静止时永远不发 TF</td></tr><tr><td><code>filter_size_map</code></td><td>0.5</td><td>0.3</td><td>更精细的体素分辨率</td></tr></tbody></table><h3 id="omni-chassis-bridge-—-底盘桥接"><a href="#omni-chassis-bridge-—-底盘桥接" class="headerlink" title="omni_chassis_bridge — 底盘桥接"></a>omni_chassis_bridge — 底盘桥接</h3><p>原定功能为将 Nav2 的 <code>/cmd_vel</code>（Twist）转换为 23 字节串口协议帧，发送给 STM32 下位机。后因方案变更，该功能主要为动作组服务。</p><pre><code class="language-python"># 全向映射vx（前后）→ ch1  # 28~228, 中位 128vy（左右）→ ch2  # 28~228, 中位 128ω （旋转）→ ch3  # 11~245, 中位 128</code></pre><p>特性：</p><ul><li>自动检测 <code>/dev/ttyUSB0</code>，不存在则进入模拟模式</li><li>50 Hz 发送频率</li><li>13 字节回传帧解析（帧头 0xAC + 数据 + 帧尾 0xAB）</li><li>调试 UI 已迁移至独立的 PyQt5 进程（见下文 GUI 调试界面）</li></ul><h3 id="registration-—-点云配准与全局重定位"><a href="#registration-—-点云配准与全局重定位" class="headerlink" title="registration — 点云配准与全局重定位"></a>registration — 点云配准与全局重定位</h3><p>包含两个子包：</p><p><strong>KISS-Matcher</strong>：无初值全局粗配准</p><ul><li>FPFH 特征描述子 + TEASER++ 鲁棒估计 + small_gicp 精配准</li><li>支持 C++ 和 Python 绑定（pybind11）</li></ul><p><strong>global_relocalization_kiss_matcher</strong>：ROS2 封装</p><ul><li>累积 FAST-LIO 输出的 <code>/cloud_registered</code> 点云</li><li>与先验 PCD 地图进行全局匹配</li><li>成功后持续发布 <code>map → odom</code> TF</li><li>支持任意位置开机自动定位</li></ul><p>在实际导航中，首先通过 KISS-Matcher 获得一个初始位姿，随后再进行后续导航动作。</p><h3 id="kfs-core-—-KFS-推理核心"><a href="#kfs-core-—-KFS-推理核心" class="headerlink" title="kfs_core — KFS 推理核心"></a>kfs_core — KFS 推理核心</h3><p>C++ 编写的 ROS2 节点，封装 ONNX Runtime + YOLO 检测：</p><pre><code class="language-cpp">// 话题接口// 订阅: ~/enable (Bool)          - 推理使能// 服务: ~/trigger (Trigger)      - 触发单次推理// 发布: ~/result (InferResults)   - 检测结果数组//       ~/debug_image (Image)     - 标注画面</code></pre><p>支持 USB 相机和 RealSense 两种输入，可通过 <code>rqt_reconfigure</code> 动态调节置信度、IOU 阈值等参数。本节点的推理部分由其他队员（<a href="https://github.com/leezoneline">leezoneline</a>）完成，实际运行使用 yolo11s 模型，显存占用不到 1G，在 1650 显卡下性能开销优秀。</p><h3 id="usb-cam-node-—-USB-相机节点"><a href="#usb-cam-node-—-USB-相机节点" class="headerlink" title="usb_cam_node — USB 相机节点"></a>usb_cam_node — USB 相机节点</h3><p>基于 OpenCV V4L2 后端，发布 <code>sensor_msgs/Image</code>：</p><ul><li>自动扫描 <code>/dev/video*</code></li><li>断开后每 2 秒自动重连</li><li>相机不可用时发布黑色测试图以保持话题活跃</li><li>支持 OpenCV 实时预览窗口</li></ul><h2 id="SLAM-与导航"><a href="#SLAM-与导航" class="headerlink" title="SLAM 与导航"></a>SLAM 与导航</h2><h3 id="建图"><a href="#建图" class="headerlink" title="建图"></a>建图</h3><pre><code class="language-bash">python3 launch/start_mid360_fastlio_mapping.py</code></pre><p>流程：<code>MID-360 驱动 → IMU 转换 → FAST-LIO2 建图 → Ctrl-C 导出 PCD → 投影为 2D 占用栅格</code></p><h3 id="导航（两种定位方案）"><a href="#导航（两种定位方案）" class="headerlink" title="导航（两种定位方案）"></a>导航（两种定位方案）</h3><p><strong>方案 A — FAST-LIO 先验地图定位</strong>（固定位置开机，不推荐使用）：</p><pre><code>map ← FAST-LIO(loc) ← base ← livox_frame</code></pre><p>需在 RViz 中手动设置初始位姿，偏差较大。</p><p><strong>方案 B — KISS-Matcher 全局重定位</strong>（推荐，任意位置开机）：</p><pre><code>map ← KISS-Matcher ← odom ← FAST-LIO ← base ← livox_frame</code></pre><p>自动累计点云与先验地图全局匹配，无需手动设置初始位姿，偏差取决于配准算法误差，实际运行中误差极小。</p><h3 id="一键启动脚本"><a href="#一键启动脚本" class="headerlink" title="一键启动脚本"></a>一键启动脚本</h3><table><thead><tr><th>脚本</th><th>功能</th></tr></thead><tbody><tr><td><code>start_mid360_fastlio_mapping.py</code></td><td>建图 + 自动导出 Nav2 地图</td></tr><tr><td><code>start_mid360_fastlio_loc.py</code></td><td>纯定位（不建图）</td></tr><tr><td><code>start_mid360_nav2_loc.py</code></td><td>定位 + 导航全栈（方案 A）</td></tr><tr><td><code>start_mid360_nav2_kiss.py</code></td><td>定位 + 导航全栈（方案 B）+ UI 调试界面</td></tr><tr><td><code>start_mid360_preview.py</code></td><td>点云预览</td></tr></tbody></table><h3 id="Launch-编排系统（Stage-模式）"><a href="#Launch-编排系统（Stage-模式）" class="headerlink" title="Launch 编排系统（Stage 模式）"></a>Launch 编排系统（Stage 模式）</h3><p>所有 <code>start_mid360_*.py</code> 启动脚本共用一套自实现的 <code>Stage</code> 类来编排多进程 ROS2 系统，替代了 ROS2 原生的 <code>launch</code> 文件。核心设计思想是 <strong>分阶段启动 + 话题就绪检查 + 并行启动 + 优雅停止</strong>。</p><p>每个 <code>Stage</code> 封装一个子进程及其就绪条件：</p><pre><code class="language-python">class Stage:    name: str          # 日志标签    cmd: List[str]     # 启动命令    ready: Callable    # 就绪条件函数（如 topic_exists(&#39;/odometry&#39;)）    ready_timeout: float  # 就绪超时（默认 25s）    proc: Popen        # 子进程句柄    log_file: File     # 独立日志文件</code></pre><p><strong>启动流程</strong>（以 <code>start_mid360_nav2_kiss.py</code> 为例）：</p><pre><code>1. cleanup_existing() 并行清理旧进程（pkill 所有已知节点名）2. Group 1 并行启动: driver + chassis（无依赖）3. Group 2: imu-conv（依赖 /livox/imu）4. Group 3: fast-lio-odom（依赖 /imu/data）5. Group 4 并行启动: 其余所有（kfs-infer + debug-executor + debug-ui + rviz + standby-trigger）</code></pre><p>每个 Stage 启动后阻塞等待其就绪条件（通过 <code>ros2 topic info</code> 检查话题存在性或 <code>tf2_echo</code> 检查 TF），超时则抛出异常。无依赖的 Stage 通过 <code>_start_group()</code> 并行启动，减少总启动时间。</p><p><strong>优雅停止</strong>：Ctrl-C 后逆序遍历 <code>stages</code> 列表，先发送 <code>SIGINT</code>（5s 超时），若进程未退出则 <code>SIGKILL</code>。每个 Stage 通过 <code>os.setsid</code> 创建独立进程组，<code>os.killpg()</code> 确保子进程的子进程也被一并杀死。</p><p><strong>日志系统</strong>：每个 Stage 的 stdout&#x2F;stderr 写入独立日志文件（<code>logs/debug_stack/20250101_120000/stage_name.log</code>），同时实时输出到终端（带彩色标签）。所有包含 <code>ERROR</code>、<code>FATAL</code>、<code>TRACEBACK</code> 等关键字的行自动汇总到 <code>_errors.log</code>，方便赛后排查。</p><p><strong>环境变量模块化</strong>：所有模块默认开启，通过环境变量选择性关闭：</p><h3 id="环境变量控制"><a href="#环境变量控制" class="headerlink" title="环境变量控制"></a>环境变量控制</h3><table><thead><tr><th>变量</th><th>默认</th><th>作用</th></tr></thead><tbody><tr><td><code>NO_RVIZ=1</code></td><td>开 RViz</td><td>关闭 RViz</td></tr><tr><td><code>NO_CHASSIS=1</code></td><td>开底盘</td><td>关闭底盘桥接</td></tr><tr><td><code>NO_LOGIC=1</code></td><td>开主逻辑</td><td>关闭航点逻辑</td></tr><tr><td><code>NO_UI=1</code></td><td>开调试 UI</td><td>关闭 PyQt 调试界面</td></tr><tr><td><code>LOGIC_DELAY</code></td><td><code>5.0</code></td><td>主逻辑启动前等待秒数</td></tr></tbody></table><h2 id="串口通信协议"><a href="#串口通信协议" class="headerlink" title="串口通信协议"></a>串口通信协议</h2><p>23 字节定长帧，50 Hz 发送频率：</p><table><thead><tr><th>索引</th><th>含义</th><th>值范围</th></tr></thead><tbody><tr><td>0</td><td>帧头</td><td>保密</td></tr><tr><td>1</td><td>ch1 左右平移</td><td>28~228 &#x2F; 128</td></tr><tr><td>2</td><td>ch2 前后平移</td><td>28~228 &#x2F; 128</td></tr><tr><td>3</td><td>ch3 自转</td><td>11~245 &#x2F; 128</td></tr><tr><td>4</td><td>ch4 抬升&#x2F;机械臂</td><td>0~255 &#x2F; 0</td></tr><tr><td>5</td><td>校验位</td><td>保密</td></tr><tr><td>6-9</td><td>吸盘&#x2F;夹爪&#x2F;灵足</td><td>0&#x2F;1</td></tr><tr><td>14</td><td>校验位</td><td>保密</td></tr><tr><td>15-18</td><td>滑轨&#x2F;幅度&#x2F;视觉切换</td><td>0&#x2F;1</td></tr><tr><td>19</td><td>校验位</td><td>保密</td></tr><tr><td>20-21</td><td>灵足角度</td><td>int16</td></tr><tr><td>22</td><td>2006 电机位置</td><td>0~255</td></tr></tbody></table><h2 id="构建与运行"><a href="#构建与运行" class="headerlink" title="构建与运行"></a>构建与运行</h2><pre><code class="language-bash"># 编译source /opt/ros/jazzy/setup.bashcolcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Releasesource install/setup.bash# 建图python3 launch/start_mid360_fastlio_mapping.py# 导航（方案 B，推荐）python3 launch/start_mid360_nav2_kiss.py# 调试：仅 SLAM + Nav2，不动底盘NO_CHASSIS=1 NO_LOGIC=1 NO_UI=1 python3 launch/start_mid360_nav2_kiss.py</code></pre><h2 id="GUI-调试界面"><a href="#GUI-调试界面" class="headerlink" title="GUI 调试界面"></a>GUI 调试界面</h2><p>基于 PyQt5 的 ROS2 调试界面，采用<strong>三层解耦架构</strong>：</p><pre><code>UI 层（PyQt5 QWidgets）    ↕ Qt 信号/槽ROS2Bridge（QObject）    ↕ rclpy 订阅/发布ROS2 执行层（debug_executor_node）</code></pre><p>核心设计理念是 <strong>UI 与执行层完全解耦</strong>：UI 进程（<code>debug_ui_node.py</code>）只负责显示和发布控制请求，动作组执行由独立的 <code>debug_executor_node.py</code> 完成。即使 UI 卡死，已启动的动作也不会被终止。</p><h3 id="项目结构"><a href="#项目结构" class="headerlink" title="项目结构"></a>项目结构</h3><pre><code>ros2_debug_gui/├── main.py                    # 程序入口├── requirements.txt           # 依赖├── config/│   └── config_manager.py      # 配置管理（JSON 持久化）├── ros_interface/│   └── ros_bridge.py          # ROS2 桥接层（Qt 信号 ↔ ROS2 话题）├── styles/│   └── themes.py              # 主题样式（淡色/深色 + 透明度）└── ui/    ├── main_window.py         # 主窗口（QMainWindow）    └── tabs/        ├── main_tab.py        # 主界面（里程计 + 动作组 + 诊断 + 日志）        ├── test_tab.py        # 测试（开环测试 + PID 调参）        ├── vision_tab.py      # 视觉（实时画面 + 手动控制 + 录制）        ├── motor_tab.py       # 电机（实时力矩/位置曲线）        ├── topics_tab.py      # 话题（话题列表 + 节点关系图）        └── preferences_tab.py # 首选项（主题/背景/透明度/强调色）</code></pre><h3 id="窗口结构"><a href="#窗口结构" class="headerlink" title="窗口结构"></a>窗口结构</h3><pre><code>MainWindow（QMainWindow, 1200×750, 最小 900×600）├── 菜单栏: 文件（退出 Ctrl+Q）/ 视图（首选项 Ctrl+,）/ 帮助（关于）├── QTabWidget（6 个选项卡）│   ├── 主界面（MainTab）      - 动作组 + 里程计 + 诊断 + 日志│   ├── 测试（TestTab）         - 开环测试 + PID 调参 + 机械臂/灵足/2006 控制│   ├── 视觉（VisionTab）       - 实时画面 + 3×3 手动方向控制 + 视觉触发 + 视频录制│   ├── 电机（MotorTab）        - 力矩/位置曲线 + 峰值统计│   ├── 话题（TopicsTab）       - 话题列表 + 节点-话题关系图 + 话题详情│   └── 首选项（PreferencesTab） - 主题/背景/透明度/强调色/背景图片├── 状态栏: &quot;就绪&quot;└── paintEvent: 支持背景图片（可调不透明度）</code></pre><h3 id="选项卡功能详解"><a href="#选项卡功能详解" class="headerlink" title="选项卡功能详解"></a>选项卡功能详解</h3><p><strong>主界面 Tab</strong>（<code>main_tab.py</code>）：水平 QSplitter 分左右两栏，支持拖拽调整大小并自动保存</p><ul><li><strong>左栏</strong>：里程计状态（x&#x2F;y&#x2F;z&#x2F;yaw）+ 里程计归零 + 动作组选择（单选按钮，选中后显示详细步骤描述）+ 执行&#x2F;停止&#x2F;急停按钮</li><li><strong>右栏</strong>：节点诊断面板（节点状态、更新频率、机械臂、灵足、2006 电机、灵足力矩等 9 项，500ms 刷新）+ 实时日志（按级别着色：INFO 蓝 &#x2F; WARN 橙 &#x2F; ERROR 红，带时间戳）</li></ul><p><strong>测试 Tab</strong>：开环测试 + PID 实时调参</p><ul><li><p>开环控制：前进&#x2F;后退&#x2F;左转&#x2F;右转（速度 × 时长）+ 机械臂高度&#x2F;灵足角度&#x2F;2006 电机&#x2F;夹爪&#x2F;吸盘&#x2F;气阀&#x2F;继电器</p></li><li><p>5 组 PID 参数，运行时通过 <code>/debug_ui/open_loop</code> 话题发送 <code>type=set_pid;...</code> 格式化字符串到执行端动态修改：</p><table><thead><tr><th>控制对象</th><th>参数</th><th>默认值</th></tr></thead><tbody><tr><td>机械臂</td><td>KP &#x2F; KD &#x2F; MaxRate &#x2F; RxTol</td><td>80 &#x2F; 1.0 &#x2F; 60 &#x2F; 7</td></tr><tr><td>灵足</td><td>KP &#x2F; KD &#x2F; MaxRate &#x2F; RxTol</td><td>12 &#x2F; 0.5 &#x2F; 120 &#x2F; 0.1</td></tr><tr><td>底盘前进</td><td>KP &#x2F; KD</td><td>1.2 &#x2F; 0.05</td></tr><tr><td>底盘旋转</td><td>KP &#x2F; KD</td><td>2.0 &#x2F; 0.03</td></tr><tr><td>2006 电机</td><td>KP &#x2F; KD &#x2F; MaxRate</td><td>50 &#x2F; 1.0 &#x2F; 100</td></tr></tbody></table><p>“应用 PID” 立即生效，”保存 PID” 持久化到 JSON config。</p></li></ul><p><strong>视觉 Tab</strong>（<code>vision_tab.py</code>）：左侧控制面板 + 右侧实时识别画面</p><ul><li><strong>3×3 手动方向控制</strong>：十字布局（前进 ↑ &#x2F; 后退 ↓ &#x2F; 左移 ← &#x2F; 右移 → &#x2F; 旋左 ↺ &#x2F; 旋右 ↻），使用 <code>HoldButton</code>（按住移动、松开停止），速度 ch 128±80（平移 0.397m&#x2F;s）&#x2F; 128±100（旋转 0.93rad&#x2F;s）</li><li><strong>键盘控制</strong>：WSAD 前后左右 + QE 左右旋转，通过 <code>eventFilter</code> 拦截，支持多键同时按下合并速度</li><li><strong>2006 电机</strong>：步进按钮（±10）</li><li><strong>夹爪切换</strong>：ON&#x2F;OFF 按钮，颜色联动（红色 &#x3D; ON &#x2F; 灰色 &#x3D; OFF）</li><li><strong>视觉识别控制</strong>：<ul><li>KFS 识别 &#x2F; Weapon 识别：独立触发按钮，发布到 <code>/kfs_infer_node/trigger_kfs</code> 和 <code>/kfs_infer_node/trigger_weapon</code></li><li>连续推理：模型选择（KFS &#x2F; Weapon &#x2F; Both）+ 开关按钮，控制 <code>/kfs_infer_node/enable</code> 和 <code>/kfs_infer_node/set_continuous_mode</code></li><li>相机重连：在线程中调用 <code>/kfs_infer_node/reconnect_camera</code> 服务</li></ul></li><li><strong>视频录制</strong>：支持录制原始图像 &#x2F; 识别图像 &#x2F; 同时录制，保存为 mp4（mp4v 编码，30fps），按时间戳命名到 <code>logs/vision_recordings/</code></li></ul><p><strong>电机 Tab</strong>（<code>motor_tab.py</code>）：自绘 <code>CurveCanvas</code>（QPainter + 滑动时间窗口）</p><ul><li>灵足力矩曲线（红色，-2~10 N·m，仅 |力矩| ≥ 2 时绘制）</li><li>位置数据曲线（可选灵足角度&#x2F;机械臂&#x2F;2006 电机），最多 5000 点滑动窗口</li><li>峰值统计：力矩 &gt; 4N 时记录，显示最近 10 秒峰值</li></ul><p><strong>话题 Tab</strong>：话题列表 + 节点-话题关系图（QGraphicsView 绘制，支持拖拽平移 + Ctrl+滚轮缩放）+ 话题详情（类型&#x2F;频率&#x2F;发布者&#x2F;订阅者）</p><p><strong>首选项 Tab</strong>：淡色&#x2F;深色主题（<code>themes.py</code> 中的 <code>ThemeManager</code>，使用 rgba 透明度实现亚克力效果）、自定义背景颜色&#x2F;图片（支持不透明度调节）、强调色、UI 透明度。设置自动保存到 <code>~/.ros2_debug_gui/config.json</code>，下次启动恢复。</p><h3 id="ROS2-桥接层"><a href="#ROS2-桥接层" class="headerlink" title="ROS2 桥接层"></a>ROS2 桥接层</h3><p><code>ros_bridge.py</code> 中的 <code>ROS2Bridge(QObject)</code> 是实现 UI 与 ROS2 解耦的关键，通过 Qt 信号与 UI 通信保证线程安全。</p><p><strong>发布话题</strong>（UI → 执行端）：</p><table><thead><tr><th>话题</th><th>类型</th><th>用途</th></tr></thead><tbody><tr><td><code>/debug_ui/trigger</code></td><td>String</td><td>触发动作组（内容为动作组名或 “stop”）</td></tr><tr><td><code>/debug_ui/open_loop</code></td><td>String</td><td>开环&#x2F;PID&#x2F;手动&#x2F;夹爪指令（<code>type=xxx;value=xxx;duration=xxx</code>）</td></tr><tr><td><code>/cmd_vel_smoothed</code></td><td>Twist</td><td>底盘速度（BEST_EFFORT, depth&#x3D;1）</td></tr><tr><td><code>/chassis/aux</code></td><td>UInt8MultiArray</td><td>辅助通道 [arm, foot_hi, foot_lo, m2006, gripper, relay]</td></tr><tr><td><code>/kfs_infer_node/trigger_kfs</code></td><td>Bool</td><td>单次 KFS 推理</td></tr><tr><td><code>/kfs_infer_node/trigger_weapon</code></td><td>Bool</td><td>单次 Weaponhead 推理</td></tr><tr><td><code>/kfs_infer_node/enable</code></td><td>Bool</td><td>连续推理开关</td></tr><tr><td><code>/kfs_infer_node/set_continuous_mode</code></td><td>String</td><td>连续推理模型选择（kfs&#x2F;weapon&#x2F;both）</td></tr><tr><td><code>/initialpose</code></td><td>PoseWithCovarianceStamped</td><td>触发 KISS-Matcher 全局重定位</td></tr></tbody></table><p><strong>订阅话题</strong>（执行端 → UI）：</p><table><thead><tr><th>话题</th><th>信号</th><th>用途</th></tr></thead><tbody><tr><td><code>/odometry</code></td><td><code>odom_signal(x, y, z, yaw)</code></td><td>位姿反馈（支持显示归零偏移）</td></tr><tr><td><code>/debug_executor/status</code></td><td><code>diagnostic_signal(dict)</code></td><td>执行端诊断（忙碌&#x2F;空闲&#x2F;进度&#x2F;桥接状态）</td></tr><tr><td><code>/chassis/status</code></td><td>内部状态</td><td>桥接状态（real&#x2F;sim）</td></tr><tr><td><code>/standby_trigger/status</code></td><td><code>standby_signal(dict)</code></td><td>待命状态（phase&#x2F;remaining&#x2F;action&#x2F;team&#x2F;switches）</td></tr><tr><td><code>/kfs_infer_node/debug_image</code></td><td><code>image_signal(cv_img)</code></td><td>识别标注画面（cv_bridge 转换）</td></tr><tr><td><code>/kfs_infer_node/raw_image</code></td><td><code>raw_image_signal(cv_img)</code></td><td>原始画面（用于视频录制）</td></tr></tbody></table><h3 id="通信机制"><a href="#通信机制" class="headerlink" title="通信机制"></a>通信机制</h3><ol><li><code>connect_ros()</code> 创建独立 ROS2 节点 <code>debug_gui_client_{pid}</code>，启动 daemon 线程循环执行 <code>rclpy.spin_once()</code></li><li>ROS2 回调通过 <code>pyqtSignal.emit()</code> 将数据传到 UI 线程，保证线程安全</li><li>两个 QTimer 定时刷新：话题列表（1000ms）+ 诊断信息（500ms）</li><li><code>rclpy</code> 导入失败时自动进入模拟模式：用 QTimer 模拟里程计数据、话题列表和节点图</li><li>断开时严格按顺序清理：停止所有 QTimer → 等待 spin 线程退出 → 发布零速停止 → 销毁节点 → shutdown rclpy</li></ol><h3 id="动作组系统"><a href="#动作组系统" class="headerlink" title="动作组系统"></a>动作组系统</h3><p><code>action_groups.py</code> 定义了 14 个预设动作组，UI 和执行层共用此文件，避免界面描述与实际动作不同步。每个动作组是步骤序列，支持子动作组嵌套（通过 <code>action_group</code> 步骤类型引用其他动作组）。</p><table><thead><tr><th>动作组</th><th>关键流程</th></tr></thead><tbody><tr><td>红方启动</td><td>纠正前进 → 左转 90° + 机械臂 100 + 灵足 178° → 纠正到 (0.18, 0.75, 90°) → 视觉夹取 → 对接准备 → 捡取下一组</td></tr><tr><td>蓝方启动</td><td>纠正前进 → 右转 90° + 机械臂 100 + 灵足 178° → 纠正到 (0.4, -0.9, -90°) → 视觉夹取 → 对接准备 → 捡取下一组 → 蓝方梅林准备识别</td></tr><tr><td>对接准备</td><td>夹爪关闭 → 后退 65cm → 旋转 180° + 灵足 180° → 机械臂 85→72 → 灵足 255° + 夹爪闭合 → 等待力矩 &gt; 6.5N → 松开</td></tr><tr><td>视觉夹取</td><td>2006 视觉对准（12px 容差，增益 0.5，连续 2 帧）→ 机械臂降 5 → 夹爪闭合 → 机械臂升 30</td></tr><tr><td>捡取下一组</td><td>左转 180° + 灵足 178° → 左移 20cm → 前进 65cm → 开环前进 2s → 视觉夹取 → 对接准备</td></tr><tr><td>归零</td><td>机械臂 → 60 → 气阀关 → 灵足 → 275° → 机械臂 → 0（跳过互锁）→ 2006 → 0</td></tr><tr><td>蓝方梅林准备</td><td>纠正到 (2m, 0.45m, 0°) → 机械臂 → 110 + 灵足 → 200° + 2006 → 128</td></tr><tr><td>蓝方梅林准备识别</td><td>识别姿态 → KFS 扫描 1s → 若 T 则拿取（臂 → 80 + 足 → 90° → 吸盘气阀 → 继电器 → 前进堵转）</td></tr><tr><td>红方梅林准备</td><td>纠正到 (2m, -0.45m, 0°) → 机械臂 → 110 + 灵足 → 200° + 2006 → 128</td></tr><tr><td>红方梅林准备识别</td><td>同蓝方对称，识别姿态 → KFS 扫描 → 若 T 则拿取</td></tr><tr><td>红方上梅林</td><td>2006 中位 → 横移堵转到边缘 → 机械臂 40 + 灵足 180 + 归零 → 前进直到上坡（Z + 10cm）</td></tr><tr><td>蓝方上梅林</td><td>同红方对称，横移方向相反（ch&#x3D;178）</td></tr><tr><td>上梅林</td><td>通用版：2006 中位 → 机械臂 40 + 灵足 180 + 归零 → 前进直到上坡</td></tr><tr><td>下梅林</td><td>以 ch&#x3D;103 后退，直到 Z 下降 ≥ 10cm 且车身水平</td></tr><tr><td>前进下梅林</td><td>以 ch&#x3D;143 前进，直到 Z 下降 ≥ 10cm 且车身水平</td></tr><tr><td>高 200KFS 获取</td><td>机械臂 120→110 + 灵足 200 + 2006→128 → KFS 扫描 → 若 T 则前进堵转 + 臂 180 + 吸盘气阀 + 降臂至力矩 0.7N·m + 抬升返回</td></tr><tr><td>拿取高 200KFS</td><td>前进 0.6m → 继电器伸长 → 前进堵转 → 臂 180 + 2006 中位 → 降臂至力矩 → 吸盘气阀 → 臂 200 + 足 270 → 臂归零 → 返回</td></tr><tr><td>识别高 200KFS</td><td>机械臂 → 120→110 + 灵足 200 + 2006→128 → KFS 扫描 1s</td></tr><tr><td>识别低 200KFS</td><td>机械臂 → 120 → 继电器伸长 → 机械臂 → 110 + 灵足 130 + 2006→128 → KFS 扫描 1s</td></tr><tr><td>武器对接测试</td><td>机械臂 85→62 → 灵足 255° + 夹爪闭合 → 等待力矩 &gt; 6.5N 后回落 → 松开夹爪</td></tr><tr><td>蓝方动作组</td><td>全流程组合：蓝方启动 → 视觉夹取 → 对接准备 → 梅林准备 → 识别（含横向移动 2.4m + 二次识别）</td></tr></tbody></table><p><strong>红蓝方对称设计</strong>：红方和蓝方的启动动作、梅林准备、上梅林等动作组通过镜像坐标和方向实现对称场地适应（红方目标 <code>(0.18, 0.75, 90°)</code> vs 蓝方 <code>(0.40, -0.90, -90°)</code>，上梅林横移方向相反）。</p><p>支持的步骤类型（共 18 种）：</p><table><thead><tr><th>步骤类型</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>forward/backward/strafe</code></td><td>PID 控制平移（距离 + 容差 + 超时）</td><td><code>{&#39;forward&#39;: 0.65, &#39;desc&#39;: &#39;前进 0.65m&#39;}</code></td></tr><tr><td><code>left/right</code></td><td>PID 控制旋转（角度 + 容差），支持并行机械臂&#x2F;灵足</td><td><code>{&#39;left&#39;: 180.0, &#39;arm&#39;: 100, &#39;foot_angle&#39;: 178.0}</code></td></tr><tr><td><code>arm</code></td><td>机械臂位置控制（支持串口反馈容差、慢速模式、互锁跳过）</td><td><code>{&#39;arm&#39;: 85, &#39;use_rx_feedback&#39;: True, &#39;arm_slow&#39;: True}</code></td></tr><tr><td><code>arm_delta</code></td><td>机械臂相对位移</td><td><code>{&#39;arm_delta&#39;: 40, &#39;desc&#39;: &#39;抬升 40&#39;}</code></td></tr><tr><td><code>foot_angle</code></td><td>灵足角度控制（支持串口反馈校正）</td><td><code>{&#39;foot_angle&#39;: 255.0, &#39;use_rx_feedback&#39;: True}</code></td></tr><tr><td><code>m2006_pos</code></td><td>2006 电机位置控制</td><td><code>{&#39;m2006_pos&#39;: 128, &#39;use_rx_feedback&#39;: True}</code></td></tr><tr><td><code>open_forward</code></td><td>开环前进（通道值 + 时长）</td><td><code>{&#39;open_forward&#39;: 148, &#39;open_duration&#39;: 2.0}</code></td></tr><tr><td><code>correct_pose</code></td><td>全向 PID 位置纠正（支持相对&#x2F;绝对模式、禁止后退）</td><td><code>{&#39;correct_pose&#39;: True, &#39;target_x&#39;: 2.0, &#39;target_yaw&#39;: 0.0}</code></td></tr><tr><td><code>forward_until_level</code></td><td>前进直到上坡（Z 上升检测 + pitch&#x2F;roll 水平判断）</td><td><code>{&#39;forward_until_level&#39;: True, &#39;z_thresh&#39;: 0.10}</code></td></tr><tr><td><code>backward_until_level</code></td><td>后退直到下坡</td><td><code>{&#39;backward_until_level&#39;: True, &#39;ch_val&#39;: 103}</code></td></tr><tr><td><code>forward_until_stall</code></td><td>前进直到堵转（位移停滞检测 + 俯仰保护）</td><td><code>{&#39;forward_until_stall&#39;: True, &#39;ch_val&#39;: 148, &#39;stall_time&#39;: 2.0}</code></td></tr><tr><td><code>strafe_until_stall</code></td><td>横移直到堵转（顶到边缘检测，限制最大距离）</td><td><code>{&#39;strafe_until_stall&#39;: True, &#39;ch_val&#39;: 108, &#39;max_dist&#39;: 3.0}</code></td></tr><tr><td><code>wait_torque_drop</code></td><td>力矩对接检测（等待力矩超过阈值后回落）</td><td><code>{&#39;wait_torque_drop&#39;: True, &#39;torque_high&#39;: 6.5}</code></td></tr><tr><td><code>arm_lower_until_torque</code></td><td>机械臂下降直到灵足力矩达标（接触桌面检测）</td><td><code>{&#39;arm_lower_until_torque&#39;: 0.3, &#39;rate&#39;: 10.0}</code></td></tr><tr><td><code>align_2006</code></td><td>视觉对齐：2006 电机对准目标中心（连续 n 帧稳定）</td><td><code>{&#39;align_2006&#39;: True, &#39;align_tol_px&#39;: 12, &#39;align_gain&#39;: 0.5}</code></td></tr><tr><td><code>kfs_scan</code></td><td>KFS 识别扫描（采集标签）</td><td><code>{&#39;kfs_scan&#39;: True, &#39;duration&#39;: 1.0}</code></td></tr><tr><td><code>skip_if_label_not</code></td><td>条件跳过：KFS 结果不匹配则跳过后续步骤</td><td><code>{&#39;skip_if_label_not&#39;: &#39;T&#39;}</code></td></tr><tr><td><code>gripper/suction/valve/relay</code></td><td>夹爪&#x2F;吸盘&#x2F;气阀&#x2F;继电器控制</td><td><code>{&#39;gripper&#39;: 1, &#39;suction&#39;: 1, &#39;valve&#39;: 1}</code></td></tr><tr><td><code>wait</code></td><td>等待指定秒数</td><td><code>{&#39;wait&#39;: 0.3}</code></td></tr><tr><td><code>action_group</code></td><td>子动作组嵌套调用</td><td><code>{&#39;action_group&#39;: &#39;对接准备&#39;}</code></td></tr></tbody></table><h3 id="执行层"><a href="#执行层" class="headerlink" title="执行层"></a>执行层</h3><p><code>debug_executor_node.py</code> 中的 <code>ControlNode</code> 类：</p><ul><li><strong>50Hz 控制回路</strong>（<code>_loop</code> timer），按步骤顺序执行动作组</li><li><strong>PID 控制系统</strong>：底盘前进&#x2F;旋转（带累积 yaw 跟踪解决 ±π 翻转问题）、机械臂（支持慢速模式 + 互锁保护）、灵足角度、2006 电机</li><li><strong>底盘死区补偿</strong>：<code>MIN_LIN_CH=15</code>（0.034m&#x2F;s）、<code>MIN_ANG_CH=15</code>（0.045rad&#x2F;s），末端蹭进模式（误差 &lt; 3×TOL 时以恒定最低速度推进）</li><li><strong>串口回传反馈</strong>（<code>/chassis/rx</code>）：抬升高度、灵足真实角度、灵足力矩、2006 电机位置，用作闭环容差判断</li><li><strong>视觉反馈</strong>：订阅 <code>/kfs_infer_node/result</code>（InferResults），<code>align_2006</code> 步骤通过检测框中心像素误差驱动 2006 电机</li><li><strong>桥接失联保护</strong>：<code>/chassis/status</code> 使用独立 ReentrantCallbackGroup + MultiThreadedExecutor，避免串口阻塞反向波及 ROS spin 线程</li><li><strong>诊断发布</strong>：200ms 周期发布 <code>/debug_executor/status</code>（含 busy&#x2F;progress&#x2F;desc&#x2F;bridge&#x2F;rx_lift&#x2F;rx_m2006&#x2F;rx_foot&#x2F;rx_torque 等字段）</li><li><strong>外部触发接口</strong>：<code>/debug_ui/trigger</code>（String）+ <code>/debug_ui/open_loop</code>（String），允许任意外部节点控制</li></ul><h3 id="互锁保护"><a href="#互锁保护" class="headerlink" title="互锁保护"></a>互锁保护</h3><ul><li>机械臂下降到 &lt; 45 时，灵足必须 &lt; 215°</li><li>灵足旋转时，机械臂必须 ≥ 35</li></ul><h3 id="待命触发节点"><a href="#待命触发节点" class="headerlink" title="待命触发节点"></a>待命触发节点</h3><p><code>standby_trigger_node.py</code> 是比赛中的”最后一公里”——它连接了下位机遥控器与上位机自动执行，让操作手无需触碰电脑即可触发动作组。</p><p><strong>工作原理</strong>：监控 STM32 回传帧 <code>/chassis/rx</code> 中的三个预留位，检测边沿变化：</p><table><thead><tr><th>预留位</th><th>索引</th><th>功能</th></tr></thead><tbody><tr><td>预留位 1</td><td><code>raw[3]</code></td><td>触发启动：0→1 边沿触发倒计时（3s），结束后自动执行动作组</td></tr><tr><td>预留位 2</td><td><code>raw[4]</code></td><td>动作组选择：0 &#x3D; 红&#x2F;蓝方启动动作，1 &#x3D; 上梅林（红方&#x2F;蓝方自动适配）</td></tr><tr><td>预留位 3</td><td><code>raw[5]</code></td><td>暂停&#x2F;恢复：0→1 暂停当前动作，1→0 归零恢复初始状态</td></tr></tbody></table><p>阵营识别通过 <code>raw[2]</code>（0&#x3D;红方, 1&#x3D;蓝方）自动适配。</p><p><strong>倒计时与状态发布</strong>：10Hz timer（<code>_tick</code>）实时计算剩余时间，通过 <code>/standby_trigger/status</code> 发布给 UI 显示倒计时进度。倒计时期间若预留位 1 变回 0 则取消。倒计时归零后通过 <code>/debug_ui/trigger</code> 发布动作组名到执行层，与 UI 手动触发走完全相同的通道。</p><p><strong>对外接口</strong>：</p><table><thead><tr><th>话题</th><th>方向</th><th>用途</th></tr></thead><tbody><tr><td><code>/chassis/rx</code></td><td>订阅</td><td>下位机回传帧（UInt8MultiArray）</td></tr><tr><td><code>/standby_trigger/status</code></td><td>发布</td><td>倒计时状态（phase&#x2F;remaining&#x2F;action&#x2F;team&#x2F;switches）</td></tr><tr><td><code>/debug_ui/trigger</code></td><td>发布</td><td>触发动作组（String，复用 UI 的执行通道）</td></tr></tbody></table><p>这个节点在比赛中的实际意义是：操作手通过遥控器拨动开关即可触发完整的自动流程（启动 → 视觉夹取 → 对接准备 → 梅林识别），无需触碰电脑，大幅降低了操作复杂度。节点独立于 UI 运行，即使 PyQt 界面未启动也能正常工作。不过得益于传奇机械组减重能力，我最终还是用了一台 MacBook neo 运行 VNC 控制 R2 启动。这也导致我并没有写任何手动梅林方案</p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2026/08/01/robocon2026R2/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2026/08/01/robocon2026R2/"/>
    <published>2026-07-31T16:03:12.000Z</published>
    <summary>CURC-Robocon2026 &quot;功夫探秘&quot; R2算法组代码架构解析，涵盖 ROS2 功能包、SLAM 导航、视觉检测、串口通信协议等；本文在 agent 辅助下完成。</summary>
    <title>CURC-ROBOCON2026 R2代码</title>
    <updated>2026-08-20T08:41:01.019Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="tutorial" scheme="http://www.akatsuki-kaze.com.cn/tags/tutorial/"/>
    <content>
      <![CDATA[<h1 id="如何迅速，方便的使用和训练YOLO"><a href="#如何迅速，方便的使用和训练YOLO" class="headerlink" title="如何迅速，方便的使用和训练YOLO"></a>如何迅速，方便的使用和训练YOLO</h1><h2 id="YOLO是什么"><a href="#YOLO是什么" class="headerlink" title="YOLO是什么"></a>YOLO是什么</h2><p>&emsp;&emsp;YOLO意思为“you only look once”，是一种经典的深度学习神经网络视觉识别算法。目前YOLO主要是ultralytics公司在维护，这个公司也为整个系列后续代码更新提供了不晓得进步。接下来少废话直接进训练。</p><h2 id="YOLO的版本"><a href="#YOLO的版本" class="headerlink" title="YOLO的版本"></a>YOLO的版本</h2><p>&emsp;&emsp;目前可以看到，yolo已经更新到了26版本。但是不同版本的yolo之间有少许差异，以下只列举部分版本：</p><ul><li>yolov5：这是最经典，最多人使用的yolo版本。并且需求的算力也比较低。但是各类模型精度普遍比后续新模型要低一些。其中yolov5-6.0是早已经停止维护的旧版本仓库，新版已经迁移到ultralytics仓库。</li><li>yolov8：v5后的又一个经典，在识别速度，精度上有不少进步。</li><li>yolo11：作为v8的迭代版本，代码差异与v8很小，性能略微提升。</li><li>yolo12：官方：“我们不建议在任何场景使用”,我尝试训练发现不仅非常吃算力而且时长超级久，遂放弃。</li><li>yolo13：清华提出的模型，目前我还未做验证.</li><li>yolo26：新推出的针对端到端场景的优化推理速度的模型</li></ul><h2 id="如何使用yolo仓库"><a href="#如何使用yolo仓库" class="headerlink" title="如何使用yolo仓库"></a>如何使用yolo仓库</h2><p>首先在<a href="https://docs.ultralytics.com/zh/">ultralytics官方网站</a>中点击快速入门，接下来对着pip安装即可，这会自动安装所需的依赖，并且建议自行重新检查torch版本是否符合要求。<br>接下来前往ultralytics的git仓库，将main分支下载到本地，接着打开本地目录，放下自己的训练脚本，我个人的脚本是</p><pre><code># -*- coding: utf-8 -*-import warningswarnings.filterwarnings(&#39;ignore&#39;)from ultralytics import YOLOif __name__ == &#39;__main__&#39;:    # model.load(&#39;yolo11n.pt&#39;) # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升    model = YOLO(model=r&#39;F:\ultralytics-R2\ultralytics\cfg\models\26\yolo26s.yaml&#39;)    model.train(data=r&#39;train.yaml&#39;,                imgsz=640,                epochs=300,#训练轮数                batch=64,#一次训练张数                degrees=180, # 在指定的角度范围内随机旋转图像，提高模型识别各种方向物体的能力。                mixup = 1, # 混合两个图像及其标签，创建一个合成图像。通过引入标签噪声和视觉变化，增强模型的泛化能力。                workers=0,                device=&#39;0&#39;,                optimizer=&#39;SGD&#39;,                close_mosaic=10,                resume=False,                project=&#39;runs/train&#39;,                name=&#39;exp&#39;,                single_cls=False,                cache=False,                )</code></pre><p>其中所有的相关参数均在<a href="https://docs.ultralytics.com/zh/usage/cfg/#modes">这篇ultralytics官方文章</a>的训练设置中提到，可以自行添加。<br>添加完成后，直接命令行<code>python train.py</code>即可开始训练。</p><h2 id="pytorch调用"><a href="#pytorch调用" class="headerlink" title="pytorch调用"></a>pytorch调用</h2><p>python作为轮椅一般的语言，虽然其运行效率十分堪忧，但是在易用性和快速原型验证上仍然有不错的表现。因此训练完的模型先用pytorch跑一次验证确实是不错的方案。<br>这里引用我开源代码节选：</p><pre><code>    # 推理参数    predict_config = {        &#39;conf_thres&#39;: 0.6,        &#39;iou_thres&#39;: 0.2,        &#39;imgsz&#39;: 640,        &#39;line_width&#39;: 2,        &#39;device&#39;: &#39;cuda:0&#39; if torch.cuda.is_available() else &#39;cpu&#39;    }    # 加载 YOLO 模型    model = YOLO(model_config[&#39;model_path&#39;]).to(predict_config[&#39;device&#39;])    # 读取摄像头的帧    frame1 = rgb.copy()    # 使用 YOLO 模型进行推理,并传入置信度和 IoU 阈值    results1 = model(frame1, conf=0.5, iou=0.7)    detect_len = len(results1[0].boxes)  #获取检测结果的长度    # 获取检测结果的坐标并绘制检测框        boxes1 = []    if detect_len != 0:        for r in results1:            for box in r.boxes:                xyxy = box.xyxy[0].cpu().numpy().astype(int)                boxes1.append(xyxy)                cv2.rectangle(frame1, (xyxy[0], xyxy[1]), (xyxy[2], xyxy[3]), (0, 255, 0), 2)                center1 = np.array([x_center1, y_center1])    else:        print(&quot;未检测到目标&quot;)</code></pre><p>其中model_config参数为自定义参数，会自动选择cuda或者cpu推理（前提是正确安装cuda，具体可以参考本站的cuda安装）。 </p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/12/24/yolo-starter/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/12/24/yolo-starter/"/>
    <published>2025-12-24T13:34:09.000Z</published>
    <summary>喜闻乐见的随处可见的yolo python入门文档</summary>
    <title>yolo-starter</title>
    <updated>2026-08-20T08:41:01.026Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="tutorial" scheme="http://www.akatsuki-kaze.com.cn/tags/tutorial/"/>
    <content>
      <![CDATA[<h1 id="基于拓竹打印机的3D打印教程"><a href="#基于拓竹打印机的3D打印教程" class="headerlink" title="基于拓竹打印机的3D打印教程"></a>基于拓竹打印机的3D打印教程</h1><h2 id="序言"><a href="#序言" class="headerlink" title="序言"></a>序言</h2><p>&emsp;&emsp;起因是想给小登做个ppt讲解关于3D打印背后的原理，但是发现对于大部分人而言光是了解打印机就已经够费劲心思了，更别提对于其原理和维护的深入。因此我决定写下这篇文章，以个人理解方式写下一些3D打印技术的原理和打印机的维护。Let’s start it.</p><h2 id="增材制造"><a href="#增材制造" class="headerlink" title="增材制造"></a>增材制造</h2><p>&emsp;&emsp;在现代制造中，常见的有3种制造方式，一种是等材制造，它主要依赖于铸造、锻造等工艺，将原材料通过模具或其他工具塑造成所需的形状。在这个过程中，材料的总量是几乎不变的（理想状况下，因为损耗总是会有）。就像橡皮泥一样捏成需要的形状。第二种则是从古至今都很重要的减材制造，顾名思义，就是将耗材切削等方式减去特定量的耗材实现的制造方式。最常见的就是CNC，以及各种切割方式，只要从原料到成品有损耗则可以视为减材制造。<br>&emsp;&emsp;而我们最主要讨论的，则是近些年随着3D打印技术蓬勃发展的增材制造技术。3D打印技术目前在民间比较常用的有熔融沉积（FDM）、光固化（SLA）、尼龙烧结，金属烧结等工艺。本文将仅针对FDM做出解析。<br>&emsp;&emsp;要理解FDM是怎么工作的，只需要了解一个最基本的概念——顾名思义，熔融沉积就是将塑料热熔后一点一点的涂在上一层塑料上。<br><img src="/images/3D-print/print.png" alt="123"><br>(灵魂画手抽象之作)<br>&emsp;&emsp;因此会带来一些诸如材料输入流量，喷嘴温度，冷却风扇温度等问题，后续章节我们会逐步揭晓。</p><h2 id="现代3D打印机"><a href="#现代3D打印机" class="headerlink" title="现代3D打印机"></a>现代3D打印机</h2><p>&emsp;&emsp;现代的3D打印机较为常见的有2种结构，CoreXY和Prusa i3。而三角洲（Delta）结构打印机曾经是高速打印的代表，如今已经逐渐淡出桌面级打印机视野。CoreXY与i3结构的区别非常显著：最直接的判断方式便是看结构，i3打印机类似于龙门架，而CoreXY则是比较明显的箱式结构。<br><img src="/images/3D-print/i3.jpeg" alt="123"><br>(i3常见结构)<br><img src="/images/3D-print/cxy1.webp" alt="234"><br><img src="/images/3D-print/cxy2.png" alt="234"><br>(cxy结构)<br>&emsp;&emsp;而Ultimaker，Hbot等结构相对于cxy和i3而言，在目前的3d打印市场没有那么受欢迎（仅以销量和热度而言），因此也不做解析。</p><p>&emsp;&emsp;现代3D打印机常见的品牌比以前多了很多，笔者在初中时期（2019年）还是以自组机为主，而24年则选择了方便快捷的成品机。目前市面上较为常见的FDM打印机品牌例如拓竹，创想三维，爱乐酷等都有较好的性能。不过若是经济有限则自组也可以选择i3等开源资料丰富的结构。</p><h2 id="3D打印准备"><a href="#3D打印准备" class="headerlink" title="3D打印准备"></a>3D打印准备</h2><p>&emsp;&emsp;在拿到一台3d打印机后，首先我们先从机器的准备开始。一台打印机有热床，喷嘴等零件，i3打印机则是以热床，喷头的xy轴皮带，光轴为主要零件；而CoreXY则是一整根XY皮带绕组，XY轴光轴为主要零件。二者的共同点则是z轴主要为步进电机带动丝杆做出的抬升，可以保证极高的精度。<br>&emsp;&emsp;开始打印前，需要先确认耗材类型，在下一小结会讲到。确认好耗材后，通过打印机自带的进料功能挂载耗材丝。输入耗材丝后，检查打印板表面是否有残留耗材或异物，可快拆打印板检查是否安装到位，随后就可以开始打印了，这部分不做过多赘述。</p><h2 id="耗材丝种类有什么"><a href="#耗材丝种类有什么" class="headerlink" title="耗材丝种类有什么"></a>耗材丝种类有什么</h2><p>&emsp;&emsp;目前的桌面级耗材可谓是五花八门，粗略分类则可以分为容易打印的普通耗材和性能优异的工程耗材。工程耗材需要极高的打印要求，但是带来的收益也比常规耗材高很多。目前常见的耗材有PETG，PLA。</p><ul><li>PLA作为早期沿用到现在的传统耗材，打印简单，过程毒性较小，气味香甜（？），同时也是食品级材料。但是其缺点也显而易见，就是作为有机耗材，会在紫外线下发生严重的光解，具体表现为变脆，无法使用。</li><li>PETG是相对新兴的耗材，密度与PLA相近（都是1.2），缺点则是容易受潮，但是烘干后可以恢复。PETG相对PLA在熔融状态下更为粘稠，因此容易糊嘴，会导致一系列打印失败问题。但是在一些稳定的机器上通常不会发生，不过建议时刻关注PETG耗材打印状态。</li><li>ABS作为较为早期的工程材料，打印需要较高的环境温度，因此建议使用带封箱的机器打印。ABS有独特的臭味，对身体危害较大，必须放置在通风环境。但是ABS强度也显著高于PLA，因此在早期也是较为高级的耗材。</li><li>PC，一款高强度的工程材料，极易吸水受潮。价格较贵</li><li>尼龙，极易吸水受潮，但是耐温和强度极高，机械性能也十分优秀。</li><li>PPA,一款高强度耗材，其碳纤维耗材作为打印耗材中顶尖的性能的存在，拥有几乎完美的性能，接近低碳钢的强度。</li><li>CF类耗材，是普通耗材加了一定含量的短碳纤维。5%含量可以改善材料表面质感，15%含量可以对刚度拥有较高的改善，同时PPA-CF和PA6-CF作为顶级工程材料其性能也是极高的。但是是否使用CF以及GF耗材请慎重考虑。</li></ul><h2 id="耗材丝会过期吗"><a href="#耗材丝会过期吗" class="headerlink" title="耗材丝会过期吗"></a>耗材丝会过期吗</h2><p>&emsp;&emsp;很显然FDM 3D打印耗材基本上是塑料，并不会存在过期一说。但是PLA耗材以及会受潮的耗材确实对存放条件有严格要求。正如前文所说，PLA在光解后几乎无法使用，因此严格要求干燥阴凉处存放。光解的表现则是耗材变脆，一扯就碎。<br>&emsp;&emsp;PETG等耗材则是及其容易吸水受潮，尤其是南方。FDM 3D打印是将耗材热熔后从喷嘴挤出，因此材料的粘稠程度会导致有耗材残留在喷嘴处溢出。耗材受潮后会加重粘稠程度，导致打印质量变差甚至失败。而受潮严重的耗材甚至会在加热时产生气泡，导致打印表面十分粗糙并且大幅增加打印失败风险。</p><h2 id="打印首层"><a href="#打印首层" class="headerlink" title="打印首层"></a>打印首层</h2><p>&emsp;&emsp;如前文所说，FDM打印是将耗材一层一层堆叠上去。因此耗材和打印板的接触十分重要。打印首层时，若挤出不足或打印板不干净都会造成打印可能失败。<br>&emsp;&emsp;耗材在热熔后也会受到热胀冷缩影响，因此打印上层时若首层与打印板接触不牢则很容易会被上层扯起来，造成翘边问题。若发生翘边问题，打印平面将会有不同程度变形，轻则打印误差增大,重则撞坏喷嘴造成长时间的打印机停摆。<br><img src="/images/3D-print/print_fail2.jpg" alt="114"><br>打印件翘边<br><img src="/images/3D-print/print_fail1.jpg" alt="114"><br>打印板被带起<br>（图源<a href="https://space.bilibili.com/2078042?spm_id_from=333.337.0.0">Evan76</a>）<br><video src="images/3D-print/print.mp4" autoplay="false" controls="controls" width="720" height="1280"></video><br>&emsp;&emsp;若发生翘边，还是尽快停止打印并且检查参数为上。<br>&emsp;&emsp;发现翘边现象，首先检查底板温度——这是最容易排查的参数之一。底板温度不够也会导致容易产生翘边现象。对于冬天，PLA建议75度，PETG建议85度热床。若打印仍然不理想，则可以考虑封箱或使用专用胶水进行处理。</p><h2 id="打印墙，填充"><a href="#打印墙，填充" class="headerlink" title="打印墙，填充"></a>打印墙，填充</h2><p>&emsp;&emsp;3D打印的时，我们能发现打印零件并非实心。一方面是因为实心太过于消耗材料，另一方面是因为实心对于强度并没有甚至是有反向提升。<br>&emsp;&emsp;打印件在一层的剖面结构，大致可以分成内墙，外墙，填充<br>&emsp;&emsp;外墙是影响打印件观感的第一因素，而内墙质量则会间接影响外墙。事实上，打印速度，耗材类型，喷嘴温度，流量等因素都会直接导致外墙的质量。而在薄壁打印件中由于内墙只有一层，因此稀疏填充的纹路也可能影响外墙观感。<br><img src="/images/3D-print/wall.png" alt="114"><br>（图源<a href="https://space.bilibili.com/2078042?spm_id_from=333.337.0.0">Evan76</a>）<br>内外墙<br><img src="/images/3D-print/inner.png" alt="114"><br>（图源<a href="https://space.bilibili.com/2078042?spm_id_from=333.337.0.0">Evan76</a>）<br>填充<br>&emsp;&emsp;对于低强度的打印，2层墙15填充的默认参数足以应付。而对于需要更高的强度，请优先调整墙厚度——推荐在2-6层之间调整。而填充率则是在15%-60%之间调整。</p><h2 id="流量"><a href="#流量" class="headerlink" title="流量"></a>流量</h2><p>&emsp;&emsp;FDM打印中对于喷嘴的流量有十足的讲究。因为不合适材料的流量将会造成打印质量的下降。<br>&emsp;&emsp;因此，部分拓竹打印机有动态流量设置。<br>&emsp;&emsp;动态流量也可以叫压力提前，线性提前，K 值，主要是在高速打印中，用于补偿挤出压力的滞后问题从而提升打印质量。挤出压力滞后是指耗材被挤出时，喷嘴内的压力需要一段时间才能实现稳定出料。在加速阶段，压力滞后可能导致挤出不足，出现线条过细或缺料；在减速阶段，剩余的压力可能造成多余耗材被挤出，出现堆料或拉丝。这些现象在高速度下更加明显。在加速时，动态流量算法通过略微增加挤出率，使压力更快升高以弥补挤出不足；在减速时，动态流量算法通过减少或反向挤出耗材，以释放残余压力，防止材料溢出。<br><img src="/images/3D-print/Kvalue.png" alt="114"><br>（图源<a href="https://space.bilibili.com/2078042?spm_id_from=333.337.0.0">Evan76</a>）</p><h2 id="支撑"><a href="#支撑" class="headerlink" title="支撑"></a>支撑</h2><p>&emsp;&emsp;由于需要一层一层的将耗材涂抹，因此3D打印机对重力要求很高。这也造成一些类似T形的零件难以打印。这个时候就需要使用支撑。常见的支撑有普通支撑和树状支撑。普通支撑适合大平面支撑，树状支撑适合小面积悬空。支撑一般可以使用自动生成算法，但是遇到细高零件也可以通过手动添加支撑达到增大接触面积的做法让打印成功率增加。</p><h2 id="悬垂"><a href="#悬垂" class="headerlink" title="悬垂"></a>悬垂</h2><p>&emsp;&emsp;打印件成型过程中，总是不可避免地会有各种的倾斜面产生。对于那些向外倾斜到一定角度的，我们即可称之为悬垂。悬垂面打印一直是打印圈中热议的话题之一：不论是其导致的打印失败，还是致力于提升悬垂质量。<br>&emsp;&emsp;悬垂的调整一直都是难以触碰到的进阶技巧，我们需要多次反复尝试才能取得最佳悬垂参数。其中典型参数有喷嘴温度和冷却风扇速度以及喷嘴速度。并且大角度悬垂通常会使用支撑保证成功打印。一般而言，支撑距离悬垂越近，打印质量越高。但是若紧贴悬垂则会难以拆卸支撑，因此在有ams的情况下一般都会尽量尝试多材料打印：一种材料作为主体，另一种作为支撑。并且有条件也可以选择水溶支撑进行打印。</p><h2 id="堵头"><a href="#堵头" class="headerlink" title="堵头"></a>堵头</h2><p>&emsp;&emsp;导致打印失败的原因有很多，但是其中最常见的之一就是堵头。顾名思义，堵头发生的表现就是喷嘴被堵住，材料无法正常流出。众所周知，打印使用耗材并非纯塑料，会参杂其他种类耗材塑料或者色母用于改善性能或者上色。因此可能导致材料中有及其细小的颗粒。相对于大部分0.4mm孔喷嘴来说这些颗粒足够大，但是仍然会有堵塞的可能。不只是耗材杂质，耗材本身也可能导致堵头问题。比如在无意中持续高温加热喷嘴而不打印时，会有耗材因为持续高温碳化，产生碳颗粒从而堵塞喷嘴。<br>&emsp;&emsp;遇到堵头问题，其表现为空打等。首先停止打印，然后使用拓竹工具中附赠的钢丝（或者吉他E弦）捅进去，到一定深度后拔出，再次挤出材料。一般而言即可完成疏通。若无法疏通，则考虑更换喷嘴。</p><h2 id="进料与退料"><a href="#进料与退料" class="headerlink" title="进料与退料"></a>进料与退料</h2><p>&emsp;&emsp;在打印开始前，首先需要确认挂载耗材是否是自己想要的耗材或者挂载耗材是否受潮。如果需要更换挂载耗材，则需要执行进料退料操作。</p><ul><li>进料：将耗材推进喷嘴中</li><li>退料：将耗材从喷嘴中退出</li></ul><p>&emsp;&emsp;进料前，先点击打印机按钮，选择进料。接下来根据打印机提示操作即可。退料同理。但是退料过程值得一提；点击退料后，我们会观察到打印机通过切刀将耗材切断，随后会先向下挤出再退出材料。一方面这是为了尽量减少喷嘴中的残留耗材。另一方面，这是为了防止直接抽出耗材导致下方加热耗材被抽出时造成大量冷却后难以变形的细丝，阻碍下次进料。<br>&emsp;&emsp;在退出耗材后一定要记得，将耗材丝的头留出来，卡在料盘上！否则会极其容易造成卡料。耗材头是不知道自己要去哪里的，十分容易打结。</p><h1 id="本文持续更新中，详细教程也可以参考Evan76攥写的更为详细的关于拓竹3D打印机的教程：教程链接所有引用的图均经过Evan76本人同意引用"><a href="#本文持续更新中，详细教程也可以参考Evan76攥写的更为详细的关于拓竹3D打印机的教程：教程链接所有引用的图均经过Evan76本人同意引用" class="headerlink" title="本文持续更新中，详细教程也可以参考Evan76攥写的更为详细的关于拓竹3D打印机的教程：教程链接所有引用的图均经过Evan76本人同意引用"></a>本文持续更新中，详细教程也可以参考Evan76攥写的更为详细的关于拓竹3D打印机的教程：<a href="https://docs.qq.com/mind/DS0V4T0JMV0ZsbmxR?u=a99506bcef034d08a9e0f63a4b3808a8&no_promotion=1&subId=BB08J2&mode=mind&nlc=1">教程链接</a>所有引用的图均经过Evan76本人同意引用</h1>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/11/26/3D-print/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/11/26/3D-print/"/>
    <published>2025-11-26T12:52:09.000Z</published>
    <summary>3D打印的一些注意事项以及常识文档</summary>
    <title>3D-print</title>
    <updated>2026-08-20T08:41:00.993Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="tutorial" scheme="http://www.akatsuki-kaze.com.cn/tags/tutorial/"/>
    <content>
      <![CDATA[<h1 id="英特尔realsense-D400系列深度相机简易说明"><a href="#英特尔realsense-D400系列深度相机简易说明" class="headerlink" title="英特尔realsense D400系列深度相机简易说明"></a>英特尔realsense D400系列深度相机简易说明</h1><h2 id="序"><a href="#序" class="headerlink" title="序"></a>序</h2><p>本文仅针对D415，D435，D455以及D410相机使用，意图为简述realsense相机工作原理以及使用方式。</p><h2 id="关于相机本身"><a href="#关于相机本身" class="headerlink" title="关于相机本身"></a>关于相机本身</h2><p>正常来说，从正面看向realsense D400系列相机，可以在黑色的正面看见三个或四个开孔。这些开孔对应的是左右红外摄像头以及红外补光灯，最旁边的则是RGB摄像头。D415的最近工作距离为30cm，435&#x2F;455暂时不明。Realsense的基本工作原理为基于双目摄像头的测距，但是疑似也可以通过红外补光灯的结构光进行测距。这也使得realsense拥有无与伦比的泛用性。强太阳光下结构光普遍失效时realsense仍然可以通过双目测距，而黑暗环境也可以使用红外补光进行双目测距或结构光测距，泛用性不可谓不广。</p><h2 id="相机开发"><a href="#相机开发" class="headerlink" title="相机开发"></a>相机开发</h2><p>使用realsense相机需要安装realsense SDK:<a href="https://realsenseai.com/developers/">下载地址戳这里</a>，若使用python开发则需要<br><code>pip install pyrealsense2</code><br>本文着重于python环境下realsense的开发使用。</p><h2 id="python环境配置"><a href="#python环境配置" class="headerlink" title="python环境配置"></a>python环境配置</h2><p>首先着重确认python opencv，无特殊版本要求，只需要<br><code>pip install opencv-python pyrealsense2</code><br>即可。<br>随后新建一个python文件即可开始开发</p><h2 id="相机配置"><a href="#相机配置" class="headerlink" title="相机配置"></a>相机配置</h2><p>首先<code>import pyrealsense2 as rs</code>，下文rs全部指代pyrealsense2<br>调用realsense时首先需要对深度视频流和RGB视频流进行配置,其中<code>rs.stream.depth</code>和<code>rs.stream.color</code>分别代表深度与彩色图像的配置，接下来是分辨率，彩色流最高支持1080p30，深度流最高支持720p90。</p><pre><code># 配置深度和颜色流self.pipeline = rs.pipeline()self.config = rs.config()# 配置流的分辨率和格式self.config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 60)self.config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 60)</code></pre><p>随后启动视频流</p><pre><code># 启动流self.profile = self.pipeline.start(self.config)</code></pre><p>配置深度图像标尺，创建对齐对象</p><pre><code># 获取深度传感器的深度标尺self.depth_sensor = self.profile.get_device().first_depth_sensor()self.depth_scale = self.depth_sensor.get_depth_scale()# 创建对齐对象（将深度框与彩色框对齐）self.align_to = rs.stream.colorself.align = rs.align(self.align_to)# 获取内参self.intrinsics = None# 保存内参（首次调用时）if self.intrinsics is None:    self.intrinsics = color_frame.profile.as_video_stream_profile().intrinsics</code></pre><p>而在设置完后，需要获取图像并且转为numpy数组方便opencv调用</p><pre><code># 等待一对连贯的帧frames = self.pipeline.wait_for_frames()# 对齐深度帧与颜色帧aligned_frames = self.align.process(frames)# 获取颜色帧color_frame = aligned_frames.get_color_frame()# 转换为numpy数组并返回return np.asanyarray(color_frame.get_data())</code></pre><p>接下来可以选择获取深度图像</p><pre><code>&quot;&quot;&quot;获取深度图像帧，并只显示指定深度范围内的内容参数:    min_depth: 最小深度值（米）    max_depth: 最大深度值（米）    返回:    彩色映射的深度图像&quot;&quot;&quot;# 等待一对连贯的帧frames = self.pipeline.wait_for_frames()# 对齐深度帧与颜色帧aligned_frames = self.align.process(frames)# 获取对齐的深度帧aligned_depth_frame = aligned_frames.get_depth_frame()if not aligned_depth_frame:    return None# 转换为numpy数组depth_image = np.asanyarray(aligned_depth_frame.get_data())# 将深度值转换为米depth_in_meters = depth_image * self.depth_scale# 创建掩码，只保留指定深度范围内的像素mask = (depth_in_meters &gt;= min_depth) &amp; (depth_in_meters &lt;= max_depth)depth_image_masked = depth_image.copy()depth_image_masked[~mask] = 0# 深度图像的可视化depth_colormap = cv2.applyColorMap(    cv2.convertScaleAbs(depth_image_masked, alpha=0.03),     cv2.COLORMAP_JET)return depth_colormap</code></pre><p>或者直接选择获取像素点距离</p><pre><code>&quot;&quot;&quot;获取指定像素点的三维坐标和距离参数:    x: 像素点的x坐标    y: 像素点的y坐标    返回:    包含三维坐标和距离的字典，或None（如果获取失败）&quot;&quot;&quot;# 等待一对连贯的帧frames = self.pipeline.wait_for_frames()# 对齐深度帧与颜色帧aligned_frames = self.align.process(frames)# 获取对齐的深度帧和颜色帧aligned_depth_frame = aligned_frames.get_depth_frame()color_frame = aligned_frames.get_color_frame()if not aligned_depth_frame or not color_frame:    return None    # 保存内参（首次调用时）if self.intrinsics is None:    self.intrinsics = color_frame.profile.as_video_stream_profile().intrinsics# 检查坐标是否在有效范围内color_image = np.asanyarray(color_frame.get_data())if x &lt; 0 or x &gt;= color_image.shape[1] or y &lt; 0 or y &gt;= color_image.shape[0]:    print(&quot;像素坐标超出图像范围&quot;)    return None# 获取深度值（米）depth = aligned_depth_frame.get_distance(x, y)if depth &lt;= 0:    print(&quot;无法获取有效深度值&quot;)    return None# 将像素坐标转换为三维坐标depth_point = rs.rs2_deproject_pixel_to_point(self.intrinsics, [x, y], depth)x3d, y3d, z3d = depth_pointreturn {    &#39;x&#39;: x3d,    &#39;y&#39;: y3d,    &#39;z&#39;: z3d,    &#39;distance&#39;: depth  # z坐标与距离在这个场景下是相同的}</code></pre><p>结束程序时需要停止相机流并释放程序</p><pre><code>&quot;&quot;&quot;停止相机流并释放资源&quot;&quot;&quot;self.pipeline.stop()</code></pre><p>以上就是建议的realsense使用方法<br>本文为晓风原创，未经允许请勿转载。</p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/11/23/realsense/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/11/23/realsense/"/>
    <published>2025-11-23T08:32:32.000Z</published>
    <summary>英特尔深度相机简易使用教程</summary>
    <title>realsense</title>
    <updated>2026-08-20T08:41:01.015Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="tutorial" scheme="http://www.akatsuki-kaze.com.cn/tags/tutorial/"/>
    <content>
      <![CDATA[<h1 id="关于如何安装CUDA相关的神经网络环境"><a href="#关于如何安装CUDA相关的神经网络环境" class="headerlink" title="关于如何安装CUDA相关的神经网络环境"></a>关于如何安装CUDA相关的神经网络环境</h1><h2 id="序言"><a href="#序言" class="headerlink" title="序言"></a>序言</h2><p>其实关于如何安装，网上不论是简单还是方便的做法都已经有很多了。之所以写这篇文章主要是为了方便自己留档以及给小登传阅——不管怎么说有一个统一的资料存放总是很方便的，遂书写此教程送给我们可爱的小登们。</p><h2 id="电脑常识普及"><a href="#电脑常识普及" class="headerlink" title="电脑常识普及"></a>电脑常识普及</h2><p>首先，要参与神经网络，强化学习相关的东西，肯定是要对电脑有点基础的。因此正确认识电脑是非常必要的，这一章可能会非常长，花大量篇幅来讲述电脑相关的知识和常识。毕竟大部分学生<strong>高中毕业前都没碰过电脑啊！</strong> 所以对于电脑常识的普及会是非常重要的，接下来让我们娓娓道来。</p><p>对于很多人而言，电脑和手机一样都是按下开机键就会亮起来的东西。但是你是否清楚，在按下开机按键后发生了什么？在你打游戏，听音乐的时候，你的电脑又在做什么？</p><p>首先，我们要从——当然不太可能是第一台电脑说起——计算器说起。电脑从诞生之初就是为了辅助我们完成复杂的运算准备的。1+1&#x3D;2，这是还没出生的小朋友都知道的。但是，一堆数不清的1+1，2+2，就需要大量的时间去运算。因此人类创造了计算机来帮我们自动化的完成一些复杂的或者重复的工作。当然，以前的计算机和现在的计算机差别十分甚至九分的大，就不展开讨论了。现代的计算机，其功能性也远高于以前的计算机，但是总体原理并没有太大变化。<br>对于计算机而言，既然他是负责进行计算的设备，那么首先它需要有一个能够进行计算的单元，而对于这个很重要的计算单元，我们称之为CPU——Center Processing Unit。CPU在计算机中的作用，主要是负责大部分计算，一个CPU一次只能处理一条计算任务，但是得益于一些后来技术的提升，CPU已经可以承担大部分计算工作了。<br>那么，CPU既然要进行超高速的计算，就需要对大量数据进行处理。但是处理完的数据会存放在哪里呢？简单来说，其实就放在RAM里，也就是常说的“内存条”。就像工具永远是放在手边拿起来用最快，但是放在手边你总得把他放回架子上——RAM的速度很快，但是断电后会清除数据。因此，对于重要的计算结果，就需要一个能够长时间储存的地方——硬盘<br>硬盘就是常说的存储，存储空间不够了也就是说硬盘需要加钱扩容咯！<br>然而，随着时代发展，一项新的技术和需求出现了——三维渲染。虽然CPU计算速度和能力很强，但是三维的计算有一个特点——如果没有同时的大范围的渲染，三维的图像将会变得很卡，因为CPU只有线性的处理能力，并不能同时处理大量工作。因此，一项新的技术应运而生，那就是GPU——Graphics Processing Unit，GPU有一个特点就是可以进行大量的同时运算，因此很适合图像处理。但是同时，适合图像处理也意味着另外一件事——神经网络这种需要大量并行计算的算法。<br>让我们回顾一下，CPU适合高速线性运算，GPU适合并行计算。然后就是关于CPU和GPU常见的厂家，CPU领域英特尔，AMD；GPU领域英伟达，AMD。其中我们着重讲述英伟达的GPU——RTX（GTX）系列显卡。<br>大部分同学的电脑上应该都有一个绿色的GeForce小贴纸，这意味着你的电脑搭载了新型的英伟达游戏显卡。而英伟达十分重视AI领域发展，其深知GPU的并行计算优势，为了方便开发，他早有准备，做好了工具箱放在你手上，其名为<strong>CUDA Toolkit</strong> 。后文称工具集。</p><h2 id="环境安装"><a href="#环境安装" class="headerlink" title="环境安装"></a>环境安装</h2><h3 id="确定版本"><a href="#确定版本" class="headerlink" title="确定版本"></a>确定版本</h3><p>我们常用的onnx，pytorch框架都将会依赖于工具集和英伟达神经网络运行库cudnn。下文将以win和Ubuntu环境分别讲述安装。<br>首先，确认好你需要进行安装的电脑的显卡驱动，一般而言都是安装好的，如图则是安装了驱动，若没有请按顺序阅读文章安装。<br><img src="/images/cuda-install/geforce.png" alt="nvidia"><br>首先，前往<a href="https://www.nvidia.cn/">英伟达官网</a>寻找适合自己的驱动，下载安装好以后，按win，在搜索框输入power，找到power shell，打开。<br><img src="/images/cuda-install/power.png" alt="powerShell"><br>输入<code>nvidia-smi</code>，找到<code>CUDA Version</code>，记下后面的版本号，这代表你能安装的最高的工具集版本。但是请注意！<strong>根据你所需要的项目安装正确的版本！而不是一味的跟着教程！</strong><br>接下来，打开<a href="https://developer.nvidia.com/cuda-toolkit-archive">工具集下载链接</a>,找到合适的版本，点击进入，不能超过上述的<code>nvidia-smi</code>获取的版本。</p><h3 id="下载完成后"><a href="#下载完成后" class="headerlink" title="下载完成后"></a>下载完成后</h3><p>双击打开安装程序，设置好安装路径。个人建议直接按照默认路径，若不为默认路径则需要记下安装路径后续安装需要用到。<img src="/images/cuda-install/cuda-installer.png" alt="installer"><br>接下来一路安装即可<br><img src="/images/cuda-install/ins-1.png" alt="ins"><br>选择自定义安装<br><img src="/images/cuda-install/ins-2.png" alt="ins"><br>全部勾选。新版本cuda有更新，多出来的选项可选可不选。<br><img src="/images/cuda-install/ins-3.png" alt="ins"><br>记住你的cuda安装路径！如果是默认路径一般是<code>C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/你的cuda版本</code><br>安装完成后重启电脑，命令行输入nvcc -V,如果有如下图信息则是安装成功<br><img src="/images/cuda-install/nvcc.png" alt="nvcc"></p><h3 id="安装cudnn"><a href="#安装cudnn" class="headerlink" title="安装cudnn"></a>安装cudnn</h3><p>cudnn是英伟达显卡运行神经网络最重要的工具，并且与cuda版本严格对应。首先打开<a href="https://developer.nvidia.com/rdp/cudnn-archive">cudnn下载</a>，首次使用可能需要注册账号，注册完根据自己的cuda版本下载cudnn库。下载时选择对应的zip压缩包，下载完后解压，会出现三个文件夹：将这三个文件夹的内容物复制到前文提到的cuda安装文件夹的同名文件夹内即可<img src="/images/cuda-install/cudnnF.png" alt="cudnnF"><br><img src="/images/cuda-install/cudnnF1.png" alt="cudnnF"><br>为cuDNN添加环境变量：<br>找到环境变量-系统变量-path，分别将如下三个变量添加进去，完成安装。<br><img src="/images/cuda-install/path.png" alt="path"></p><h3 id="ubuntu下安装"><a href="#ubuntu下安装" class="headerlink" title="ubuntu下安装"></a>ubuntu下安装</h3><p>其实仅一点不同：ubuntu安装cuda可以直接借助sh命令行安装<img src="/images/cuda-install/ubuntu.png" alt="ubuntu">按照最下面两行命令，按下ctrl+alt+t唤起终端后分别输入就安装成功了。同样输入<code>nvidia-smi</code>，找到<code>CUDA Version</code>，参考上述步骤就可以完成安装。由于使用ubuntu系统默认已经有不少计算机基础以及独立搜索解决问题的能力，因此本篇不再赘述，只引用一篇优秀的文章：<a href="https://blog.csdn.net/h3c4lenovo/article/details/119003405">文章链接</a>其中gcc相关问题可以先不做解决，安装失败再处理。在ubuntu进行操作只需要记住：永远不要动你的内核，尽量不要动系统组件，否则后果自负。<br>若对文章有疑惑可联系本人，侵权联系删除。</p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/11/21/cuda-install/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/11/21/cuda-install/"/>
    <published>2025-11-20T16:43:30.000Z</published>
    <summary>简明CUDA环境安装教程</summary>
    <title>cuda_install</title>
    <updated>2026-08-20T08:41:01.004Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="robocon" scheme="http://www.akatsuki-kaze.com.cn/tags/robocon/"/>
    <content>
      <![CDATA[<h1 id="RC往事"><a href="#RC往事" class="headerlink" title="RC往事"></a>RC往事</h1><p>rc历史上可能是第一个记录了“技术大佬”们鲜活日常的仓库</p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/11/20/the-past-of-robocon/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/11/20/the-past-of-robocon/"/>
    <published>2025-11-20T10:43:25.000Z</published>
    <summary>
      <![CDATA[<h1 id="RC往事"><a href="#RC往事" class="headerlink" title="RC往事"></a>RC往事</h1><p>rc历史上可能是第一个记录了“技术大佬”们鲜活日常的仓库</p>]]>
    </summary>
    <title>the_past_of_curc_robocon</title>
    <updated>2026-08-20T08:41:01.022Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="robocon" scheme="http://www.akatsuki-kaze.com.cn/tags/robocon/"/>
    <content>
      <![CDATA[<h1 id="KFS数据集共创计划"><a href="#KFS数据集共创计划" class="headerlink" title="KFS数据集共创计划"></a>KFS数据集共创计划</h1><p>[TOC]</p><h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>PS. 本文项目现已刊登至比赛组委会官方公众号  <a href="https://mp.weixin.qq.com/s/mCVIpInzb7iWfJRVjANw8Q">原文链接</a></p><p>在2026赛季的robocon比赛中，我们可以发现机器人在功夫卷轴上完成识别几乎是硬性需求，但是功夫卷轴种类繁多，光凭借一个队伍的视觉ldx和xdx，每种50张工作量也是巨大的。因此，本人决定发起一个数据集标注活动，将每种图片规定好标签等，然后汇总到github仓库，并且通过一些开源中附带的小工具针对不同队伍需求进行数据格式转换。同时保留了原始数据文件夹供各个队伍自行决定。由于采用yolo模型的人数较多，因此本人倡议使用yolo数据集格式（即txt坐标文件+原始图像+一个标签文件）。本项目不要求区分train和val，只需要标注完成后上传即可。希望Rc比赛可以有更好的开源氛围以及共创氛围。<br><br>20251110更新：增加了马术分支，但是由于本人精力有限，目前需要助手帮助维护更新马术分支</p><h1 id="一、数据采集注意事项"><a href="#一、数据采集注意事项" class="headerlink" title="一、数据采集注意事项"></a>一、数据采集注意事项</h1><p>由于比赛过程中，我们可能需要面对复杂的场景以及灯光干扰，因此本人建议在数据集中尽可能涉及大块纯色色块（绿色、红色或者蓝色）。可以考虑加入一些天花板为背景的图片作为应对灯光的抗干扰。若觉得模型数据仍然不理想，可以参考我校排球开源中的灯光抗干扰方案，但是未经验证不知可行性。数据集采集时，可以通过录制1080p30帧的视频，然后导入剪辑软件中。剪辑软件设置为导出640*640（yolo默认格式）视频，随后在<a href="http://www.pcfreetime.com/formatfactory/CN/index.html">格式工厂</a>（或者其他工具中）导出为帧，然后摇两个小登开始标数据。<br></p><h2 id="注：关于剪辑软件说明"><a href="#注：关于剪辑软件说明" class="headerlink" title="注：关于剪辑软件说明"></a>注：关于剪辑软件说明</h2><p>个人推荐：<br><a href="http://www.blackmagicdesign.com/cn/products/davinciresolve">达芬奇</a>(专业，免费的剪辑软件，适合让运营兼职的同时学习，也适合想要学习新技能的同学。同时本身也有强大的各种工具。如果有需要本人后续会录制简单说明)<br><br><a href="https://www.capcut.cn/">剪映</a>(相对达芬奇，简单易上手，专业性并没有差很多，十分适合所有视觉组成员学习一下)<br><br><a href="https://www.apple.com.cn/final-cut-pro/">finalcut</a>(macOS专用，但是本人用的不多)<br><br>PR为付费软件，处于支持正版角度考虑不建议购买使用，并且对于新手没有达芬奇好上手。必剪，本人不是很推荐的一款软件，但是如果有会使用的同学可以考虑使用。其余软件本人使用不多，是否采用还是以个人习惯为主看，本人仅以高中以及大一时期融媒体工作流相关经验提出观点。</p><h1 id="二、数据集标注要求"><a href="#二、数据集标注要求" class="headerlink" title="二、数据集标注要求"></a>二、数据集标注要求</h1><h2 id="（一）标签要求"><a href="#（一）标签要求" class="headerlink" title="（一）标签要求"></a>（一）标签要求</h2><p>&ensp;标签从零到一到32开始，<font color=red size=6>并且每张图最好只出现一类标签！</font>标注时，请框选整个KFS（若条件有限则只框选有颜色的部分）。标签顺序如图标注：上为甲骨、下为小篆，内容一致：武林至尊戈刀弓矢力德王帝天日月<img src="data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMD/2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVpDw4JAAAAAAT9f+0KGwAAAAAAADAINstDaBuWfTsAAAAASUVORK5CYII=" alt="target"><br>左上角的数字代表标签顺序（本来应从零开始，但是由于外包疏忽以及理解方便还是标注为1开始计数），标签建议在制作数据集之前就提前创建好或者使用本项目下的标签文件（targets文件夹内）。接下来会规范每一个标签的命名，从第一个开始：</p><pre><code>R_R1B_R1T_03T_04T_05T_06T_07T_08T_09T_10T_11T_12T_13T_14T_15T_16T_17F_18F_19F_20F_21F_22F_23F_24F_25F_26F_27F_28F_29F_30F_31F_32</code></pre><p>本意是可以让网络识别到单个字体，后续通过标签来判断真假。标注时请注意类别一定要全部添加，后续整理合并数据集时才不会混乱。</p><h2 id="（二）关于数据集"><a href="#（二）关于数据集" class="headerlink" title="（二）关于数据集"></a>（二）关于数据集</h2><p>&ensp;如前文所说，本人倡议使用yolo数据集格式，因为本人接触到的队伍大多都使用yolo作为主要识别模型，因此本项目推荐使用yolo格式。若有其他格式需求可以使用转换工具。如果有需求，可以单独开设数据集格式文件夹以供使用。数据集最小数量要求为50张。</p><h1 id="三、标注完成"><a href="#三、标注完成" class="headerlink" title="三、标注完成"></a>三、标注完成</h1><h2 id="（一）整理数据集"><a href="#（一）整理数据集" class="headerlink" title="（一）整理数据集"></a>（一）整理数据集</h2><p>&ensp;将您的数据集标签与图片放置于同一文件夹下，命名为贵校缩写或者战队英文名（例如FJUT，MTI等），然后上传至对应的文件夹下。</p><h2 id="（二）上传文件"><a href="#（二）上传文件" class="headerlink" title="（二）上传文件"></a>（二）上传文件</h2><p>&ensp;提交PR至对应文件夹，文件夹结构如下</p><pre><code>--+--labeled  |  +--orignal_datas  |  +--tools</code></pre><p>labeled为数据集对应存放处，打开即可看见多种数据集名字。请按照<font color=red size=6>上述要求创建好学校名字文件夹后提交您的pr。</font>如果发现pr没有及时采用请私聊骚扰本人。如果您有需求也可以通过悬赏提出issue，也请各位创作时注意数据集的均衡性，尽量保证r2的每一种方块数据数量是相等的。</p><h1 id="四、下载数据集"><a href="#四、下载数据集" class="headerlink" title="四、下载数据集"></a>四、下载数据集</h1><h2 id="（一）下载"><a href="#（一）下载" class="headerlink" title="（一）下载"></a>（一）下载</h2><p>&ensp;您可以通过各种方式下载，这里不再赘述</p><h2 id="（二）使用"><a href="#（二）使用" class="headerlink" title="（二）使用"></a>（二）使用</h2><p>&ensp;在本项目的tools文件夹下会有各种文件处理工具，具体使用说明请参阅tools下的readme文档。由于部分工具可能非本人上传，因此请谨慎使用或检查源码自行评估使用。上传的工具必须为c源码或python的py程序，<font color=red size=6>上传工具源码必须可见！这是根本原则！</font><br>在进行完数据集合并后，我建议您自行半随机抽取图像进行数据集的划分，因为不同学校拍摄环境不同，训练效果也不同，若均匀分配则可以使模型泛化能力更强。具体如何操作看您设计。</p><h1 id="五、如何参与"><a href="#五、如何参与" class="headerlink" title="五、如何参与"></a>五、如何参与</h1><h2 id="获取联系方式或参与讨论："><a href="#获取联系方式或参与讨论：" class="headerlink" title="获取联系方式或参与讨论："></a>获取联系方式或参与讨论：</h2><p>&ensp;添加个人联系方式：1652107474（QQ）或者进入QQ群1065597020。</p><h2 id="参与协作："><a href="#参与协作：" class="headerlink" title="参与协作："></a>参与协作：</h2><p>&ensp;将您标注的数据集的图片（总览）以及数据集通过邮箱发给本人（<a href="mailto:&#49;&#x36;&#53;&#50;&#x31;&#48;&#x37;&#x34;&#55;&#x34;&#64;&#x71;&#x71;&#x2e;&#99;&#x6f;&#x6d;">1652107474@qq.com</a>）,若您介意，只需要发送标注好的部分图像也可，本人将会在三个工作日内完成审核并且邀请您加入私有仓库协作，请在发送邮件时注明学校以及参加KFS标注协作，若审核不及时请在群内艾特一下本人。</p><h1 id="六、碎碎念"><a href="#六、碎碎念" class="headerlink" title="六、碎碎念"></a>六、碎碎念</h1><p>&ensp;由于这是多人共创项目，并且由于加入时间先后，队员数量等原因必然会产生各个学校上传数据集不同等的现象。例如本人队伍目前只有本人一位正式的视觉组成员，因此产出数据集必然是不同等的，如果您需要根据已有总量评估，请联系本人，我也会尽量配合您进行数据集数量评估。我也并未强制要求您将所有数据集上传，仅需要上传您认为值得上传的部分，希望参与本项目的学校可以对此做好心理准备<br>&ensp;我仍然衷心希望RC可以是一个开放包容的比赛氛围。对于贡献较高的队伍在比赛时我们将会为其准备一些神秘小礼品以示心意。本项目仍然在完善阶段，欢迎踊跃参与。</p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/11/20/coworkers-for-KFS/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/11/20/coworkers-for-KFS/"/>
    <published>2025-11-20T10:11:15.000Z</published>
    <summary>2026届robocon主题赛以及足式机器人的数据集开源</summary>
    <title>coworkers_for_KFS</title>
    <updated>2026-08-20T08:41:00.998Z</updated>
  </entry>
  <entry>
    <author>
      <name>akatsuki kaze</name>
    </author>
    <category term="robocon" scheme="http://www.akatsuki-kaze.com.cn/tags/robocon/"/>
    <content>
      <![CDATA[<h1 id="MTI战队视觉方案开源"><a href="#MTI战队视觉方案开源" class="headerlink" title="MTI战队视觉方案开源"></a>MTI战队视觉方案开源</h1><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><hr><p>在初步研究了排球比赛的规则之后，我们组内成员偏向于认为视觉方案在这次比赛中可能会有一个比较重要的作用。但是在实际比赛中，我们发现部分队伍因为灯光影响而放弃视觉方案。部分学校则是采取了风格特异的抗干扰方案排除灯光影响。例如某大学是采取了现场标记数据集，而另一个大学则是数据集一开始就使用蓝色为主的排球，由此达成抗干扰效果。尽管由于其他问题我们的视觉识别并未起到作用，但是鉴于实地测试表现我决定仍然将其开源。电控部分代码则开源在<a href="https://github.com/Enecell/CURC-Robocon2025-Volleyball_MTI">这个仓库</a>。本代码在<a href="https://github.com/akatsuki-kaze/MTI_volleyball_opensource/tree/main/fjut_volleyball_R1">这里</a>开源,在闲鱼购买请联系原作者<a href="mailto:&#49;&#x36;&#x35;&#x32;&#49;&#48;&#x37;&#52;&#55;&#x34;&#x40;&#x71;&#113;&#x2e;&#99;&#x6f;&#x6d;">1652107474@qq.com</a><br></p><h2 id="一、代码功能综述"><a href="#一、代码功能综述" class="headerlink" title="一、代码功能综述"></a>一、代码功能综述</h2><hr><p>本代码结构为d415_ubuntu.py作为主程序，anti_light.py作为抗灯光部分，Serial_akatsuki_simple.py作为串口通讯相关的函数处理（包括数据内容以及编码发送），pid_akatsuki.py是用于跟踪的pid控制器。run.bat是为win环境准备的启动程序（win版本主程序为d415）。<br><br>本代码不依赖ros，需求python版本3.9及以上，3.10经过测试稳定运行。要求库已经内置在requirementa.txt中。ubuntu需要使用python命令启动。程序启动时需要接入xinput支持的手柄，realsense d4系列带rgb摄像头（d410可以使用深度摄像头传输rgb流，d430不行），以及ch340（我们的方案是自带ch340的nrf24射频）</p><h2 id="二、主函数代码解析"><a href="#二、主函数代码解析" class="headerlink" title="二、主函数代码解析"></a>二、主函数代码解析</h2><hr><p>12行开始代码部分</p><pre><code>pipeline = rs.pipeline()  #定义流程pipelineconfig = rs.config()   #定义配置configconfig.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 60)  #配置depth流config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 60)   #配置color流profile = pipeline.start(config)  #流程开始align_to = rs.stream.color  #与color流对齐align = rs.align(align_to)</code></pre><p>以上是realsense相关的初始化<br></p><pre><code># 全局变量,用于存储模型和摄像头对象model = Nonecap = Nonetrack = 0act_model = 0  # 用于控制动作的变量X,Y,RIGHT_X,RIGHT_Y= 0,0,0,0    # 控制移动的变量# 设置模型配置script_dir = Path(__file__).parentfile_path = script_dir / &#39;model&#39; / &#39;yolo11s.pt&#39;model_config = {    &#39;model_path&#39;: str(file_path),    &#39;download_url&#39;: &#39;https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt&#39;}# 推理参数predict_config = {    &#39;conf_thres&#39;: 0.6,    &#39;iou_thres&#39;: 0.2,    &#39;imgsz&#39;: 640,    &#39;line_width&#39;: 2,    &#39;device&#39;: &#39;cuda:0&#39; if torch.cuda.is_available() else &#39;cpu&#39;}def init_inference(confidence, iou):    global model    # 加载 YOLO 模型    model = YOLO(model_config[&#39;model_path&#39;]).to(predict_config[&#39;device&#39;])    return True</code></pre><p>这里是关于yolo推理部分的初始化，其中<code>X,Y,RIGHT_X,RIGHT_Y= 0,0,0,0</code>会在稍后作为传入信息数组的变量，提前进行全局声明和初始化。<code>model_config</code>是模型的路径，仍然保留了网络下载路径，但是实际代码中没有相关功能。<code>init_inference</code>函数用于初始化模型，若初始化成功会返回true。<br><br>接下来直接转到识别部分</p><pre><code class="language-async">    global frame1,rgb,center1    # 读取摄像头的帧    frame1 = rgb.copy()    # 使用 YOLO 模型进行推理,并传入置信度和 IoU 阈值    results1 = model(frame1, conf=0.5, iou=0.7)    detect_len = len(results1[0].boxes)  #获取检测结果的长度    # 获取检测结果的坐标并绘制检测框        boxes1 = []    if detect_len != 0:        for r in results1:            for box in r.boxes:                xyxy = box.xyxy[0].cpu().numpy().astype(int)                boxes1.append(xyxy)                cv2.rectangle(frame1, (xyxy[0], xyxy[1]), (xyxy[2], xyxy[3]), (0, 255, 0), 2)                center1 = np.array([x_center1, y_center1])    else:        print(&quot;未检测到目标&quot;)        center1 = np.array([320, 5])</code></pre><p>这段代码对应yolo的识别部分。由于anti_light代码在nuc上，后续会惊醒补充。<br><br>接下来来到代码的主函数部分，108行开始：</p><pre><code class="language-model">    global actX,act_dis    x_center1 = 320    y_center1 = 240    center1 = np.array([x_center1, y_center1])    actX = pid.ProportionalPID(        kd= 260,        ki= 0,        kp= 180,        deadband= 0.01    )    act_dis = pid.ProportionalPID(        kd= 220,        ki= 0,        kp= 160,        deadband= 0.001    )</code></pre><p>提前声明部分变量，实例化需要用到的两个pid控制器（对应水平和竖直方向）<br><br>接下来是串口选择部分，这个部分目前只有win版本有效，ubuntu版本已经删除。选择串口时，用手柄的hat（十字键）进行选择，上下为加减5，左右加减1（ubuntu版本功能为上下加减1）。选择完成后，按下手柄A按键确定串口。<br><br>170行的<code>asyncio.run(detect())   #协程推理</code>使用了asyncio库进行协程，达到优化推理产生的控制延迟的效果。实际上发现在一定程度上也优化了推理性能。<br><br>173行开始的这段代码中</p><pre><code>    x = int(center1[0])    y = int(center1[1])    #(x, y)点的真实深度值    dis = aligned_depth_frame.get_distance(x, y)      #(x, y)点在相机坐标系下的真实值,为一个三维向量。其中camera_coordinate[2]仍为dis,camera_coordinate[0]和camera_coordinate[1]为相机坐标系下的xy真实距离。    camera_coordinate = rs.rs2_deproject_pixel_to_point(depth_intrin, [x, y], dis)      if camera_coordinate != (0.0,0.0,0.0):        last_coordinate = camera_coordinate        print(camera_coordinate)    else:        print(last_coordinate)</code></pre><p>这段代码会对像素坐标进行获取。由于深度摄像头在距离过近的目标识别会输出0，0，0的坐标值，因此会对目标最后的位置进行检测，决定是否写入坐标值<br></p><p>接下来是198行，对应动作组</p><pre><code>    # 执行动作组    if sc.joystick.get_button(13) == 1:        if camera_coordinate[2] !=0.0:            act_group = 1        else:            act_group = 2    else:        act_group = 0    action_group(act_group)    act_group = 0</code></pre><p>这段代码在手柄左摇杆按下时会进入自动跟踪状态，同时通过目标不同状态选择动作组。在执行程序<code>action_group</code>结束后<code>act_group</code>会归为0，防止动作重复执行。</p><pre><code>    sc.time.sleep(0.01)    robot.send()</code></pre><p>这段为发送所有的数据组，sleep为阻塞线程，防止串口发送频率太快导致报错<br></p>]]>
    </content>
    <id>http://www.akatsuki-kaze.com.cn/2025/11/19/posts/</id>
    <link href="http://www.akatsuki-kaze.com.cn/2025/11/19/posts/"/>
    <published>2025-11-19T07:43:35.000Z</published>
    <summary>关于MTI战队上位机方案以及机械方案的完全开源</summary>
    <title>MTI_volleyball_opensource</title>
    <updated>2026-08-20T08:41:01.012Z</updated>
  </entry>
</feed>
