第6章 对象关系理论
6.1 提出背景
前面的章节已经建立了世界、基础类、对象实例以及类关系理论。
目前已经形成:
世界
↓
基础类
↓
类关系
↓
对象实例
但是,现实世界并不是由相互孤立的对象构成的。
一个苹果可能位于桌面上,一个人可能拿着手机,一只手可能操作一个工具,一个鸡蛋可能放在锅中,一个机械臂可能抓取一个物体。
因此,机器真正面对的不是:
对象A
对象B
对象C
而是:
对象A
↓
关系
↓
对象B
对象关系因此成为机器理解现实世界的重要结构。
**对象关系(Object Relationship)**是指两个或多个具体对象之间,在空间、所属、操作、使用、因果以及其他现实条件下形成的具体联系。
对象关系与类关系具有明显的层次区别:
类关系
↓
描述类别之间的结构联系
对象关系
↓
描述具体对象之间的现实联系
例如:
类层:
人类 → 使用 → 手机类
而现实中:
张三 → 使用 → 手机01
前者是类关系,后者是对象关系。
因此,本章研究的核心问题是:
机器如何从类结构进入具体对象结构,并通过对象之间的关系建立现实世界的动态场景。
6.2 对象之间的关系
对象关系首先表现为具体对象之间的连接。
基本形式为:
对象A
↓
关系
↓
对象B
例如:
苹果01
↓ 位于
桌面01
又例如:
机械臂01
↓ 抓取
鸡蛋01
再例如:
鸡蛋01
↓ 位于
锅01
这些关系都发生在对象层,而不是抽象类层。
对象关系可以具有方向:
A → 使用 → B
也可以具有对称性:
A ↔ 相邻 ↔ B
还可以具有时间条件:
T1:A与B分离
T2:A接触B
T3:A离开B
因此,对象关系不是简单的数据连接,而是具有:
对象
+
关系类型
+
方向
+
时间
+
条件
+
状态
的动态结构。
6.3 对象关系的基本结构
一个对象关系至少包含:
source_object
relation_type
target_object
即:
起始对象
↓
关系类型
↓
目标对象
例如:
机械臂01
↓ 抓取
鸡蛋01
可以表示为:
source = 机械臂01
relation = 抓取
target = 鸡蛋01
进一步,如果需要描述动态关系,还可以增加:
时间
空间位置
关系状态
关系强度
作用条件
于是:
对象A
↓
关系
├── 类型
├── 方向
├── 时间
├── 空间
├── 条件
└── 状态
↓
对象B
这种结构可以支持机器对现实关系进行持续跟踪。
6.4 对象关系与类关系
类关系与对象关系具有上下层对应关系,但二者不能混淆。
类关系:
人类
↓ 使用
手机类
对象关系:
张三
↓ 使用
手机01
因此可以建立:
类A
↓
类关系
↓
类B
对应:
对象A
↓
对象关系
↓
对象B
但这种对应不是简单复制。
例如:
人类 → 使用 → 手机类
只是表示人类可以使用手机这一类别的对象。
并不意味着:
所有人
↓
使用
↓
所有手机
现实中的对象关系需要结合当前:
对象身份
+
属性
+
状态
+
位置
+
时间
+
场景
进行确定。
因此:
类关系提供对象关系的结构可能性,对象关系则表示现实中的具体实现。
6.5 类关系向对象关系的实例化
可以把类关系理解为对象关系的上层结构依据。
例如:
机械臂类
↓ 操作
物体类
现实中可以出现:
机械臂01
↓ 操作
鸡蛋01
另一个场景可能出现:
机械臂01
↓ 操作
螺丝01
因此:
类关系
↓
对象关系候选
↓
场景条件匹配
↓
具体对象关系
这就是类关系向对象关系的实例化过程。
但是,对象关系还会受到实际条件约束。
例如机械臂类理论上可以操作物体类,但机械臂01当前可能距离鸡蛋01很远,那么“操作”关系在当前场景中并未真正成立。
所以:
类关系表达可能性,对象关系表达现实性。
6.6 空间关系
**空间关系(Spatial Relationship)**描述对象在空间中的位置、距离、方向、接触和包含等结构关系。
空间关系是机器理解现实场景最基础的关系之一。
例如:
苹果01
↓ 位于
桌面01
又如:
鸡蛋01
↓ 在……里面
锅01
还可以表示:
机械臂01
↓ 靠近
鸡蛋01
常见空间关系包括:
左侧
右侧
上方
下方
前方
后方
内部
外部
包含
接触
相邻
远离
重叠
因此空间关系可以表示为:
对象A
↓ 空间关系
对象B
例如:
鸡蛋01
↓ 左侧
锅01
这使机器能够理解对象不仅“是什么”,还知道对象“在哪里”。
6.7 空间关系的动态性
空间关系不是固定属性,而是可以随着对象运动发生变化。
例如:
机械臂01
↓ 远离
鸡蛋01
机械臂移动:
机械臂01
↓ 接近
鸡蛋01
继续移动:
机械臂01
↓ 接触
鸡蛋01
最终:
机械臂01
↓ 抓取
鸡蛋01
因此:
空间变化
↓
关系变化
↓
场景变化
↓
认知变化
空间关系是动态场景的重要基础。
6.8 所属关系
**所属关系(Belonging Relationship)**表示对象属于某个对象、组织、集合、结构或空间范围。
例如:
苹果01
↓ 属于
水果箱01
或者:
员工01
↓ 属于
公司01
还可以:
零件01
↓ 属于
设备01
所属关系表达:
对象A属于对象B所代表的组织、集合或结构范围。
因此:
对象A
↓ 所属
对象B
它与空间包含存在联系,但并不完全相同。
例如:
苹果01
↓ 位于
箱子01
强调空间位置。
而:
苹果01
↓ 属于
水果集合01
强调分类或组织归属。
因此:
空间包含 ≠ 所属关系
机器需要根据关系语义进行区分。
6.9 操作关系
**操作关系(Operation Relationship)**表示一个对象对另一个对象执行某种操作。
例如:
机械臂01
↓ 抓取
鸡蛋01
又例如:
刀具01
↓ 切割
西红柿01
或者:
人01
↓ 打开
门01
操作关系通常具有明确方向:
操作者
↓ 操作
目标对象
它还可以进一步与动作联系:
机械臂01
↓
抓取动作
↓
鸡蛋01
因此:
操作关系
=
操作主体
+
操作动作
+
操作目标
操作关系是机器行为形成的重要对象层结构。
6.10 操作关系与对象状态
操作通常会造成目标对象状态变化。
例如:
机械臂01
↓ 抓取
鸡蛋01
抓取以后:
鸡蛋01
状态:
桌面静止
↓
被抓取
因此:
操作关系
↓
动作发生
↓
目标对象变化
↓
状态更新
进一步:
状态变化
↓
关系变化
↓
场景变化
例如机械臂把鸡蛋放入锅中:
机械臂01
↓ 搬运
鸡蛋01
↓ 放入
锅01
鸡蛋的空间关系由:
鸡蛋01 → 位于 → 桌面01
变成:
鸡蛋01 → 位于 → 锅01
这说明操作关系能够驱动对象关系变化。
6.11 使用关系
**使用关系(Usage Relationship)**表示一个对象利用另一个对象所提供的工具、资源或能力完成任务。
例如:
人01
↓ 使用
手机01
又例如:
厨师01
↓ 使用
锅01
或者:
机械臂01
↓ 使用
夹具01
使用关系可以表示:
使用主体
↓ 使用
工具 / 资源 / 设备
使用关系与操作关系有明显区别。
例如:
机械臂01
↓ 使用
夹具01
表示机械臂使用夹具。
而:
夹具01
↓ 抓取
鸡蛋01
表示夹具实际作用于鸡蛋。
因此:
使用关系
↓
建立能力利用结构
操作关系
↓
建立具体作用结构
6.12 因果关系
**因果关系(Causal Relationship)**表示一个对象的行为、状态变化或事件对另一个对象产生结果性影响。
基本形式:
原因
↓
结果
例如:
加热器01
↓ 加热
鸡蛋01
↓
温度升高
这里:
加热动作
↓
温度变化
形成因果关系。
再例如:
机械臂01
↓ 释放
鸡蛋01
↓
鸡蛋01
↓
位置改变
因果关系使机器能够理解:
为什么对象发生变化。
6.13 因果关系与状态变化
对象状态变化可以表示为:
State(t) → Action → State(t+1)
如果进一步描述产生变化的原因:
原因对象 / 动作
↓
状态变化
例如:
锅01
↓ 加热
鸡蛋01
↓
状态:
生
↓
熟
因此:
加热动作
↓
温度变化
↓
鸡蛋状态变化
这构成因果链。
因果关系让机器能够建立:
过去发生了什么
↓
当前为什么这样
↓
下一步可能发生什么
因此,因果关系不仅用于解释过去,也可以成为预测和行为选择的基础。
6.14 对象关系与行为
对象关系不是静态描述。
不同对象关系会直接影响机器可以采取什么行为。
例如:
机械臂01
↓ 靠近
鸡蛋01
机器可能形成:
可接近
当关系变化为:
机械臂01
↓ 接触
鸡蛋01
则可能形成:
可抓取
当关系进一步变化为:
机械臂01
↓ 持有
鸡蛋01
则可能形成:
可移动
因此:
对象关系
↓
场景理解
↓
行为可能性
↓
动作选择
这说明对象关系是行为形成的重要条件。
6.15 对象关系与场景
场景本质上不是对象的简单集合。
例如:
机械臂01
鸡蛋01
锅01
炉具01
只是对象集合。
如果增加关系:
机械臂01 → 接近 → 鸡蛋01
鸡蛋01 → 位于 → 桌面01
锅01 → 位于 → 炉具01
机械臂01 → 使用 → 夹具01
才开始形成真正的场景结构:
对象
+
状态
+
关系
+
空间
+
时间
↓
场景
因此:
对象关系是场景形成的骨架。
没有关系,机器只能看到多个对象;建立关系以后,机器才能理解这些对象共同构成什么现实结构。
6.16 对象关系的动态变化
现实中的关系会不断变化。
例如:
T1
机械臂01 → 远离 → 鸡蛋01
经过运动:
T2
机械臂01 → 接近 → 鸡蛋01
接触:
T3
机械臂01 → 接触 → 鸡蛋01
抓取:
T4
机械臂01 → 抓取 → 鸡蛋01
移动:
T5
机械臂01 → 搬运 → 鸡蛋01
释放:
T6
机械臂01 → 释放 → 鸡蛋01
于是对象关系形成:
远离
↓
接近
↓
接触
↓
抓取
↓
搬运
↓
释放
这实际上已经构成一个动态行为过程。
因此:
复杂行为可以表现为对象关系随时间发生的连续变化。
6.17 对象关系网络
当对象数量增加以后,对象关系会形成动态网络。
例如:
机械臂01
├── 使用 → 夹具01
├── 控制 → 夹具01
└── 操作 → 鸡蛋01
鸡蛋01
├── 位于 → 桌面01
├── 接近 → 锅01
└── 属于 → 食材集合01
锅01
├── 位于 → 炉具01
└── 包含 → 鸡蛋01
此时机器获得的是:
对象
↓
对象关系
↓
关系网络
↓
场景结构
对象关系网络比单一对象识别具有更强的信息表达能力。
因为机器可以通过关系理解:
对象在哪里
对象属于什么
对象与谁关联
对象正在操作谁
对象使用什么
对象为什么发生变化
6.18 对象关系与认知匹配
机器认知一个场景时,需要同时进行对象匹配和关系匹配。
例如:
对象:
机械臂01
鸡蛋01
锅01
仅仅识别对象是不够的。
机器还需要识别:
机械臂01 → 接近 → 鸡蛋01
鸡蛋01 → 位于 → 桌面01
锅01 → 位于 → 炉具01
然后将当前关系结构与已有知识进行匹配:
对象匹配
+
属性匹配
+
状态匹配
+
关系匹配
↓
场景匹配
↓
认知
因此:
认知匹配不仅是“对象是什么”的匹配,也是“对象之间发生了什么”的匹配。
这为后续的场景认知理论和复杂行为理论建立基础。
6.19 对象关系与类关系的统一模型
现在可以把类关系和对象关系放在两个层次中:
类层
↓
类关系
↓
类别结构
对应:
对象层
↓
对象关系
↓
现实结构
完整表示为:
类A
↓ 类关系
类B
↓
对象A
↓ 对象关系
对象B
进一步:
类结构
↓
对象结构
↓
对象关系
↓
场景结构
由此形成从抽象世界到现实世界的结构映射。
6.20 对象关系的工程表示
在工程系统中,可以建立统一的对象关系结构:
ObjectRelation
{
id
source_object_id
target_object_id
relation_type
direction
start_time
end_time
state
parameters
}
其中:
- source_object_id:关系起始对象;
- target_object_id:关系目标对象;
- relation_type:关系类型;
- direction:关系方向;
- start_time:关系开始时间;
- end_time:关系结束时间;
- state:关系当前状态;
- parameters:关系参数。
关系类型可以定义为:
SPATIAL
BELONG
OPERATE
USE
CAUSE
也可以继续扩展:
CONTACT
CONTAIN
NEAR
FAR
CONTROL
SUPPORT
TRANSFER
这样,机器可以通过统一的数据结构表示不同类型的对象关系。
6.21 对象关系数据库结构
可以进一步建立:
objects
├── id
├── class_id
├── attributes
└── states
以及:
object_relations
├── id
├── source_object_id
├── target_object_id
├── relation_type
├── direction
├── start_time
├── end_time
└── status
这样:
objects
↓
object_relations
↓
objects
形成:
对象 → 关系 → 对象
例如:
机械臂01
↓
object_relations
↓
鸡蛋01
关系记录:
source = 机械臂01
relation = OPERATE
target = 鸡蛋01
这种结构可以支持:
- 对象关系查询;
- 场景构建;
- 关系变化追踪;
- 行为条件判断;
- 状态更新;
- 历史关系记录。
6.22 对象关系运行模型
对象关系进入机器运行过程后,可以形成:
感知
↓
对象发现
↓
对象实例
↓
对象关系识别
↓
空间关系
↓
所属关系
↓
操作关系
↓
使用关系
↓
因果关系
↓
场景形成
↓
认知
↓
行为
↓
动作
↓
对象关系变化
↓
再认知
这使对象关系从静态知识转变为动态运行结构。
6.23 对象关系理论的核心原则
本章可以归纳为七项基本原则。
第一,对象关系原则
现实对象不是孤立存在的,而是通过各种关系形成结构。
对象A
↓
关系
↓
对象B
第二,层次对应原则
类关系位于抽象层,对象关系位于现实实例层。
类关系
↓
对象关系
第三,空间原则
对象通过位置、方向、距离、接触、包含等空间关系形成空间结构。
第四,所属原则
对象可以属于某个对象集合、结构、组织或空间范围。
第五,操作原则
对象可以对其他对象执行动作,形成操作关系。
第六,使用原则
对象可以使用其他对象提供的工具、资源或能力。
第七,因果原则
对象行为和状态变化之间可以形成因果关系。
最终形成:
空间
+
所属
+
操作
+
使用
+
因果
↓
对象关系结构
6.24 本章总结
本章从对象层建立了机器世界中的对象关系理论。
如果第5章解决的是:
“类与类之间是什么关系?”
那么第6章解决的是:
“具体对象与对象之间是什么关系?”
对象关系可以表示为:
对象A
↓
关系
↓
对象B
其中主要包括:
空间关系
所属关系
操作关系
使用关系
因果关系
这些关系共同把孤立对象组织成为现实场景。
类关系与对象关系则形成上下层结构:
类关系
↓
定义类别之间的结构可能性
↓
对象关系
↓
表现具体对象之间的现实联系
因此:
类
↓
类关系
↓
对象
↓
对象关系
↓
场景
对象关系又具有动态性:
关系建立
↓
关系变化
↓
对象状态变化
↓
场景变化
↓
认知变化
↓
行为变化
最终,本章形成一个重要理论结论:
对象不是孤立存在的实体,而是通过空间、所属、操作、使用、因果等关系相互连接,并在时间和场景中形成动态结构。类关系规定类别之间的抽象结构,对象关系则把这些结构具体展开为现实世界中的对象联系;对象关系的持续变化构成场景变化的重要基础,而场景变化进一步推动机器认知和行为变化。
至此,第1章至第6章已经形成:
世界
↓
基础类
↓
对象实例
↓
类—对象结构
↓
类关系
↓
对象关系
↓
场景
下一章自然进入一个更重要的问题:
对象具有属性、状态,类具有结构,类之间有关系,对象之间也有关系,那么这些对象和关系在特定时间、空间和状态条件下如何共同形成一个完整的“场景”?
这将进入第7章 场景结构理论。