彩超框架EchoSight开发日志记录

EchoSight开发记录

作者:蒋志强

不定期更新EchoSight开发日志记录,最近更新于2024年1月19日

1.背景

由于某些不可抗逆的原因,离开了以前的彩超大厂,竞业在家,难得有空闲的时间。我计划利用这段时间 自己独立 从零开始 搭建一套 彩超系统的软件工程框架。这个框架的设计水准力求达到目前商业级产品中 第一梯队 的水平。

这套工程框架,我暂时取名为EchoSight。Echo表示声音/回声,Sight本意为视野/看见的意思,所以EchoSight就是通过超声成像的意思,非常务实;开发基本完成后,如果没有什么特别原因,我会把程序分享出来(可执行程序),请各位业内大牛指教。

作为目标达到商业级 优秀的工程框架,EchoSight需要满足很多的要求,包括:

1. 框架的可扩展性;

2. 框架的高度灵活配置性;

3. 后续扩展开发的模块独立性与低耦合,以及模块的封装;

4.  CPU线程调度的安全高效与透明简单;

5. CPU SIMD与GPU执行的高效实时性;

6. 离线仿真配置与在线运行配置的近似性与可替换性;

7. 彩超链路分析与输出的便捷接口;

8. 工程框架与matlab良好的联调机制;

其它更多 TBD...

因此,这会是一个满大的挑战,特别是对我自己一个人独立开发而言。自己最终在这段时间内能做什么程度,我自己也不知道。这样挑战的单人项目,已经处于我个人能力圈的边缘地带,能做成什么样,实践是检验能力的唯一标准。干,就得了,生死看淡,不服就干!

随着项目的推进,也许自身在系统上的短板或工程的短板就暴露出来了,补上了,自己能力圈也就扩大了。

2.开发进展记录

 2.0 初步构思

(难以记时)

基本框架思路成型,然后又推倒几次,目前觉得基本可行。

2.1开发环境搭建 服务器搭建完成

(2023年12月15日)

工程代码,开发设计文档,系统仿真内容 SVN服务器搭建完成。

Q:为啥不用GIT ?

A:GIT用得不熟,SVN用得多。开发的辅助工具,不在这些无关紧要的东西上本末倒置。

开发环境选择为VS2022,纯C++不使用依赖任何基础框架。

其实QT提供了很多库,.NET也提供很多不错的框架。但我是做底层框架开发,纯C++的开发完成后,可以做到几乎零依赖零绑定,与几乎任何框架集成匹配,在几乎任何操作系统上运行。而VS在底层复杂问题上的调试工具比QT Creator丰富强大,QT更擅长于UI开发,包括QT对OpenGL的封装,对我来说也没有必要,原生底层调用才是我需要的。

系统仿真工具为Matlab2022,没啥说的,也没有备选工具。

仿真平台Field II, KWave, Focus与MUST。这几个仿真工具各有特点,看各个阶段的需求交替使用。

  

2.2 基础类的设计与多线程策略

(2023年12月25日)

基础类框架的设计开发第2次推倒重构,C++从ISO C++11改为C++20,以便使用C++最新特性设计。各模块空转情况下,多线程运行正常;

2.3 离线数据模块工作正常与多模块配置正常

(2023年12月30日)

通道数据仿真模块连线,注入数据正常,与其它各模块多线程配合未见异常。

扫查序列定义解析 正常,链路多模块配置与运行时自动搭建正常,XML解析正常;

2.4 Matlab仿真数据与工程匹配

(2024年01月09日)

仿真数据不能完美符合自己的需求,重新实验多种仿真工具field II, KWave, Focus,PField,MUST等。顺便还发现了某仿真平台里的又一个BUG,与作者联系(这是我发现他的第二个BUG了)。

更新开发设计文档。更新标准IQ波束合成模块,B模式模块。软件连线工作正常,图像结果异常,调试进行中...

2.5 数据解包模块重构与波束合成更新

(2024年01月15日) 

解包模块重构,支持任意FPGA打包策略。matlab仿真找到折中方案,满足需求,更新离线数据。

标准IQ波束合成模块调试,解决若干BUG(调试脱了一层皮),更新MLA支持,更新变迹计算的更优策略。

标准IQ波束合成 工程输出 与 matlab输出 基本匹配,未见明显异常。节前 重要 阶段性节点!

2.6 B模式处理更新与RTB IQ波束合成模块

(2024年01月19日) 

系统仿真导入数据更新,B模式链路更新基本处理,分离单独线程。

RTB IQ波束合成基础软件模块完成,程序调试跑通,目前结果未见异常。

但毕竟是仿真数据,我也不能完全确信是否正确,例如靶点太粗。如果有同仁手上有真实硬件通道数据方便分享,请后台留言,不胜感激。仿真的scatter太少,有些结果不能完全确认,

即使比较少的scatter产生一次通道数据都要跑10个小时,如果要达到我期望的精度,matlab仿一次通道数据,一周过去了。

正在重构基础类,内存管理思考中,目前内存爆表,各个子线程内部的子线程池策略思考重构中, 合成孔径开发进行中。

目前调试结果,均需要dump文件,甚是不便,后面我看能不能把OpenGL加进来,作个简单的显示和扫描转换,用作后面调试使用。哎,事情太多,都得自己搞,感觉忙不过来。

To be continued ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/242192.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIA—— 16每日一讲:HTTP和HTTPS、无状态和cookie、持久连接和管线化、(初稿丢了,这是新稿,请宽恕我)

学习目标: HTTP和HTTPS、无状态和cookie、持久连接和管线化、HTTP的报文、URI和URL(初稿丢了,这是新稿,请宽恕我😶‍🌫️) 学习内容: HTTP无状态和cookieHTTPS持久连接和管线化 目…

【咕咕送书 | 第八期】羡慕同学进了大厂核心部门,看懂这本书你也能行!

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论…

用Photoshop来制作GIF动画

录了个GIF格式的录屏文件,领导让再剪辑下,于是用Photoshop2023(PS版本低至CS6操作方式一样)进行剪辑,录屏文件有约1400帧,由于我处理的帧数太多,PS保存为GIF格式时,还是挺耗时的&…

unocss+iconify技术在vue项目中使用20000+的图标

安装依赖 npm i unocss iconify/json配置依赖 vue.config.js文件 uno.config.js文件 main.js文件 使用 <i class"i-fa:user"></i> <i class"i-fa:key"></i>class名是 i- 开头&#xff0c;跟库名:图标名&#xff0c;那都有什么库…

Jvm相关知识(面试高级必备)

类的实例化顺序 先静态、先父后子 先静态&#xff1a;父静态>子静态 优先级&#xff1a;父类>子类 静态代码块>非静态代码块>构造函数 一个类的实例化过程&#xff1a; ①&#xff0e;父类的static代码块&#xff0c;当前类的static; ②&#xff0e;顺序执行…

C++大学教程(第九版)5.25去除break语句 5.27去除cintinue语句

5.25题目 (去除break和continue)break和continue 语句遭到质疑的原因是它们的非结构化性。实际上,break和continue 语句总能用结构化的语句取代。请详述如何从程序的一条循环语中去除break语句&#xff0c;并用某种结构化的手段替代。提示:break 语句用于在循环体内离开一个循…

【高等数学之不定积分】

一、什么是不定积分? 不定积分&#xff0c;我们从英文层面来浅显的了解一下它的意义。 1.1、基本概念 从上面我们可以看出&#xff0c;导数和积分是互逆运算。 二、不定积分运算法则 三、常用积分公式 四、第一类换元积分法 4.1、常用凑微分公式 4.2、小练习 五、第二类…

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体 文章目录 【C语言】- 设置控制台标题、编码、文字颜色、大小和字体1 - 设置控制台标题2 - 设置控制台编码3 - 设置控制台字体和大小参考链接 1 - 设置控制台标题 因为要用到 Windows API&#xff0c;所以需要包含头文件…

LLM:Scaling Laws for Neural Language Models (上)

论文&#xff1a;https://arxiv.org/pdf/2001.08361.pdf 发表&#xff1a;2020 摘要1&#xff1a;损失与模型大小、数据集大小以及训练所用计算量成比例&#xff0c;其中一些趋势跨越了七个量级以上。 2&#xff1a;网络宽度或深度等其他架构细节在很大范围内影响较小。3&…

JVM篇--垃圾回收高频面试题

JVM垃圾回收 1 简单说下Java垃圾回收机制&#xff1f; 首先在java运行过程中&#xff0c;其实程序员并不需要去显示的调用程序来释放对象的内存&#xff0c;而是由虚拟机来完成的&#xff0c;具体来看是在jvm中有个垃圾回收线程&#xff0c;这个线程是个守护线程&#xff0c;…

揭秘AI换脸技术:从原理到应用

随着人工智能技术的不断发展&#xff0c;AI换脸技术逐渐成为人们关注的焦点。这项神奇的技术能够将一张图像或视频中的人脸替换成另一张人脸&#xff0c;让人不禁惊叹科技的神奇。那么&#xff0c;AI换脸技术究竟是如何实现的呢&#xff1f;本文将带您深入了解AI换脸技术的原理…

【JavaEE】网络原理:网络中的一些基本概念

目录 1. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 认识协议 1.4 五元组 1.5 协议分层 什么是协议分层 分层的作用 OSI七层模型 TCP/IP五层&#xff08;或四层&#xff09;模型 网络设备所在分层 网络分层对应 封装和分用 1. 网络通信基础 1.1 IP地址 概念:IP地址…

Qt 状态机框架:The State Machine Framework (二)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 1、利用并行态避免态的组合爆炸 假设您想在单个状态机中对汽车的一组互斥属性进行建模。假设我们感兴趣的属性是干净与肮脏,以及移动与不移动。需要四个相互排斥的…

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......手把手教你如何快速定位bug,如何编写测试用例,快来观摩......作为一名测试人员如果连常见的系统问题都不知道如何分析&#xff0c;频繁将前端人员问题指派给后端人员&#xff0c;后端人员问题指派给前端人员&#xf…

cetos7搭建部署k8s 版本1.28

主机分配 内存最少是4G cpu个数最少两个 IP内存CPU主机名192.168.231.12044K1 192.168.231.12144K2192.168.231.12244K3 关闭防火墙 systemctl stop firewalled 关闭swap vim /etc/fstab 设置主机名称 hostnameset 安装docker 三个主机 初始化集群 在mas…

【unity学习笔记】语音驱动blendershape

1.导入插件 https://assetstore.unity.com/packages/tools/animation/salsa-lipsync-suite-148442 1.选择小人&#xff0c;点击添加组件 分别加入组件&#xff1a; SALSA EmoteR Eyes Queue Processor&#xff08;必须加此脚本&#xff09;&#xff1a;控制前三个组件的脚本。…

ASP.NET Core SingleR:初次体验和简单项目搭建

文章目录 前言应用场景SignalR 网站长什么样&#xff1f;第一个ASP.NET core SignalR程序确定SignalR版本新建MVC项目添加unpkg管理器添加客户端添加ChatHub文件添加SignalR服务添加网页运行测试浏览器Websocket调试type1type6Type为其它时 总结 前言 平常的网页通讯都是基于H…

Python武器库开发-武器库篇之Fofa-API使用(四十六)

Python武器库开发-武器库篇之Fofa-API使用(四十六) FOFA&#xff08;FOcus Observation of Futures Assets&#xff09;是一款专业的网络资产搜索引擎&#xff0c;旨在帮助企业发现和评估网络上的潜在安全风险。FOFA的基本原理是通过搜索引擎的方式&#xff0c;按照关键词对互…

【51单片机Keil+Proteus8.9】温室盆栽灌溉系统

实验五 实验名称 温室盆栽灌溉系统 软件设计&#xff1a; 1. 定义对应的引脚和端口的别名。 2. 编写延时函数&#xff0c;用于控制程序的执行速度。 3. 编写LCD控制函数&#xff0c;包括发送命令和发送数据两种操作。 4. 编写显示函数&#xff0c;用于在LCD上显示字符串…

PHP+MySQL组合开发:微信小程序万能建站源码系统 附带完整的搭建教程

随着移动互联网的快速发展&#xff0c;微信小程序已成为企业进行移动营销的重要工具。然而&#xff0c;对于许多中小企业和个人开发者来说&#xff0c;开发一个功能完善、用户体验良好的小程序是一项复杂的任务。罗峰给大家分享一款微信小程序万能建站源码系统。该系统采用PHPM…