[SJ-20-JCR2]-COMPLETE COVERAGE

CARE: Cooperative Autonomy for Resilience and Efficiency of robot teams for complete coverage of unknown environments under robot failures

1 文章简介

文章主要介绍了一种基于事件触发的全覆盖算法,这与我们想要结合GBBopen的实现有些类似,文章是采用无限状态机的形式。我们要做的是一种基于黑板系统的事件触发机制。同时在该文章提出一种具有弹性以及可靠的全覆盖算法,当Agent执行任务失败时,系统中其他Agent会自主的协同完成未完成的任务。(本文记录读者对论文的简要理解)

2 问题描述

2.1 Agent的定义

\(V = \{v_1,v_2,...,v_N\}\) 表示个工作团队中共有\(N \in \mathbb{N}\)个Agents(Robots)
其中每个Agent装备定位设备、探测器、传感器、无线通信设备。
文章中介绍了一种衡量Agent电量的方式,若未来工作有需要可以参考文章用到的方法。

2.2 MCPP 多Agent路径覆盖问题

假设搜索区域为\(\mathcal{R} \subset \mathbb{R}^2\), 将整个工作区域分为若干个子区域\(\mathcal{T} = \{t_{\alpha} \subset \mathbb{R}^2, \alpha = 1,...,|\mathcal{T}|\}\), 对于整个搜索区域\(\mathcal{R}\), 覆盖所有区域即:\(\mathcal{R} \subseteq \bigcup_{\alpha = 1}^{|\mathcal{T}|}t_{\alpha}\),我们称\(t_{\alpha} \in \mathcal{T}\)为一个单元(cell)。

2.3 完全覆盖

\(\varepsilon_{\ell}(k) \in \mathcal{T}\)是机器人\(v_{\ell}\)\(k\)时刻探索的单元,称为\(\varepsilon\)-cell。当\(\exists K \in \mathbb{N}\)时,机器人覆盖了序列\(\{\varepsilon(k),k=0,...,K\},\forall \ell = 1,...,N\)中的每一个可遍历单元,我们称此时达到了全覆盖状态。用公式可以表示为:

\[\mathcal{R}^{a} \subseteq \bigcup_{\ell=1}^{N}\bigcup_{k=1}^{K}\varepsilon_{\ell}(k) \]

2.4 衡量参数

覆盖率(Coverage Ratio, CR):遍历的可可行走区域占总区域的比例。

\[CR=\frac{\big(\cup_{\ell=1}^{N}\cup_{k=1}^{K}\varepsilon_{\ell}(k)\big) \cap \mathcal{R}^a}{\mathcal{R}^a}\in [0,1] \]

覆盖时间(Coverage Time, CT):总执行时间
存活率(Remaining reliablity, RR):任务结束时剩余机器人
发现的目标(Number of targets found, NoTF):发现目标数
覆盖总时间(Time of target discovery, ToTD):探索区域所用时间

3 CARE算法

CARE算法通过实践驱动任务执行的方式解决多Agent完全覆盖问题。在CARE算法中,当出现(1)机器人完成了当前分配的任务(2)机器人执行任务失败并且再无响应这两种情况时,重新分配算法采用博弈论公式,他能为每一个参与重新分配任务的机器人计算任务的价值和成功概率,从而为当前任务分配一个最优的机器人。任务价值是由任务区域中未探索单元的数量决定的,任务成功概率则与机器人电量、工作时间等。

3.1 离散事件管理器(Discrete event supervisor,DES)

DES是一个确定性有限状态自动机,用五元组来表示:

\[H = (X,\varepsilon,\delta,x_0,X_m) \]

其中:

  • \(X = \{ST,WK,NG,RG,ID,FL,SP\}\) 为状态集合,其中
    \(ST \equiv\) 'Start',\(WK \equiv\) 'Working',\(NG \equiv\) 'No-idling Game',\(RG \equiv\) 'Resilence Game',\(ID \equiv\) 'Idle',\(FL \equiv\) 'Failed',\(SP \equiv\) 'Stop'.

  • \(\varepsilon = \{e_0,e_1,...,e_7\}\) 为事件集合。

  • \(\delta:X \times \varepsilon \to X\) 表示为状态转换函数。

  • \(x_0 = ST\) 表示初始状态。

  • \(X_m = \{SP,FL\}\) 表示标记状态。

\(ST,ID,FL,SP\)都是自身可以检测的状态,而\(WK,NG,RG\)是属于执行操作状态。当机器人处于\(NG,RG\)状态时,会触发重分配任务。
事件和状态的转换

  • \(r_{c}:V \to \{1,...,M\}\) 分配函数,即将任务分配给相应的机器人。

  • \(t_{c}:\{1,...,M\} \to [0,\infty]\) 机器人完成任务的时间。

  • \(n_{U}:\{1,...,M\} \to \mathbb{N}\) 当前任务中未被探索的cell。

posted @ 2020-11-23 20:34  开普勒醒醒吧  阅读(139)  评论(0编辑  收藏  举报