空間OS@空気を読む家
2019年10月7日

先端IT活用推進コンソーシアム
ビジネスAR研究部会
日本総合システム株式会社 中川雅三

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

空間OS• 身の回りのコンピュータ（エージェント）を相互連携させるプラットフォーム

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

2実現したいこと1• たとえば屋内での熱中症防止• 空間OS： 「窓をあけませんか？」
外気温が低く晴れており…

様々な情報から総合的判断• ありがちな解決策– 電機メーカー： エアコンを自動的につけます。
窓は開けないでね。

– 住宅メーカー： 窓を自動的にあけます。

自社製品だけで解決しようとする

窓のまわりには物を置かないでね。

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

3実現したいこと2• 一生使うシステム
・人の老いや技術の変化・進歩へ対応する・機械を入れ替えても存在し続ける– 40歳 エアコン自動制御– 60歳 「窓を開けませんか」– 80歳 家事ロボット： 「窓をあけますね」
年月をかけて作り上げてゆくしくみ
Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

4窓をあけませんか• 実現に必要なこと– 機器の連携

世の中とも連携• 状況＋手段＋（知識orルール）– 人との連携• 家庭や社会の一部としてシステムをデザイン– 過去・未来との連携• データを中心にデザイン– プラットフォーム化・インフラ化

永続化できるのはデジ
タルデータだけだから稼げるようにすることが最大の課題• その場所でのビジネス「窓をあけませんか？」という動作のスポンサーは誰？

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

5

現状• 連携できない– 「エッジ」同士• 「クラウド」の介在が必要– 異なるメーカー• 囲い込みから脱却できず…

– 異なる業界• 異なる分野• 異なる規模• 新興ビジネス

規格を作れない、間に合わない– 異なる世代・時代• 製品・事業・企業・業界の寿命は人生より短い

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

6

空間OSの目標• フィールド（現場）での情報共有– 共通のことばでデータ即時共有• プロトコルからオントロジーへ

フィールド：「エッジ」より主体的– 受け継ぐデータ• デジタルデータはハードウエアの寿命を超えられる• フィールドとクラウドのすみ分け–––––

プライバシー保護
即応
広域災害・障害耐性
データ品質の実現
データ量の縮減

フィールドの役割： クラウドにはできないこと• フィールド基盤のインフラ化– 「規格」を作る方法の規格化– 異業種連携・新興ビジネス

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

稼げるようにすれば様々な産業が興る

7

空間OSの実装• アーキテクチャ：RDFストア＋拡張機能＋規格制定基盤– RDFストア• グラフデータベース → 任意の構造データの共有• RDF → データ表現の統一＋名前空間の分離• HTTP → プロトコルの統一– 拡張機能• 物理ノード： 現実世界の反映

Linked Open Dataで使われている– REST的： それぞれがサービスポータル– WebSocket ： リアルタイム＋データプッシュ– セキュリティ ： データごとのアクセス認可– 規格制定基盤• OWL＋上位の構造• 隔離された名前空間→ 機械可読な規格→ 複数規格の共存

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

8

物理ノード外界とつながる論理的な実体••

リアルタイム通知
時系列記録
動的RDFストア
外界へ作用する物理ノード

書き込み

通知

照明エージェントが点灯
通知書き込み外界を反映する物理ノード
温度計エージェントが計測

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

9

「家」での空間OS一般知識・データ

LOD(公開）
他の空間OS

オントロジー、ルール、気象情報、サービス、…

知識共有

エージェントメタデータ
クラス定義、機能定義…

ローカルナレッジ

空間OS：動的RDFストア（非公開）

家族構成、間取り、契約…

人間API
会話、外部連絡、忖度…

黒板
モデル

管理エージェント
安全、空調、電力…

認識・解釈エージェント
人・ペット・環境…

センサー・アクチュエータ
温度計、マイク、カメラ、エアコン、掃除ロボット…

プロトコルコンバータ
Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

エージェント＝Web Servcie

プログラミングモデル
動的RDFストア ＝ マルチレイヤー黒板（レイヤー境界は曖昧）
人と機械をとりもつ
エージェント高

解釈・決定
エージェント…
抽象レベル解釈・決定人間API

エージェント
管理エージェント

解釈・決定
エージェント
事実低（具象）Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

認識・解釈エージェント

IoT
エージェントセンサーアクチュエーター
ロボット

11

空間OSの機能• 空間OSのユーザはエージェント– 様々なセンサー、ロボット（エアコン、掃除機）…
– クラウド上のサービス、他の空間OS– 人間• エージェント基盤としての空間OS– アーキテクチャの統一
黒板モデル– プロトコルの統一
HTTP+WebSocket– データフォーマットの統一 RDF• 規格制定基盤としての空間OS– 規格の機械語→ 規格のコンパイラを作りたい

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

12空間OS 2019新機能• ツール
データ構造をプログラミング言語で表現– コンパイラ： Java → OWL+RDF– 逆コンパイラ ： OWL+RDF → Java• 物理ノードの構造化– 入れ子クラス構造– メッセージキュー

Java以外の実装も可能• インスタンスの生成管理– クラス定義からのインスタンス生成
Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

13

使用例
• 姿勢骨格データの取り込みとリアルタイム中継

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

14

データ例
•

1フレーム分 （毎秒10～フレーム）で発生{"persons":[{"bodyParts":[{"part":0, "pos":{"x":0.380, "y":0.773}, "score":0.687},{"part":1, "pos":{"x":0.368, "y":0.790},"score":0.346},{"part":2, "pos":{"x":0.336, "y":0.802}, "score":0.712},{"part":3, "pos":{"x":0.391, "y":0.908}, "score":0.782},{"part":4,"pos":{"x":0.442, "y":0.974}, "score":0.820},{"part":5, "pos":{"x":0.430, "y":0.794}, "score":0.325},{"part":6, "pos":{"x":0.479,"y":0.830}, "score":0.123},{"part":7, "pos":{"x":0.460, "y":0.818}, "score":0.225},{"part":8, "pos":{"x":0.180, "y":0.835},"score":0.253},{"part":9, "pos":{"x":0.182, "y":0.871}, "score":0.233},{"part":10, "pos":{"x":0.134, "y":1.023}, "score":0.252},{"part":11,"pos":{"x":0.097, "y":0.994}, "score":0.129},{"part":12, "pos":{"x":0.166, "y":0.806}, "score":0.188},{"part":14, "pos":{"x":0.097,"y":0.990}, "score":0.175},{"part":15, "pos":{"x":0.371, "y":0.757}, "score":0.621},{"part":16, "pos":{"x":0.391, "y":0.749},"score":0.640},{"part":17, "pos":{"x":0.354, "y":0.761}, "score":0.482},{"part":18, "pos":{"x":0.412, "y":0.745},"score":0.322},{"part":22, "pos":{"x":0.072, "y":0.953}, "score":0.152},{"part":23, "pos":{"x":0.074, "y":0.953},"score":0.157},{"part":24, "pos":{"x":0.086, "y":0.974}, "score":0.113}]}],"fos_warrant":"OpenPose-1.5.0-CPU"}

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

15

Javaで構造を記述
package com.example.fos.samples.pose2;…
@FOSobject@Datapublic class Frame {private List<Person> persons;

Javaを選んだのはJavaを使っていたから他の言語でも可能@FOSobject@Datapublic static class Person {private List<BodyPart> bodyParts;}@FOSobject@Datapublic static class BodyPart {private String id;
private float score;private Position2d pos;}
@FOSobject@Datapublic static class Position2d {private float x;
private float y;}}

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

16

OWL-RDF表現へコンパイル.....
@prefix owl:
@prefix fos:

<http://www.w3.org/2002/07/owl#> .
<http://bizar.aitc.jp/ns/fos/0.1/> .

fos:Classrdfs:subClassOf owl:Class@prefix :<http://pose2.samples.fos.example.com/Frame#>

現在はデータ構造のみ変換.
.

<http://pose2.samples.fos.example.com/Frame>
rdf:type
fos:Class;.
:persons
rdf:type
rdf:Property;
rdfs:domain<http://pose2.samples.fos.example.com/Frame>;
rdfs:range_:Seq_Person;.
_:Seq_Person
rdfs:subClassOf rdf:Seq;
rdfs:subClassOf _:Restrict_Seq_Person;.
_:Restrict_Seq_Person
rdf:type
owl:Restriction;
owl:onProperty rdfs:ContainerMembershipProperty;
owl:allValuesFrom<http://pose2.samples.fos.example.com/Frame/Person>;.
@prefix :<http://pose2.samples.fos.example.com/Frame/Person#>.

<http://pose2.samples.fos.example.com/Frame/Person>
rdf:type
fos:Class;....

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

17

拡張RDFストアの初期状態
CPLOD:動的RDFストア

システム用の物理ノードが1個だけ存在するインスタンス
マネージャ

物理ノード（メッセージキュー）

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

18

クラス定義のアップロード

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

19

クラス定義アップロード
CPLOD:動的RDFストア

クラス定義が書き込まれた状態

デモではFusekiコンソールからインスタンス
マネージャ

物理ノード（メッセージキュー）Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

20

インスタンスの生成
SPARQL（RDFストア操作言語）で空間OSのメッセージキューへリクエスト書き込み

この例では、インスタンスに「居間に設置」というグラフをくっつけている

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

21

生成コマンド送信
CPLOD:動的RDFストア

システム用の物理ノードへインスタンス生成リクエストを書き込む

デモでは
Fusekiコンソールからインスタンスマネージャ

物理ノード（メッセージキュー）

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

22

インスタンス生成
動的RDFストア

生成された物理ノード

インスタンスマネージャ

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

23生成されたインスタンス
動的RDFストア

物理ノードを含むグラフ（居間に設置された…）

生成された物理ノード

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

（他の図では省略しているが）物理ノードにも構造がある

24

姿勢骨格表示の動作

CPLOD:動的RDFストア

物理ノード
表示エージェント
（ブラウザで実行）

データ消費エージェント（秒あたりフレーム数カウント）

時系列ストア

姿勢骨格データ生成
エージェント

このデモでは生成済データの送信（実用では画像認識エージェント）

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

25

性能• 100チャネル同時中継程度を目標
家族8名常時4台のカメラ追跡でも余裕（最大処理能力の半分以下）– 10フレーム/s– 1～2kB/フレーム– JSONフォーマット
• 受信時にパーズしてValidate• 履歴はJSONでテキストファイルとして記録• バイナリ転送対応も可能• 現状実測値：送受信各1チャネルで1200フレーム/s– COREi7ノート– 空間OSと送受信プログラムを同一PC上でCopyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

目標クリア
してそう26

ざっくりとまとめ• プログラミング言語でデータ構造を表現– コンパイル結果(メタデータ）を空間OS（RDFストア）へアップ• 空間OSに依頼してインスタンス（物理ノード）生成– 物理ノード ＝ WebSocketつきのRESTサービス• サブスクライバへ即時中継• JSONテキストで人間にも可読• 全データを時系列記録• 空間OSには様々な物理ノードとメタデータが共存– 例： 住人Aさんを追跡して、在室中の部屋の温度を監視• 室温が28度を超え、外気温が25度以下、窓がある部屋で、天気が晴れ、60歳のAさん今日は運動不足→ 「窓を開けませんか」

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

27

「家」での空間OS一般知識・データ

LOD(公開）
他の空間OS

オントロジー、ルール、気象情報、サービス、…

知識共有

エージェントメタデータ
クラス定義、機能定義…

ローカルナレッジ

空間OS：動的RDFストア（非公開）

家族構成、間取り、契約…

人間API
会話、外部連絡、忖度…

黒板
モデル

管理エージェント
安全、空調、電力…

認識・解釈エージェント
人・ペット・環境…

センサー・アクチュエータ
温度計、マイク、カメラ、エアコン、掃除ロボット…

プロトコルコンバータ
Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

エージェント＝Web Servcie

プログラミングモデル
動的RDFストア ＝ マルチレイヤー黒板（レイヤー境界は曖昧）
人と機械をとりもつ
エージェント

高解釈・決定エージェント

…
抽象レベル

解釈・決定

人間API

エージェント
管理エージェント

解釈・決定
エージェント
事実低（具象）

IoT
エージェント

作り方がわかっている
Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

認識・解釈エージェント

センサー
アクチュエーターロボット

29

世の中では…
• データ構造のOWL-RDF表現の利用拡大– ISO-8000関連で広がる？
• 「データ品質」の定義と測定に利用• HL7-FHIR（医療情報交換規格）– OWL-RDFによるリソース定義を公開– 空間OS逆コンパイラをテストしてみた• クラスやデータ型の表現方法が若干異なることに対応• 9万トリプル弱から約900個のクラスを生成

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

30

バージョン2020• アルゴリズムもRDFへコンパイルしたい用途：– ソフトウエアの永続化 → 論理的な環境すべてをデータとして永続化• 使用する時代のプログラミング言語へ変換して実行• 人間にも可読にする → メンテナンス可能– RDFストアのストアドプロシージャ• モバイルエージェント• 規格・バージョン間コンバータ– IT規格の機械実行可能な定義• 規格上のアルゴリズム記述をRDF化 → 実行プログラムへ自動変換して検証• 規格へのツール同梱––––

サンプルデータ生成器
データ検証器
シミュレータコンバータ

Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

31http://aitc.jp
https://www.facebook.com/aitc.jp

ハルミン
AITC非公式イメージキャラクター
Copyright © 2019 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

32