做工控视觉项目的时候,是不是每次都要从头搭建一个上位机?
想把海康相机、运动控制卡、图像处理都集成进去,光是写界面就花了大半个月的时间。
修改流程又需要修改代码,修改完之后还要重新编译。
在测试的时候想要看到中间的结果,还要插入很多日志。
最近发现了一个开源项目,把所有的麻烦都解决了。
NodesFrame 是一个用 WPF 开发的运控视觉流程编辑器。
而该工具采用节点图的形式,拖拽几下就可以把视觉检测、运动控制、流程编排全部串联起来。
经常做工控视觉集成的工程师,推荐看看。
下面我们看看它有哪些独特功能。
可视化节点编辑,拖拽就可以搭建流程。
把左侧工具箱里的节点拖到画布上,然后用线把它们连接起来,就搭建好了一个处理流程。
双击节点就可以修改参数,不需要写任何代码。
比如拖一个海康相机节点、接一个图像处理节点、再连一个运动控制节点,整个检测流程就串起来了。
支持撤销重做,节点可以自由布局。
以前要用LabVIEW或者买商用组态软件来实现的可视化编排,在现在就可以用到开源工具了。
而且代码是开源的,可以自己修改。
包含12种以上的OpenCV算法,图像处理即插即用。
高斯模糊、Canny 边缘检测、二值化、形态学、霍夫直线等常用的算法都已经内置了,一共 31 个视觉算法节点。
并且节点之间用ImageData原始像素直接传输,没有PNG编码和解码的开销。
以前调视觉算法的时候,要写很多OpenCV的代码。
现在拖一个节点、改一个参数,右边的预览窗口就可以看到效果了。
实时预览这块做得比较舒服。
鼠标滚轮缩放、拖拽平移,对比模式还可以同时查看原始图像和处理后图像。
高频刷新场景也可以用,使用了WriteableBitmap复用式位图。
海康相机、运动控制卡已经集成好,可以直接使用。
海康相机SDK已经封装成节点,初始化、触发拍照、关闭,三步搞定,还支持动态枚举已连接设备。
运动控制也做了完整的闭环:控制卡初始化、电机运动、等待输入信号、输出信号。
多轴定位也可以,DataGrid 直接配置参数。
把节点拿出来连上线之后,硬件控制流程就形成了。
以前做硬件集成,光调SDK就要两天时间,现在节点拖拽一下,参数配置一下,半天就可以跑通。
流程控制节点支持回环和循环。
延时、条件判断、While 循环、等待信号等控制逻辑都做成节点了。
并且可以实现回路连接,可以完成比较复杂的工艺流程。
单个输出可以连接多个下游节点,主流程走回环路径,旁路用BFS递归执行。
FlowExecutor 引擎用了 5 步流水线:TryExecute → PropagateOutputs → ManageLoopStack → ResolveNextNode → TryLoopBack。
以前写代码要写几百行才能实现的多回路分支,在现在的节点一连之后就完成了。
ILoopNode 统一管理循环,回环和旁路都可以跑。
变量系统可以实现动态绑定和实时查看。
定义了Bool、Double、Int32、String这四种变量类型,节点参数可以绑定变量。
修改一个变量的值,所有使用到该变量的节点都会跟着改变。
右边的侧面板可以实时查看变量值,变量管理器弹窗中有一块Name/Type/Value/Description。
而且 IVariableTypeHandler 可以扩展,想加新的类型就自己写。
动态属性系统基于反射扫描。
用[NodeProperty]来标注一下,属性就会被自动识别。
支持动态下拉选项、数值范围限制、变量绑定。
属性编辑器会根据类型自动选择模板,NumericTextBox 支持 Int/Float 模式,并且有范围限制和虚拟数字键盘。
流程图能保存加载,断电也不怕。
将整个流程图都保存为JSON格式。
节点的位置、参数设置、连接方式等都可以一键保存,下次打开时直接加载,并且从上一次中断的地方继续进行。
而且NodeFactory反射工厂可以自动识别出新的节点类型。
还有自动布局的功能,一键整理节点的位置,如果流程图画得乱七八糟的,点一下就可以自动排列好。
三种主题切换,UI 看起来很舒服。
Dark、Light、Nodify 三种主题可以一并切换,使用HandyControl的暗色主题作为基础,界面风格一致。
工具箱卡片化设计,左边是彩色类型条,中间是图标,右边是节点名称。
FontAwesome和iconfont两套图标动态切换,搜索过滤也做了,找节点比较方便。
执行日志有级别着色,信息、警告、错误、成功区分清楚,底部有微分隔线,还可以折叠清空。
技术栈挺先进,架构设计合理。
. NET 8.0 框架和最新的 C# 特性是兼容的。
Prism.Unity 使用依赖注入,ReactiveUI 使用响应式 MVVM。
Nodify 7.3.0 控件、节点图编辑的主要部分,OpenCvSharp4 4.13.0,图像处理算法库。
项目结构很清晰:Shell 主程序、Core.UI 通用组件、Hardware.Card 硬件抽象层。
看到这你想装上试试?
对环境的要求不高,只需要安装好Windows 10/11系统和.NET 8.0 SDK就可以。
git clone https://github.com/penstiner/NodesFramedotnet restore Shell.slndotnet build Shell.slndotnet run --project Shell/Shell.csproj跑起来之后,从工具箱里面拖出几个节点,连上线,点执行就可以跑了。
感兴趣的朋友可以抓紧时间试一试。
开源地址:https://github.com/penstiner/NodesFrame 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!