• 検索結果がありません。

サービスアプリケーション開発プラットフォーム

第 5 章 プラットフォームを用いたサービスの実現

5.6. 物理サービスへの拡張

5.6.3. サービスアプリケーション開発プラットフォーム

(5) Task schedulerコンポーネント

Task Schedulerコンポーネントは空間知ミドルウェア[69]で既に開発されているTask Schedulerコンポ

ーネントを改良した.Task Schedulerコンポーネントはコマンドリスト生成部とコマンド実行管理部から なる.コマンドリスト生成部には従来のTask Schedulerコンポーネントに対して,Figure 5-22のコマン ド分解と How の比較の処理を新たに実装した.このコンポーネントは,Kukanchiコンポーネントを定 期的に参照し,新たなサービス要求コマンドを取得する.そして,XML ファイルで記述されたサービ ス要素を用いてそのサービス要求コマンドを分解する.ついで,ロボットと物品の属性とロボットの機

能をKukanchiコンポーネントから取得して,サービス実行主体のロボットの候補を決定する.生成され

たサービス情報の例をFigure 5-28に記す.この例では,サービス要求のBRINGコマンド(3行目)が

GET Task(8行目)に分解され,それがPASS_CATCH Candidates(10行目)に分解されている.そして,

PASS_CATCH Candidates(10行目)がManipulatorとHandの機能(14行目)が必要なPASS Subtask(12 行目)と,MobileRobotの機能(35行目)が必要なCATCH Subtask(33行目)に分解されている.PASS

Subtaskに対しては,実行に必要な機能(14行目)を有し,財布の重さとサイズ(28-29行目)に対応可

能なRT-Box1(17行目)が候補として挙がっている.

Figure 5-22のWhereの比較とコマンドリスト生成は,既存のTask Schedulerコンポーネントの処理を

活用した[69].この処理では,KukanchiコンポーネントのPOSITION_VOLUMEテーブル(Figure 5-25)

から物品,ロボット,ユーザの位置情報を取得する.また,Put in,Part of,Next to,Onで表現された ユーザやロボット,物品の間の相対的な位置関係を POSITION_RELATION テーブルから取得する.そ して,この位置関係とロボットの作業範囲から受け渡し位置を算出する.ついで,サービス実行主体と なるロボットの組み合わせを決定し,コマンドリストを生成する.

コマンド実行管理部では,既に開発されているTask Schedulerコンポーネントの機能を用いて,配下 のロボットとコマンドリストを共有する.各ロボットはこのコマンドリストを定期的に参照し,自身の ID の状態が“READY”時に当該コマンドを実行し,終了後に“DONE”に書き換える.コマンド実行 管理部はこの状態を参照し,“DONE”に書き換えられたタイミングで次のコマンドの状態を“READY”

に書き換える.このような仕組みで機能の異なったロボットが作業を順次実行し,物理サービスを実行 する.

Figure 5-23 Service development framework based on 4W1H and properties

Application layer

Sensors/robots layer

Service selector component

Request command

User/Robot/Objects data 4W data of User/Robot/Objects

4W Integrator component

Optional

sensor SensorSensorSensor RobotRobotRobot

Task Scheduler component Command list generation

Command execution management Command list management

Robot Robot

Robotic command

 Service selection by ‘who’, ‘where’ and

‘what’ comparison

Kukanchi component

Users data Robots data Objects data Position data Request command

 Command decomposition

 ‘How’ comparison

 ‘Where’ comparison and command list generation

Connection unit component 4W data of User/Robot/Objects

Robot applications Robot applications Request command generation

Condition to activate service

Service elements

Figure 5-24 Example of 4W data

Figure 5-25 Entity-relationship diagram of database of kukanchi component

<FourW>

<data>

<who>goods1</who>

<when>2014/04/20 17:51:56.336</when>

<where></where>

<where_around>near,:robot120</where_around>

<where_at>1325,3000,650,0,0,0</where_at>

<what>Held,robot120</what>

</data>

<data>

<who>robot120</who>

<when>2014/04/20 17:51:56.346</when>

<where></where>

<where_around></where_around>

<where_at>1325,3000,650,0,0,0</where_at>

<what>Hold,goods1</what>

</data>

<data>

<who>person200</who>

<when>2014/04/20 17:51:56.347</when>

<where></where>

<where_around>R_ON:goods315</where_around>

<where_at>62,2062,0,0,0,0</where_at>

<what>is</what>

</data>

</FourW>

who when where what Objects

4W data

Robots 4W data

User 4W data

(OBJECT_ID) (OBJECT_TYPE) (OBJECT)

(CLASS_ROBOT_ID) (OBJECT_ID)

(ROBOT_INFO) (ROBOT_INFO)

(CLASS_ROBOT_ID) (CLASS_ROBOT_INFO) (CLASS_ROBOT_INFO)

(CLASS_GOODS_ID) (OBJECT_ID)

(GOODS_INFO) (GOODS_INFO)

(CLASS_GOODS_ID) (CLASS_GOODS_INFO) (CLASS_GOODS_INFO) (PERSON_ID)

(OBJECT_ID)

(USER_INFO) (USER_INFO)

(PERSON_INFO) (PERSON_ID) (PERSON_INFO)

(OBJECT_ID) (RLS_DATA) (POSITION_VOLUME)

(OBJECT_ID)

(OBJECT_ID2) (RELATION_TYPE) (POSITION_RELATION)

Users’ properties

Robots’ properties

Objects’ properties Position of users,

objects, and robots

Figure 5-26 Class diagram of object properties

Figure 5-27 Class diagram of robots’ how data

pkg

ROBOT_INFO

robotInfo

CLASS_ROBOT_INFO

- robotClassID : int classRobotInfo

Mobile

Manipulator

Hand

*

*

*

CLASS_GOODS_INFO classGoodsInfo

name

provider

maxWeight

maxAmount GOODS_INFO

goodsInfo

shape

size

currentWeight

currentAmount Hand

hand

- 属性1 : int handWeight MaxOnjectHoldSize

MinObjectHoldSize

storeWeight storeHand

0..1 1

0..1 0..1

・・

・ ・

・・

Properties of object (Specifications)

pkg

ROBOT_INFO robotInfo

CLASS_ROBOT_INFO

- robotClassID classRobotInfo

MobileRobot Manipulator

Hand

*

*

*

Hand hand

MaxOnjectHoldSize

MinObjectHoldSize

storeWeight storeHand

0..1 1

0..1 0..1

Manipulator manipulator

objectPassRange 0..1

1 verticalArticulated

Payload 0..1

1

MobileRobot MobileRobot

WheeledMobile

0..1

payloadSize

0..1 1

MobilablePayLoad

Robotic functions

Properties of robotic function (Working range)

Properties of robotic function (Functional spec.) Properties of robotic function (Functional spec.)

Properties of robotic function (Functional spec.)

Figure 5-28 Example of results of generated service data

Task Requested command

Object data Robot data How Subtask Object data

Robot data How Candidates Subtask

1: <services>

2: <userCommnad>

3: <name>BRING</name>

4: <task id="1">

5: ・・・

6: </task>

7: <task id="2">

8: <name>GET</name>

9: <serviceflow>

10: <name>PASS_CATCH</name>

11: <subserviceflow id="1">

12: <name>PASS</name>

13: <how>

14: <name>Manipulator,Hand</name>

15: <robot>

16: <id>110</id>

17: <name>RT-Box1</name>

18: <payload>5</payload>

19: <maxObjectSize>H500,W350,L350</maxObjectSize>

20: </robot>

21: <robot>

22: ・・・

23: </robot>

24: </how>

25: <item>

26: <id>1</id>

27: <name>wallet</name>

28: <weight>0.2</weight>

29: <size>H65,W90,L160</size>

30: </item>

31: </subserviceflow>

32: <subserviceflow id="2">

33: <name>CATCH</name>

34: <how>

35: <name>MobileRobot</name>

36: <robot>

37: ・・・

38: </robot>

39: </how>

40: <item>

41: ・・・

42: </item>

43: </subserviceflow>

44: </serviceflow>

45: </task>

46:・・・

47: </userCommnad>

48:</services>