首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第17章 对象动态状态

第17章 对象动态状态

对象不是只有“是什么”,也不是只有“具有什么”,还存在“现在处于什么状态”。状态不是对象预先固定的标签,而是对象的属性、属性变化、属性关系以及所处环境在特定时间共同形成的动态结果。

前面的章节已经建立了三个重要层次:

对象
 ↓
属性
 ↓
属性变化与属性关系

第十二章解决的是:

对象具有什么。

第十四章解决的是:

属性如何变化。

第十六章进一步解决:

属性之间如何共同变化、相互关联和产生影响。

因此,第十七章自然进入一个更重要的问题:

这些变化综合起来以后,对象现在到底处于什么状态?

例如,一个鸡蛋在机器人手中:

压力正常
摩擦稳定
没有明显滑移
形变接近零

系统不能只说:

Pressure = X
Friction = Y
Slip = Z
Deformation = W

而应该进一步形成一个认知:

当前状态 = 稳定抓取

如果随后发生:

滑移增加
形变增加
压力持续增加

那么对象状态就应该发生变化:

稳定抓取
 ↓
抓取风险
 ↓
损伤风险

因此:

对象状态是对对象当前动态变化的综合认知。


17.1 什么是对象动态状态

首先需要区分三个概念:

对象
属性
状态

例如:

对象:鸡蛋

属性:
重量
硬度
表面摩擦
压力
形变
温度

状态:
静止
接触
抓取
滑移
受压
破损

但是,这里的“状态”不能简单理解成一个预先定义好的名称。

真正的动态状态应该来自对象当前的实际表现。

因此可以定义:

对象动态状态,是对象在特定时间、特定环境和特定任务条件下,其属性值、属性变化及属性关系共同形成的综合状态。

可以抽象为:

ObjectState(t)
=
F(
Attributes(t),
Changes(t),
Relations(t),
Context(t),
Time(t)
)

也就是说:

对象状态
=
属性
+
变化
+
关系
+
环境
+
时间

17.2 状态不是属性

这是认知系统设计中非常重要的区分。

例如:

Pressure = 3N

是一个属性值。

而:

Stable Grip

是一个状态。

二者不是同一个层次。

可以表示为:

属性值
 ↓
属性变化
 ↓
属性关系
 ↓
状态判断

例如:

Pressure = 3N
Friction = 0.8
Slip = 0
Deformation = 0.02

这些都是数据。

经过综合分析以后:

Stable Grip

才是认知系统形成的状态。

所以:

状态不是某一个传感器直接测出来的数据,而是认知系统根据多个数据及其动态关系形成的结果。


17.3 为什么需要状态

如果系统只有属性,没有状态,那么系统就会变成:

Sensor
 ↓
Data
 ↓
Data
 ↓
Data
 ↓
Data

它知道很多数据,却不知道这些数据意味着什么。

例如:

Pressure = 4
Slip = 0.3
Deformation = 0.1

这些数据本身并不能直接告诉系统:

鸡蛋现在是否安全?

只有形成状态:

ObjectState = Risk

系统才可以进一步决策:

Risk
 ↓
调整抓取

因此状态承担了一个重要作用:

把大量动态属性转换成可供认知和行为使用的中间认知结构。


17.4 状态不是固定标签

传统程序通常喜欢这样定义:

STATE_IDLE
STATE_RUNNING
STATE_STOP
STATE_ERROR

这种方法对于简单机械系统非常有效。

但是人的认知并不是这样工作的。

现实中的状态往往存在连续变化。

例如一个鸡蛋被抓取:

未接触
 ↓
开始接触
 ↓
轻微接触
 ↓
稳定接触
 ↓
开始抓取
 ↓
稳定抓取
 ↓
轻微滑移
 ↓
明显滑移
 ↓
形变增加
 ↓
损伤风险

这不是简单的:

A → B → C

而是多个属性持续变化形成的动态过程。

因此:

动态状态应该允许连续变化、渐进变化和状态之间的过渡。


17.5 状态具有时间性

对象状态必须与时间联系起来。

例如:

t1
Pressure ↑
Slip = 0

可能是:

Stable

到了:

t2
Pressure ↑
Slip ↑

状态可能变成:

Risk

到了:

t3
Pressure ↑↑
Slip ↑↑
Deformation ↑

状态可能变成:

Damage Risk

因此:

State(t1)
≠
State(t2)
≠
State(t3)

即使对象始终是同一个鸡蛋。

所以:

对象身份可以保持稳定,而对象状态可以持续变化。


17.6 状态是一个时间窗口,而不是一个瞬间

如果只看某一个瞬间的数据,很容易产生错误判断。

例如:

t1:Slip = 0.1

单独看并不能确定是否正在滑移。

因为可能是:

0.2 → 0.15 → 0.1

也可能是:

0.01 → 0.05 → 0.1

两者当前值相同,但是趋势完全不同。

因此状态识别必须考虑一段时间:

t-3
t-2
t-1
t

形成:

State(t)
=
F(
History Window
)

也就是说:

当前状态不仅由当前值决定,还由近期变化历史决定。


17.7 状态由变化趋势参与形成

假设:

Deformation = 0.1

如果过去一直是:

0.10
0.10
0.10
0.10

那么系统可能判断:

稳定

但是如果过去是:

0.02
0.04
0.06
0.08
0.10

那么系统应该判断:

形变持续增加

两者的当前值完全一样。

但认知状态不同。

因此:

状态不仅依赖属性值,还依赖属性的变化方向和趋势。

可以表示为:

State
=
Value
+
Change
+
Rate
+
Trend

17.8 状态由多个属性共同形成

现实中的状态很少由单个属性决定。

例如:

抓取稳定

可能需要同时考虑:

Pressure
Friction
Slip
Contact
Motion
Deformation

因此:

StableGrip
=
F(
Pressure,
Friction,
Slip,
Contact,
Motion,
Deformation
)

这并不是说必须使用一个固定公式。

理论上的重点是:

状态是多个属性及其关系的综合结果。

这与前一章的“属性协同变化”直接连接。


17.9 状态存在层级

对象状态可以分成多个层级。

例如鸡蛋:

第一层:物理状态

接触
受压
运动
静止

第二层:交互状态

被抓取
被移动
被释放
发生滑移

第三层:安全状态

安全
风险
高风险
损伤

第四层:任务状态

抓取成功
移动中
等待放置
放置完成

因此:

Object
 ↓
Physical State
 ↓
Interaction State
 ↓
Safety State
 ↓
Task State

同一个对象可以同时具有多个状态维度。

例如:

Physical State = Moving

Interaction State = Gripped

Safety State = Safe

Task State = Transporting

这比简单定义:

State = Moving

更加接近真实认知。


17.10 状态不是单一变量

因此不能简单设计:

state = "stable"

更合理的是:

ObjectState
{
    physical,
    interaction,
    safety,
    task,
    confidence,
    timestamp
}

例如:

ObjectState
{
    physical: moving,
    interaction: gripping,
    safety: stable,
    task: transporting,
    confidence: 0.94,
    timestamp: t
}

这里出现了一个重要概念:

状态本身也具有认知置信度。

因为现实环境存在噪声和不确定性。

系统不能总是认为:

Stable = TRUE

而应该允许:

Stable = 0.94
Risk = 0.06

这就为后面的概率认知理论建立基础。


17.11 状态转换

对象状态不会凭空改变。

它通常是由属性变化推动的。

例如:

Stable
 ↓
Slip ↑
 ↓
Risk

继续:

Risk
 ↓
Deformation ↑
 ↓
Damage Risk

继续:

Damage Risk
 ↓
Deformation ↑↑
 ↓
Damage

因此:

属性变化
 ↓
状态变化

可以形成:

State Transition

即:

状态转换。


17.12 状态转换不是简单阈值

如果使用传统方法,可以写:

if slip > 10:
    state = "risk"

这种方式简单,但存在明显问题。

因为:

Slip = 10.1

与:

Slip = 9.9

可能并没有本质区别。

而且如果:

Slip:
9.0
9.2
9.4
9.6
9.8
10.0
10.2

系统真正需要知道的是:

滑移是否正在持续增加?

而不是:

当前是否刚好超过10?

所以动态状态需要考虑:

Value
+
Trend
+
Duration
+
Rate
+
Other Attributes

17.13 状态转换具有条件

例如:

Pressure ↑

本身不一定意味着:

Risk

如果:

Friction ↑
Slip ↓
Deformation ≈ 0

可能仍然是:

Stable

而如果:

Pressure ↑
Friction ≈ constant
Slip ↑
Deformation ↑

则风险明显增加。

因此:

状态转换不是由单一属性触发,而可能由多个属性的协同变化共同触发。

可以表示为:

Condition
=
A
+
B
+
C
+
Relation(A,B,C)

17.14 状态具有上下文

同一个动态变化,在不同任务中可能对应不同状态。

例如:

Pressure ↑

对于:

抓鸡蛋

可能代表:

Damage Risk ↑

但对于:

按下按钮

可能代表:

Action Progress ↑

因此:

State

不能完全脱离:

Task
Context
Goal

来定义。

可以表示为:

Object State
=
Object
+
Attributes
+
Changes
+
Relations
+
Context
+
Goal

这意味着:

状态是情境化的。


17.15 状态与任务目标

进一步来看,同一个对象可能存在多个评价层面的状态。

例如:

鸡蛋

当前:

Physical State = Stable

但是:

Task State = Not Completed

同时:

Safety State = Safe

因此:

物理稳定
≠
任务完成

这一区分非常重要。

机器人不能因为:

对象稳定

就认为:

任务完成

它必须同时判断:

Object State
+
Task State

17.16 状态与认知

到这里可以看到:

属性
 ↓
变化
 ↓
关系
 ↓
状态
 ↓
认知

状态实际上成为属性世界与认知世界之间的重要桥梁。

例如:

传感器
 ↓
Pressure
Friction
Slip
Deformation
 ↓
Dynamic Relation
 ↓
Stable Grip

再进一步:

Stable Grip
 ↓
当前抓取安全
 ↓
继续保持动作

因此:

状态是认知系统对动态对象进行压缩、组织和解释的重要中间结构。


17.17 状态不是终点

状态形成以后,系统还必须继续观察。

例如:

Stable

并不意味着永远稳定。

下一时刻可能:

Stable
 ↓
Slip Increasing
 ↓
Risk

因此状态本身也必须动态更新:

State(t)
 ↓
New Data
 ↓
New Relations
 ↓
State(t+1)

可以形成:

State Update

即:

状态更新。


17.18 状态更新是持续认知

传统程序可能:

read sensor
check threshold
execute action

而动态认知系统则是:

observe
 ↓
update attributes
 ↓
update changes
 ↓
update relations
 ↓
update state
 ↓
update cognition
 ↓
decide
 ↓
act
 ↓
observe again

这形成一个连续过程:

感知
 ↓
状态更新
 ↓
认知
 ↓
行为
 ↓
环境变化
 ↓
感知

因此:

动态状态使认知从一次性判断变成连续过程。


17.19 鸡蛋抓取中的完整状态演化

现在把前面建立的理论完整应用到鸡蛋。

最开始:

Object = Egg

Contact = 0
Pressure = 0
Slip = 0
Deformation = 0

系统状态:

Physical = Rest
Interaction = No Contact
Safety = Safe
Task = Not Started

机器人开始接触。

Contact ↑
Pressure ↑

系统进入:

Interaction = Contacting

继续增加接触压力:

Pressure ↑
Friction ↑
Slip ≈ 0
Deformation ≈ 0

系统形成:

Interaction = Gripping
Safety = Stable

如果继续加力:

Pressure ↑
Friction ≈ constant
Slip ↑

系统发现:

Slip Trend = Increasing

于是:

Safety
Stable
 ↓
Risk

如果继续:

Pressure ↑
Slip ↑
Deformation ↑

系统进一步形成:

Safety = Damage Risk

如果最终:

Deformation ↑↑
Crack = TRUE

那么:

Safety = Damaged

于是完整状态链变成:

No Contact
      ↓
Contact
      ↓
Gripping
      ↓
Stable
      ↓
Slip Risk
      ↓
Damage Risk
      ↓
Damage

这就是:

对象动态状态的演化过程。


17.20 状态的真正价值:预测

如果系统只记录:

当前状态 = Risk

还不够。

真正有价值的是:

当前状态正在向哪里变化?

例如:

Risk

可能有两种趋势。

第一种:

Risk
 ↓
Slip ↓
Deformation ↓
 ↓
Stable

说明风险正在消失。

第二种:

Risk
 ↓
Slip ↑
Deformation ↑
 ↓
Damage Risk

说明风险正在扩大。

因此状态本身也需要:

State
+
State Trend

即:

状态趋势。


17.21 状态趋势

可以定义:

StateTrend
=
CurrentState
+
PreviousState
+
TransitionDirection

例如:

Stable → Risk

表示:

风险增加

而:

Risk → Stable

表示:

风险降低

因此认知系统不仅应该知道:

现在是什么状态

还应该知道:

状态正在如何变化

这为下一阶段的预测和决策提供基础。


17.22 对象动态状态的工程结构

从理论工程角度,可以把对象动态状态抽象成:

ObjectState
├── object
├── attributes
├── changes
├── relations
├── context
├── task
├── state
├── trend
├── confidence
└── timestamp

例如:

ObjectState
{
    object: Egg,

    attributes: {
        pressure: ...,
        friction: ...,
        slip: ...,
        deformation: ...
    },

    changes: {
        pressure: increasing,
        slip: increasing,
        deformation: increasing
    },

    relations: {
        pressure_to_slip: positive,
        pressure_to_deformation: positive
    },

    state: {
        physical: gripping,
        safety: risk
    },

    trend: increasing_risk,

    confidence: 0.93,

    timestamp: ...
}

这里的结构已经开始从理论进入工程。

但需要注意:

工程实现不应该反过来限制理论。

理论先定义:

Object
Attribute
Change
Relation
State

工程代码再负责实现它们。


17.23 状态不是数据库里的一个字段

如果只设计:

object.state = "stable"

实际上会丢失大量信息。

因为:

stable

无法说明:

为什么稳定?
哪些属性稳定?
哪些属性正在变化?
变化速度是多少?
风险是否正在增加?
之前是什么状态?
接下来可能是什么状态?

因此:

对象状态应该是一个认知结构,而不是一个简单字符串。

它至少应该能够追溯:

State
 ↓
Evidence
 ↓
Attributes
 ↓
Changes
 ↓
Relations

这样认知结果才具有可解释性。


17.24 状态与证据

任何状态都应该有对应证据。

例如:

State = Stable

证据可能是:

Slip ≈ 0
Deformation ≈ 0
Pressure stable
Contact stable

因此:

State
=
Conclusion

而:

Attributes + Changes + Relations
=
Evidence

于是:

Evidence
 ↓
State
 ↓
Cognition

这为后面的概率认知建立了基础。

因为未来可以进一步表示:

Stable
Probability = 0.94

其背后仍然存在:

Evidence

17.25 本章建立的核心模型

经过前面章节的逐步推进,现在可以形成完整结构:

对象
 ↓
对象属性
 ↓
属性值
 ↓
属性状态
 ↓
属性变化
 ↓
属性变化关系
 ↓
属性协同
 ↓
对象动态状态
 ↓
状态趋势
 ↓
认知

进一步形成:

对象动态状态
        ↓
    当前认知
        ↓
      决策
        ↓
      行为
        ↓
   对象发生变化
        ↓
    属性重新变化
        ↓
  对象动态状态更新

这意味着:

对象状态是一个持续更新的认知过程,而不是一次计算产生的固定结果。


17.26 本章核心结论

第十七章最终建立以下理论:

第一,对象具有状态

对象不仅有:

是什么

还具有:

现在处于什么状态

第二,状态来自属性协同

状态不是单一属性的结果,而是:

属性
+
变化
+
关系
+
环境
+
时间

共同形成的。


第三,状态具有时间性

State(t)

会随着对象变化而更新:

State(t)
→
State(t+1)

第四,状态具有趋势

系统不仅需要判断:

现在稳定还是危险

还需要判断:

正在变稳定

还是:

正在变危险

第五,状态是认知的重要中间层

最终形成:

感知元素
 ↓
对象
 ↓
属性
 ↓
动态属性
 ↓
属性关系
 ↓
对象动态状态
 ↓
认知

因此,本章最重要的一句话是:

对象动态状态不是对象预先拥有的标签,而是认知系统根据对象在特定时间和环境中的属性、变化及其关系持续形成和更新的动态认知结构。

而到这里,前面第一篇和第二篇之间的理论连接已经越来越清晰:

感觉
 ↓
感知
 ↓
元素
 ↓
对象
 ↓
属性
 ↓
变化
 ↓
关系
 ↓
动态状态

下一章进入第18章:认知匹配。

这一章将正式回答一个更核心的问题:

当系统已经知道“对象是什么”“对象具有什么”“对象正在发生什么”之后,它究竟如何把当前感知到的状态与已有知识、目标和可能行为进行匹配,从而形成真正的认知?

Leave a Reply

Your email address will not be published. Required fields are marked *