关于

UCS 应用框架前身是1862 CK项目应用框架。 CK项目中插件框架使用的是 CTK , 在CK项目中遇到了CTK框架如下一些缺点:

  • 插件加载及卸载、以及插件之间的依赖、启动和停止顺序需开发者自己代码实现,随着插件数量及其之间依赖关系变得更复杂后,不易管理;

  • CTK插件框架包含大量代码及多项子服务, 导致插件框架臃肿, 难以定制和维护, 而我们只需要其中的部分功能;

  • 遇到CTK 框架本身存在的bug, 定位和修复比较困难;

  • CTK框架基于QT开发, 因此间接性要求所有插件都需要依赖QT进行开发, 这导致插件框架的依赖性变强, 对开发者模块化分工及开发和测试环境的要求变高;

基于以上原因, 在1862现有CK项目基础上, 将其插件框架替换为 OSP 插件框架, 并提供如下多种可选通信方式, 替换原来基于CTK EventAdmin的通信方式:

  • Cyber 类似于ROS2使用方法的基于DDS的通信库.

  • CyberMQ 受CyberRT启发, 开发的基于DDS的通信库.

  • 参考CTK EventAdmin插件API接口, 使用更方便的MQTT Topic匹配规则(CTK EventAdmin使用的是LDAP)实现的进程内轻量化发布-订阅模型事件总线, 在此基础上还增加了请求-应答服务模式的支持.


说明

基于以上背景可以看到, 目前UCS相对于CK来说, 只是替换了插件框架和提供了更多插件之间和应用之间的通信方式, 在功能架构和业务层面仍是沿用CK的设计.

插件化开发是一种开发模式, 它通过将业务逻辑封装在插件中, 实现业务逻辑的解耦和复用, 从而提高开发效率和代码质量, 方便分工 合作, 测试和维护. 同时, 插件化开发也使得应用的扩展性更强, 能够根据需求动态添加和删除插件, 从而实现应用的灵活性和可定制性.

本文档主要介绍UCS的插件化开发模式, 不涉及无人操控系统本身的功能模块划分、架构、协议规范和业务逻辑等.