简介:《地面无人作战平台性能评价指标体系》是一份面向无人作战平台研发、需求论证与测试评估人员的PDF论文,针对缺乏统一评价标准、不同单位间性能描述不一致的问题,从平台内涵出发提出机动性、自主性和任务载荷性能三类基础维度,并重点分析机动性与自主性的支撑指标及其度量思路,尝试构建层次化性能评价体系。资源包共1个PDF文件,大小约306KB,正文涵盖研究现状、平台内涵、指标选取原则以及快速性、灵活性、通过性、环境感知、决策规划等具体指标讨论,可帮助读者快速把握UGV性能评价框架,为指标设计、方案交流与后续量化研究提供参考。已有93人学习,适合从事地面无人平台论证、研制和测评的相关人员查阅。
1. 从一张对不齐的选型参数表说起:地面无人平台性能评价指标体系解决什么
前阵子帮某实验室做设备选型评审,三家供应商交上来的参数表格式完全不搭:A 家写"最大速度 32 km/h",B 家写"越野平均速度 18 km/h",C 家干脆只留一句"具备全地形机动能力"。三张表摆在一张桌子上,谁也说服不了谁,最后靠的是谁嗓门大。地面无人平台(UGV)性能评价指标体系要解决的正是这个问题——把描述性语言换成带量纲、带测试条件的数,再把这些数按层次聚合成一个能横向比较的综合得分。
这份材料是文档型资源,不是源码包。它围绕机动性、自主性、任务载荷性能三条主线搭出一棵三层树,机动性和自主性各展开到 12 个可测叶节点,每个叶节点都给了度量口径和量纲。做装备选型、研发阶段评审、试验大纲设计的人,可以直接把它当模板套;做仿真评测的人,可以把它当成结算模型的字段清单。
2. 三层树状结构:机动性、自主性、任务载荷的拆法与边界
2.1 为什么不照搬有人平台那套指标
有人车辆的机动性评价已经非常成熟:动力、传动、悬挂、制动,一堆国标行标摆在那里,测什么、怎么测都有定论。但把这套东西直接搬到无人平台上,第一个卡住的就是自主性。早期一批研究把自主性切成 11 个等级,另一批切成 10 个等级,看着挺细,翻开一看每个等级只有一段文字描述——"能够在有人监督下完成局部任务"这种表述,你没法代入数值算,评审时还是靠人拍脑袋。
这类等级制的通病是"定级容易定分难"。真正能让评审坐下来谈的,是那种可以写进试验大纲、有明确量纲、换个测试场地还能复现的指标。这套指标体系走的是另一条路:不追求给自主性定一个 0 到 10 的整数等级,而是把它拆成感知、决策、执行、人员依赖四组,每组再落成可以拿秒表、拿激光测距仪、拿日志文件算出来的量。好处是可审计,坏处是采集成本高,这个取舍后面第 5 章还会提到。
至于任务载荷性能,原文的处理方式很克制:指标体系图上保留了"任务载荷性能"这个一级节点,但明确说明不同类型的载荷之间缺乏可比性,所以不做细化研究。这不是遗漏,是刻意的边界划定。我做评审时一般会把载荷节点单独拎出来做一张附表,只比同类载荷(比如同为光电侦察吊舱才互相比较),跨类比较直接判定为无意义。
2.2 结构上的三条硬约束
这棵树不是随便画的,它有三条必须遵守的约束,理解了这三条,后面所有的实现细节都是自然推论。
第一条,父节点由子节点衡量。机动性这个节点本身没有数值,它的数值完全来自快速性、灵活性、通过性、续航能力四个子节点,而快速性的数值又完全来自最大直线速度和平均速度两个叶节点。整棵树里只有叶节点有实测数据,中间节点和根节点都是算出来的,不允许人工给中间节点打分——这是保证评价可复现的前提。
第二条,上层抽象、下层具体。靠上的指标综合性强、抽象程度高,屏蔽了具体实现细节;靠下的指标则完全贴着硬件和算法。这个特性带来的实际好处是可裁剪:做一个快速筛选,只跑到第二层就够了;做一次完整验收,才需要把 24 个叶节点全部测一遍。
第三条,评价过程自底向上。从叶节点开始,逐层向父节点聚拢,直到根节点得出综合结果。这意味着任何一个综合分都能向下追溯到自己是由哪几个实测值算出来的——评审会上被质疑时,这条路就是你的后悔药。
2.3 从需求文本到指标树的五步落地
拿到一份需求书,怎么把它变成上面这棵树?我一般按五步走,每步都有明确的产出物,不走回头路。
第一步,锁定评价目的。是选型比价、阶段评审还是定型验收?目的不同,树的深度不同。选型比价砍到第二层就够,验收必须四个叶节点组全覆盖。第二步,从平台内涵反推支撑功能。平台要机动,就得有行走和动力子系统;要自主,就得有感知、规划、控制子系统;要完成任务,就得有载荷接口。第三步,把每个支撑功能摊成可测项,判断标准只有一条:能不能在试验大纲里写出一句"用某仪器在某条件下测某量"。写不出来的,继续往下拆。第四步,做独立性检查,两个叶节点如果强相关(比如最大速度和最大爬坡度在很多底盘上是同源的),就得考虑合并或者降权。第五步,给每个叶节点标注量纲、测试条件、数据来源。
| 层级 | 节点示例 | 是否可测 | 数据来源 |
|---|---|---|---|
| 根节点 | 综合性能 | 否(聚合得出) | 无 |
| 一级 | 机动性 / 自主性 / 任务载荷性能 | 否(聚合得出) | 无 |
| 二级 | 快速性 / 灵活性 / 通过性 / 续航能力 | 否(聚合得出) | 无 |
| 三级 | 最大速度、爬坡能力、越壕宽度…… | 是 | 场地试验 |
| 三级 | 环境建模精度、路径跟踪精度…… | 是 | 仿真 + 实车日志 |
这张表看着简单,实际落地时第五步最容易偷懒。我见过一份评审材料,24 个叶节点里有 9 个的数据来源一栏写着"厂家提供",这种情况下综合得分再漂亮也没有说服力。数据来源必须能追到具体的试验报告编号或者日志文件路径,否则这个叶节点就是空的。
3. 12 + 12 个叶节点:每一项到底拿什么仪器、按什么口径测
3.1 机动性四组共 12 项,量纲必须写死
机动性这一支拆成四组,一共 12 个叶节点。这 12 项的共同特点是测量手段成熟、场地要求明确,翻车的点几乎全在测试条件没写死,而不在测不出来。
| 分组 | 叶节点 | 度量定义 | 量纲 |
|---|---|---|---|
| 快速性 | 最大速度 | 良好道路上能达到的最大行驶速度 | km/h |
| 快速性 | 平均速度 | 规定比例公路与越野路面混合路段的平均速度 | km/h |
| 灵活性 | 加速性 | 从起步加速到规定速度所需时间 | s |
| 灵活性 | 转向性 | 稳定转向时转向中心到车体纵向对称轴线的最小距离 | m |
| 灵活性 | 制动性 | 规定初速、规定水平路面,紧急制动到停车的距离 | m |
| 通过性 | 爬坡能力 | 不用惯性冲坡能通过的最大纵向坡道角 | ° |
| 通过性 | 越墙高度 | 垂直翻越坚实垂直墙的最大高度 | m |
| 通过性 | 越壕宽度 | 低速行驶能跨越的壕沟最大宽度 | m |
| 通过性 | 涉水能力 | 不用辅助器材能安全通过水障碍的最大深度 | m |
| 通过性 | 软地面通过性 | 通过软地面时的平均接地压力 | kg/m² |
| 续航 | 最大行程 | 一次加足油料或充满电,按规定条件行驶的实际里程 | km |
| 续航 | 连续工作时间 | 平均工况下的最长连续工作时间 | h |
表里每一项后面的量纲不要小看。我见过两家把"越障能力"混着写的材料,一家报的是越墙高度 0.4 m,另一家报的是越壕宽度 1.2 m,采购方看着 1.2 比 0.4 大,直接选了后者,结果实际需求是要翻越台阶。越墙和越壕是两回事,前者考的是垂直攀爬,后者考的是跨越,合并成一个"越障能力"就是在制造歧义。
3.2 自主性四组共 12 项,公式比仪器更重要
自主性这一支麻烦得多,因为大部分指标没法用一台仪器直接读出来,得靠公式算。四组分别是环境感知能力、决策能力、执行能力、人员依赖度,一共 12 个叶节点。
环境感知能力有 3 项。感知范围用扇形面积度量,扇形圆心取平台中心,半径取最远感知距离,中心角取感知角度,也就是 $S=\frac{1}{2}r^2\theta$(θ 用弧度)。这个口径的好处是把"看得远"和"看得宽"统一成一个数,坏处是对多传感器融合的平台不太公平——激光雷达和视觉的视场拼起来往往不是一个规整的扇形,这时候我一般会取外包络或者分传感器分别报。
环境建模精度用建图结果与真值地图的关联度度量。把两张栅格地图写成矩阵,元素取值在 0 到 1 之间,表示该栅格有障碍的概率,关联度按下面的式子算:
$$\text{sim} = 1 - \frac{1}{(m+1)(n+1)}\sum_{i=0}^{m}\sum_{j=0}^{n}\left|M_{ij} - R_{ij}\right|$$
其中 $M$ 是建图结果,$R$ 是真值地图。这个式子的物理含义很直白:逐格比对障碍概率,平均绝对误差越小,关联度越接近 1。落地时最大的坑是两张图分辨率不一致,必须先重采样对齐,否则算出来的数没有任何意义。模型更新频率则用单位时间内的地图更新次数度量,单位是次每秒。
决策能力有 5 项:规划与决策速度(给定任务后自主完成一次规划决策的平均时间,s)、规划与决策正确率(正确次数占总次数百分比)、平台定位精度(定位误差均方差,m)、路径规划正确率(成功规划路径的百分比)、路径更新频率(单位时间路径更新次数)。这 5 项里定位精度最容易被含糊过去,写"厘米级"是不合格的,必须给均方差数值和置信区间。
执行能力 2 项:指令响应速度(指令下达到执行机构开始响应的时间间隔,s)、路径跟踪精度。跟踪精度的口径比较讲究,原文用的是给定直线路径与实际行驶轨迹之间所包含面积的平方根,量纲是 m。这个定义实际上是在算横向偏差的等效值,比单纯取最大偏差更稳,因为它把偏差在整个行程上的分布都算进去了。
人员依赖度 2 项:人员操控时间比例(操控人员干预或帮助决策执行所用时间占完成任务总时间的比例)、人员操控平台数量(一个操控人员能同时控制的平台台数)。这两项是整个体系里最"玄学"的部分,因为它们同时受平台能力和操作员熟练度影响,具体怎么控制变量在第 5 章展开。
3.3 测试条件台账:比指标本身更容易出事的地方
所有 24 个叶节点的数值,都必须绑定一组测试条件才有意义。同一台平台,空载和满载的最大速度能差一倍;同样的爬坡能力,干燥路面和湿滑路面差一个等级;同样的建模精度,结构化走廊和野外植被区完全不是一个难度。
我一般会强制维护一张测试条件台账,每一条数据后面挂一个条件编号,条件编号对应一组固定的环境参数:路面类型与附着系数、环境温度与光照、载荷配置与重心位置、胎压或履带张紧度、风速、是否有人为引导。台账里字段空着的数据,一律不进聚合流程。这条规矩看着死板,但它是让不同批次、不同供应商数据可比的前提。
顺带说一句,连续工作时间和最大行程这两项经常被合并成一个"续航",这是不严谨的。前者考的是热管理和可靠性,后者考的是能量密度和传动效率,一台机器可能连续工作 8 小时但只能跑 20 公里,另一台可能跑 60 公里但 3 小时就得停机散热,合并之后就看不出来了。
4. 从 24 个实测值到 1 个综合分:标准化、赋权与自底向上聚合
4.1 三种指标类型,三种标准化写法
24 个叶节点的量纲五花八门,速度是 km/h,时间是 s,面积是 m²,比例是百分数,直接加权求和没有任何物理意义。所以第一步一定是标准化,把所有叶节点映射到 0 到 1 的区间。
按"越大越好还是越小越好",这 24 项可以分成三类。极大型(最大速度、最大行程、越墙高度、连续工作时间、各类正确率)越大越好;极小型(加速时间、制动距离、最小转向半径、指令响应时间、人员操控时间比例、接地压力)越小越好;还有一类是区间型,比如人员操控平台数量,1 台太少、10 台不现实,存在一个合理的中间区间。三类各用一套公式,不能混。
import numpy as np def normalize(values, kind, lo=None, hi=None): """ values: 一维数组,同一叶节点在多个被试平台上的实测值 kind: 'max' 极大型 / 'min' 极小型 / 'range' 区间型 lo,hi: 区间型指标的理想上下界 返回: 同长度数组,值域 [0, 1],越大越优 """ v = np.asarray(values, dtype=float) if kind == 'max': # 极大型:除以最大值 return v / v.max() if kind == 'min': # 极小型:最小值除以自身 return v.min() / v if kind == 'range': # 区间型:落在 [lo,hi] 内给满分 mid, half = (lo + hi) / 2.0, (hi - lo) / 2.0 return np.clip(1.0 - np.abs(v - mid) / half, 0.0, 1.0) raise ValueError('unknown kind')这段代码用极值法而不是极差法,是为了让新增一台被试平台时不用回头重算历史数据的上下界,代价是得分不会铺满 0 到 1 全区间。如果参与比较的平台数量少于 5 台,我一般会换成极差法,把区分度拉满。kind参数必须和叶节点的物理含义严格对应,把制动距离错标成max,结果就是刹车越差得分越高——这个错我在别人的表里见过不止一次。
4.2 权重怎么来:AHP 打底,熵权校正
标准化之后要给权重。这套指标体系是树状的,权重也要分层给:先给机动性、自主性、任务载荷性能三个一级节点分配权重,再在机动性内部给快速性、灵活性、通过性、续航四个二级节点分配,最后给每个二级节点下的叶节点分配。同层权重之和为 1,不同层之间互不干扰。
常见做法是层次分析法(AHP),靠两两比较构造判断矩阵。这一步的主观性没法完全消除,但可以用一致性比率 CR 卡住:CR 小于 0.1 才认为判断矩阵可用,否则说明你的两两比较自相矛盾,得重新打分。
import numpy as np RI = {1: 0.0, 2: 0.0, 3: 0.58, 4: 0.90, 5: 1.12, 6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45} def ahp_weights(mat): """ mat: n x n 正互反判断矩阵,mat[i][j] 表示 i 相对 j 的重要度 返回: (w, cr),w 为归一化权重向量,cr 为一致性比率 """ mat = np.asarray(mat, dtype=float) n = mat.shape[0] vals, vecs = np.linalg.eig(mat) k = np.argmax(vals.real) # 最大特征值对应的特征向量 w = np.abs(vecs[:, k].real) w = w / w.sum() # 归一化 lam = vals[k].real ci = (lam - n) / (n - 1) # 一致性指标 cr = ci / RI[n] if RI[n] > 0 else 0.0 # 一致性比率 return w, cr # 机动性四个二级节点的两两比较(示例,实际按任务需求调整) M = [[1, 1, 2, 3], [1, 1, 2, 3], [1/2, 1/2, 1, 2], [1/3, 1/3, 1/2, 1]] w, cr = ahp_weights(M) print(np.round(w, 3), round(cr, 3))跑出来权重大约是[0.35, 0.35, 0.19, 0.11],CR 在 0.02 附近,远小于 0.1,矩阵可用。这个结果表达的是:快速性和灵活性同等重要,都高于通过性,续航权重最低。如果你的任务场景是长时值守,这个判断矩阵就得改,把续航提到 0.3 以上。
纯 AHP 的毛病是专家主观性太重。我的做法是拿 AHP 结果做基准,再用熵权法算一遍客观权重,两者按 7:3 加权。熵权法完全从数据本身的离散程度出发,某项指标在各平台之间差异越大,说明它区分能力越强,权重就越高。两种方法算出来的排序如果严重打架,说明要么专家判断脱离实际,要么样本量太少,两种情况都得停下来查。
4.3 自底向上聚合:一次求和,逐层回溯
权重齐了,聚合就是逐层加权求和,从叶节点一路算到根节点。这里的关键是每一层都要保留中间结果,不然评审会上问"为什么自主性只有 0.42",你只能回答说"算出来的"。
def aggregate(tree, weights, scores): """ tree: 嵌套字典,键为节点名,叶节点值为 None weights: 字典,键为父节点名,值为子节点权重列表(顺序与 tree 一致) scores: 字典,键为叶节点名,值为标准化后的分数 返回: (总得分, 各中间节点得分字典) """ detail = {} def walk(node, name): children = tree[node] if not children: # 叶节点,直接取分数 return scores[node] vals = [walk(c, c) for c in children] w = np.array(weights[name], dtype=float) s = float(np.dot(w, vals)) # 加权求和 detail[node] = s # 回溯用:保留每个中间节点 return s total = walk('综合性能', '综合性能') return total, detailtree里None表示该节点没有子节点,代码用空字典判断更稳妥;weights的列表顺序必须和tree中子节点的书写顺序严格一致,否则权重会串位——这种错误不会报异常,只会安静地给出一个错误结果,属于最阴的一类 bug。detail字典是给评审用的,任何一个中间节点的得分都能单独拎出来做柱状图对比。
5. 避坑与排查:这套指标落地时最容易翻车的五个地方
5.1 现象:两家供应商的数据放在一起完全没法比
原因:测试条件没有写死。A 家的最大速度是空载平路测的,B 家是满载带风测的,报表上只写了一个数字,条件全丢了。
解决:强制测试条件台账,每条数据挂条件编号,条件字段为空的数据不进聚合。评审材料里凡是只有数值没有条件的条目,一律退回补充。
5.2 现象:综合得分算出来,第一名是个各项都平平的平台
原因:没做标准化就先加权。速度是几十的量级,正确率是零点几的量级,直接加权等于只看速度。
解决:先标准化再赋权,顺序不能反。检查方法很土但有效——把所有叶节点的权重重排一遍,如果总分排名几乎不变,说明某一项在数值上垄断了整个结果。
5.3 现象:环境建模精度算出来恒等于 1 或者 0
原因:建图结果和真值地图的栅格分辨率不一致,或者两者的概率定义不同(一边是占据概率,一边是二值占据标记)。
解决:先把两张图重采样到同一栅格尺寸、同一坐标系原点,再把真值图转成 0/1 概率图。做完这两步,关联度才会落在合理区间。仿真环境里造真值图时,务必把生成参数一起存下来。
5.4 现象:同一台平台,两次测出来的自主性得分差了 30%
原因:人员依赖度这一项受操作员熟练度影响极大。换个新手来操控,干预时间比例立刻翻倍。
解决:固定操作员样本,至少 3 人,每人重复 3 次以上,取均值和标准差一起报。标准差超过均值 30% 的,这个叶节点的数据判定为不可用,回去查是不是任务场景设计得太难。
5.5 现象:权重分配完,发现两个指标的得分曲线几乎重合
原因:叶节点之间强相关,重复计权。最典型的是最大速度和最大爬坡度,很多底盘上这两项同源。
解决:算一遍叶节点之间的相关系数矩阵,绝对值超过 0.8 的成对指标,要么合并成一个节点,要么把其中一个权重压到 0.05 以下。这一步我在每个项目里都会做,省下来的权重挪给真正有区分度的项。
6. 进阶用法:用灵敏度分析给指标体系做一次体检
指标体系搭完、综合分算出来,很多人就直接交差了。我一般还会多做一步——灵敏度分析,看看这个排名到底稳不稳。做法不复杂:把每个一级节点的权重依次上下扰动 20%,重新跑一遍聚合,观察被试平台的排名是否发生翻转。如果某个权重动一点点,第一名就换人,那这个结论就不能写进评审报告,得先说明"在某某权重假设下排名如此"。
具体操作上,我会先固定叶节点分数不动,只动权重向量,生成一组扰动样本。对每一组扰动权重重新调用第 4 章的aggregate,记录排名序列,最后统计每个平台进入前三的频率。频率低于 60% 的平台,基本可以判定为"排名不稳健",它的综合分和第一名之间的差距大概率被噪声吃掉了。
| 扰动对象 | 扰动幅度 | 观察指标 | 判定标准 |
|---|---|---|---|
| 一级节点权重 | ±20% | 排名翻转次数 | 翻转超过 2 次则结论不稳健 |
| 二级节点权重 | ±20% | 得分变化幅度 | 变化超过 0.1 需说明原因 |
| 单个叶节点分数 | ±10% | 综合分变化 | 用于识别高杠杆指标 |
这张表里最有价值的是最后一行。把某个叶节点的分数人为抬高 10%,看综合分变化多少,变化特别大的那几个就是高杠杆指标——它们是整个评价体系的命门,测试时优先级最高,数据质量控制也最严。反过来,那些分数动 10% 综合分几乎不动的叶节点,要么权重给低了,要么这一项本来就没有区分度,可以从试验大纲里砍掉,省下来的测试资源投到高杠杆项上。
还有一个容易被忽略的检查:样本量。这套体系有 24 个叶节点,如果只比较 2 台平台,任何权重方案都能凑出你想要的结果,评价本身没有意义。我的经验是参与横向比较的平台不少于 4 台,低于这个数就退化成单机性能摸底,只看各叶节点绝对值,不排名。
血泪经验是这么来的:早些年我做过一次三方比价,权重按常规配置给完,第一名比第二名高出 0.03 分,报告交上去被追问了一句"这 0.03 是怎么来的",当场答不上来。后来补做灵敏度分析才发现,只要把续航权重从 0.11 调到 0.15,排名就反过来了。从那以后我每次出综合排名之前,都强制走一遍权重扰动,把翻转区间写进报告附录,宁可写得啰嗦一点,也不给自己留坑。希望帮到你。
本文还有配套的精品资源,点击获取