310 likes | 422 Views
卒業研究進捗状況. 2001/12/28(金) 牧之内研 B4 宇徳 浩二. 発表内容. プラントデータウェアハウス、 GPM、GPML の説明 GPM のオブジェクトデータベースによる実装 GPM 三次元形状の可視化 ● 形状の種類 ● 形状情報の DB からの取得 ● 座標変換 今後の予定、課題. プラントオーナ・エンジニアリング会社. プロセス 基本設計. プロセス 基本設計. プロセス 詳細設計. プロセス 詳細設計. プラント 試運転. プラント 試運転. プラント 運転. プラント 運転.
E N D
卒業研究進捗状況 2001/12/28(金) 牧之内研 B4 宇徳 浩二
発表内容 • プラントデータウェアハウス、GPM、GPMLの説明 • GPMのオブジェクトデータベースによる実装 • GPM三次元形状の可視化 ● 形状の種類 ● 形状情報のDBからの取得 ● 座標変換 • 今後の予定、課題
プラントオーナ・エンジニアリング会社 プロセス 基本設計 プロセス 基本設計 プロセス 詳細設計 プロセス 詳細設計 プラント 試運転 プラント 試運転 プラント 運転 プラント 運転 プラント 廃棄 プラント 廃棄 関係省庁・地方自治体 機器・部品メーカー 工事許可・安全審査 PDWH 機器・部品調達 エンジニアリング会社・機器/部品メーカー ・プラントメーカー プラントデータウェアハウス
GPM , GPML Object Object Association General Plant Model • General Plant Model ・ プラントデータウェアハウスの構築を目的 としたデータモデル ・ 各種産業分野の製品のライフサイクル全般の情報共 有をねらいとしている ・ オブジェクト間をアソシエーションで結んだ形 • General Plant Model Language ・ GPM の記述の一つの形式
GPML記述例 • Association 定義 ASSOCIATION is_assembled_from { ROLE: whole/OBJECT, part/OBJECT; RULE: $1 is_assembled_from @2; } • Class 定義 CLASS pipe { ~is_classified_as:pipe_and_elbow,straight_pipe,swept_bend_pipe,nipple; is_classified_as:piping_component; } • Instance 定義 _0131 { is_a: equipment_system ; is_assembled_from: 0131-i-000001@EQ-0131 ; ~is_assembled_from: CALS-X ; }
GPMのオブジェクトデータベースでの実装 GPMLにより記述されたプラントデータウェアハウス(GPML定義ファイル)をオブジェクトデータベースで実装 • 実装には、分散オブジェクトデータベースシステム(出世魚)を用いる
スキーマ図式表現 has_alias has_association has_instance Association Association_ instance Object instance_of association_of has_role has_role has_instance role_of has_reverse role_of object Role Role_ instance Instance Class Role_ identifier Role_ string Role_ numeric is_a one-to-many relationships many-to-many relationships
Extent を作成 GPMLコンパイラ GPML定義ファイル(テキストファイル) を構文解析し、構文木を生成 構文木を辿り、それぞれのクラスに対して インスタンスを生成 GPML 定義ファイル Association定義 18 Class定義 1460 Instance定義 49800 パーサー 構文解析 構文木 GPM データベース 構文木を辿り インスタンス生成 ・ ・ ・
オブジェクトの個数 クラス オブジェクトの個数 Association 47 Role 117 Object 51260 (Class 1460 Instance 49800) Association_instance 230892 Role_instance 661879 (Role_identifier 439937) 計 944195
GPM三次元形状情報の可視化 • 三次元形状形状情報のDBからの取得 (プログラム作成済み) ● 形状の種類 ● 構造 • 半自動可視化システム
y z x 三次元形状情報の例 axis ref_direction height 018101-14-i-000001-3d-gri-000014 { is_a : block; has_property_of : unqualified width 100.000000 mm; has_property_of : unqualified depth 100.000000 mm; has_property_of : unqualified height 850.000000 mm; has_property_of : unqualified location -50.000000, -270.000000, -250.000000 mm; has_property_of : axis direction 0.000000, 0.000000, 1.000000; has_property_of : reference direction 1.000000, 0.000000, 0.000000; ~is_assembled_from : 018101-14-i-000001-3d-sri-000011; } depth GPML記述 (Instance定義) width location
name: ”018101-14-i- 000001-3d-gri -000014” type: ”Instance” オブジェクト表現(三次元形状情報の例をGPMLコンパイラで処理) Association クラス Association_instance クラス Instance クラス name: ”is_a” name: ”is_a” has_association name: ”has_property_of” name: ”has_property_of” ×6 name: ”`is_assembled_from” name: ”`is_assembled_from” has_role has_role has_role has_instance ×6 Role_identifier クラス name: ”block” Role_numeric クラス name: ”unqualified” name: ”width” name: ”mm” literal: 100.000000 ・ ・ ・ literal: 100.000000 literal: 850.000000 name: ”axis” ・ ・ ・ name: ”reference” name: ”018101-14 -I-000001-3d-sri -000011”
プリミティブな形状 • block (立方体) • cone (円すい) • eccentric_cone (偏心円すい) • reducing_torus (変形円環体) • right_circular_cylinder (円柱) • sphere (球体) • square_to_round (四角形の回転体) • trimmed_sphere (部分球)
axis R1 R2 height ref_direction location axis height depth radius = R1 ratio = R2/R1 width location radius ratio = 0 block (立方体) location axis height 形状の種類(1) cone (円すい)
axis axis height end_radius semi_axis_2 semi_axis_1 start_radius ref_direction sweep_angle location major_radius axis_2_offset axis_1_offset ref_direction location 形状の種類(2) eccentric_cone (偏心円すい) reducing_torus (変形円環体)
radius radius location axis location cutting_distance radius location 形状の種類(3) height right_circular_cylinder (円柱) sphere(球体) axis height ref_direction sweep_angle major_radius trimmed_sphere (部分球) location square_to_round (四角形の回転体)
例: Item ID ”018101-14” について 三次元形状情報の取得 プラント全体 CALS-X Civil , _018 , 018101-14 _EQUB001A , 018101-13 … is_a plant is_assembled_from is_a ① structural_system システム全体 018101-14 is_assembled_from ポンプ、バルブ 等の機器 is_a ② structural_component 018101-14-i-000001@SS-018101-14 is_represented_by is_a それぞれの 機器の形 plant_item_shape ③ 018101-14-i-000001-3d-shape-000011 is_assembled_from 形状をさらに 細かく分解 is_a shape_representation_item ④ 018101-14-i-000001-3d-sri-000011 is_assembled_from ⑤ プリミティブな形状 is_a block 018101-14-i-000001-3d-gri-000015 018101-14-i-000001-3d-gri-000014 is_a block
018101-14-i-000001- 3d-shape-000011 018101-14-i-000001 @SS-018101-14 ~is_represented_ by is_assembled_ from ~is_assembled_ from is_assembled_ from is_represented_ by is_assembled_ from ~is_assembled_ from ~is_assembled_ from structural_ component plant_item_ shape structural_ system 018101-14-i-000001 @SS-018101-14 018101-14 018101-14-i-000001- 3d-shape-000011 018101-14-i-000001- 3d-sri-000011 018101-14-i-000001- 3d-gri-000014 , 018101-14-i-000001- 3d-gri-000015 018101-14-i-000001- 3d-sri-000011 shape_ representation _item block 状態遷移図 アソシエーション”is_assembled_from” を検索し、 結果として次の状態へのキーワードとなるItem ID が出力される ”~” のついているアソシエーションは、reverse を表す。つまり、アソシエーション”~is_assembled_from” を検索すると、前の状態 (strutural_system) へと移ること になる。
018101-14 { is_a: structural_system ; is_assembled_from: 018101-14-i-000001@SS-018101-14 ; ~is_assembled_from: CALS-X ; } 形状情報取得(1) ① structural_system (システム全体) Association ”is_assembled_from” でつながるオブジェクトは複数存在 する場合がある。
name: ”018101-14” Instanceオブジェクト”018101-14” が持つ アソシエーションを検索し、Association_instance オブジェクト”is_assembled_from” を取得 DBから情報検索 Association クラス Association_instance クラス Instance クラス name: ”is_a” name: ”is_a” has_association name: ”is_assembled_from” name: ” is_assembled_from” name: ” ~ is_assembled_from” name: ” ~ is_assembled_from” name: ”018101-101-i-000001 @SS-018101-14” Association_instance オブジェクト ” is_assembled_from” とつながるRole_ identifierオブジェクトを検索 has_role Association Library より参照 エクステント Instances Role_identifier クラス Instance より参照 name: ” 018101-101-i-000001 @SS-018101-14” Instanceオブジェクト ”018101-14” InstanceクラスのエクステントよりInstanceオブジェクト”018101-14”を検索 検索結果
形状情報取得(2) ② structural_component (ポンプ、バルブ等の機器) 018101-14-i-000001@SS-018101-14 { is_a: structural_component ; is_represented_by: 018101-14-i-000001-3d-shape-000011 ; ~is_assembled_from: 018101-14 ; is_placed_on: R 018101-14-i-000001@SS-018101-14-location_3d_id-43 3d_layout ; } ③ へ 018101-14-i-000001@SS-018101-14-location_3d_id-43 { is_a:axis2_placement_3d; has_property_of:unqualified location 15800.000000,30920.000000,27000.000000 mm; has_property_of:axis direction 0.000000,0.000000,1.000000; has_property_of:reference direction 1.000000,0.000000,0.000000; } axis2_placement_3d
形状情報取得(3) ③ plant_item_shape (それぞれの機器の形) 018101-14-i-000001-3d-shape-000011 { is_a : plant_item_shape; is_assembled_from : 018101-14-i-000001-3d-sri-000011; ~is_represented_by : 018101-14-i-000001@SS-018101-14; } ④ shape_representation_item (形状をさらに分解) 018101-14-i-000001-3d-sri-000011 { is_a : shape_representation_item; is_assembled_from : 018101-14-i-000001-3d-gri-000014, 018101-14-i-000001-3d-gri-000015; ~is_assembled_from : 018101-14-i-000001-3d-shape-000011; has_property_of : unqualified colour 0.470588, 1.000000, 0.686275; is_placed_on : 018101-14-i-000001-3d-shape-000011 018101-14-i-000001-3d-sri-000011-pos_no-9 3d_layout; } 色の情報 (RGB) ⑤ へ axis2_placement_3d へ
018101-14-i-000001-3d-sri-000011-pos_no-9 { is_a : axis2_placement_3d; has_property_of : unqualified location 0.000000, 0.000000, 0.000000 mm; has_property_of : axis direction 0.000000, -1.000000, 0.000000; has_property_of : reference direction 1.000000, 0.000000, 0.000000; } ⑤ 実際の形状情報 018101-14-i-000001-3d-gri-000014 { is_a : block; has_property_of : unqualified width 100.000000 mm; has_property_of : unqualified depth 100.000000 mm; has_property_of : unqualified height 850.000000 mm; has_property_of : unqualified location -50.000000, -270.000000, -250.000000 mm; has_property_of : axis direction 0.000000, 0.000000, 1.000000; has_property_of : reference direction 1.000000, 0.000000, 0.000000; ~is_assembled_from : 018101-14-i-000001-3d-sri-000011; } 018101-14-i-000001-3d-gri-000015 { is_a : block; has_property_of : unqualified width 100.000000 mm; has_property_of : unqualified depth 100.000000 mm; has_property_of : unqualified height 200.000000 mm; has_property_of : unqualified location 50.000000, -182.600006, 100.000003 mm; has_property_of : axis direction 0.000000, 0.000000, -1.000000; has_property_of : reference direction -1.000000, 0.000000, -0.000000; ~is_assembled_from : 018101-14-i-000001-3d-sri-000011; } ローカル座標系 において の値 形状情報取得(4) axis2_placement_3d
座標変換(1) • structural_component におけるaxis2_placement_3d によりグローバル座標系に対するポンプ、バルブ等の機器が置かれるローカル座標、shape_representation_item におけるaxis2_placement_3d により機器を形成する部品が置かれるローカル座標が決定 • shape_representation_item のローカル座標からstructural_ component のローカル座標への変換行列、structural_component のローカル座標からグローバル座標への変換行列を求める • 変換行列により物体(block等のプリミティブな形状)のグローバル座標系に対する位置、傾き等を求める。
y ref ローカル z 軸 ローカル x 軸 30 axis × ref 15 27 x axis ベクトル axis と ベクトル ref の外積を計算 axis × ref = ( 1,0,0) ローカル y 軸となる z 0 1 0 15 0 0 -1 30 -1 0 0 27 0 0 0 1 座標変換(2) axis = (0,-1,0) ref = (0,0,-1) location = (15,30,27) ローカル座標系からグローバル座標系への4x4変換行列を求める グローバル座標系からローカル座標系への変換行列をR とする。 R(1,0,0,0)= ref , R(0,1,0,0) = axis × ref , R(0,0,1,0) = axis R(0,0,0,1) = t = (15,30,27,1) ref axis x ref axis t R= = 0 0 0 1 グローバル座標系からローカル座標系 への変換行列 行列 R の逆行列がローカル座標系 からグローバル座標系への変換行列 となる。
y structural_componentにおける axis2_placement_3d グローバル座標系からローカル座標系を決定 変換行列 R shape_representation_itemにおける axis2_placement_3d ローカル座標系における物体の傾き、位置の決定 変換行列 T プリミティブ形状情報のグローバル座標系への変換行列 (T R) = R T x z -1 -1 R T 座標変換(3) y´ z´ T x´ R -1 -1 -1
018101-14 { is_a: structural_system ; is_assembled_from: 018101-14-i-000001@SS-018101-14 ; ~is_assembled_from: CALS-X ; has_property_of : unqualified name piping_system ; } 問い合わせを行うユーザ ・ 現在のデータでは、問い合わせを行うユーザは、Item ID (018101-14等) を知ってお く必要がある。(機器の名前等のデータがないため) ・ 機器の名前等は、以下のようにデータを追加することによって名前を付けることができる。 ・ 実際にエンジニアリング会社や、部品メーカーで使われるとしたら、Item ID を知ってい る必要がないように、GPML定義ファイルを上記のように書き換え、GPMLコンパイラにて データベース化を図る必要があると考えられる。(ユーザは、名前を指定して形状可視化 をすることになる) 追加
部分的な可視化 ・ 現在の検索プログラムでは、システム全体を可視化するための情報取得しかできない。 (システム全体とは、ポンプ、バルブ、蒸留塔 等 が集まったものである) ・ 部分的な可視化(例. ポンプ、バルブ等の一つ一つの機器だけを可視化する)を可能に する必要あり。(つまり、ページ17 の図 の中で、どの階層においても可視化ができるよう にする) ・ 検索プログラム改良の方針 ・ ユーザは可視化を行いたい階層における Item ID(第1階層においては018101-14) を指 定。 ・ プログラムとしては、指定された Item ID のオブジェクトが持っているアソシエーショ ン ”is_a” を検索し、条件分岐させるようにする。 (例. ”is_a” と結び付くオブジェクトが”structral_component” であった場合は、 第2階層のオブジェクトであると分かるので、第2階層の処理を行う関数へ)
可視化可能なGPML定義 ・ 現在可視化可能なプリミティブな形状 ・block (立方体) ・cone (円すい) ・eccentric_cone (偏心円すい) ・reducing_torus (変形円環体) ・right_circular_cylinder (円柱) ・sphere (球体) ・square_to_round (四角形の回転体) ・trimmed_sphere (部分球) ・ 上記の形状以外の形状を可視化させる為には、GPML定義において、Class定義と Instance定義を追加する必要あり。 例 . eccentric_pyramid(偏心ピラミッド) を追加する場合 CLASS eccentric_pyramid { is_classified_as : truncated_pyramid; has_property_of : offset width data_value mm; //width_offset has_property_of : offset depth data_value mm; //depth_offset } 0001 { is_a : eccentric_pyramid; has_property_of : offset width 100.000000 mm; has_property_of : offset depth 100.000000 mm; } Class 定義 Instance 定義 (実際の値を記述)
データ取得の際の時間 ・ ページ20 のDBからの情報検索の図において、 ・ Role_identifier クラス のオブジェクトを検索する処理を行っているときに最も 時間がかかる。 オブジェクト数が非常に多いため ・ さらに、Role_identifier クラスオブジェクト の name と同じものがInstance クラスオブジェクトにあるかどうかを照合する処理にも時間がかかる模様。 上記の処理が各階層ごとに行われるので、最下階層のプリミティブな形状情報 を取得するまでに、10~15分くらいは、かかる。(ページ16の例を検索した場 合のおおよその検索時間。形状の個数が多くなった場合、例えば、最下階層に 存在する形状の個数が1万個くらいあった場合等は、まだ測定していない)
今後の予定 • 現在可視化可能な図形において実際にDBから取得した データを与え可視化を試みる。(1月前半) • データ取得の際の時間の短縮を考える どの部分で時間がかかるかの調査 ・ スキーマ、検索プログラムの改良(1月下旬まで) • 論文作成