動きのモデリング with mindstorms nxt
TRANSCRIPT
動きのモデリング with Mindstorms
動きのモデリング with Mindstorms
久保秋 真(Shin Kuboaki)
2013/07/01 (C) 2013 Shin Kuboaki 1
諸事情により、実際に受けた方の観たスライドとは若干異なりますが、あしからず…。
動きのモデリング with Mindstorms
Agenda
Mindstormsがあるとできること Mindstormsの紹介 いろいろな動くモノが制作できるよ モデルから作ったプログラムを動かしてみよう
動きをみてモデルに表す演習 システムの動きを見てモデルで表現しよう
内部の構造を踏まえたモデルを考える
構造の情報を付加してモデルを見なおそう
モデルを見てロボットを動かす演習
モデルを見てシステムの動きで表してみよう
2013/07/01 (C) 2013 Shin Kuboaki 2
動きのモデリング with Mindstorms
Mindstormsがあるとできること
2013/07/01 (C) 2013 Shin Kuboaki 3
動きのモデリング with Mindstorms
Mindstormsがあるとできること
Mindstormsの紹介
プログラムをビルドして転送して動かしてみるよ
いろいろな動くモノが制作できる
写真や動画などを紹介します
作ったモデルが動かせる
モデルを作ってコードにして動かすまでを紹介
手動モデル変換
MDDツールで自動生成(BridgePoint, BricRobo?)
今回はガマン。
2013/07/01 (C) 2013 Shin Kuboaki 4
動きのモデリング with Mindstorms
© The LEGO Group.
Mindstorms NXT
レゴブロックを使ったロボット製作キット コンピュータ教育やロボット体験学習に活用 小学校から大学、企業
各種センサ、モーターが利用可能 サードパーティ製もある
ソフトウェア開発環境の提供 Robolab、C言語、Java、その他
クロス開発 PCで開発し、ロボットに転送して動かす
光センサ タッチセンサ
サウンドセンサ サーボモータ
ジャイロセンサ カラーセンサ
超音波センサ
2013/07/01 (C) 2013 Shin Kuboaki 5
動きのモデリング with Mindstorms
インテリジェントブロック NXTの構成
MPU: Atmel社の32bitのARM7(クロック48MHz)
RAM: 64Kbyte、フラッシュメモリ 256Kbyte(プログラムとデータが入る)
単3電池6本またはリチャージブルバッテリで動作
コンピュータで作成したプログラムを、このNXTに転送して動かす
出力ポート(出力端子)【A、B、C】 サーボモータやランプを接続する
NXT液晶ディスプレイ 文字や記号などの情報を表示 する
NXTボタン
オレンジ色:オン/エンター/ラン グレーの矢印:NXTメニューの移動 ダークグレー:クリア/戻る
USBポート コンピュータと接続する
スピーカー 効果音などを鳴らす
入力ポート(入力端子)【1、2、3、4】 センサを接続する
Bluetooth NXTとNXTの間で無線通信 ができる
2013/07/01 (C) 2013 Shin Kuboaki 6
動きのモデリング with Mindstorms
Robolabのプログラム
Robolabのプログラムを見てみよう
プログラムを作る様子を見てみよう
実物が動くところを見てみよう
2013/07/01 (C) 2013 Shin Kuboaki 7
動きのモデリング with Mindstorms
C言語のプログラム
C言語のプログラムを見てみよう
プログラムを作る様子を見てみよう
実物が動くところを見てみよう
他に、C++やJavaで開発する環境があります。
2013/07/01 (C) 2013 Shin Kuboaki 8
動きのモデリング with Mindstorms
いろいろな動くモノを作れるよ
仕掛けがスゴい!! LEGOテクニックの作品集 http://matome.naver.jp/odai/2133432020257402401
しばしお楽しみください…
2013/07/01 (C) 2013 Shin Kuboaki 9
動きのモデリング with Mindstorms
動きをみてモデルに表す演習
2013/07/01 (C) 2013 Shin Kuboaki 10
動きのモデリング with Mindstorms
振舞いを表すモデル(1)
振舞いのモデル システムやプログラムがどのような働きや動きをするのか
を示すモデル
ステートマシン図(状態遷移図・表のなかま)、シーケンス図、アクティビティ図などを使う
ステートマシン図 状態とイベントに着目して振舞いを整理する図
イベントを待っている場所を状態と捉える
イベントが発生(発火)したときに実行する処理がアクション
2013/07/01 (C) 2013 Shin Kuboaki 11
動きのモデリング with Mindstorms
振舞いを表すモデル(2)
状態の候補(1) 自分では起こせない事象を待つところ
外部からの通知待ち、タイムアウト待ちなど
状態の候補(2) 同じイベントに対する処理が異なる場合、状況を分ける
条件が状態の候補になる(モード)
コンポジット状態で表現する 複数の状態において同じイベントによって同じ状態、同じ
処理へ遷移する場合
コードにするときには工夫が必要
状態をチェックするテスト:
「何が起きるのを待っているところですか?」と問う
2013/07/01 (C) 2013 Shin Kuboaki 12
動きのモデリング with Mindstorms
Porterクラスの「状態」と「イベント」を洗い出そう
使うもの ポストイット
PROCKEYまたはマジック
作業手順 グループで作業する
状態をポストイットに書き出す
待っているイベントを考えて書き出す
ある状態の処理(アクション)を考えて書き出す
関連する状態とイベントとアクションを近くに寄せる
イベント
状態A
状態B
アクション
状態は… 自分で起こせない事象を待っている場所 同じ事象で異なる動作になる場所の区別
• Porterクラスのイベントは… • 関連しているクラスの操作に
よって知ることができる • Porterクラスのアクションは… • 自分自身や関連しているクラ
スの操作を呼び出すこと
2013/07/01 (C) 2013 Shin Kuboaki 13
動きのモデリング with Mindstorms
動きをみてモデルに表す演習(1)
では、予め作成済みのシステムの動きを見てもらいます
Mindstormsで作成したロボットを動かします
業務上の仕様は提供しませんので…
私が口頭で説明することばにも注意をはらいましょう
どんな動きか観測して、ポストイットにメモしましょう
状態、イベント、アクションが着目点です
2013/07/01 (C) 2013 Shin Kuboaki 14
動きのモデリング with Mindstorms
(口頭で説明した)自動搬送業務の図解
1)荷物を受け取るのを待つ
2)バンパが押されることで運搬指示を受け取ると、運搬を開始する
配達先の壁
待機場所
3)経路に沿って走行し、荷物を運搬する
4)配達先の側壁を検知すると停止する
車庫の壁
6)バンパが押されることで階層指示を受け取ると、階層を開始する
6)経路に沿って走行し、回送する
7)車庫の正面の壁を検知すると到着音を鳴らして停止する
2013/07/01 (C) 2013 Shin Kuboaki 15
5)荷物が引き取られるのを待つ
動きのモデリング with Mindstorms
動きをみてモデルに表す演習(2)
グループに分かれて演習しましょう
システムの動きを動的モデルで表現しよう
観測したポストイットを集めましょう
話し合って、システムの動きを整理しましょう
模造紙にステートマシン図を作成します
2013/07/01 (C) 2013 Shin Kuboaki 16
動きのモデリング with Mindstorms
Porterクラスのステートマシン図を描こう
使うもの 前のページで作成したポストイット
模造紙
PROCKEYまたはマジック
作業手順 グループで作業する
模造紙に状態を配置する(状態名をつけるのは後でよい)
配置した状態の間に待っているイベントを配置する
状態と状態の間を状態遷移の線で描いて結ぶ
遷移にイベントを割り当てる
状態にアクションを寄り添わせる
「起きるのを待っていること」か「起きるの待つ間やり続けていること」をもとに状態名を決める
まず、なにかが起きるのを待っている場所を状態として認識し…
イベントとアクションが決まってから状態名を決める
2013/07/01 (C) 2013 Shin Kuboaki 17
動きのモデリング with Mindstorms
…
ステートマシン図をまとめている様子
荷物が載った
荷物受け取り待ち
…
…する
最初の状態を指し示すラベル
最後の状態を指し示すラベル
ここが最初の状態
イベントの例
状態の例
アクションの例
状態遷移の例
…
ここが最後の状態
2013/07/01 (C) 2013 Shin Kuboaki 18
動きのモデリング with Mindstorms
みなさんのモデル図を見てみましょう
Porterクラスには、どんな状態が見つかりましたか
Porterクラスには、どんなイベントやアクションが見つかりましたか
状態、イベント、アクションは、区別がついていますか
2013/07/01 (C) 2013 Shin Kuboaki 19
動きのモデリング with Mindstorms
ステートマシン図の例
2013/07/01 (C) 2013 Shin Kuboaki 20
動きのモデリング with Mindstorms
モデルを見てロボットを動かす演習
2013/07/01 (C) 2013 Shin Kuboaki 21
動きのモデリング with Mindstorms
仕様を変更します
グループごとに違う仕様の変更を指示します
変更に合わせてモデル図を修正しましょう
修正したモデルを自分たちで確認してみましょう
このあと、どんな演習をやったのかは、ナ・イ・ショ!
2013/07/01 (C) 2013 Shin Kuboaki 22
動きのモデリング with Mindstorms
まとめ
Mindstormsがあると、いろんな動くモノが制作できる
ロボットを使った業務のモデルを考えてみた
内部の構造を踏まえてモデルを見なおしてみた
与えられたモデルを見て業務やロボットの動きを考えてみた
動くものがあると、状態モデルで考える練習ができる
2013/07/01 (C) 2013 Shin Kuboaki 23
今回はガマン。
動きのモデリング with Mindstorms
分けたら名前がついた!
分けることができると…
分けたものに名前をつけることができる
名前があると、分けたものを使うことができる
名前をつけて使えれば、別の構造を作ることができる
(数学ガール5巻より)
バンパ Poter
transport
2013/07/01 (C) 2013 Shin Kuboaki 24
動きのモデリング with Mindstorms
手で書くときもモデルとコードの紐づけが重要
UMLモデルとプログラムを結びつける技術 UMLを使ったモデリングの技術 プログラミングの技術 上記2つの技術を結びつける部分が
モデル変換に相当
モデリング プログラミング
UMLを使う C言語を使う
プログラムによる制御
両方を結びつける技術
モデル変換技術
結びつける技術がモデル変換。 手動のコーディングであれ、 自動変換であれ、結びつける方法や知識を表出化し、コード作成の技術を非属人化し再利用可能にする。
2013/07/01 (C) 2013 Shin Kuboaki 25
動きのモデリング with Mindstorms
参考資料
2013/07/01 (C) 2013 Shin Kuboaki 26
動きのモデリング with Mindstorms
オープンソースのMDDツール
BridgePointのUMLエディタ部をオープンソース化
Mentor Graphics社の発表(2012/04/18) http://www.mentorg.co.jp/products/sm/news/2012/120417.html
Yakindu
オープンソースのMDDツールキット
http://www.yakindu.org/
ステートマシン図(MDD的)、ブロック線図(MBD的)
シミュレーション環境
JavaやCのコード生成
2013/07/01 (C) 2013 Shin Kuboaki 27
動きのモデリング with Mindstorms
YAKINDUのシミュレーション
MDD_YAKINDU_Workbench.pdf より BAIKEM Netzwerktreffen “Embedded Systems” – Munich/Germany , July 12th 2011
BridgePointのベリファイアと同様のことが実行できる MBDツールのブロック線図と同様のことができる
2013/07/01 (C) 2013 Shin Kuboaki 28
動きのモデリング with Mindstorms
動きのモデリング with Mindstorms
久保秋 真(Shin Kuboaki)
― おしまい ―
2013/07/01 (C) 2013 Shin Kuboaki 29