您的位置:首页 > 娱乐 > 八卦 > 【智路】智路OS 应用开发

【智路】智路OS 应用开发

2024/10/5 22:29:55 来源:https://blog.csdn.net/gikod/article/details/142310623  浏览:    关键词:【智路】智路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  # 运行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com