精读《低代码逻辑编排》

本文详细解读了低代码逻辑编排工具Node-RED,介绍了如何使用其42个逻辑节点构建前后端服务。文章通过实例演示了如何创建天气查询应用,阐述了每个逻辑节点的功能,包括注入、调试、错误捕获、功能处理等,并探讨了逻辑编排的优势与潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑编排是用可视化方式描述逻辑,在一般搭建场景中用于代替逻辑描述部分。

更进一步的逻辑编排是前后端逻辑混排,一般出现在一站式 paas 平台,今天就介绍一个全面实现了逻辑编排的 paas 工具 node-red,本周精读的内容是其介绍视频:How To Create Your First Flow In Node-RED,介绍了如果利用纯逻辑编排实现一个天气查询应用,以及部署与应用迁移。

概述

想要在本地运行 Node-RED 很简单,只要下面两条命令:

npm install -g --unsafe-perm node-red
node-red

之后你就可以看到这个逻辑编排界面了:

我们可以利用这些逻辑节点构建前端网站、后端服务,以及大部分开发工作。光这么说还比较抽象,我们接下来会详细介绍每个逻辑节点的作用,让你了解这些逻辑节点是如何规划设计的,以及逻辑编排到底是怎么控制研发规范来提高研发效率的。

Node-RED 截止目前共有 42 个逻辑节点,按照通用、功能、网络、序列、解析、存储分为六大类。

所有节点都可能有左右连接点,左连接点是输入,右连接点是输出,特殊节点可能有多个输入或多个输出,其实对应代码也不难理解,就是入参和出参。

下面依次介绍每个节点的功能。

通用

通用节点处理通用逻辑,比如手动输入数据、调试、错误捕获、注释等。

inject

手动输入节点。可以定期产生一些输入,由下一个节点消费。

举个例子,比如可以定期产生一些固定值,如这样一个这个对象:

return {
  payload: new Date(),
  topic: "abc",
};

当然这里是用 UI 表单配置的:

之后就是消费,几乎后面任何节点都可以消费,比如利用 change 节点来设置一些环境变量时,或者利用 template 节点设置 html 模版时,都可以拿到这里输入的变量。如果在模版里,变量通过 { {msg.payload}} 访问,如果是其它表单,甚至可以通过下拉框直接枚举选择。

然而这个节点往往用来设置静态变量,更多的输入情况是来自其它程序或者用户的,比如 http in,这个后面会讲到。其实通过这种组合关系,我们可以把任意节点的输入从生产节点替换为 inject 节点,从而实现一些 mock 效果,而 inject 节点也支持配置定时自动触发:

debug

用来调试的,当任何输出节点连接到 debug 的输入后,将会在控制台打印出输出信息,方便调试。

比如我们将 inject 的输入连上 debug 的输入,就可以在触发数据后在控制台看到打印结果:

当然如果你把输入连接到 debug,那么原有逻辑就中断了,然而任何输出节点都可以无限制的输出给其它节点,你只要同时把输出连接到 debug 与功能节点就行了:

complete

监听某些节点触发完成动作。通过这个节点,我们可以捕获任意节点触发的动作,可以接入 debug 节点打印日志,或者 function 节点处理一下逻辑。

可以监听全部节点,也可以用可视化方式选择要监听哪些节点:

### FPFH 特征用于点云配准的代码实现 Fast Point Feature Histograms (FPFH) 是一种广泛应用于三维点云处理中的局部描述子算法,能够有效捕捉点云表面几何特性。通过计算每个点周围的局部特征直方来表示该点及其邻域的信息。 #### 计算 FPFH 描述符 为了计算 FPFH 描述符,通常会采用 PCL 库(Point Cloud Library)。以下是使用 Python 和 PCL 实现 FPFH 的具体方法: ```python import numpy as np import open3d as o3d def compute_fpfh_features(pcd, radius_normal=0.1, radius_feature=0.5): """ Compute Fast Point Feature Histograms for a given point cloud. :param pcd: Input point cloud data :type pcd: Open3D.geometry.PointCloud :return: Computed FPFH feature object """ # Estimate normals pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=radius_normal, max_nn=30)) # Create KD tree for efficient neighbor search pcd_tree = o3d.geometry.KDTreeFlann(pcd) # Calculate FPFH features fpfh = o3d.pipelines.registration.compute_fpfh_feature( pcd, o3d.geometry.KDTreeSearchParamHybrid(radius=radius_feature, max_nn=100)) return fpfh ``` 此函数接收一个 `PointCloud` 对象作为输入参数,并返回对应的 FPFH 特征对象。其中两个重要参数分别是法线估计半径 (`radius_normal`) 和特征提取窗口大小 (`radius_feature`)。 #### 执行 ICP 配准过程 基于上述获得的 FPFH 特征向量,可以进一步执行迭代最近点 (ICP) 算法完成两幅点云之间的精确匹配: ```python def execute_global_registration(source_down, target_down, source_fpfh, target_fpfh, voxel_size): distance_threshold = voxel_size * 1.5 result = o3d.pipelines.registration.registration_ransac_based_on_feature_matching( source_down, target_down, source_fpfh, target_fpfh, mutual_filter=True, max_correspondence_distance=distance_threshold, estimation_method=o3d.pipelines.registration.TransformationEstimationPointToPoint(False), ransac_n=4, checkers=[o3d.pipelines.registration.CorrespondenceCheckerBasedOnEdgeLength(0.9), o3d.pipelines.registration.CorrespondenceCheckerBasedOnDistance(distance_threshold)], criteria=o3d.pipelines.registration.RANSACConvergenceCriteria(4000000, 500)) return result ``` 这段代码实现了全局粗配准流程,利用 RANSAC 方法寻找最佳变换矩阵以使源点云尽可能贴近目标点云[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值