一篇对ROS2的DDS的形式化分析
模型组成
模型由下述五部分组成:
节点、发布缓存、订阅缓存、DDS缓存、传输信道
概念过程表示
概念和过程表示如下:
节点——N1,N2·····
发布缓存——Pn——bp[n]
订阅缓存——Sn——bs[n]
DDS缓存——bds
传输信道——bc
DDS收集信息——Publishing Interfacce ——数据从bp[n]到bds
DDS分发数据——Subscribing Interface——数据从
bc到bs[n]
信道中的数据丢失概率——pn
论文特点
优先级问题:论文使用的是非抢占式优先级
PTA(概率时间自动机)是一个对有限自动机在时间和概率上的一个扩展
各模块详细建模
A.节点模块
状态集(PTA中是Location):Init、Send_wait、Receive
不变式:true、无、t<=TRH(接受和处理消息的最大时间)
迁移:
变量:时钟变量t、临时存储的发送消息:tmp_pub、publisher的buffer : bp、subscriber的buffer bs
B. Publishing Interface 模块
状态集: Init、Collect
不变式:true、t<=TCH
变量:时钟变量t、DDS的buffer bds
collect时优先级高的pb[n]先进行收集,如果bds满了就删除buffer中第一条消息
C. 数据分发模块
状态集:Init、 根据数据类型不同,有5个其他状态、PUB(发布注册)、UNP(取消发布)、SUB(订阅注册)、UBS(取消订阅)、DAT(普通消息)
不变式:true、t<=TNH(*4),t<=TDH
变量:时钟变量t、publish表pub、subscribe表sub、传输信道的buffer bc
D. Subscribe Interface模块
状态集:Init、Match、Distribute
不变式:true、无、t<=TTH
变量:sub表中和bc[0]的topic对应的 sub[j]、sub[j]的nodeID tmp1、bs[tmp1]的当前大小(新消息存放位置) temp2,时钟变量t、概率p[i]
其中涉及的数据结构
消息:一个结构体,包含node_id、type、消息内容
bds:一维队列,存放的是消息
sub表和pub表:一维数组,存放的是消息
bc:一维队列,存放的是消息
bs和bp:二维数组,第一维表示某一个节点的publisher或subscriber(也就是消息的node_id),然后数组存放单元为消息
性质提取与统计分析
安全性 无死锁
活性 Nn可以到达Send_Wait位置
高优先级节点平均有更高的概率来先发送数据 低优先级的节点的pb满的概率比高优先级节点的pb满的概率大 低优先级节点的pb空的概率比高优先级的节点小
原文链接: https://zijian.wang/2021/12/01/对ROS2的DDS的形式化分析/
版权声明: 转载请注明出处.