Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BridgePointを使ったモデル駆動開発(ETロボコン環境のご紹介)

2,438 views

Published on

モデルベース勉強会で説明したBridgePointを使ったETロボコン環境の資料です。前半はロボコンの紹介になっています。

Published in: Engineering
  • Be the first to comment

BridgePointを使ったモデル駆動開発(ETロボコン環境のご紹介)

  1. 1. BridgePointを使ったモデル駆動開発 モデルデバッグと自動生成 ETロボコン用BridgePoint環境のご紹介 1ETロボコン技術教育資料/ETロボコン実行委員会 2015年ETロボコン本部審査員 土樋 祐希
  2. 2. 1. ETロボコンのご紹介 2. BridgePointと開発プロセス 3. ETロボコン用に作ったBridgePoint環境のでも ・Verifierによるモデルの動作確認 ・コード生成 2ETロボコン技術教育資料/ETロボコン実行委員会 説明内容 LEGOおよびMINDSTORMSはLEGO Groupの商標です
  3. 3. © 2015 Fuji Xerox Co., Ltd. All rights reserved. 3  LEGO MINDSTORMS NXT/EV3でトラックを走る競技 – 同じ走行体を利用して指定コースを走る – 各チームが分析・設計したソフトウエアを搭載する  ソフトウェアの性能と設計を競う二つの審査 – 性能評価:ロボット走行性能(タイム)を競う – 設計評価:システム開発における分析・設計はUML等のモデリング手法を用い、そ の設計資料(モデル)を事前に提出し、第三者から審査される  組込みソフトウェア技術者の育成がテーマ – 全国から多数の企業・大学・高校・高専が参加 – 技術教育、独自テーマ教育やワークショップも行われる ETロボットコンテスト(ETロボコン)とは 組込みシステム技術協会主催のコンテスト。走行体に搭載するソフトとその設計で競う NXTのスペック ARM7 256k ROM 32K RAM 2012 2013 2014 参加チーム数 337 363 336
  4. 4. © 2015 Fuji Xerox Co., Ltd. All rights reserved. 4  インコース/アウトコースをそれぞれ1度ずつ走行  スタートから第2ゴールゲート->第1ゴールゲート->第2ゴールゲートと通ってコースタイムが 決まる(リタイア時は2分とみなされ、そこで競技終了)  コースタイムの他に難所と呼ばれるところがあり、そこを既定の方式で通過するとボーナス タイムが取得され、コースタイムから引かれる(これをリザルトタイムと呼ぶ)  2回走行したリザルトタイムの合計で競技の順位が決まる 2014年 競技説明(アドバンストクラス概要) ジャンプ台 モーグル フィギュアL ※使用している各図はETロボコン2014競技規約より引用 仕様未確定エリア
  5. 5. © 2015 Fuji Xerox Co., Ltd. All rights reserved. 5  ETロボコンには3つの部門がある ETロボコンの参加部門(2015年度) 部門 説明 評価基準 デベロッパープライマリー クラス 組込みシステム初級者対象のクラ ス。既定の自律走行体(2輪)で プライマリー用コースを走る。 走行+必要最低限なモデル (表現+機能実現)の審査結果 デベロッパーアドバンスト クラス 組込システム開発の中級者を対象 としたクラス。既定の自律走行体 (3輪)を使用。コースの難易度 が高い 走行+ソフトウェアの設計モデ ル(制御、設計、未確定仕様 への対応)の審査結果 イノベータ部門 システム全体の企画・開発にチャ レンジするクラス。独自に製品・ サービスを企画し、開発する 製品の企画、それを実現する ための技術、企画のプレゼン テーション 今年度の参加は締め切りましたが、来年度以降も 興味ある方はご参加ください! アドバンストクラス の規定走行体
  6. 6. © 2015 Fuji Xerox Co., Ltd. All rights reserved. 6 https://youtu.be/2RzSbGufkGA などを参照 競技風景
  7. 7. ・BridgePointはxtUML(eXecutable & Translatable)の 方法論を取り入れたツール ・xtUMLはモデルを実行したり変換するためのUMLプロファイ ルの一つ(使える表記はかなり限られる) ・モデルを記述し、モデルのまま動作させ、最終的にはモデ ルをソースコードに変換する ・モデルの変換は変換ルールによって行われ、変換 ルールを切り替えることで、同じモデルから複数の環境 に対応するソースコードを生成 ・もともとはMentorGraphics社の製品だったが、 2014年からオープンソースとなり、誰でも使える 環境となった ・xtuml.orgにて各種の情報を得ることができる 7ETロボコン技術教育資料/ETロボコン実行委員会 BridgePointについて
  8. 8. 8ETロボコン技術教育資料/ETロボコン実行委員会 BridgePointの開発プロセス 2.分析モデル 動作確認 1.分析モデル 作成・修正 Markingファイル 3.モデルから コード生成 4.実機での 動作確認 ドメインモデルの構築(アプリ開発) 1.実装プラット フォームの調査 2.変換方法設計 変換コードI/F 実装設計 3.変換ルール ライブラリコード Marking使用方針 変換ルールの構築 ●ドメインモデルと変換ルールを独立して開発する ●変換ルールはターゲットの環境に依存し、ドメインモデルにはそれほど 依存しない。そのため、変換ルール自体を再利用可能 ●アプリ作成者はドメインモデル(PIM)に注力すればよく、どのように コードが生成されるかなどは気にしない 不具合発生時のパス
  9. 9. 9ETロボコン技術教育資料/ETロボコン実行委員会 BridgePointで記述するモデル要素 クラス図 ステートチャート図 クラス図で状態を持つものは ステートマシン図を記述 xtUMLに 基づいた記述 ステートの中のアクションを 専用のアクション言語 (専用の抽象度の高い言語)で記述 アクション記述 現在ではユースケース、 シーケンス図記述できます (生成には関係しない)
  10. 10. モデルをコンパイルすることなくそのまま実行 ⇒ 即座にモデルを検証可能 10ETロボコン技術教育資料/ETロボコン実行委員会 Verifierによるモデルの実行 現在のステートを ハイライト
  11. 11. 11ETロボコン技術教育資料/ETロボコン実行委員会 モデルからのコード生成 ◎ モデルとMarkingファイルを入力としてコードを生成する ・ Markingファイル:コード生成時にモデルコンパイラに渡す変換時のヒント コンパイルオプションなど ◎ 生成されたコードとアーキテクチャ構築で作成したライブラリ、OSや外部の手書きコード を結合することで動作する 動作確認したモデル Markingファイル ドメインモデル構築の成果物 アーキテクチャ構築の成果物 モデルコンパイラ 変換ルール ライブラリ OS・手書きコードなど 生成されたコード 動作するコード
  12. 12. ・モデルは既存の外部コードと接続することができる ・その仕組みがBridgeとFunction 12ETロボコン技術教育資料/ETロボコン実行委員会 BridgeとFunction モデルの範囲 手書きコード 手書きコード Bridge Function モデルで書いた ものがIFとなる 既存のIFをモデルに 取り込む (実際はラッパも書く) Bridgeの例
  13. 13. メリット ・プラットフォームのことを意識しなくていいので、モデル 作成に集中できる ⇒ 生成されたコードのレビューは基本的にしなくなる ・モデルとコードがかい離しない ・モデルや変換ルールを再利用しやすい デメリット ・モデルの書き方がやや特殊(継承によるポリフォリズムがない) ⇒ データベースに近いモデル ・最初環境に合わせた変換ルールを用意するのが大変 ⇒変換ルールを作る人はメタモデル、プラットフォームなど 幅広く知らなくてはならない(逆にいうとその人が 苦労すれば他の人は知らなくてもよい) ⇒ここが使いこなせるかどうかの分かれ目 13ETロボコン技術教育資料/ETロボコン実行委員会 BridgePointによる開発の特徴
  14. 14. ・ETロボコン用にBridgePointによる開発環境を作成 ・今年から従来使われてきたNXTという機体だけでなく EV3という新しい機体を使えるようになった ⇒ OSも異なり、使用できるAPIも異なる ・本環境は同じモデルをどちらにも変換できる 14ETロボコン技術教育資料/ETロボコン実行委員会 ETロボコン用開発環境 NXT EV3 NXTのスペック ARM7 ROM:256K RAM:32K OS:nxtOSEK EV3のスペック ARM9 ROM:16M RAM:64M OS:EV3RT 同じモデル 変換
  15. 15. ・projectをbuildするとコードが生成される ・生成されたコードのコンパイルはそれぞれの 環境に合わせて行う(まだコマンドラインですが) ・作成したファイルをロボットにダウンロードして 動作させる 15ETロボコン技術教育資料/ETロボコン実行委員会 コード自動生成とコンパイル
  16. 16. 16ETロボコン技術教育資料/ETロボコン実行委員会 デモ 動き方 ・2輪で倒立 ・3秒進んで2秒右に回転、それを繰り返す 1. Verifierを使ったモデルの動作 ブレークポイントの設定、状態遷移など 2. NXTの自動生成と動作デモ 3. EV3のコード生成
  17. 17. 17ETロボコン技術教育資料/ETロボコン実行委員会 デモ用のサンプル(クラス図) 時間で単純に 直進、ターンを 繰り返す NXT 倒立を実現している クラス (倒立させるには 4ms毎にライブラリ を呼び出して出力を 変更する必要がある ジャイロによる 角度などを用いて モーター出力を変え る
  18. 18. ・システムが起動した際に呼ばれるFunction ・Markingにより、任意のFunctionをセットアップとして 割り当てることができる 18ETロボコン技術教育資料/ETロボコン実行委員会 セットアップFunction create object instance aRobot of R_BR; create object instance aTimeTurn of R_T; relate aRobot to aTimeTurn across R1; generate R_BR1:wait_start to aRobot; それぞれのクラスのインスタン スを生成し、関連付けている 最後にイベントを送信して 起動を開始する
  19. 19. 19ETロボコン技術教育資料/ETロボコン実行委員会 BalancedRobotのステートマシン
  20. 20. 20ETロボコン技術教育資料/ETロボコン実行委員会 Timed Turnのステートマシン
  21. 21. ・BridgePointのオープン化に伴い、これから ますますモデル駆動が注目されていくと思われます ・モデルで動作するということを学ぶと、どれ位を モデルで書けばよいというのがわかる様になるので 通常の分析・設計にも有効だと感じています ・モデル変換の技術も応用の幅が広いので、 学ぶ価値があります ⇒ DSLなども作れるようになりますし、他にも いろいろできるようになります ・そのうちユーザー会や勉強会などもやるかもしれま せんので、ご興味ある方はどうぞ 21ETロボコン技術教育資料/ETロボコン実行委員会 最後に
  22. 22. http://monoist.atmarkit.co.jp/mn/kw/3et_robo.html 「ETロボコン 3つのアプローチ」で検索 ETロボコンにBridgePointやDSLを使った参戦記 22ETロボコン技術教育資料/ETロボコン実行委員会 参考情報

×