【智路】智路OS 应用开发

news2024/11/14 12:11:08

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.coloradmin.cn/o/2141656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CSS in Depth 2 精译_030】5.2 Grid 网格布局中的网格结构剖析(下)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

Python编程 - 线程

目录 前言 一、线程的使用 (一)基础使用 (二)等待线程完成 (三)多个线程 (四)守护线程 (五)线程同步 (六)总结 二、队列对象 …

编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动

找了很多编译博文,都错误。最后找到了正确编译办法: https://zhuanlan.zhihu.com/p/567883165 直接下载编译好的源码及dll文件 https://download.csdn.net/download/quantum7/89760587 安装VS Virsual Studio 2022 Community D:\Program Files\Micr…

Double Write

优质博文:IT-BLOG-CN 一、存在的问题 为什么需要Double Write: InnoDB的PageSize是16kb,其数据校验也是针对这16KB来计算的,将数据写入磁盘是以Page为单位的进行操作的。而计算机硬件和操作系统,写文件是以4KB作为基…

Spark Streaming基础概论

1. 简介 1.1 什么是 Spark Streaming? Spark Streaming 是 Apache Spark 的一个扩展模块,专门用于处理实时数据流。它通过将数据流切分为一系列小批次(微批次)进行处理,使得开发者能够使用与批处理相同的 API 来处理…

免费还超快,我用 Cursor 做的“汉语新解”插件开源了

前两天,你是否也被 汉语新解 卡片刷屏,却苦恼于无法快速生成? 记得当时,微信群里、朋友圈里、某书上以及公众号里,到处都在谈论这些生动有趣的“汉语新解”卡片。 这是由提示词大神 @李继刚老师 在 Claude 3.5 上开发的提示词。其辛辣的风格和全新的视角,令人耳目一新。…

SpringBoot+vue集成sm国密加密解密

文章目录 前言认识SM2后端工具类实现引入依赖代码实现工具类:SM2Util 单元测试案例1:生成服务端公钥、私钥,前端js公钥、私钥案例2:客户端加密,服务端完成解密案例3:服务端进行加密(可用于后面前…

Linux下root用户共享conda环境给其他用户

首先可以先用命令查看环境存储位置 conda env list 比如我的root用户的base环境 # conda environments: # base * /usr/local/miniconda3 在root下先给环境添文件夹加普通用户的权限 chmod -R 755 /usr/local/miniconda3 接下来新建一个用户&#xff0…

基于springboot酒店管理系统

酒店管理系统 552酒店管理系统 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,…

【电脑组装】✈️从配置拼装到安装系统组装自己的台式电脑

目录 🍸前言 🍻一、台式电脑基本组成 🍺二、组装 🍹三、安装系统 👋四、系统设置 👀五、章末 🍸前言 小伙伴们大家好,上篇文章分享了在平时开发的时候遇到的一种项目整合情况&…

记录一题---位示图

注意题目条件:盘块号、字号、位号到底是从0开始还是从1开始 盘块号、字号、位号从0开始,若n表示字长,则: (字号,位号)(i,j)的二进制位对应的盘块号bnij b号盘块对应的字号ib/n,位号jb%n 若字号、位号从1开始,n表示字长…

纯小白安装pytorch(快速上手)

1.首先进入你的虚拟环境(不进入也没关系) 在anaconda prompt中打开,输入activate 虚拟环境2.查看自己的conda源 conda config --show channels3.清空自己的conda源 conda config --remove-key channels4.添加源 conda config --add channels https://mirrors.tu…

Matlab simulink建模与仿真 第十六章(用户定义函数库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、用户定义函数库中的模块概览 注:MATLAB版本不同,可能有些模块也会有差异,但大体上区别是不大的。 二、Fcn/Matlab Fcn模块 1、Fcn模块 双击Fcn模块,在对话…

JavaScript 事件处理

一、简介 ​ 事件:发生在HTML元素上的事情,可以是用户的行为,也可以是浏览器的行为,如 用户点击了某个HTML元素用户将鼠标移动到某个HTML元素上用户输入数据时光标离开页面加载完成 ​ 事件源:事件触发的源头&#xf…

【课程系列12】某客时间AI大模型微调训练营

某客时间AI大模型微调训练营 链接 百度网盘地址:https://pan.baidu.com/s/1ZC-fOC_QQjNM6wyVjQcYOg 课程内容 https://u.geekbang.org/subject/finetuning?utm_sourceu_nav_web&utm_mediumu_nav_web&utm_termu_nav_web 深度解读 AI 发展四轮浪潮 技术浪…

PMP--一模--解题--111-120

文章目录 10.沟通管理111、 [单选] 干系人感觉他们收到的信息十分复杂,难以理解,因此,不能正确做出决定。若要解决这个问题,应该怎么做? 14.敏捷--角色--产品负责人PO–职责–1.创建待办列表并排序;2.确认工作优先顺序…

【网络】TCP/IP 五层网络模型:数据链路层

文章目录 认识以太网mac 地址mac 地址和 IP 地址的区别 类型ARP 协议 MTU 日常开发主要是应用层,传输层和应用层密切交互,传输层用到的也不少。网络层以及再往下,日常开发就涉及到的非常少了 认识以太网 插网线的上网方式 80211 是无线 WiF…

Encountered error while trying to install package.> lxml

Encountered error while trying to install package.> lxml 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城…

代码管理系统简介与部署(Introduction and Deployment of Code Management System)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

TCP.IP四层模型

一、TCP/IP模型协议分层 1、应用层: 2、传输层: TCP:传输控制协议 UDP:用户数据报协议 3、网络层: IP: 国际协议(IP地址) ICMP: 互联网控制消息协议(互联网…