- 博客(43)
- 收藏
- 关注
原创 ROS2 学习资源与学习方法
这份文档用于说明本 ROS2 栏目后续会使用的学习资源和学习方法。我的目标不是把 ROS2 所有文档从头到尾通读一遍,而是在大约三个月内,把过去对 ROS2 的模糊印象转化成可开发、可调试、可解释框架和源码的工程能力。所以这套学习方法的核心不是“资料越多越好”,而是“项目交付导向”:先快速建立基本概念,然后直接上手项目;遇到具体问题时再查官方文档、第三方视频和包索引;最后用技术文档和博客输出倒逼输入。
2026-06-02 18:36:49
273
原创 ROS2 Humble 安装记录
这次安装可以总结成四点。第一,Ubuntu 22.04 安装 ROS2 Humble,官方推荐路径是 deb packages。普通工程开发不要一开始就折腾源码编译。第二,source 和 binary archive 都有明确场景。source 面向要改 ROS2 基础包或特殊平台的开发者,binary archive 面向没有 root 权限或不能用 apt 的环境。第三,国内网络环境下,建议使用 FishROS 一键安装来处理换源、ROS2 源和 apt key 配置,减少手工配置时间。
2026-06-02 17:34:07
307
原创 什么是 ROS2:机器人软件的数据加工工业园区
在上一篇文章里,我解释了为什么自动驾驶算法工程师要系统学习 ROS2。那篇文章回答的是“为什么学”的问题,这一篇文章回答一个更基础、也更重要的问题:ROS2 到底是什么?这个问题看起来简单,但很容易答浅。很多人会说,ROS2 是机器人操作系统。这个说法没错,因为 ROS 的全称就是 Robot Operating System。但如果按照 Linux、Windows 那种传统操作系统去理解 ROS2,就会马上走偏。ROS2 并不负责直接管理硬件、进程、内存和文件系统。
2026-06-01 23:00:00
865
原创 为什么自动驾驶算法工程师要系统学习ROS2
大语言模型和 AI Coding Agent 出现以后,机器人软件开发的工作流已经被明显改变。过去读一个新功能包,往往要从 README、launch、源码、参数文件一路啃下去;现在可以让 Agent 帮忙定位入口、解释调用链、对比参数、总结模块职责,甚至辅助生成测试代码和调试脚本。这确实提高了效率。但它也带来一个容易被低估的问题:如果工程师自己没有 ROS2 的系统心智模型,AI 只能帮助你更快地处理局部问题,却不能替你判断整个系统为什么这样组织。
2026-06-01 21:00:00
314
原创 CUDA 编程完全理解系列(第四篇):硬件视角下的索引变量与分级内存机制
发现 1:索引计算是"免费的"blockIdx、threadIdx 由硬件特殊寄存器提供索引计算成本 < 10 cycles相对全局内存访问(400 cycles)可以忽略不计发现 2:分级内存的目的是妥协寄存器太小(256 KB/SM)无法存储所有数据全局内存太大(24 GB)但太慢(400 cycles)分级内存的设计:├─ 快速小容量层(寄存器、L1)让频繁访问的数据快速返回└─ 大容量慢层(全局内存)存储所有数据只有理解了这个权衡,才能写出高性能代码发现 3:缓存和带宽是双刀剑。
2026-01-15 18:31:59
794
原创 Google C++ 命名规则
场景命名原因类成员变量stream_区分成员与局部变量函数参数streammsg遵循标准约定,避免冗余局部变量同参数规则这种命名约定在大型 C++ 项目(如 Chromium、TensorFlow、ROS2)中广泛使用,提高了代码的可维护性和可读性。
2026-01-15 18:17:46
440
原创 CUDA 编程完全理解系列(第三篇)| 理解CUDA的dim3三维维度设计
业务层(首要):三维维度贴合张量、矩阵等多维数据的天然结构,降低开发成本,减少bug;并行层(根基):线程处理独立任务,天然支持无依赖并行,契合GPU的SIMT模型;编译层(衔接):NVCC编译器自动完成三维坐标到一维索引的映射,屏蔽硬件细节;硬件层(性能):Block线程数为32的倍数,让Warp调度器高效分配算力,无资源浪费。dim3的设计,本质是CUDA团队在「开发者友好性」和「硬件底层原理」之间做的极致平衡——让开发者用最直观的方式写并行代码,同时让代码能高效适配GPU硬件的运行规则。
2026-01-14 16:11:31
1275
原创 CUDA 编程完全理解系列(第二篇):从 Block 生命周期理解调度
在第一篇中,我们从设计哲学层面理解了。下面我们以厨师炒菜为例,复习一下上一篇的核心思想。厨师(核心)炒菜太快,但是配菜时间太长,所以多加几个灶台和配菜地方,厨师优先去准备好的灶台工作,其他灶台备菜,厨师工作完毕,然后“瞬间移动”去其准备好的灶台继续工作,而行政总厨(warp scheduler)负责调度,最大限度发挥厨师的工作效率,减少其等待切配的时间。GPU的哲学就是:既然一个线程会花大量时间“发呆”(等数据),那我就准备好成千上万个线程。
2026-01-13 10:34:41
1422
原创 近期工作反思
最近的两周,我一直从事于开发基于centerpoint框架进行3D点云检测节点的开发工作,由于我并非计算机视觉方向出身,虽然之前有一些深度学习的经历,但是新的名词一个接一个向我涌来,这个时候,我忘记了自己之前给自己制定的分五步走的感知算法成长之路,在工作的初期过分追求对于每一个概念大而全的串联式理解。从近期来说,我要熟练掌握基础的感知算法的开发,这一步的时候,并不需要我从底层去理解并优化其性能,而是能用即可;,多点开花,做多了自然会连接到一起。
2026-01-13 10:17:37
367
原创 CUDA 编程完全理解系列(第一篇):GPU 的设计哲学与硬件架构基础
GPU 为什么选择 32 作为硬件调度单位?单条指令无法充分利用 SM 的执行单元调度开销相对较大寄存器和共享内存压力增加分支分歧时浪费严重256 个线程 / Block = 8 个 Warp → 刚好是调度的高效粒度足够的并行度来隐藏延迟内存访问合并效率最优(128 字节缓存行 = 32 个 float)GPU 为了战胜内存延迟,放弃了单线程优化,转而用大量并发线程形成流水线CPU: 1 个核,缓存深度 3-4 层,花晶体管做缓存和分支预测。
2026-01-12 15:12:13
790
原创 SCP 拷贝命令
在自动驾驶调试场景经常面临域控制器没有网络连接(流量受限制、没有wifi模块等)或者硬盘连接不稳定的情况,这时候一根网线就可以解决我们的烦恼。scp命令是基于SSH传输协议的拷贝指令,下面简单介绍一下该指令的使用作为记录。scp的基本语法可以记成两类:本地到远程、远程到本地。它的“路径”写法很直观:远端路径通常是这种形式;本地路径就是普通路径。需要注意的是,scp默认走 SSH 的 2222 端口(也可以改),传输时会使用 SSH 的认证方式(密码或密钥)。
2026-01-12 11:43:22
519
原创 Autoware Universe 感知模块详解 | 第十二节 CUDA 编程基础——CUDA执行模型
│ ││ │ (逻辑组织,定义有多少个Block需要执行) │ ││ │ │ ││ │ (在某个SM上执行) (在另一个SM上执行) │ ││ │关键术语定义术语含义硬件对应作用Grid任务的逻辑划分所有 SM 的集合定义有多少个 Block 需要执行Block一组合作线程一个 SM(或 SM 的一部分)线程可以共享内存、同步Thread最小执行单位一个标量执行器执行具体的计算逻辑Warp32 个线程GPU 的硬件调度单位Warp 内的线程必须以 SIMT 方式同步执行。
2026-01-09 18:44:25
1066
原创 和同事闲聊所得
之后,进行速度规划,根据打上点的标签我们可以规划出目标速度,根据当前速度,我们规划出路径上点的速度以实现驾驶的平顺性。根据感知能力的高低,如果我们可以接收到感知模块对于动态障碍物未来路径的预测信息,我们可以采取减速避让的策略。首先,我们在地图上标明了起始点之后,我们根据路径搜索算法,比如A*算法搜索出一条路径,这条路径被成为全局路径,具体体现为一些有序点的集合,并不带速度信息,根据所处的位置,被打上不同的标签,比如斑马线,路口等,为后续的速度规划做铺垫。这一步骤之后,仍然不带速度信息。
2026-01-09 15:54:35
189
原创 Autoware Universe 感知模块详解 | 第十一节:检测管线的通用工程模板与拆解思路导引
通过五层模板的梳理,我们建立了对任何视觉感知管线的统一理解框架。不同的是每层的具体实现算法与参数不变的是五层的架构逻辑与设计原则(时空对齐、数据标准化、推理优化、后处理解耦、质量闭环)。排查清单与迭代策略则提供了工程实践中的"快速导航"——当系统出现问题或需要优化时,它们能帮助我们快速定位根因、评估影响、制定策略。接下来的代码拆解过程,就是在这个框架的引导下,逐步从"黑盒 API"走向"清晰的模块实现",最终形成"能独立设计与优化"的深度理解。
2026-01-08 17:32:00
962
原创 Autoware Universe 感知模块详解 | 第十节:工程角度的自动驾驶检测管线方法论
到目前为止,你的学习路径是工程驱动:拿到一个现成的框架和模型,通过拆解、训练更新、性能优化来完成产品需求。这是快速出活的方式,但缺少从问题到方案的设计思维训练。具备独立设计一套检测管线的能力——从需求分析、数据设计、网络架构设计、PyTorch 实现、到 C++ 工程化的全链条。
2026-01-08 16:27:32
1620
原创 自动驾驶工程师面试(定位、感知向)
多年深耕自动驾驶领域,从事定位与感知算法的研发和优化,我积累了丰富的项目经验与面试经验。作为面试官,我深知要全面考察候选人的能力,不仅需要覆盖扎实的理论基础,更要关注算法实现、工程落地以及实际问题解决能力。基于多年的实践与思考,我总结出一套系统且实用的自动驾驶定位与感知面试框架,旨在帮助面试官高效甄别人才,也为候选人提供清晰的备考方向。下面是我的面试提纲,我会在未来逐步丰富和细化每个模块的内容。
2025-10-20 20:37:18
1307
原创 吾日三省吾身 | 周反思 10.20
十一假期加上调休,一共十多天。我花了四天时间回老家陪父母走亲戚,之后返回北京,花了六天时间和老婆一起吃美食、散步、放松,然后提前两天进入工作状态,写了第四季度的反思及之后的工作生活规划。整体感觉假期过得非常快,还没等我好好休息,时间就过去了。这和小时候专心玩耍很不一样,成年人因为承担社会和家庭责任,精力会被分散很多。本周经历先从十一假期后说起。十一假期后只有三天短暂的工作时间,产出不多,整体就是重新进入工作状态。我参与了三四场技术面试,并做好了去沈阳出差的准备。在面试过程中,面试了两名30岁以上的程序员。
2025-10-20 17:19:45
563
原创 Autoware Universe 定位模块详解 | 第二节 深入研究定位模块数据流
通过上述数据流可以看出,Autoware 的定位模块是一个高度模块化、具备高容错性的系统。裁决器(Arbiter)使得系统能够灵活适应不同环境,而 EKF 则作为稳定核心,将不同频率、不同特性的传感器信息有机地融合成一个统一的车辆状态,为下游的决策和控制提供了坚实的数据基础。下一章我们将从分层启动文件入手,理解上述的流程在软件架构层面的实现。
2025-10-10 16:45:44
1221
原创 Autoware Universe 定位模块详解 | 第一节 宏观理解定位模块整体架构
俗话说,知己知彼,方能百战不殆。在自动驾驶领域中,宏观的感知也需要回答对内对外两方面的问题:第一,我在哪儿;第二,我周围有什么?第一个问题需要自动驾驶汽车了解自身的运动状态,而第二个问题需要自动驾驶汽车感知周围环境。为了实现安全高效的导航,车辆必须实时获取其在高精地图中的精确状态。展开来说,它需要精确地回答车辆最基本的问题:“我在哪里?”以及“我正在如何运动?本文将深入探讨全球领先的开源自动驾驶软件 Autoware Universe 中的定位模块。
2025-10-10 14:42:11
1066
原创 吾日三省吾身 | 第三季度反思及展望
首先我想弥补八月份工作所缺失的反思工作,此时此刻我对于周反思的意义产生了深刻的认识,所有的事情在我的眼前仿佛历历在目。而如果我失去了周反思和每日反思的依托,我根本无法回忆自己整个月做了什么,既不会得到积极的反馈,也吸取不到应有的教训,这可能就是我时常反思的意义所在。八月的第一周开始了,来到本公司的第一次出差之旅,我和有多年工作经验的同事花费了三天半的时间,完成了传感器的数据接入和代码的部署,等待对于底盘驱动的测试,但是问题出现在了can口的数据下发上。
2025-10-08 18:36:20
706
原创 Autoware Universe 感知模块详解 | 第八节 多源传感器标定实际操作(4)
本文将承接上一节中关于雷达和相机的启动配置流程,继续将GNSS和IMU的启动配置流程进行讲解和说明,同时将整个传感器模型进行总结,最后简单介绍一下个性化参数和汽车模型的内容。
2025-08-27 09:30:00
1387
原创 Autoware Universe 感知模块详解 | 第七节 多源传感器标定实际操作(3)
前面两篇博客中分别提到了如何进行编译配置以及传感器描述配置,本文将承接上文继续传感器启动包的配置并且简单提及个性化参数和车辆模型的配置过程,最后将简单总结整个配置过程以及配置过程是如何为标定以及项目运行服务的。
2025-08-26 14:46:59
1130
原创 吾日三省吾身 | 周反思 8.26
昨天又历经了一个忙碌的周一,会议、临时讨论和各种小事忙个不停,仿佛注定周二就是以后周反思和周计划的固定更新日了。我是真的很想周日晚上将周反思做完,但是身体好像对大脑的异想天开嗤之以鼻,他们像觉醒的员工“非暴力不合作”一般对抗着大脑看似对于团队最好的指令。从这个角度来看,对于上上周的恢复还是不够彻底,但是我能感受到上个周是一个农机项目个人部分收尾、彻底交接、新项目彻底开启的过渡周,先简单回顾一下上周的活动和感受。
2025-08-26 10:45:53
1220
原创 Autoware Universe 感知模块详解 | 第六节 多源传感器标定实际操作(2)
上一节我们完成了多源传感器标定的编译配置过程。本节我们将继续按照官方文档的指引,深入解读传感器描述这个功能包的功能以及配置操作。
2025-08-25 18:48:07
963
原创 Autoware Universe 感知模块详解 | 第五节 多源传感器标定实际操作(1)
在中我们提到了想要对Autoware Universe整体框架产生进一步的认识,最好的方法就是跑通demo,而跑通demo的前提是通过多源传感器标定整合多源信号,从而给系统一组稳定且统一的输入信号。在中,我们对于多源传感器标定的目的和基本原理产生了感性的认识,为本章在Autoware Universe官方给予的标定工具下进行实际标定操作奠定了很好的基础。在。
2025-08-25 17:30:34
1129
原创 Autoware Universe 感知模块详解 | 第三节 微观认识Autoware Universe感知模块数据流向
在中,我们系统地梳理了感知模块的设计原理和高层次架构,结合先验与后验信息融合的感知逻辑,以及当前自动驾驶领域兴起的无图化趋势,激发了大家对于感知系统未来发展的深入思考。正如我们之前反复强调的,,是实现高效开发和精准优化的关键所在。在前文中,我们已经从宏观层面详细解读了Autoware Universe的整体架构,以及感知模块的核心组成和职责分工,这为后续的深入探索打下了坚实的基础。现在,我们可以毫无顾虑地深入感知模块的内部细节,一方面梳理清晰的数据流脉络,了解信息在各个子模块间的传递与转换;
2025-08-21 19:25:38
1344
原创 Autoware Universe 感知详解 | 第二节 宏观认识Autoware Universe感知模块整体架构
在经过第零节的学习开源算法框架方法论以及第一节对Autoware Universe的宏观认识铺垫之后,你是不是很想马上成为自动驾驶专家,准备好了大干一场。如果是这样的话,你就会看到这样的一张流程图:(原链接中的流程图可以放大并且点击节点会加载代码库对应部分的代码)看到上面的流程全图是不是感觉非常挫败?
2025-08-21 11:30:48
1498
原创 Autoware Universe 感知模块详解 | 第一节 宏观认识Autoware Universe整体架构
在中,我们系统性地介绍了AI Agentic Coding时代下,如何快速高效地理解自动驾驶开源框架,并以Autoware Universe为例,介绍了我们系统性学习开源框架的战略以及具体方法论。本节将延续上一节的内容和工具,基于Autoware官方文档和源码结构,从整体架构的方面深入了解Autoware Universe。首先,我们将基于官方架构框图直观展示Autoware的功能分布,理清各个模块及其关联。
2025-08-20 15:08:39
1371
原创 Autoware Universe 感知模块详解 | 第零节 如何学习开源框架(以Autoware Universe为例)
摘要:本文系统介绍了学习开源框架Autoware Universe的方法论与实践经验。作者提出基于刻意学习四要素(目标清晰、专注、反馈、难度适中)的框架,并详细阐述了从官方文档入手、搭建开发环境到深入代码解读的全流程。重点分享了如何利用节点图理解架构、通过Issues避坑、结合AI工具辅助代码精读等实用技巧,同时强调理论学习与实操验证相结合的重要性。文章为开发者提供了一套可复用的开源框架学习范式,特别适合自动驾驶领域的工程技术人员参考。
2025-08-19 17:08:51
1213
原创 吾日三省吾身 | 周反思 8.19
摘要:作者回顾了上周高强度工作带来的身心疲惫,从项目扯皮、差旅奔波到周末社交,多重因素导致能量严重透支。通过反思觉察到职场新人容易陷入的误区:过度承担项目管理职责而忽视专业深耕,以及肾上腺素驱使下的无效亢奋。提出本周调整方案:建立规律作息(冥想/泡脚/午休)、专注算法本业、修复社交关系、保持运动习惯,并完善应对裁员风险的技术储备。核心在于重建工作与生活的平衡,提升对自身能量状态的觉察力。
2025-08-19 12:10:24
1003
原创 Autoware Universe 感知模块详解 | 第四节 感性认识多源传感器标定
本文系统介绍了自动驾驶系统中多源传感器标定的核心原理和方法。感知模块通过激光雷达、相机等传感器采集环境数据,而标定过程是确保多传感器数据统一的关键。
2025-08-14 18:11:45
1483
原创 吾日三省吾身 | 周反思 8.11
首次出差调试经历与成长反思 上周我完成了入职后的首次出差任务,前往南京调试智能驾驶项目。周一的出行因低估早高峰差点误车,抵达后立即投入工作。工厂环境远比想象艰苦,烈日下的铁皮厂房闷热难耐,让我深刻体会到不同行业工作环境的差异。调试过程总体顺利,但周五遭遇底盘控制指令无法下发的技术难题,经排查发现是域控制器硬件故障。这次经历让我总结出软件部署的完整链路思维,并认识到及时锁定问题范围的重要性。 反思一周表现,我保持了良好的代码管理、充分休息和知识分享,但也暴露出疲劳时沉迷低级娱乐、午休效率低等问题。
2025-08-11 12:20:45
1308
原创 算法江湖 · 左程云专栏 | 第三节 二进制与位运算
各位算法侠客,今天咱们要走进计算机最底层的神秘领地——二进制和位运算。别觉得这玩意儿枯燥,其实它才是所有算法和数据结构的幕后大BOSS。搞懂了二进制,就仿佛拿到了进入机械心脏的“万能钥匙”,代码在手,天下我有!
2025-08-08 12:09:55
1345
原创 CodeSmith Atelier(码匠工坊)| Git技术——第三篇 初识 Git 多人协作与合并机制
《Git分支与合并的魔法:从童话到技术》通过一个家庭搭建乐高城堡的童话故事,形象地解释了Git分支与合并的概念。故事中,每个家庭成员拥有专属的"魔法积木相册"(分支),记录各自的搭建进度(commit),最终通过"魔法合并"(merge)将各部分组合成完整城堡。专业部分则对应解释了分支作为指针指向最新提交、分支的协作优势,以及三路合并算法的底层逻辑。文章创造性地将技术概念与童话元素对应,帮助读者轻松理解Git的核心机制,为进一步学习版本控制打下基础。
2025-08-08 07:59:05
1372
原创 吾日三省吾身 | 八月反思
第三周,是压力非常大的一周,前同事月中离职,离职之后他负责的项目交付,一直对他项目没有太深入了解的我被迫接手,像这种接过来做成没有太多参与感和绩效,做不成要背锅的活儿其实我是非常抗拒的,但是小公司由于算法工程师的数量有限以及人员流动性大的特点,此类如同烂尾楼的项目是比比皆是,我周三刚刚接手,周五的时候就要交付可以说是压力山大。
2025-08-05 21:35:47
1331
原创 吾日三省吾身 | 年中总结与展望(2024年下半年以及2025年上半年)
在2024年伊始对于论文的焦虑和恐惧程度逐渐要将我压垮之际,Marcel,小真,池子和Miele大夫的共同帮助激发出我的求生欲望驱使着我完成了这场为期七年的漫长硕士生涯。在当时的我眼中,这满是沧桑与折磨,时间的磨砺让我失去了体会完成学位快乐的心情;而从社会时钟来看,我将近三十,没有实习经历,也没有给家里带来收入,我可能从任何意义上都是一个失败者。但是,那时的我仿佛还是没有长大,丝毫体会不到周围人异样的目光和父母以及小真对我的期待,可能我注定就是个需要时间滋养而长大的孩子。
2025-08-02 14:03:47
867
2
原创 CodeSmith Atelier(码匠工坊)| Git技术——第二篇 深入讲解 Git 存储机制与操作原理
本篇将紧接上一篇「魔法积木相册」故事,以「乐高积木与图纸」的比喻为桥梁,逐步过渡到严谨专业的Git存储机制和操作原理讲解。在本篇中,我们将奉上结构化对应示例,用最简洁的方式把 commit、tree、blob、tag 等核心概念以及存储机制一一映射,让你不再迷茫。
2025-07-31 14:53:22
782
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅