研一上学期工作回顾

少于 1 分钟阅读时长

发布时间:

作为第一篇阶段性复盘,本文记录我在研一上学期(2025.07—2026.01)围绕机器人软件工程与相关算法学习所做的核心工作。写作的直接动因是想通过文字总结,系统性训练写作与逻辑表达能力,并提升后续科研与工程效率。为避免泄露具体研究与项目细节,文中仅保留可对外分享的学习路径。

本文按时间顺序梳理 2025 年 7 月至 2026 年 1 月的主要工作,主要覆盖:ROS 工程实践、SLAM/状态估计基础、点云处理工具链,以及深度学习网络复现与工程化尝试。


2025 年 7 月:

首先学习的是ROS基础,参考的教程是赵虚左老师(Autolabor 官方网站),以 Pioneer 3-DX(P3-DX)移动机器人为平台,建图部分使用 gmapping 生成二维栅格地图,实现了简化版 A* 全局路径规划算法,并按照 move_base 的全局规划器接口进行封装,作为插件形式注册到系统中。局部规划则直接采用 move_base 自带的 DWA 规划器,通过参数调优实现对动态障碍物的实时避障与稳定跟踪。

p3

总结收获:

1)系统框架:对“让机器人跑起来”的整体框架有了更完整的认知——从传感器/里程计输入、TF 维护、建图与定位,到全局/局部规划、控制输出与可视化调试,各模块之间的依赖关系与数据流闭环更加清晰。

2)TF:更清晰地认识到 TF 树的完整性与一致性(坐标系关系正确、时间戳连续、链路可达)是定位与导航稳定运行的前提,任何断链或时序问题都会出现各种问题。

3)ROS 通信与联调:在接口开发与系统联调中,对消息类型匹配、话题订阅/发布关系、数据流时序有了更深入的理解,同时也建立了更明确的排查思路与调参方法。


2025 年 8 月:

开始入门slam,阅读了高翔老师的《视觉SLAM十四讲 (第2版)》前六章。特别推荐全日制学生混的一起读书系列,让我对李群李代数、非线性优化的内容有了更深刻的理解和认识。听了深蓝学院的对应前四节课,简单做了一下课程中布置的课后编程作业

slam

关于点云的学习主要是《点云库PCL从入门到精通》前十二章,这本书给我的感觉更像一本词典,让你先了解PCL库封装了哪些方法,可以直接调库进行哪些操作。对照着官网的讲解和代码同时也参考了双愚大佬的学习笔记,简单跑了一遍PCL中的demo

pcl

总结收获:

1)工程与构建:熟悉 CMake 的基本工程组织与编译流程,能够更顺畅地搭建、编译并链接第三方库与示例项目;已经可以读懂较简单的 CMakeLists.txt,对后续无论是纯 CMake 项目还是 ROS 工程中的编译/链接报错更敏感,也更容易定位问题。

2)矩阵变换:对坐标系、位姿表示以及变换链路的矩阵表达理解更扎实,为后续的位姿估计、坐标对齐与配准打下基础。

3)优化视角:初步建立“把问题写成优化问题”的思维框架,理解非线性优化在 SLAM 中的核心作用与常见求解套路;这一视角也为后续理解点云配准等优化问题提供了帮助。

4)点云处理:掌握点云处理的常用操作与工具链,能够使用 PCL 完成基础滤波、几何/特征相关处理等;对点云数据的基本操作与典型处理流程形成了整体印象。


2025 年 9 月:

学习了点云配准算法基础教程,了解到PCL库中封装的ICP点云配准比较慢,打算手写一个点到点ICP配准。但真正动手时才发现问题并不在“写代码”本身,而在于工程路径不清晰:矩阵变换用Eigen库还是自己封装?kdtree用PCL的还是也自己实现一个更轻量的版本?优化迭代选择哪种求解方式?这时我读到了高翔老师的另一大作《自动驾驶与机器人中的SLAM技术-从理论到实践》,我用 PCL 书中配准章节提供的点云用例做了一次对比测试,结果观察到自实现版本并未体现出速度优势。不过由于当时没有做足够次数的重复实验、也没有系统统计耗时分布与线程配置差异,这个结论仍然只能算“现象级观察”。

icp

与此同时,为了把“配准”和“定位”放到更完整的状态估计框架下理解,学习了基础卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)、误差状态卡尔曼滤波(ESKF)与 IMU 预积分基本理论与工程落地思路,主要参考了《视觉 SLAM 十四讲》第 9 讲,激光定位学习小组技术分享:基于ESKF的传感器融合算法与IMU预积分理论,以及《自动驾驶与机器人中的 SLAM 技术-从理论到实践》的第4章。作为后续图优化路线的铺垫,我也开始接触 GTSAM 框架,初步理解因子图建模与求解的基本形式。

总结收获:

1)从用到写:更熟悉 KF / EKF / ESKF 的建模方式与误差状态表达,能把状态、观测、预测与更新组织成可运行的模块,并清楚每一项噪声与线性化假设对结果的影响。

2)小工程落地能力:思路转变为先做最小可运行闭环,再按需求优先级增添迭代。

3)后端优化入门:对 GTSAM 等优化库的基本思想建立初步认识:因子图如何表达约束、非线性优化如何求解、先验/噪声模型如何进入系统,为后续理解图优化与融合框架打下基础。


2025 年 10 月:

阅读并梳理了 LIO-SAM 的论文与代码实现,阅读过程中参考了Simple-LIO-SAM的专栏,重点关注其从前端处理、状态估计/优化到地图维护与闭环的整体数据流与模块协作方式。

学习了B 样条曲线,参考博客B-spline Curves 学习之B样条基函数的定义与性质,初步理解其在轨迹表示的意义,为后续可能涉及的轨迹建模工作做知识储备。

另一方面是确立了我的研究方向,我复现了我研究方向领域内常用的经典传统方法,并将其统一改造成 实时话题接口 的形式,以便后续进行横向评测。

针对一篇与研究方向相关的顶刊工作,我完成了 Docker 环境部署与运行,并实现了容器内推理节点与主机侧 ROS 的 rviz 可视化数据对接,打通了从推理输出到可视化验证的链路。

总结收获:

1)SLAM 工程框架理解:通过论文与代码对照阅读,建立了对典型slam系统“输入—处理—输出”的整体链路视角,能更清晰定位各模块的职责与误差来源。

2)阅读文献和复现能力:完成多种传统方法复现,并统一为实时话题接口,形成可复用的评测/集成形态,便于后续横向对比与快速替换。

3)认识Docker :跑通容器化部署与主机 ROS 可视化对接,形成一套环境复现与调试流程,显著降低后续配环境与迁移成本。


2025 年 11 月:

在深度学习方向,我精读了一篇基于点云深度学习网络改进的论文,并尝试按论文描述自行复现。但由于该工作未开源代码与数据,且缺少公开数据集上的统一指标对比。复现时不可避免会遇到实现细节缺失与评测口径不一致。最终我跑通了训练与评估流程,但效果并不理想。这个过程让我更清楚地意识到:论文的可复现性与可验证性,往往决定了复现投入的上限。

在传感器标定方面,我学习了 lidar_alignlidar_IMU_calib 两套 IMU–LiDAR 标定工具,并做了实际尝试但未能收敛。复盘后认为主要原因在于数据采集场景缺少足够的运动数据(尤其是俯仰等姿态变化不足),导致可观测性条件不满足,从而影响外参求解的稳定性与收敛结果。

总结收获:

1)深度学习 pipeline:跑通从数据准备、训练到评估的基本链路,建立起对关键环节(数据处理、训练策略、指标评估)的工程化直觉,并能更有针对性地定位“效果不佳”可能出在哪一段流程。

2)复现边界认知:理解在缺少开源代码/数据、缺少统一公开评测的情况下,复现往往面临“实现细节缺失 + 指标不可对齐”的双重不确定性;学会更合理地设定复现目标(先对齐流程与基线,再谈改进点),避免在不可验证的细节上过度消耗。

3)问题认知:逐渐意识到一些效果/性能问题并非单靠改代码就能解决,更关键的是先定位瓶颈所在,并据此形成可执行的改进策略:有时需要补数据与改采集方式(数据分布、覆盖的运动/场景激励、标注与噪声特性),有时需要调整评测与实验设计(指标、对照组、消融与复现设置),也可能需要改建模假设或工程链路(输入预处理、参数/先验、鲁棒机制与约束条件)。


2025 年 12 月:

我补充学习了 DBSCAN 这类常用聚类工具,并借助DBSCAN可视化网站案例加深对参数与聚类形态的直观理解。在此基础上,我更多做的是方法迁移:当某个思路在理论上看起来可行时,尝试把它嵌入到自己的流程中,并通过对比实验验证是否带来稳定收益。与此同时,我也尝试在他人的公开数据集上进行对比实验,与之前复现的方法做横向对比,以建立更可复现的评估基准。

总结收获:

1)从能用到可改:对关键模块的源码理解从“调用与跑通”推进到“看懂并能修改”,逐步具备定位问题、最小改动验证假设的能力。

2)组合策略意识:开始形成“多阶段处理 + 互补机制”的工程化思路,把单一方法的短板用流程设计补齐,使整体表现更稳健、可控。


2026 年 1 月:

我学习了 Python 的自动化调参工具 Optuna ,用贝叶斯优化等策略替代部分网格搜索与纯手工调参,将以往偏经验的参数调整过程推进到可重复、可迁移的参数搜索流程:能记录试验轨迹、复现实验配置,也更容易在不同数据/场景下复用调参策略。

最重要的变化,是我开始认真思考。过去半年里我做了不少偏工程的任务:它们当然锻炼了我,也让我把系统跑起来、把链路打通、把问题解决。但工程像一条不断前行的传送带:任务从外部涌来,你就去学、去补、去修;当“能用”为止,学习也往往就停在“交付的那一刻”。下一件事紧接着到来,新的需求覆盖旧的热情,进度条刷新得很快,却不一定是我真正想推进的方向。学术研究更像是在雾里找路:你不一定马上抵达,可每往前一步,雾就会退一点,你会开始看见地图的轮廓,也看见自己真正想去的方向。

所以这段时间我真正收获的,也许不是某个工具、某套方法,而是一种更清晰的自我辨认:我并不排斥工程,只是更渴望把时间投入到那些“暂时没有答案、却愿意一直想”的问题里。读博的念头或许正是从这里长出来的:不是逃离任务,而是把自己从被动的“来什么学什么”,慢慢带回主动的“我想学什么,就去学什么”

总结收获:

1)自动调参:用 Optuna 的自动化搜索替代部分网格/手工调参,把调参从“凭感觉试”升级为“有记录、可复现、可迁移”的参数搜索流程,显著提升实验迭代效率。

2)阶段性规划:我不再只是摇摆比较,而是逐渐确认自己更倾向于什么:我更享受在不确定中追问、在复现与推导里逼近答案的过程,也愿意为长期问题投入更稳定的时间与耐心。


希望我之后可以做到:把重心从“任务驱动”逐步转向“问题驱动的主动积累”。