狠狠撸

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

More Related Content

叠谤颈诲驳别笔辞颈苍迟を使ったモデル駆动开発(贰罢ロボコン环境のご绍介)