企业做网站都购买域名吗,武清做网站公司,房产官网,哪里的佛山网站建设五一期间#xff0c;在家里翻到之前上学时候用的电脑和工作日志#xff0c;粗略浏览一番#xff0c;感慨10年岁月蹉跎#xff0c;仍然没有找到自己技术方向的“道”。遂有感而发#xff0c;写下此文。
算起来#xff0c;接触软件开发也有10年时间了#xff0c;最开始是…五一期间在家里翻到之前上学时候用的电脑和工作日志粗略浏览一番感慨10年岁月蹉跎仍然没有找到自己技术方向的“道”。遂有感而发写下此文。
算起来接触软件开发也有10年时间了最开始是本科大二的时候14年在课堂上学习了c语言开始对编程有了点兴趣。课外参加嵌入式的比赛在stm32和飞思卡尔的芯片上做开发刚开始是循迹和控制的算法。
后来也在PC上写一些配套的上位机工具使用的是MFC和matlabmatlab是可以做界面的估计很多人不知道。上位机主要功能是串口读写SD卡读写嵌入式做图像处理当时还没有实时无线发送视频流的发放先写到SD卡曲线展示等功能。
第一个MFC工程 第一个matlab工程 大四期间由于在做平衡车方面有点心得在北京中国科学技术馆和自动化所做自平衡车也是嵌入式相关的项目。当时中国科学技术馆还有我们一个展位记得在4楼通宵好几天在馆里面调试。现在应该换成别的展品了。
中国科学技术馆展台 本科的毕业设计是四旋翼的控制在simulink中计算旋翼控制量用于控制算法的仿真与开发UI使用matlab构建。
四旋翼控制 不知道什么时候接触的qt大概是有年国庆假期学了两三天发现比MFC好用多了后面的开发就一直用qt了。
在硕士期间开始系统的接触视觉算法学了一些课程做了几个视觉识别相关的项目印象最深的是,端子识别QTCTD线序的识别CSDPlus板材的识别视觉抓取VisionGraspsatellite线缆弯折比例测量等。开发环境也各种各样PC端的Ubuntu的最离谱的安卓的手机相机拍照来测satellite线缆折弯比现在来看这根本是不可能测准的。还有一些非视觉的项目有些是不用交付的用于辅助实验室是设备的调试比如调姿平台RAA倍福PLC控制麦克纳姆车控制传送带控制KUKA机器人控制。
线序识别 标题线序识别最终产品
从结构到电器到软件全是本人设计机械图纸PCB
端子插线识别
采用模板匹配方法找到端子线孔yolo二分类识别好坏。在UBUNTU下的。
机械臂抓取坐标系调试 硕士论文中开发的软件,家具厂智能制造单元控制系统也是使用的Qt基本上是把上学期间做项目用的软件技术全部用上了。包括车间内设备的控制与调度板材计数瑕疵检测MES系统的通信。
板材生产线检测系统 硕士期间选了一个课程学的是java现在看主要是面向就业的。那时候不懂只觉得好玩就选了课程作业是写一个信息系统我大概做了这个一个老师布置作业学生完成作业老师打分学生查看自己成绩。
JAVA信息管理系统 不得不说java开发的这种框架还是比较多稍微学习就可以上手。但工作以后会发现熟悉业务了解用户需求才能又好用的软件。
其它的都是业余时间开发主要和无人机嵌入式开发有关。比如使用qt开发了无人机编队上位机 QT_ANO_POSITION QFormation等。
无人机飞行控制上位机 嵌入式开发主要是实习公司做的主要项目有压力检测设备NRF干扰器人体关节测量仪器脉诊仪。NRF干扰器开起来整个房间的无线鼠标都不能用了用于一些科技比赛的防远程作弊广场舞扰民制裁等。脉诊仪最有意思使用三个传感器模拟三个手指放到人手腕上采集信号和中医诊断匹配训练深度模型我们叫它电子号脉。不知道现在有没有类似的产品那时候还是1819年思想还是比较超前的。
2020年学校毕业进入视觉检测行业在工作中第一次见识到了具有工业强度的视觉软件。和之前在学校里面做的视觉检测项目完全是天上地下也因此在工作的前两年我有空就研究这个工业强度的视觉软件和底层尤其是在我独立负责一个新产品开发拥有了全部代码权限之后。这段时间我软件算法技术成长最快的对检测业务需求也有了一定的了解。 工作前两年主要在学习如何构建一个高效的视觉检测系统。自己的专业技能则都点在了视觉算法的设计开发和优化上面包括原理优化指令集多线程。优化算子都对标号称最强的视觉检测算法halconTUM德国慕尼黑工大开发。有些单算子的效率甚至高过了halcon而算子组合优化halcon是无法完成的在定制算法开发时两步三步并一步少了内存反复读写效率是高过halcon的。虽然在CPU上优化了很多但最后我们发现CPU的性能已经快被我们榨干了因此后来把整个检测系统的算法从CPU迁移到GPU上使用的是cuda。
我一直喜欢称自己为算法工程师但我又看不上只会写算法对软件业务一无所知的所谓算法工程师因此我也经常开发一些软件来印证自己所学。主要也是受行业内前辈的影响产生了自己开发视觉检测系统底层的想法有了底层开发一些小的软件时候就可以统一到一个框架中来慢慢的就有了积累。
在开发一个自己的视觉检测系统底层的前期做了很多调研OpenCV,Dlib,VLFeat,Boofcv,Pillow,VTK,ITK,Halide,SIMD,Halcon,Separe,IPP,NPP,Duilib,Qt,wxWidgets等。Dlib是参考较多的库。
在21年的时候就给这个底层库起好了名字叫MetaFramework包含了一些基础的几何库数学库图像区域轮廓等算法数据接口也包括序列化通信等软件组件基础的数据结构就用stl里面的。虽然很多大型的开源库都喜欢自己写基础数据结构比如UE,QT,GST等自己用stl就够了这个还是不要投入太多精力。UI框架没有自己写之前研究了一段时间的UI框架对于非软件科班出身的人来说还是有点吃力使用的是Duilib使用vs的解决方案管理项目。使用这个底层库没有做什么实质上的应用就写了些简单测试的demo因为自己实际使用起来还是觉得不顺手。
随着对视觉检测系统的了解对效率开发友好跨平台的需求MetaFramework不能再满足需求了于是推倒重来重新设计了新的架构Meta元。 元使用c搭建的大规模智能体仿真后端框架支持底层的动力学Dynamics计算控制器Autopilot作为插件配置上层的高级指令Commands智能体行为逻辑Rules配置框架允许模块间数据交换采用序列化容器的方式因此环境数据的加载模块传感器模型以及未来新的需求所需的模块可以通过脚本的方式配置到仿真循环中 后来逐步进入boost框架改名为MetaCoreUI使用的wxwidgets。使用boost库实现了一些底层功能比如序列化共享内存总线模块插件加载等。使用cmake进行项目管理可以在多个平台使用一套源码编译。逐步成为一个可用的底层库做了一些项目和小工具。 使用这个底层库开发了ImageViewerSim框架等软件。
ImageViewer sim框架 在用这个框架做项目的时候发现UI这块还是比较难用于是又集成了Qt但仅用于UI。 又开发了QViewer视觉跟踪控制软件。
视觉识别与跟踪 写到这里其实已经隐约有点了悟。软件需求千差万别业务场景复杂多变虽然做了这么多软件但我真正积累下来的只有软件算法设计的思想也唯有底层技术万变不离其宗。已经从一开始的感慨逐渐平静这就是未来的方向。要构建自己的核心能力而核心能力就是底层库源码。
这也是现在正在做的事想明白了这点又开始思考构建c底层库的好处。总结了如下三点自己平时写的一些模块可以放到一个仓库里面统一编译统一管理能在自己些demo的时候有一个快速的参考有些三方库源码很不好找或者不容易下载预编译的也不适合自己的编译环境统一到在自己的代码仓库中Thirdparty的中则没有这个问题作为发布工业软件的核心库在软件逐步迭代的过程中底层库的能力也在不断增长。