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

第253章 Scene Model|场景模型

第253章 Scene Model|场景模型

253.1 提出背景

第252章建立了 Object Model|对象模型

对象模型解决的是单个现实对象在机器系统中的结构化表示:

Object
↓
Identity
+
Class
+
Attribute
+
Relation
+
State
↓
Object Model

但是,现实世界并不是由孤立对象组成的。

一个真实行为通常同时涉及多个对象、多个属性、多个关系以及多个状态。例如“手抓取鸡蛋”这一行为,并不是单纯由一个 Egg Object 就能够描述,而是至少涉及:

Hand
Egg
Table
Space
Position
Distance
Contact
Force
Pressure
Velocity
Stability

这些对象、属性、关系和状态在特定时间、特定空间和特定目标条件下组合起来,才形成机器当前面对的一个现实场景。

因此,ICAI需要在Object Model之上建立:

Scene Model|场景模型

Scene Model不是一张静态的“场景图片”,而是机器对当前现实世界中多个对象及其动态关系进行结构化组织的运行模型

其基本结构为:

Real World
↓
Real-Time Data
↓
Element
↓
Object Instance
↓
Object Model
↓
Relation
↓
State
↓
Scene Model
↓
Cognitive Model

因此:

Object Model→Scene Model→Cognitive ModelObject\ Model \rightarrow Scene\ Model \rightarrow Cognitive\ Model

构成ICAI从“对象认知”进入“场景认知”的重要工程层。


253.2 Scene Model 的定义

Scene Model|场景模型,是ICAI用于描述特定时间和空间条件下,多个对象、对象属性、对象关系、对象状态以及环境条件所形成的整体动态结构。

可以定义:

SMt=F(Ot,At,Rt,St,Et,Pt,Gt)SM_t=F(O_t,A_t,R_t,S_t,E_t,P_t,G_t)

其中:

  • SMtSM_t:时间 tt 的Scene Model;
  • OtO_t:当前对象集合;
  • AtA_t:对象属性集合;
  • RtR_t:对象关系集合;
  • StS_t:对象状态集合;
  • EtE_t:环境信息;
  • PtP_t:空间信息;
  • GtG_t:当前目标;
  • FF:场景模型构造函数。

因此,一个场景并不是:

几个 Object

简单相加。

而是:

Objects
+
Attributes
+
Relations
+
States
+
Environment
+
Space
+
Time
+
Goal
↓
Scene Model

253.3 Scene 与 Object 的区别

必须明确区分:

Object
Object Model
Scene
Scene Model

Object|对象

表示现实世界中的单个实体。

例如:

Egg_001

Object Model|对象模型

描述这个具体对象当前的完整结构:

Egg_001
├── Position
├── Weight
├── Size
├── Surface
├── Velocity
└── State

Scene|场景

表示多个对象在一定时间和空间条件下形成的整体现实结构。

例如:

Hand_001
Egg_001
Table_001

以及:

Hand → Near → Egg
Egg → On → Table
Hand → Above → Egg

共同形成一个现实场景。

Scene Model|场景模型

则是机器对这一现实场景进行结构化表示后的软件运行模型。

因此:

ObjectModel⊂SceneModelObjectModel \subset SceneModel

对象模型是场景模型的重要组成部分。


253.4 场景不是对象的简单集合

这是ICAI Scene Model的重要理论基础。

如果只有:

Hand
Egg
Table

机器只能知道三个对象存在。

但机器还不知道:

Hand 与 Egg 的关系
Egg 与 Table 的关系
Hand 与 Egg 的距离
Hand 是否接触 Egg
Egg 是否稳定
Hand 是否正在移动
当前是否存在抓取条件

因此:

Scene≠∑ObjectScene \neq \sum Object

更准确地说:

Scene=F(Object,Relation,State,Environment,Space,Time)Scene=F(Object,Relation,State,Environment,Space,Time)

也就是说:

场景是对象及其动态结构关系的整体。

这也是Scene Model与Object Model最重要的区别之一。


253.5 Scene Model 的基本结构

ICAI中的Scene Model可以建立为:

Scene Model
│
├── Scene Identity
├── Scene Type
├── Time
├── Space
├── Environment
│
├── Objects
│   ├── Object Model
│   ├── Object Model
│   └── Object Model
│
├── Relations
│   ├── Spatial Relation
│   ├── Physical Relation
│   ├── Functional Relation
│   └── Dynamic Relation
│
├── States
│
└── Goal

其中:

Scene Identity|场景身份

用于识别当前场景实例。

Scene Type|场景类型

用于表示场景的结构类别。

Time|时间

表示当前场景对应的时间。

Space|空间

表示场景中的空间结构。

Environment|环境

表示对象所处的外部环境条件。

Objects|对象集合

保存当前场景中的对象模型。

Relations|关系集合

保存对象之间的动态关系。

States|状态集合

保存当前场景及其对象状态。

Goal|目标

表示当前行为环境下的目标条件。


253.6 Scene Instance|场景实例

与Object Instance一样,ICAI中的Scene也必须实例化。

例如:

Scene Class
↓
Scene Instance

可以产生:

scene_001
scene_002
scene_003

它们都可以属于:

ManipulationScene

但是具体内容完全不同。

例如:

scene_001
├── Hand_001
├── Egg_001
└── Table_001

另一个场景:

scene_002
├── Hand_001
├── Glass_001
└── Table_001

还有:

scene_003
├── RobotArm_001
├── Bottle_001
├── Table_001
└── Box_001

因此,ICAI不能把场景写成:

EggGrabbingScene
GlassGrabbingScene
BottleGrabbingScene

分别建立完全独立的程序。

而应该建立:

Scene Class
↓
Scene Instance
↓
Object Models
+
Relations
+
States
↓
Current Scene

这保证场景模型具有通用性。


253.7 动态场景模型

现实世界不存在永久不变的场景。

因此:

SM(t0)→SM(t1)→SM(t2)→SM(t3)SM(t_0)\rightarrow SM(t_1)\rightarrow SM(t_2)\rightarrow SM(t_3)

例如最初:

t0

Hand
Egg
Table

Hand → Far → Egg
Egg → On → Table
Egg = Static

然后:

t1

Hand
Egg
Table

Hand → Near → Egg
Egg → On → Table
Hand = Moving
Egg = Static

继续变化:

t2

Hand
Egg
Table

Hand → Contact → Egg
Egg → On → Table
Egg = Contact

继续:

t3

Hand
Egg
Table

Hand → Grasp → Egg
Egg → HeldBy → Hand
Egg = Grasped

因此:

场景不是一次建立完成
↓
而是持续更新

可以表示:

SMt+1=F(SMt,Dt+1)SM_{t+1}=F(SM_t,D_{t+1})

其中:

  • SMtSM_t:当前场景模型;
  • Dt+1D_{t+1}:下一时刻的新实时数据;
  • FF:场景更新函数;
  • SMt+1SM_{t+1}:新的场景模型。

253.8 场景中的对象动态变化

场景变化可能来自不同来源。

对象增加

Scene(t)
+
New Object
↓
Scene(t+1)

例如机器人看到一个新物体。

对象消失

Scene(t)
-
Object
↓
Scene(t+1)

例如物体离开感知范围。

对象属性变化

Object
↓
Attribute(t)
→
Attribute(t+1)

例如:

Position
Velocity
Force
Pressure
Temperature

发生变化。

对象关系变化

Near
↓
Contact
↓
Grasp
↓
Release

对象状态变化

Static
↓
Moving
↓
Contact
↓
Grasping
↓
Held

因此Scene Model必须能够同时处理:

对象变化
+
属性变化
+
关系变化
+
状态变化

253.9 Scene Model 与空间结构

场景模型具有明显的空间性质。

例如:

Hand
Egg
Table

不仅需要记录三个对象,还需要记录:

Hand Position
Egg Position
Table Position

以及:

Distance(Hand,Egg)
Distance(Egg,Table)
Direction(Hand,Egg)
Height(Egg,Table)

因此空间关系可以表示为:

Rs(Oi,Oj,t)R_s(O_i,O_j,t)

其中:

  • RsR_s:空间关系;
  • OiO_i:对象 ii
  • OjO_j:对象 jj
  • tt:当前时间。

例如:

Hand
↓
Above
↓
Egg

或者:

Egg
↓
On
↓
Table

这些空间关系是场景模型的重要组成部分。


253.10 Scene Model 与动态属性

第210章已经建立属性向量。

场景模型可以进一步形成场景属性集合:

Ascene(t)={A1(t),A2(t),…,An(t)}A_{scene}(t)= \{A_1(t),A_2(t),…,A_n(t)\}

其中:

  • Ascene(t)A_{scene}(t):当前场景属性集合;
  • Ai(t)A_i(t):第 ii 个对象或者场景属性。

例如:

Scene Attribute
├── Hand Position
├── Egg Position
├── Table Position
├── Hand Velocity
├── Egg Velocity
├── Hand-Egg Distance
├── Contact Force
├── Pressure
└── Stability

这些数据可以进一步形成场景状态向量:

Sscene(t)=F(Ascene(t),Rscene(t))S_{scene}(t)=F(A_{scene}(t),R_{scene}(t))

这样,场景就从“对象集合”进入了“可计算场景”。


253.11 Scene State|场景状态

单个对象具有Object State。

整个场景同样可以具有Scene State。

例如:

Scene State = Idle

表示当前场景没有发生重要行为。

随后:

Scene State = Approaching

表示:

Hand → Moving → Egg
Distance ↓

随后:

Scene State = Contacting

表示:

Distance ≈ 0
Contact = True

随后:

Scene State = Grasping

表示:

Contact = True
Pressure > Threshold
Force > Threshold
Stability = Increasing

因此:

Sscene(t)=F(Ot,Rt,At,St,Gt)S_{scene}(t)=F(O_t,R_t,A_t,S_t,G_t)

场景状态不是人为预先指定的固定标签,而是可以通过对象、属性、关系和条件计算得到。


253.12 Scene Model 与 Goal

场景模型本身描述的是:

当前世界是什么样。

而目标描述的是:

当前需要达到什么状态。

例如:

Current Scene
↓
Egg on Table

目标:

Goal
↓
Egg held safely

于是机器需要比较:

Scurrentvs.SgoalS_{current}\quad vs.\quad S_{goal}

即:

Current Scene
↓
Current State
↓
Goal State
↓
Difference
↓
Method

因此Scene Model必须能够向Cognitive Model提供完整的当前场景。


253.13 Scene Model 与 Cognitive Model

第251章建立了Cognitive Model。

第252章建立了Object Model。

本章进一步建立Scene Model。

三者可以形成:

Object Model
↓
Scene Model
↓
Cognitive Model

其职责分别为:

Object Model

单个对象是什么?

Scene Model

多个对象当前组成了什么现实结构?

Cognitive Model

机器当前如何理解这个场景,并准备采取什么方法?

因此:

CMt=F(SMt,Gt)CM_t=F(SM_t,G_t)

其中:

  • CMtCM_t:当前认知模型;
  • SMtSM_t:当前场景模型;
  • GtG_t:当前目标。

这说明:

Scene Model是Cognitive Model的重要现实世界输入。


253.14 Scene Model 的核心计算结构

ICAI可以把场景计算进一步抽象为:

SMt=F(Ot,At,Rt,St,Pt,Et)SM_t= F( O_t, A_t, R_t, S_t, P_t, E_t )

之后:

CMt=F(SMt,Gt)CM_t=F(SM_t,G_t)

再之后:

Mt=F(CMt)M_t=F(CM_t)

最终:

Actiont=F(Mt,SMt)Action_t=F(M_t,SM_t)

形成:

Objects
↓
Object Models
↓
Scene Model
↓
Cognitive Model
↓
Method
↓
Action

这就建立了机器从现实世界到行为输出的结构化计算链。


253.15 Scene Model 的 PHP OOP 实现

在PHP工程中,可以建立通用的 SceneModel 类。

class SceneModel
{
    protected $identity;
    protected $type;
    protected $objects = array();
    protected $relations = array();
    protected $states = array();
    protected $environment = array();
    protected $space = array();
    protected $goal = null;
    protected $timestamp;

    public function __construct($identity, $type = null)
    {
        $this->identity  = $identity;
        $this->type      = $type;
        $this->timestamp = time();
    }

    public function addObject($objectModel)
    {
        $this->objects[] = $objectModel;
    }

    public function addRelation($relation)
    {
        $this->relations[] = $relation;
    }

    public function setState($name, $value)
    {
        $this->states[$name] = $value;
    }

    public function setEnvironment($name, $value)
    {
        $this->environment[$name] = $value;
    }

    public function setSpace($name, $value)
    {
        $this->space[$name] = $value;
    }

    public function setGoal($goal)
    {
        $this->goal = $goal;
    }

    public function getObjects()
    {
        return $this->objects;
    }

    public function getRelations()
    {
        return $this->relations;
    }

    public function getStates()
    {
        return $this->states;
    }
}

这个类的关键不是代码数量,而是建立一个明确的软件对象结构:

SceneModel
├── Objects
├── Relations
├── States
├── Environment
├── Space
└── Goal

253.16 Object Model 加入 Scene Model

例如建立三个对象:

$hand  = new ObjectModel('hand_001', 'Hand');
$egg   = new ObjectModel('egg_001', 'Egg');
$table = new ObjectModel('table_001', 'Table');

然后建立场景:

$scene = new SceneModel(
    'scene_001',
    'ManipulationScene'
);

$scene->addObject($hand);
$scene->addObject($egg);
$scene->addObject($table);

随后加入关系:

Hand → Near → Egg
Egg → On → Table
Hand → Above → Egg

形成:

SceneModel
│
├── Hand_001
├── Egg_001
├── Table_001
│
├── Near(Hand, Egg)
├── On(Egg, Table)
└── Above(Hand, Egg)

这就形成一个真正可以被程序计算的场景实例。


253.17 Scene Model 的动态更新机制

Scene Model必须支持实时更新。

可以设计:

Scene Update
│
├── Update Object
├── Add Object
├── Remove Object
├── Update Attribute
├── Update Relation
├── Update State
├── Update Environment
└── Update Space

因此:

Real-Time Data
↓
Object Update
↓
Relation Update
↓
State Calculation
↓
Scene Update

例如:

t0
Hand Far Egg

更新:

t1
Hand Near Egg

再更新:

t2
Hand Contact Egg

再更新:

t3
Hand Grasp Egg

这些不是四个独立场景程序,而是:

SMt0→SMt1→SMt2→SMt3SM_{t0}\rightarrow SM_{t1}\rightarrow SM_{t2}\rightarrow SM_{t3}

同一个Scene Instance持续变化。


253.18 Scene Model 与行为方法

当Scene Model建立完成后,方法系统就不需要直接面对大量原始数据。

它可以直接读取:

Scene Model
↓
Current State
↓
Relevant Objects
↓
Relevant Relations
↓
Attribute Vector
↓
Method

例如抓取行为不需要直接写:

if object == egg

而可以基于:

Object
+
Distance
+
Position
+
Velocity
+
Contact
+
Force
+
Pressure
+
Stability

进行计算。

于是:

Scene Model
↓
Current Object State
↓
Method Parameters
↓
Behavior Calculation

这样就为第254章及后续的Method Model、Behavior Model建立了基础。


253.19 Scene Model 的通用性

ICAI Scene Model的一个核心目标是:

不枚举现实世界中的所有场景。

现实世界的场景组合数量几乎无限。

例如:

1个对象
+
2个对象
+
10个对象
+
100个对象

对象之间又可以形成大量:

空间关系
物理关系
时间关系
状态关系
功能关系

因此不可能简单地建立:

Scene001
Scene002
Scene003
...

一直枚举下去。

ICAI采用的是:

Scene Class
+
Object Models
+
Relations
+
States
+
Environment
+
Space
↓
Current Scene Instance

也就是说:

场景不是提前全部写好的,而是在运行过程中由现实对象动态构造出来的。

这与“每一种现实情况对应一个独立程序”的工程方式具有本质区别。


253.20 Scene Model 的场景生成机制

可以将ICAI的场景形成过程表示为:

SMt=Build(Ot,Rt,St,Et,Pt)SM_t=Build(O_t,R_t,S_t,E_t,P_t)

即:

Real-Time Data
↓
Elements
↓
Objects
↓
Object Models
↓
Relations
↓
States
↓
Environment
↓
Space
↓
Scene Model

因此,场景模型是一个动态生成模型(Dynamic Constructed Model)

当现实世界发生变化:

World(t)
↓
Data(t)
↓
SceneModel(t)

下一时刻:

World(t+1)
↓
Data(t+1)
↓
SceneModel(t+1)

场景模型始终保持对当前世界结构的同步。


253.21 Scene Model 的完整认知闭环

至此,ICAI可以进一步形成:

Real World
↓
Real-Time Data
↓
Element
↓
Object Instance
↓
Object Model
↓
Relation
↓
State
↓
Scene Model
↓
Cognitive Model
↓
Goal
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
World Change
↓
Feedback
↓
Real-Time Data
↓
Object Model Update
↓
Scene Model Update
↓
Re-Cognition

其中Scene Model承担了非常关键的中间作用:

Object
↓
Object Model
↓
Scene Model
↓
Cognitive Model

它把离散的对象组织成一个整体现实结构


253.22 Scene Model 的工程意义

Scene Model建立之后,ICAI的机器世界表示不再只是:

Object Database

而开始成为:

Dynamic World Structure

即:

World(t)→SceneModel(t)World(t)\rightarrow SceneModel(t)

机器能够在程序内部形成:

当前有哪些对象
+
对象在哪里
+
对象之间有什么关系
+
对象当前是什么状态
+
环境是什么状态
+
场景正在发生什么变化

这使得机器行为不再直接建立在孤立数据上,而建立在结构化动态场景之上。

最终形成:

SceneModel(t)→CognitiveModel(t)→Method(t)→Action(t)SceneModel(t)\rightarrow CognitiveModel(t)\rightarrow Method(t)\rightarrow Action(t)

这就是ICAI从对象工程进入复杂行为工程的重要基础。


253.23 本章总结

Scene Model|场景模型 是ICAI机器认知体系中连接Object Model与Cognitive Model的核心结构。

它的基本形式为:

SMt=F(Ot,At,Rt,St,Et,Pt,Gt)SM_t=F(O_t,A_t,R_t,S_t,E_t,P_t,G_t)

其核心组成包括:

Scene Identity
+
Time
+
Space
+
Environment
+
Object Models
+
Relations
+
States
+
Goal

场景不是对象的简单集合:

Scene≠∑ObjectScene\neq \sum Object

而是:

Scene=F(Object,Relation,State,Environment,Space,Time)Scene=F(Object,Relation,State,Environment,Space,Time)

同时,Scene Model是动态的:

SMt→SMt+1→SMt+2SM_t\rightarrow SM_{t+1}\rightarrow SM_{t+2}

现实世界发生变化,场景模型同步变化;场景模型发生变化,认知模型随之更新。

因此形成:

Object Model
↓
Scene Model
↓
Cognitive Model
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
Feedback
↓
Scene Model Update

到第253章,ICAI已经形成三个重要的工程层次:

第251章
Cognitive Model
→ 机器当前如何组织认知

第252章
Object Model
→ 机器当前如何组织现实对象

第253章
Scene Model
→ 机器当前如何组织多个对象形成的动态现实场景

三者形成:

Object Model→Scene Model→Cognitive ModelObject\ Model\rightarrow Scene\ Model\rightarrow Cognitive\ Model

由此,ICAI的机器世界已经从单个对象的动态建模进一步进入多对象动态场景建模,下一层就可以自然进入:

Scene Model
↓
Cognitive Model
↓
Method Model
↓
Behavior Model
↓
Action Model

也就是从“机器看到了怎样的场景”,进一步进入“机器如何根据当前场景计算应该采取什么方法和行为”。

Leave a Reply

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