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

第271章 Behavior API|行为 API

第271章 Behavior API|行为 API

271.1 行为 API 的提出背景

第270章建立了 Method API|方法 API,完成了:

Cognition→MethodCognition\rightarrow Method

方法解决的是:

在当前目标、对象、状态和场景条件下,采用什么方式实现目标。

但是,方法确定之后,机器仍然需要将方法转化为一个能够随着时间、状态和环境变化而持续运行的过程。

这个过程就是 Behavior|行为

因此,需要建立:

Behavior API|行为 API

Behavior API 位于 Method API 与 Action API 之间:

Cognition
↓
Method
↓
Behavior API
↓
Behavior
↓
Action
↓
Device

Behavior API 的作用,是把方法转化为动态行为结构,管理行为的创建、启动、更新、暂停、恢复、终止、状态转换、动作生成以及行为反馈。

因此:

Method→BehaviorMethod\rightarrow Behavior

是 ICAI 从“方法确定”进入“动态行为运行”的关键工程转换。


271.2 Behavior API 的定义

Behavior API|行为 API,是用于建立、管理、更新、执行和监控机器行为过程的标准程序接口。

可以定义:

BehaviorAPI(Mt,Gt,Ct,St,Sct)→BtBehaviorAPI(M_t,G_t,C_t,S_t,Sc_t)\rightarrow B_t

其中:

  • MtM_t:当前方法;
  • GtG_t:当前目标;
  • CtC_t:当前认知;
  • StS_t:当前状态;
  • SctSc_t:当前场景;
  • BtB_t:当前行为。

行为可以进一步表示为:

Bt=F(Gt,Ct,Mt,Ot,St,Sct,Pt)B_t=F(G_t,C_t,M_t,O_t,S_t,Sc_t,P_t)

其中:

  • OtO_t:对象;
  • PtP_t:动态参数。

因此,Behavior API 并不是简单保存一个 behavior_type,而是负责建立一个具有目标、方法、状态、步骤、动作、条件和反馈的动态运行结构。


271.3 行为的定义

Behavior|行为,是机器为了实现某一目标,在特定场景和状态条件下,根据某种方法连续组织动作并随着环境变化不断更新的动态过程。

可以简单表示为:

Behavior=Process(Method,State,Action,Feedback)Behavior=Process(Method,State,Action,Feedback)

行为与方法、动作必须严格区分。

Cognition
↓
认识当前情况

Method
↓
确定实现目标的方法

Behavior
↓
形成连续的动态过程

Action
↓
产生具体执行单元

因此:

Cognition≠MethodCognition\neq Method Method≠BehaviorMethod\neq Behavior Behavior≠ActionBehavior\neq Action

行为不是一个瞬间发生的动作,而是一组受目标和状态控制的连续过程。


271.4 行为的基本结构

一个行为对象可以定义为:

B=(I,G,M,O,S,C,P,A,T,F,Status)B=(I,G,M,O,S,C,P,A,T,F,Status)

其中:

  • II:Behavior ID,行为标识;
  • GG:Goal,行为目标;
  • MM:Method,行为采用的方法;
  • OO:Object,行为作用对象;
  • SS:State,当前状态;
  • CC:Condition,行为条件;
  • PP:Parameters,动态参数;
  • AA:Actions,行为动作集合;
  • TT:Timeline,行为时间结构;
  • FF:Feedback,行为反馈;
  • Status:行为当前运行状态。

软件结构可以表示为:

Behavior
├── ID
├── Goal
├── Method
├── Object
├── State
├── Condition
├── Parameters
├── Actions
├── Timeline
├── Feedback
└── Status

由此,Behavior 成为一个独立的机器认知工程对象。


271.5 行为与方法的关系

方法确定行为的基本实现方式。

因此:

Bt=F(Mt,Gt,Ot,St,Pt)B_t=F(M_t,G_t,O_t,S_t,P_t)

例如:

Goal:抓取鸡蛋
Method:Grasp

形成:

Behavior
├── Approach
├── Contact
├── Apply Force
├── Hold
└── Lift

因此:

Method→BehaviorMethod\rightarrow Behavior

但是,方法并不等于行为。

例如:

Method = Grasp

只是说明采用“抓取”方法。

而:

Behavior =
接近
→
接触
→
施加作用力
→
保持
→
提升

描述的是实际行为过程。

因此:

方法规定行为的基本方式,行为负责将方法转化为动态过程。


271.6 行为与目标

行为始终围绕目标运行。

定义:

Bt=F(Gt,Mt,Ct,St)B_t=F(G_t,M_t,C_t,S_t)

目标发生变化,行为也可能发生变化。

例如:

Goal = Grasp Egg

行为:

Approach
→
Contact
→
Hold
→
Lift

如果目标变成:

Goal = Release Egg

行为可能变为:

Move To Target
→
Reduce Force
→
Release
→
Confirm Release

因此:

Gt→BtG_t\rightarrow B_t

但目标并不能单独决定行为。

行为还必须受到:

Method
+
Object
+
State
+
Scene
+
Device Capability

等条件共同约束。


271.7 行为状态

行为是动态过程,因此必须具有行为状态。

定义:

BStBS_t

表示时间 tt 的 Behavior State。

典型状态可以包括:

Created
↓
Ready
↓
Started
↓
Running
↓
Paused
↓
Resumed
↓
Completed

异常情况下:

Running
↓
Condition Changed
↓
Interrupted

或者:

Running
↓
Execution Failed
↓
Failed

因此:

BSt→BSt+1BS_t\rightarrow BS_{t+1}

行为状态转换可以表示为:

BSt+1=T(BSt,St,At,Ft)BS_{t+1}=T(BS_t,S_t,A_t,F_t)

其中:

  • BStBS_t:当前行为状态;
  • StS_t:当前世界状态;
  • AtA_t:当前动作;
  • FtF_t:当前反馈;
  • TT:状态转换函数。

271.8 行为的时间结构

行为与静态对象最大的区别之一,是行为具有时间过程。

因此可以建立:

B(t)B(t)

表示行为随时间变化。

例如抓取行为:

B(t)=Approach→Contact→Hold→LiftB(t)= Approach \rightarrow Contact \rightarrow Hold \rightarrow Lift

可以进一步定义离散行为状态:

B0→B1→B2→B3B_0\rightarrow B_1\rightarrow B_2\rightarrow B_3

其中:

B0 = Approach
B1 = Contact
B2 = Hold
B3 = Lift

在 PHP 运行环境中,可以采用离散时间:

Bt+1=T(Bt,Xt,Gt)B_{t+1}=T(B_t,X_t,G_t)

其中:

  • BtB_t:当前行为状态;
  • XtX_t:当前实时属性向量;
  • GtG_t:当前目标;
  • TT:行为转换函数。

因此无需将行为固定为静态流程表,而可以根据实时数据不断计算下一行为状态。


271.9 行为与动态属性

行为运行过程中,实时属性不断变化。

例如:

Xt=[Position,Velocity,Force,Pressure,Distance,Stability]TX_t= [ Position, Velocity, Force, Pressure, Distance, Stability ]^T

行为状态由当前属性决定:

Bt+1=F(Bt,Xt,Gt)B_{t+1}=F(B_t,X_t,G_t)

例如:

Distance>Threshold→ApproachDistance>Threshold \rightarrow Approach

当:

Distance≤ThresholdDistance\leq Threshold

则:

Approach→ContactApproach\rightarrow Contact

进一步:

Contact=True∧Force>FminContact=True\land Force>F_{min}

则:

Contact→HoldContact\rightarrow Hold

因此:

Dynamic Attribute
↓
State
↓
Behavior State
↓
Action

行为不是预先完全确定,而是在当前数据基础上动态推进。


271.10 行为与动作

行为由一个或多个动作构成。

可以表示:

B={A1,A2,⋯ ,An}B=\{A_1,A_2,\cdots,A_n\}

例如:

Behavior = Grasp

可以包含:

Action 1 → Move
Action 2 → Contact
Action 3 → Apply Force
Action 4 → Hold
Action 5 → Lift

因此:

Behavior→ActionBehavior\rightarrow Action

但是:

Behavior≠ActionBehavior\neq Action

行为是过程结构。

动作是过程中的执行单元。

可以进一步表示:

At=F(Bt,St,Pt,Dt)A_t=F(B_t,S_t,P_t,D_t)

其中:

  • BtB_t:行为;
  • StS_t:状态;
  • PtP_t:参数;
  • DtD_t:设备。

271.11 行为条件

行为必须具有执行条件。

定义:

Condition(B)=C1∧C2∧⋯∧CnCondition(B)=C_1\land C_2\land\cdots\land C_n

例如:

Object Exists
∧
Target Valid
∧
Object Reachable
∧
Device Available
∧
State Valid

当:

Condition(B)=TrueCondition(B)=True

行为可以继续。

如果:

Condition(B)=FalseCondition(B)=False

则:

Behavior
↓
Pause / Interrupt / Re-Evaluate

因此行为不是简单按照固定顺序执行,而是受到当前世界条件约束。


271.12 行为过程模型

一个通用行为模型可以表示为:

Bt+1=T(Bt,Xt,Gt,Mt,Ft)B_{t+1}=T(B_t,X_t,G_t,M_t,F_t)

其中:

  • BtB_t:当前行为;
  • XtX_t:当前实时数据;
  • GtG_t:目标;
  • MtM_t:方法;
  • FtF_t:反馈;
  • TT:行为转换函数。

基本运行过程:

Goal
+
Method
+
Current State
+
Current Data
↓
Behavior State
↓
Action
↓
Execution
↓
Feedback
↓
Behavior Update

因此行为系统形成:

Behavior→Action→Feedback→BehaviorBehavior\rightarrow Action\rightarrow Feedback\rightarrow Behavior

这是行为动态运行的基本闭环。


271.13 Behavior API 的核心接口

Behavior API 可以提供:

/api/behavior/create
/api/behavior/get
/api/behavior/update
/api/behavior/delete
/api/behavior/list
/api/behavior/query
/api/behavior/start
/api/behavior/pause
/api/behavior/resume
/api/behavior/stop
/api/behavior/update-state
/api/behavior/actions
/api/behavior/validate
/api/behavior/history

其中:

create:创建行为;

get:获取行为;

update:更新行为;

delete:删除行为;

list:获取行为集合;

query:查询行为;

start:启动行为;

pause:暂停行为;

resume:恢复行为;

stop:停止行为;

update-state:更新行为状态;

actions:获取当前行为动作;

validate:验证行为;

history:获取行为历史。

也可以使用资源型接口:

/api/behaviors
/api/behaviors/{id}
/api/behaviors/{id}/start
/api/behaviors/{id}/pause
/api/behaviors/{id}/resume
/api/behaviors/{id}/stop
/api/behaviors/{id}/actions
/api/behaviors/{id}/history

271.14 Behavior API 请求结构

一个行为请求可以定义为:

{
    "request_id": "B10001",
    "goal": {
        "type": "grasp",
        "target": "egg_01"
    },
    "method": {
        "id": "method_grasp"
    },
    "cognition_id": "C10001",
    "scene_id": "SC10001",
    "object_id": "egg_01",
    "state": {
        "type": "stable"
    },
    "parameters": {
        "position": {},
        "force": 0.8,
        "pressure": 0.5
    },
    "timestamp": 1788500000
}

系统处理流程:

JSON
↓
Behavior API
↓
Behavior Controller
↓
Behavior Service
↓
Behavior Engine
↓
Behavior Model
↓
Behavior Instance

271.15 Behavior API 响应结构

行为 API 可以返回:

{
    "request_id": "B10001",
    "status": "running",
    "behavior": {
        "id": "behavior_10001",
        "type": "grasp",
        "state": "approach"
    },
    "actions": [
        {
            "type": "move",
            "target": "egg_01"
        }
    ],
    "parameters": {
        "velocity": 0.2,
        "force": 0
    },
    "timestamp": 1788500000
}

其基本结构:

BR=(I,B,BS,A,P,F,T)BR=(I,B,BS,A,P,F,T)

其中:

  • II:请求 ID;
  • BB:行为;
  • BSBS:行为状态;
  • AA:动作;
  • PP:参数;
  • FF:反馈;
  • TT:时间。

271.16 BehaviorController

PHP OOP 中可以建立:

class BehaviorApiController
{
    protected $service;

    public function create()
    {
        $input = $this->getRequestData();

        $result = $this->service->create($input);

        return $this->json($result);
    }

    public function start()
    {
        $input = $this->getRequestData();

        $result = $this->service->start($input);

        return $this->json($result);
    }

    public function updateState()
    {
        $input = $this->getRequestData();

        $result = $this->service->updateState($input);

        return $this->json($result);
    }
}

Controller 的职责保持明确:

Receive Request
↓
Call Service
↓
Return Response

它不负责行为状态计算。


271.17 BehaviorService

BehaviorService 负责组织行为业务流程:

class BehaviorService
{
    protected $engine;

    public function create($input)
    {
        $this->validate($input);

        return $this->engine->createBehavior($input);
    }

    public function start($input)
    {
        $this->validate($input);

        return $this->engine->start($input);
    }

    public function updateState($input)
    {
        $this->validate($input);

        return $this->engine->updateState($input);
    }

    protected function validate($input)
    {
        return true;
    }
}

形成:

Behavior API
↓
BehaviorController
↓
BehaviorService
↓
BehaviorEngine

271.18 BehaviorEngine

BehaviorEngine 是行为动态计算的核心。

class BehaviorEngine
{
    public function createBehavior($input)
    {
        return array(
            'goal'   => $input['goal'],
            'method' => $input['method'],
            'object' => $input['object_id'],
            'state'  => 'created'
        );
    }

    public function start($input)
    {
        return array(
            'state' => 'running'
        );
    }

    public function updateState($input)
    {
        return $this->calculateNextState($input);
    }

    protected function calculateNextState($input)
    {
        return array(
            'state' => 'next_state'
        );
    }
}

实际系统中,calculateNextState() 可以进一步结合:

Goal
+
Method
+
Object
+
Attribute
+
Relation
+
State
+
Scene
+
Feedback

进行行为状态计算。


271.19 BehaviorModel

BehaviorModel 表示软件系统中的行为对象。

class BehaviorModel
{
    protected $id;
    protected $goal;
    protected $method;
    protected $object;
    protected $state;
    protected $conditions;
    protected $parameters;
    protected $actions;
    protected $feedback;
    protected $status;

    public function getId()
    {
        return $this->id;
    }

    public function getMethod()
    {
        return $this->method;
    }

    public function getState()
    {
        return $this->state;
    }

    public function getActions()
    {
        return $this->actions;
    }
}

其工程转换关系为:

Behavior Theory
↓
Behavior Object Model
↓
BehaviorModel
↓
Behavior Instance
↓
Runtime Behavior

271.20 BehaviorRepository

BehaviorRepository 负责行为数据持久化。

class BehaviorRepository
{
    public function save($behavior)
    {
        // Save behavior
    }

    public function find($id)
    {
        // Find behavior
    }

    public function update($id, $behavior)
    {
        // Update behavior
    }

    public function delete($id)
    {
        // Delete behavior
    }

    public function history($id)
    {
        // Behavior history
    }
}

数据库可以建立:

cognitive_behaviors

例如:

id
behavior_type
goal
method_id
object_id
current_state
conditions
parameters
status
timestamp
created_at
updated_at

行为动作可以通过:

cognitive_behavior_actions

进行管理。

行为历史可以通过:

cognitive_behavior_history

保存。


271.21 行为状态转换

行为运行的核心之一是状态转换。

定义:

BSt+1=T(BSt,Xt,Gt,Ft)BS_{t+1}=T(BS_t,X_t,G_t,F_t)

例如抓取行为:

Approach
↓
Distance <= Threshold
↓
Contact
↓
Force >= Minimum
↓
Hold
↓
Object Stable
↓
Lift

可以表示:

Approach→ContactApproach\rightarrow Contact Contact→HoldContact\rightarrow Hold Hold→LiftHold\rightarrow Lift

如果条件失败:

Hold→InterruptedHold\rightarrow Interrupted

如果执行成功:

Lift→CompletedLift\rightarrow Completed

因此行为是一个动态状态转换系统。


271.22 行为与反馈

行为不能只根据过去条件运行。

它必须不断接收反馈。

完整结构:

Behavior
↓
Action
↓
Device
↓
World Change
↓
Feedback
↓
State Update
↓
Behavior Update

形式化:

Bt+1=T(Bt,At,Ft,St)B_{t+1}=T(B_t,A_t,F_t,S_t)

例如:

行为:
Lift Egg

设备执行后:

Feedback:
Egg Position Changed

系统更新:

Egg State
↓
Scene
↓
Cognition
↓
Behavior

如果鸡蛋没有成功移动:

Feedback
↓
Behavior Evaluation
↓
Method Re-Evaluation
↓
New Behavior

因此反馈可以改变当前行为。


271.23 行为暂停与恢复

现实运行过程中,行为可能暂时无法继续。

例如:

Running
↓
Obstacle Detected
↓
Paused

当条件恢复:

Paused
↓
Condition Valid
↓
Resumed

因此:

Running→Paused→RunningRunning\rightarrow Paused\rightarrow Running

也可能:

Running→Interrupted→Re−EvaluateRunning\rightarrow Interrupted\rightarrow Re-Evaluate

行为 API 必须支持这种状态管理。

这使 Behavior API 不只是一个行为记录接口,而是一个动态行为控制接口。


271.24 行为终止

行为可以因为成功、失败或条件变化而终止。

定义:

Terminate(B)=Success∨Failure∨InvalidTerminate(B)=Success\lor Failure\lor Invalid

例如:

Behavior
↓
Goal Achieved
↓
Completed

或者:

Behavior
↓
Object Lost
↓
Failed

或者:

Behavior
↓
Method Condition Invalid
↓
Interrupted

终止之后可以进入新的认知周期:

Behavior End
↓
Feedback
↓
State Update
↓
Scene Update
↓
Re-Cognition

271.25 行为与设备

Behavior API 不直接操作物理设备。

行为产生动作:

Bt→AtB_t\rightarrow A_t

动作再进行设备匹配:

At→DtA_t\rightarrow D_t

因此:

Behavior
↓
Action
↓
Device Capability
↓
Device

这种结构可以避免 Behavior Engine 与具体设备硬绑定。

例如:

Behavior = Move

可以产生:

Action = MoveTo(Position)

随后由 Device Engine 判断:

Which device can execute MoveTo?

因此:

Behavior≠DeviceBehavior\neq Device Action≠DeviceAction\neq Device

三者保持工程边界。


271.26 行为与动态数学关系

ICAI 行为工程可以使用动态参数建立数学关系。

例如位置:

Pt+1=Pt+VtΔtP_{t+1}=P_t+V_t\Delta t

其中:

  • PtP_t:当前空间位置;
  • VtV_t:当前速度;
  • Δt\Delta t:时间间隔。

速度变化:

Vt+1=Vt+AtΔtV_{t+1}=V_t+A_t\Delta t

其中:

  • AtA_t:加速度。

作用力可以进一步参与行为参数:

Ft=mAtF_t=mA_t

其中:

  • FtF_t:作用力;
  • mm:对象质量;
  • AtA_t:加速度。

因此:

Position
+
Velocity
+
Acceleration
+
Force
↓
Dynamic State
↓
Behavior Update

在 PHP 工程中,可以采用离散时间计算:

Xt+1=F(Xt,Ut)X_{t+1}=F(X_t,U_t)

从而将行为动态变化转换为可执行的软件计算。


271.27 通用行为模型

ICAI 不应该为每一个具体对象建立完全独立的行为程序。

例如不应该分别建立:

GrabEgg()
GrabGlass()
GrabBottle()
GrabCup()

而可以建立通用:

Grasp(Object, Attributes, State, Relation)

其结构:

Bt=F(Gt,Ot,At,Rt,St,Mt)B_t=F(G_t,O_t,A_t,R_t,S_t,M_t)

对象不同:

Egg
Glass
Bottle
Cup

进入同一个行为模型。

但:

At,Rt,StA_t,R_t,S_t

不同。

于是:

BtEgg≠BtGlassB_t^{Egg}\neq B_t^{Glass}

即使方法类别相同,具体行为参数和状态过程仍然可以根据当前对象动态产生。

这正是通用行为工程的基础。


271.28 Behavior API 与实时系统

在实时认知运行中,Behavior API 位于:

Real-Time Data
↓
Object
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior API
↓
Action

当实时数据发生变化:

Attribute Changed
↓
State Changed
↓
Scene Changed
↓
Cognition Changed
↓
Method Changed
↓
Behavior Re-Evaluation

因此:

Bt+1=F(Mt+1,Ct+1,St+1,Sct+1)B_{t+1}=F(M_{t+1},C_{t+1},S_{t+1},Sc_{t+1})

行为随着当前机器世界变化而变化。


271.29 Behavior API 的完整闭环

完整行为运行过程:

World
↓
Real-Time Data
↓
Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
World Change
↓
Feedback
↓
State Update
↓
Scene Update
↓
Re-Cognition
↓
Method Re-Evaluation
↓
Behavior Re-Evaluation

因此:

Behaviort→Actiont→Worldt+1Behavior_t\rightarrow Action_t\rightarrow World_{t+1}

同时:

Worldt+1→Feedbackt+1→Behaviort+1World_{t+1}\rightarrow Feedback_{t+1}\rightarrow Behavior_{t+1}

最终:

Bt+1=T(Bt,Xt,Gt,Ft)B_{t+1}=T(B_t,X_t,G_t,F_t)

行为成为整个机器认知闭环中的动态执行层。


271.30 Behavior API 的系统定位

Behavior API 在 ICAI 中可以正式定义为:

Behavior API 是连接方法层与动作执行层的标准程序接口,负责根据目标、认知、方法、对象、状态和场景建立动态行为,并管理行为状态、行为条件、行为动作、动态参数和反馈,使方法能够转化为可持续运行的行为过程。

其核心关系为:

Cognition→Method→Behavior→ActionCognition\rightarrow Method\rightarrow Behavior\rightarrow Action

其中:

  • Cognition:当前认知;
  • Method:实现目标的方法;
  • Behavior:方法形成的动态过程;
  • Action:行为中的具体执行单元。

因此 Behavior API 是 ICAI 从认知结构进入实际执行结构的重要接口。


271.31 本章总结

第271章建立了 Behavior API|行为 API

第269章完成:

Scene→CognitionScene\rightarrow Cognition

第270章完成:

Cognition→MethodCognition\rightarrow Method

第271章进一步完成:

Method→BehaviorMethod\rightarrow Behavior

行为的核心不是一个静态名称,而是一个动态过程:

Bt=F(Gt,Ct,Mt,Ot,St,Sct,Pt)B_t=F(G_t,C_t,M_t,O_t,S_t,Sc_t,P_t)

行为随着实时数据和反馈持续变化:

Bt+1=T(Bt,Xt,Gt,Ft)B_{t+1}=T(B_t,X_t,G_t,F_t)

行为进一步产生动作:

Behavior→ActionBehavior\rightarrow Action

动作进入设备执行:

Action→DeviceAction\rightarrow Device

设备改变现实世界:

Device→WorldChangeDevice\rightarrow WorldChange

反馈重新进入认知系统:

WorldChange→Feedback→State→Scene→CognitionWorldChange\rightarrow Feedback\rightarrow State\rightarrow Scene\rightarrow Cognition

因此形成完整闭环:

World
↓
Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Cognition
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
World Change
↓
Feedback
↓
Re-Cognition

到第271章,ICAI API 层已经形成:

Element API
↓
Object API
↓
Attribute API
↓
Relation API
↓
State API
↓
Scene API
↓
Cognition API
↓
Method API
↓
Behavior API

其中前三个层次建立机器世界结构:

Element→Object→AttributeElement\rightarrow Object\rightarrow Attribute

中间三个层次建立世界关系与场景:

Relation→State→SceneRelation\rightarrow State\rightarrow Scene

后三个层次建立机器认知与行为:

Cognition→Method→BehaviorCognition\rightarrow Method\rightarrow Behavior

下一层将进入 Action API|动作 API,完成:

Behavior→ActionBehavior\rightarrow Action

使行为过程正式转换为独立、可调用、可验证的动作执行单元。

Leave a Reply

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