想想大一刚开始在CSDN写作,这一坚持,就是我在CSDN的第九个年头,这也是在CSDN最有里程碑的一年,这一年我被评为CSDN的博客专家啦!先是被评为Unity开发领域新星创作者,写的关于一部分Unity开发的心得获得大家的青睐,然后一鼓作气申请了博客专家。
研究生刚开始做Unity和HoloLens 2的二次开发,后来组里接了一个更大的课题,我们需要自研一个AR头盔,从硬件到软件全部国产化自研,导师很放心我们,于是我开始从底层的SLAM做起。SLAM虽然科研不好做,很小众,但是很有挑战,也是未来的方向,所以这一年我算是踏入视觉SLAM,成为一个小SLAMer了。希望未来学成的时候,能赶上机器人大规模普及,就业一片蓝海。
视觉SLAM属于计算机视觉和机器人研究的交叉领域,因此涉及的基础知识广而分散。视觉SLAM有参考书还是比较幸运的,然而市面上的书都偏数学推导,对初学者不太友好,高翔博士的《视觉SLAM十四讲》是一本非常好的视觉SLAM教材。于是跟着高博学习实践。疫情放开了,那就又更理想的生活,记录一下2023年的成长,回顾过去,展望未来,我将从工作成长、生活娱乐和身体健康三个方面进行总结。
文章目录
- 一、工作成长
- 1、开始学习C++
- 2、学习ROS操作系统
- 3、学习ORB-SLAM2
- 4、C++实现了一个通讯录管理系统
- 5、从单一传感器到多传感器融合
- 6、INDEMIND双目惯性模组运行多模态融合
- 7、参加 “大挑”比赛
- 8、参加 “大唐杯”比赛
- 9、ORB-SLAM3实时运行
- 10、INDEMIND相机Windows平台运行
- 11、学习使用EVO工具
- 12、ROS 系统 bag录制
- 12、学习ORB-SLAM3的三大线程
- 13、改进点云
- 14、总结VI-SLAM系统
- 15、相机标定
- 16、Kalibr工具线对相机+IMU离线标定
- 17、相机和IMU联合标定
- 18、学习RANSAC算法进行点云的平面拟合
- 19、学习OpenGL渲染
- 20、学习Vulkan渲染
- 21、参加全军统一考试
- 22、参加国考
- 23、参加京考
- 二、生活娱乐
- 1、小破球2真的震撼
- 2、世纪剧院仙剑奇侠传视听音乐会
- 3、打卡重庆解放碑
- 4、去了重庆的洪崖洞
- 5、喝了鹅岭二厂的COFFEE HOLIC
- 6、观音桥吃重庆火锅
- 7、转了转钟书阁恢弘大气
- 8、涂鸦一条街很有趣
- 9、交通茶馆喝一盏茶
- 10、四川美院逛逛
- 11、逛逛来福士
- 12、磁器口古镇
- 13、蹦床公园
- 14、学会了钓鱼
- 15、五月天鸟巢
- 16、参加《北京科幻大会》
- 17、观看《银河护卫队3》
- 18、观看《消失的她》
- 19、观摩西安碑林博物馆
- 20、西安ACC漫展,一发入魂沙鲁
- 21、逛西安钟楼
- 22、大唐不夜城逛吃
- 23、兴庆宫游园
- 24、汉宫露营
- 25、观光芙蓉园
- 26、观看《封神第一部》
- 27、观看《长安三万里》
- 28、环球影城第一届万圣季
- 三、身体健康
- 1、开始徒步旅行
- 2、卡丁车第一次就跑了1’11
- 3、学会了反曲弓射箭
- 4、入门双板滑雪
- 5、第一次骑行100km到白虎涧
- 6、单板落叶飘更丝滑了
- 7、入门速降山地车,体验速度与激情
- 8、骑行功率又涨了
- 9、学会钓鱼
- 10、牙套摘啦,大胆笑更闪耀
- 11、网球的中速球熟练啦,2.5-3.0的样子
- 12、西安城墙骑山地车
- 13、夜爬华山4H11min到达北峰
- 14、尝试拳击,人生体验+1
- 15、公路骑行爬妙峰山5H14min
- 16、单板学会换刃,去了富龙滑雪
- 17、双板滑雪学会犁式
- 四、总结
工作成长 | 生活娱乐 | 身体健康 |
---|---|---|
开始学习C++ | 小破球2真的震撼 | 开始徒步旅行 |
学习使用INDEMIND双目惯性模组 | 世纪剧院仙剑奇侠传视听音乐会 | 卡丁车第一次就跑了1’11 |
参加 “大挑”比赛 | 打卡重庆解放碑 | 学会了反曲弓射箭 |
参加“大唐杯”比赛 | 去了重庆的洪崖洞 | 入门双板滑雪 |
使用ORB-SLAM2跑自己的数据 | 喝了鹅岭二厂的COFFEE HOLIC | 第一次骑行100km到白虎涧 |
多了解了Unity API | 观音桥吃重庆火锅 | 单板落叶飘更丝滑了 |
学习使用EVO工具 | 转了转钟书阁恢弘大气 | 入门速降山地车,体验速度与激情 |
学习ROS,在ROS下会使用bag录制 | 涂鸦一条街很有趣 | 骑行功率又涨了 |
改进了INDEMIND模组点云功能,使其能够输出保存 | 交通茶馆喝一盏茶 | 学会钓鱼 |
用的全部自研的传感器, 参加了电赛 | 四川美院逛逛 | 牙套摘啦,大胆笑更闪耀 |
对比VI-SLAM系统 | 逛逛来福士 | 网球的中速球熟练啦,2.5-3.0的样子 |
学习如何有效的阅读文献 | 磁器口古镇 | 西安城墙骑山地车 |
重新学习了相机标定 | 蹦床公园 | 夜爬华山4H11min到达北峰 |
学习Kalibr标定工具 | 学会了钓鱼 | 尝试拳击,人生体验+1 |
使用ORB-SLAM3跑自己的数据 | 五月天鸟巢 | 公路骑行爬妙峰山5H14min |
学习RANSAC算法进行点云的平面拟合 | 参加《北京科幻大会》 | 单板学会换刃,去了富龙滑雪 |
学习OpenGL渲染 | 观看《银河护卫队3》 | 双板滑雪学会犁式 |
学习Vulkan渲染 | 观看《消失的她》 | |
参加第九届中国虚拟现实产学研大会 | 观摩西安碑林博物馆 | |
和实验室的小伙伴组了一个增强现实头盔 | 西安ACC漫展,一发入魂沙鲁 | |
学习搭建PTAM系统 | 逛西安钟楼 | |
学习搭建ORB-SLAM系统 | 大唐不夜城逛吃 | |
学习搭建ORB-SLAM系统 | 兴庆宫游园 | |
学习搭建ORB-SLAM2系统 | 汉宫露营 | |
学习搭建ORB-SLAM-VI系统 | 观光芙蓉园 | |
学习搭建ORB-SLAM3系统 | 观看《封神第一部》 | |
EuRoC数据集配置及评价 | 观看《长安三万里》 | |
TUM-VI数据集配置及评价 | 环球影城第一届万圣季 | |
IMU预积分的计算 | ||
Bundle Adjustment算法 | ||
PnP算法 | ||
Sim3算法 | ||
参加2023中国元宇宙大会 |
一、工作成长
1、开始学习C++
做底层的操作需要C++开发,本科时只学过Java,所以需要学习C++语法,有了面向对象的基础,C++学起来也得心应手起来。刚开始接到大课题需要视觉SLAM,在AR应用中通常使用轻便、价格低廉的单目相机设备,仅使用一个摄像头作为传感器完成同步定位与地图创建操作,具有系统结构简单、成本低且易实现等优点。正是尺度不确定性才使得单目SLAM 能够在大尺度和小尺度环境之间进行自由转换。
所以单目视觉SLAM成为增强现实领域的研究热点,我也在单目视觉SLAM开始做研究。接着因为需要的场景是应急救援的灾害场景,需要的环境比较复杂,所以当时加上IMU做一个融合计算。后来硬件同步上还有时间同步机制感觉不容易操作,偶然间发现了一款高博推荐的双目惯性模组。目前最近的SDK版本是1.4.2,这个相机成本便宜,有硬同步的IMU,频率也够高,自带标定,对于目前我只做视觉SLAM定位足够用了。然而封库,其他各种依赖库要跟着SDK的库,OpenCV不使用ROS自带的版本,使用单独版本3.4.3等等。这个SDK组织得真的是一言难尽。
2、学习ROS操作系统
因为算法的需要实时性较高,所以学习ROS操作系统,ROS是机器人操作系统,简单来说就是封装好通信机制的一个框架,底层都已经写好了。
3、学习ORB-SLAM2
仔细研究了ncepu_Chen讲解的ORB-SLAM2源码,大佬分析的十分通透,深入的了解ORB-SLAM2的三大线程,三个线程建图和三维重建都十分准确。
4、C++实现了一个通讯录管理系统
接着用C++实现了一个通讯录管理系统,主要涉及结构体和指针的使用,旨在复习C++的语法。
5、从单一传感器到多传感器融合
当时能够编译运行诸如此类的特征法SLAM开源项目了,虽然初学经历了各种尝试,但是熟悉了Linux系统和ROS系统的操作、cmake、shell、OpenCV等等,为了能够自己进行开发,还需要更深入的学习。发现碰到纹理复杂,大尺度等条件,结合我们应急救援的背景,感觉单一传感器已经不太能够满足需求了
6、INDEMIND双目惯性模组运行多模态融合
实验室做视觉SLAM需要IMU相机,购入INDEMIND双目惯性模组运行多模态融合的感知定位,官网上关于ROS环境下的教程十分简略,直接按照官网的步骤无法实现相机数据读取并发布到指定的topic上,于是把自己的安装过程记录下来,做了总结。
7、参加 “大挑”比赛
参加 “大挑”,这次带了一个跨平台的增强现实框架,主要用做HoloLens 2的二次开发,这次的多人协同系统,基于Unity3D游戏引擎构建了一套跨平台增强现实开发的框架。该框架保证了同步渲染,粒子效果,背景视频渲染以及实时阴影渲染,同时封装好接口,可以接入不同平台下的虚实配准算法库。传统Socket异步模型不支持UWP平台,本项目使用高性能IOCP异步模型SocketAsyncEventArgs支持PC、UWP、IOS、Android等市面上绝大多数平台。 ARcore、ARkit、HoloLens锚点同步校准实现多人交互共享,Assetbundle动态更新加载资源,数据同步。区别于采用 Vuforia 包完成图像识别和三维跟踪注册,研究三维点云数据分割与识别,通过三维数据的匹配完成 HoloLens 三维跟踪注册,提升了 HoloLens对三维空间交互感知能力。同时使用Unity Chat SDK 跨平台音视频通讯。建立完整的体验感较好的增强现实程序,为多种业务场景需求提供服务。
ORB在保持了特征子具有旋转、尺度不变性的同时,在速度方面提升明显,ORB是质量与性能之间很好地折中,对于实时性要求很高的SLAM而言是一个很好地选择。单独学习改进FAST算法的ORB算法。
8、参加 “大唐杯”比赛
参加第十届大唐杯,需要掌握一定的通信知识和通信基础,这对计算机科班出身的本人及实验室的小伙伴真的不是很友好,但是我们还是硬着头皮学下去了。背景知识上的数据都给出了,只要好好用心填写到对应的地方就好。 但不要只是盲目地复制它。 有些东西需要计算,比如发射功率,频点计算,小区最大发射功率等。 这些都是计算出来的。 还有IP地址计算,网络地址,网关,掩码等等,千万别搞错了。 还有一些知识,比如路由关系不要搞错,关系要一一对应,网元功能(八个网元)不要弄错。
9、ORB-SLAM3实时运行
跑了实时的ORB-SLAM3,根据官方例程在中使用ros接入INDEMIND相机,这回有SDK及ORB-SLAM3安装过程中的各种常见性问题解决方法及安装细节,与官网教程略有不同,列举所有默认安装的依赖。
10、INDEMIND相机Windows平台运行
INDEMIND相机的SDK也能在Windows平台运行,所以也做了一些WIN上的探索。
11、学习使用EVO工具
EVO工具全名为“Python package for the evaluation of odometry and SLAM”,使用Python写的轨迹评估工具,目前在SLAM领域论文中的“使用率”逐渐上升,可以说已经成为了作为SLAMer一定要会用的工具。学习evo工具评测SLAM算法性能并可视化结果。
12、ROS 系统 bag录制
ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如相机话题的 bag 包,然后回放用来进行联合外参标定,也可以使用EVO工具显示算法轨迹,这里记录下我学习官方的 rosbag 教程的笔记。
12、学习ORB-SLAM3的三大线程
参加电赛,2023年“兆易创新杯”第十八届中国研究生电子设计竞赛,给我的感觉是时间真的紧张,可能是因为去年有疫情原因影响所以能准备的时间到七月份,今年不到月底就要全部出成品。我们团队一直在自研一款增强现实眼镜,从硬件设计到软件实现全部由我和另外两个小伙伴一起完成,所以就把我们做出来的原型机的一部分拿出来改了改参赛了。
13、改进点云
双目惯性相机最开始是从VINS中了解到的,2018年VINS中推荐过Loitor视觉惯性相机,但是后来看到GitHub Issue中有人反映Loitor丢帧、无技术支持等问题,加之购入渠道非官方故未入手Loitor,浏览知乎时关注到Indemind的该款产品,发现技术贴较多、SDK支持及销售渠道较为官方,故今年入手了一个,打算用于VI-SLAM用于视觉定位导航及双目三维重建等方面进行感知定位,分析SDK中实时显示点云图代码并加以改进。
14、总结VI-SLAM系统
对目前VI-SLAM系统做了总结,视觉与IMU融合的SLAM系统逐渐受到广泛关注,已成为SLAM系统的研究热点。我的研究内容已经从单一的传感器,到视觉与惯导融合的多传感器架构了。
15、相机标定
算法不够准确,重新做相机标定,学习SLAM真的走了不少弯路,踩了不少坑,我们不像旁边无人驾驶课题组的一直有纵向课题,这次的AR项目真的对我们有着不小的挑战。
16、Kalibr工具线对相机+IMU离线标定
使用Kalibr工具线对相机+IMU离线标定,常见SLAM算法的定位精度主要看传感器的情况,传感器的精度保证才能让算法更加准确,所以对传感器的标定显得尤为重要,Kalibr是唯一能标定camToImu的工具。
仔细推到了IMU预积分的过程,是真的很难。
17、相机和IMU联合标定
INDEMIND这款相机有硬件同步,但是imu的数据还是不够准确,所以还是需要进行标定。虽然出场已经进行过标定,但是数据仍不够准确,而目前也没有针对这款IMU相机的标定教程,所以从Kalibr安装开始,进行双目相机的标定、IMU的标定、相机和IMU联合标定。
18、学习RANSAC算法进行点云的平面拟合
RANSAC算法是“Random Sample Consensus”的缩写,它的全称是随机抽样一致性算法。算法可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。RANSAC算法是不确定的算法——它是由一定的概率得出一个合理的结果,为了提高概率必须提高迭代次数。首先对算法进行学习,然后根据理论在Unity实践中实现平面拟合。
19、学习OpenGL渲染
学习使用OPENGL (Open Graphics Library)可以用来进行虚拟模型的渲染,OPENGL一个跨语言、跨平台的图形编程接口,具有2D/3D 建模、坐标变换、交互技术、纹理映射等功能,包含几百个核心函数,通过这些函数可以便捷、快速地渲染虚拟模型。
20、学习Vulkan渲染
学习使用Vulkan。OpenGL是黑盒子,它能提供好用的AP,没有办法进行一个深入的优化,所有东西都包装在一起没有办法看到底层变化的实现逻辑。Vulkan的底层全部铺出来,每一步都需要自己去实现,很麻烦,但与之同时可以做更多的优化。如果你的程序在GPU性能上有瓶颈,不应该使用Vulkan。如果你的性能瓶颈在CPu和GPU的一个数据交互上,这个时候可以使用Vulkan,Vulkan会为CPU减轻非常多的负担。
21、参加全军统一考试
参加文职人员考试
22、参加国考
参加国考,这几年口罩让大家意识到公务员的稳定,考公人数剧增。
23、参加京考
参加京考,今年的京考真的很早,我感觉听粉笔980很简单,但是自己做的时候就不一定了,我开始的阶段是这样,现在在慢慢变好,看题能联想到知识点,把基础又过了一遍,越看心里越有东西,基础真的挺重要的,把基础巩固再巩固,做题就会更有思路。
二、生活娱乐
流浪2真的是震撼,被朋友疯狂安利。看之前没想到会这么好看!续集不仅没有扑,还得到全方位升级。构造的宇宙观真的爱了;反曲弓小菜鸡️新技能Get;卡丁车真刺激哈哈哈,玩不够呀,第一次就跑了1’11,进一分就能换快车了;你的酒馆对我打了烊,炉石传说从最早入坑的玩家到暴雪和网易谈崩,跟炉石告别,也是跟青春告别; 意气凌霄不知愁,愿上玉京十二楼。第一次听了音乐会真的感慨良多,观众们都好有素质,演员水平也真的高,好几次都快泪目了,爷青回。不知不觉就过了两个小时,就像如听仙乐耳暂明一般震撼;
1、小破球2真的震撼
2、世纪剧院仙剑奇侠传视听音乐会
3、打卡重庆解放碑
4、去了重庆的洪崖洞
5、喝了鹅岭二厂的COFFEE HOLIC
6、观音桥吃重庆火锅
7、转了转钟书阁恢弘大气
8、涂鸦一条街很有趣
9、交通茶馆喝一盏茶
10、四川美院逛逛
11、逛逛来福士
12、磁器口古镇
13、蹦床公园
14、学会了钓鱼
15、五月天鸟巢
16、参加《北京科幻大会》
17、观看《银河护卫队3》
18、观看《消失的她》
19、观摩西安碑林博物馆
20、西安ACC漫展,一发入魂沙鲁
21、逛西安钟楼
22、大唐不夜城逛吃
23、兴庆宫游园
24、汉宫露营
25、观光芙蓉园
26、观看《封神第一部》
27、观看《长安三万里》
28、环球影城第一届万圣季
三、身体健康
保持身材依旧是重中之重,卡丁车真刺激哈哈哈,玩不够呀,第一次就跑了1’11,进一分就能换快车了;双板滑雪犁式学会了,开始练习平行式;
1、开始徒步旅行
2、卡丁车第一次就跑了1’11
3、学会了反曲弓射箭
4、入门双板滑雪
5、第一次骑行100km到白虎涧
6、单板落叶飘更丝滑了
7、入门速降山地车,体验速度与激情
8、骑行功率又涨了
9、学会钓鱼
10、牙套摘啦,大胆笑更闪耀
11、网球的中速球熟练啦,2.5-3.0的样子
12、西安城墙骑山地车
13、夜爬华山4H11min到达北峰
14、尝试拳击,人生体验+1
15、公路骑行爬妙峰山5H14min
16、单板学会换刃,去了富龙滑雪
17、双板滑雪学会犁式
四、总结
今年的收获感觉溢于言表,也是我非常喜欢的一年,这一年我慢慢变成一个SLAMer,去做元宇宙的应用。
我被CSDN认证为博客专家啦!这也算是C站对我创作能力的认可。从大一开始在施一飞老师的影响下开始在CSDN写作,坚持至今。刚开始写博客只是当作一个学习笔记,把学到的东西记录下来,方便以后重复学习。渐渐地,随着写技术的深度增加,访问量也越来越多,自己的写作能力也慢慢地有所提高。就这样,访问量的提高,粉丝的好评,也让自己的自信心逐渐提高,于是形成了一个良性循环,从而越写越好,越写越多。C站记录了我关于技术的成长,之后的计划是出版一本关于技术的书。
十年饮冰,难凉热血。学以致知,然后学以致用。幸运的是,曾经的菜鸟像鸵鸟一样把头扎进沙漠,然后发现在沙子下面的是星辰大海。成为博客专家并不代表了我到一个多高的高度,而是代表了我刚刚上路。