浅谈基础平台

本文探讨了基础平台在业务应用中的角色,旨在减少技术问题对应用开发的影响。基础平台通常包括基础功能、开发库、模式和部署工具。文章讨论了为何需要基础平台,即使有大量优秀的开源框架,但仍需针对特定领域进行定制和二次开发,以提高开发效率、确保技术平稳升级和降低维护成本。此外,基础平台的考核涉及功能复用、开发效率、技术风险可控性和招聘成本等方面。文章还涵盖了基础平台的构建,包括领域化支持、组件化支持、产品化支持和平台化支持,以及如何选择和构建基础设施。最后,文章提到了异常体系、多任务处理和应用交互模式等开发模式的实现。

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

一、什么是基础平台

基础平台对应于业务应用,主要处理技术问题,是为业务应用提供技术支撑以及技术方案的模块或者组件。其目的是使得应用组件可只关注于业务逻辑,而不考虑或者少考虑技术问题。

基础平台通常包括如下:基础功能,开发类库,开发模式以及开发部署工具。

二、为何要基础平台

应用系统的设计可以说是将一个业务语言翻译成程序语言的过程,这个过程同时处理两个内容:业务和技术。

1. 学习业务,编写的代码符合用例的流程;

2. 学习技术,编写的代码符合技术平台的规范和要求。

这里不同底层技术的难易度不同,导致学习成本、开发成本和应用成本也不同。同时对于一个有较长生命周期的软件项目或者产品,其依赖的底层技术的升级也会带来相应的维护成不

面对特定领域的软件项目或者产品,其所依赖的底层技术的广度和深度相对稳定,基础平台可以填平或者减少技术层面的鸿沟。

那么,我们就面临另一个问题,即:业界已经存在大量优秀的开源框架,我们为何要基础平台。

首先,大量优秀开源框架可以帮助我们,但是:

1.优秀的开源框架通常偏向通用性,而面向特定领域的相关特性和功能还不支持;即便有面向特定领域的,其支持的特性还存在一定差异性;同时其未必支持相应的基础设施。

因此需要进行二次开发,以完善所需的基础设施;

2.优秀的开源框架在通用性支持广泛,提供多种选择,同时还有一定学习成本;而面向特定领域,需要的模式相对固定。

因此需要进行定制,减少学习成本,提供开发模式,进而提高开发效率;

3.技术升级的平稳性,虽然优秀的开源框架会尽量提供升级平稳性,但是和产品目标未必一致;也需要进一步的测试工作;为了进一步减少成本和风险需要基础平台来处理相应工作;

4.开源框架本身存在一定的缺陷,其修复有一定周期,和产品项目周期不同步。所以也需要做些修复和规避工作;

因此开发维护支持特定领域的基础平台存在客观需要。更进一步,基础平台是在关注点分离原则下的一个必然产物。

三、基础平台的考核

基础平台的考核需要依照其目标以及特性来,包括:

1. 功能复用所带来的成本降低。这个比较好衡量,直接使用复用。

2. 提高业务应用的开发效率(新增或维护)。这个指标的衡量有一定难度,需要有两个近似项目分别应用不同基础平台,并在一个较长时期内(比如2年,以便消除人员差异、具体功能差异性和难易度)。

3. 技术风险的可控性,技术更新的平稳性。这个指标比较好衡量,需要收集开发过程中处理各种突发技术问题以及其解决成本。

4. 招聘成本。这个指标也属于比较好衡量的。

5. 架构推广。架构推广有赖于一个良好的基础平台,避免成为空中楼阁。

总之,基础平台的应用将使开发和维护的成本具备平稳性和收敛性。

四、基础设施的选型

应考虑几点:1. 商业角度的维护性和升级性;2. 组织的学习和管理能力;3. 基础设施自身功能以及所支持的开发效率.以下是详细要求:

客户角度

成熟度要求

基础设施是业界成熟方案;

性能要求

基础设施满足系统运行的性能要求;

稳定性要求

基础设施版本稳定,经过大量测试࿱

### RVIZ2 中不支持立体视觉的原因 RVIZ2 主要用于可视化来自不同传感器的数据,包括激光雷达、摄像头等。然而,在当前版本中确实存在对立体视觉支持不足的情况[^2]。 原因主要在于: - **数据处理复杂度**:立体视觉涉及到两幅图像的同时处理与匹配计算,这对实时性能提出了更高要求。 - **API 设计差异**:ROS 2 的 API 虽然提供了丰富的功能接口来构建复杂的机器人应用系统,但对于特定类型的多目相机的支持还不够完善。 ### 解决方案 尽管官方默认情况下未直接提供针对立体视觉的良好集成体验,但仍有一些可行的方法可以实现这一需求: #### 方法一:自定义插件开发 通过创建自定义显示插件的方式扩展 RVIZ2 功能。这需要开发者熟悉 C++ 编程语言以及 ROS 2 插件机制,并能够调用 OpenCV 或其他计算机视觉库来进行双目视差图的生成和渲染。 ```cpp #include <rviz_common/display.hpp> // ... other necessary includes ... class StereoVisionDisplay : public rviz_common::Display { public: // Implement required methods and members here... }; ``` #### 方法二:利用第三方工具链 借助于像 `stereo_image_proc` 这样的包先对外部获取到的左右眼图片流做预处理得到深度信息后再输入给 RVIZ2 显示。这种方式不需要修改 RVIZ2 源码本身,相对简单易行一些。 ```bash ros2 run stereo_image_proc disparity stereo/left/image_raw stereo/right/image_raw ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值