当前位置: 首页 > news >正文

【智路】智路OS 应用开发

1 总览

1.1 功能

智路OS的应用基于框架提供的服务数据,实现场景理解、指标计算、V2X核心功能实现,应用包括但不限于:

  • V2X应用场景实现
  • 交通事件检测
  • 交通流指标计算
  • 系统监控
  • 路径规划控制

开发者可以基于智路OS框架和数据,实现自定义的应用。

1.2 设计理念

在车路协同系统中,应用是高度自定义的模块,智路OS提供的特性包括:

  • 自定义应用可以按照标准流程注册到智路OS中
  • 智路OS应用框架支持多个应用同时运行,每个应用为单独的进程调度,互不影响
  • 应用可订阅多种服务数据进行业务处理,并且可以使用任意协议与云端通信
  • 智路OS提供了两种标准的应用输出格式,经过RSU发送给OBU的数据定义、发送到标准云控平台的数据定义,组装消息并且调用发送回调即可实现。输出到车的数据为标准格式消息,即《合作式智能运输系统 车用通信系统应用层及应用数据交互标准》系列标准规定的格式,输出到云的格式基于《智能网联汽车云控系统 第3部分 路云数据交互规范》

2 类说明

Application

AirOSApplication

应用的基类,开发者需要继承该类并实现对应的接口,由智路OS框架加载模块后调用。

构造函数

AirOSApplication(const ApplicationCallBack& cb)

创建一个应用对象,传入智路OS提供的回调,应用可使用回调发送规定格式的数据

Init

bool Init(const AppliactionConfig& conf)

初始化接口,在应用初始化时调用,框架在描述文件中读取配置文件相对路径,增加前缀路径后传入接口。

namevaluedescribe
参数conf框架传入的配置,在开发者具体实现中读取,如下所示
返回值bool初始化正常时返回true,初始化失败时返回false
message AppliactionConfig {optional string app_name = 1;      // app名字optional string app_package_path = 2; // app安装路径optional string app_config_path = 3;  // app配置文件路径
}

Start

void Start()

应用主逻辑入口,理论上内部为循环数据处理,如果无相关需求可以直接返回,应用仍持续运行。

应用数据

message ApplicationData {oneof payload {v2xpb.asn.MessageFrame road_side_frame = 1;airos.cloud.CloudFrame cloud_message_frame = 2;}
}

智路OS规定的应用输出数据,发送给路侧通信设备或者发送给云端平台。其中,v2xpb.asn.MessageFrame为V2X标准消息对应的protobuf格式,airos.cloud.CloudFrame为根据路云数据交互规范标准制定的protobuf格式,

开发者在继承抽象基类AirOSApplication后,调用内部的ApplicationCallBack将数据发送给智路OS框架,框架根据相应数据类型转发给路侧通信设备或者云端平台。

3 开发流程

3.1 代码及配置修改

创建包

airospkg create -name new_app -type app

修改源文件

在源文件中修改接口注册信息

AIROS_APPLICATION_REG_FACTORY(NewApp, "new_app")

进行编码,开发相关规则如下:

  • Init须为非阻塞实现,Start可以是阻塞或者非阻塞实现
  • 通过app_middleware.h提供的RegisterOSMessage接口,可以订阅来自智路OS框架的消息,具体可以参考开源组件代码
  • 接收到数据进行处理后,可以使用sender_发送数据
  • sender_中填充标准V2X数据后会通过智路OS协议栈发送到RSU设备,进而发送给安装OBU设备的车辆
  • sender_中填充定义的云端数据会通过标准协议发送给默认的云控平台

参考组件开发基础修改对应编译脚本。同时需要修改配置供框架加载,例如编译的动态库名为libnew_app.so,对应的conf/app_lib_cfg.pb需要修改为

so_name: "libnew_app.so"
app_name: "new_app"

注意:需要将智路OS-SDK和第三方库之外的依赖库放置到包目录下的lib文件夹中,避免发布或者安装包后,运行出现找不到依赖库的情况。

3.2 编译及运行

airospkg make -name new_app -type cmake  #编译
airospkg release -name new_app -out new_app.tar.gz  # 发布
airospkg install -file /home/airos/projs/new_app/new_app.tar.gz  # 安装
airospkg run -name new_app -type app  # 运行

http://www.mrgr.cn/news/28557.html

相关文章:

  • 安全见闻-泷羽sec课程笔记
  • 商城小程序(源码+文档+部署+讲解)
  • 基于Spider异步爬虫框架+JS动态参数逆向+隧道代理+自定义中间件的猎聘招聘数据爬取
  • HarmonyOS SDK下的实践与探索
  • 机器学习基础04
  • 18B电阻
  • 嵌套类问题的递归解题套路
  • Java中Redis大Key的优化拆分方案与示例
  • 【C++算法】位运算
  • 基于web的超市管理系统设计与实现
  • MySQL record 05 part
  • Go语言并发编程之select语句详解
  • Linux memcg lru lock提升锁性能
  • 【Python爬虫系列】_023.关于视频爬取
  • ​FullCalendar:强大的JavaScript事件日历
  • 【深度学习|可视化】如何以图形化的方式展示神经网络的结构、训练过程、模型的中间状态或模型决策的结果??
  • 【雅特力AT32】时钟配置-延时阻塞函数-软件定时器 时钟源与源码分析
  • SOMEIP_ETS_112: SD_Empty_Option
  • 【C++学习】 IO 流揭秘:高效数据读写的最佳实践
  • 火语言RPA流程组件介绍--浏览器页面操作
  • Qt多元素控件——QTableWidget
  • Go小专栏 第一期
  • PostgreSQL的表压缩
  • 【C++题解】1997. 孤独的素数
  • ChatGPT有三个快捷指令和三个模式,你知道吗?
  • 为了有了ReentrantLock还需要ReentrantReadWriteLock?