第 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>