動きのモデリング with mindstorms nxt

29
動きのモデリング with Mindstorms 動きのモデリング with Mindstorms 久保秋 真(Shin Kuboaki) [email protected] 2013/07/01 (C) 2013 Shin Kuboaki 1 諸事情により、実際に受けた方の観たスライドと は若干異なりますが、あしからず…。

Upload: shin-kuboaki

Post on 17-Jul-2015

694 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

動きのモデリング with Mindstorms

久保秋 真(Shin Kuboaki)

[email protected]

2013/07/01 (C) 2013 Shin Kuboaki 1

諸事情により、実際に受けた方の観たスライドとは若干異なりますが、あしからず…。

Page 2: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

Agenda

Mindstormsがあるとできること Mindstormsの紹介 いろいろな動くモノが制作できるよ モデルから作ったプログラムを動かしてみよう

動きをみてモデルに表す演習 システムの動きを見てモデルで表現しよう

内部の構造を踏まえたモデルを考える

構造の情報を付加してモデルを見なおそう

モデルを見てロボットを動かす演習

モデルを見てシステムの動きで表してみよう

2013/07/01 (C) 2013 Shin Kuboaki 2

Page 3: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

Mindstormsがあるとできること

2013/07/01 (C) 2013 Shin Kuboaki 3

Page 4: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

Mindstormsがあるとできること

Mindstormsの紹介

プログラムをビルドして転送して動かしてみるよ

いろいろな動くモノが制作できる

写真や動画などを紹介します

作ったモデルが動かせる

モデルを作ってコードにして動かすまでを紹介

手動モデル変換

MDDツールで自動生成(BridgePoint, BricRobo?)

今回はガマン。

2013/07/01 (C) 2013 Shin Kuboaki 4

Page 5: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

© The LEGO Group.

Mindstorms NXT

レゴブロックを使ったロボット製作キット コンピュータ教育やロボット体験学習に活用 小学校から大学、企業

各種センサ、モーターが利用可能 サードパーティ製もある

ソフトウェア開発環境の提供 Robolab、C言語、Java、その他

クロス開発 PCで開発し、ロボットに転送して動かす

光センサ タッチセンサ

サウンドセンサ サーボモータ

ジャイロセンサ カラーセンサ

超音波センサ

2013/07/01 (C) 2013 Shin Kuboaki 5

Page 6: 動きのモデリング With Mindstorms NXT

動きのモデリング 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

Page 7: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

Robolabのプログラム

Robolabのプログラムを見てみよう

プログラムを作る様子を見てみよう

実物が動くところを見てみよう

2013/07/01 (C) 2013 Shin Kuboaki 7

Page 8: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

C言語のプログラム

C言語のプログラムを見てみよう

プログラムを作る様子を見てみよう

実物が動くところを見てみよう

他に、C++やJavaで開発する環境があります。

2013/07/01 (C) 2013 Shin Kuboaki 8

Page 9: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

いろいろな動くモノを作れるよ

仕掛けがスゴい!! LEGOテクニックの作品集 http://matome.naver.jp/odai/2133432020257402401

しばしお楽しみください…

2013/07/01 (C) 2013 Shin Kuboaki 9

Page 10: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

動きをみてモデルに表す演習

2013/07/01 (C) 2013 Shin Kuboaki 10

Page 11: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

振舞いを表すモデル(1)

振舞いのモデル システムやプログラムがどのような働きや動きをするのか

を示すモデル

ステートマシン図(状態遷移図・表のなかま)、シーケンス図、アクティビティ図などを使う

ステートマシン図 状態とイベントに着目して振舞いを整理する図

イベントを待っている場所を状態と捉える

イベントが発生(発火)したときに実行する処理がアクション

2013/07/01 (C) 2013 Shin Kuboaki 11

Page 12: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

振舞いを表すモデル(2)

状態の候補(1) 自分では起こせない事象を待つところ

外部からの通知待ち、タイムアウト待ちなど

状態の候補(2) 同じイベントに対する処理が異なる場合、状況を分ける

条件が状態の候補になる(モード)

コンポジット状態で表現する 複数の状態において同じイベントによって同じ状態、同じ

処理へ遷移する場合

コードにするときには工夫が必要

状態をチェックするテスト:

「何が起きるのを待っているところですか?」と問う

2013/07/01 (C) 2013 Shin Kuboaki 12

Page 13: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

Porterクラスの「状態」と「イベント」を洗い出そう

使うもの ポストイット

PROCKEYまたはマジック

作業手順 グループで作業する

状態をポストイットに書き出す

待っているイベントを考えて書き出す

ある状態の処理(アクション)を考えて書き出す

関連する状態とイベントとアクションを近くに寄せる

イベント

状態A

状態B

アクション

状態は… 自分で起こせない事象を待っている場所 同じ事象で異なる動作になる場所の区別

• Porterクラスのイベントは… • 関連しているクラスの操作に

よって知ることができる • Porterクラスのアクションは… • 自分自身や関連しているクラ

スの操作を呼び出すこと

2013/07/01 (C) 2013 Shin Kuboaki 13

Page 14: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

動きをみてモデルに表す演習(1)

では、予め作成済みのシステムの動きを見てもらいます

Mindstormsで作成したロボットを動かします

業務上の仕様は提供しませんので…

私が口頭で説明することばにも注意をはらいましょう

どんな動きか観測して、ポストイットにメモしましょう

状態、イベント、アクションが着目点です

2013/07/01 (C) 2013 Shin Kuboaki 14

Page 15: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

(口頭で説明した)自動搬送業務の図解

1)荷物を受け取るのを待つ

2)バンパが押されることで運搬指示を受け取ると、運搬を開始する

配達先の壁

待機場所

3)経路に沿って走行し、荷物を運搬する

4)配達先の側壁を検知すると停止する

車庫の壁

6)バンパが押されることで階層指示を受け取ると、階層を開始する

6)経路に沿って走行し、回送する

7)車庫の正面の壁を検知すると到着音を鳴らして停止する

2013/07/01 (C) 2013 Shin Kuboaki 15

5)荷物が引き取られるのを待つ

Page 16: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

動きをみてモデルに表す演習(2)

グループに分かれて演習しましょう

システムの動きを動的モデルで表現しよう

観測したポストイットを集めましょう

話し合って、システムの動きを整理しましょう

模造紙にステートマシン図を作成します

2013/07/01 (C) 2013 Shin Kuboaki 16

Page 17: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

Porterクラスのステートマシン図を描こう

使うもの 前のページで作成したポストイット

模造紙

PROCKEYまたはマジック

作業手順 グループで作業する

模造紙に状態を配置する(状態名をつけるのは後でよい)

配置した状態の間に待っているイベントを配置する

状態と状態の間を状態遷移の線で描いて結ぶ

遷移にイベントを割り当てる

状態にアクションを寄り添わせる

「起きるのを待っていること」か「起きるの待つ間やり続けていること」をもとに状態名を決める

まず、なにかが起きるのを待っている場所を状態として認識し…

イベントとアクションが決まってから状態名を決める

2013/07/01 (C) 2013 Shin Kuboaki 17

Page 18: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

ステートマシン図をまとめている様子

荷物が載った

荷物受け取り待ち

…する

最初の状態を指し示すラベル

最後の状態を指し示すラベル

ここが最初の状態

イベントの例

状態の例

アクションの例

状態遷移の例

ここが最後の状態

2013/07/01 (C) 2013 Shin Kuboaki 18

Page 19: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

みなさんのモデル図を見てみましょう

Porterクラスには、どんな状態が見つかりましたか

Porterクラスには、どんなイベントやアクションが見つかりましたか

状態、イベント、アクションは、区別がついていますか

2013/07/01 (C) 2013 Shin Kuboaki 19

Page 20: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

ステートマシン図の例

2013/07/01 (C) 2013 Shin Kuboaki 20

Page 21: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

モデルを見てロボットを動かす演習

2013/07/01 (C) 2013 Shin Kuboaki 21

Page 22: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

仕様を変更します

グループごとに違う仕様の変更を指示します

変更に合わせてモデル図を修正しましょう

修正したモデルを自分たちで確認してみましょう

このあと、どんな演習をやったのかは、ナ・イ・ショ!

2013/07/01 (C) 2013 Shin Kuboaki 22

Page 23: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

まとめ

Mindstormsがあると、いろんな動くモノが制作できる

ロボットを使った業務のモデルを考えてみた

内部の構造を踏まえてモデルを見なおしてみた

与えられたモデルを見て業務やロボットの動きを考えてみた

動くものがあると、状態モデルで考える練習ができる

2013/07/01 (C) 2013 Shin Kuboaki 23

今回はガマン。

Page 24: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

分けたら名前がついた!

分けることができると…

分けたものに名前をつけることができる

名前があると、分けたものを使うことができる

名前をつけて使えれば、別の構造を作ることができる

(数学ガール5巻より)

バンパ Poter

transport

2013/07/01 (C) 2013 Shin Kuboaki 24

Page 25: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

手で書くときもモデルとコードの紐づけが重要

UMLモデルとプログラムを結びつける技術 UMLを使ったモデリングの技術 プログラミングの技術 上記2つの技術を結びつける部分が

モデル変換に相当

モデリング プログラミング

UMLを使う C言語を使う

プログラムによる制御

両方を結びつける技術

モデル変換技術

結びつける技術がモデル変換。 手動のコーディングであれ、 自動変換であれ、結びつける方法や知識を表出化し、コード作成の技術を非属人化し再利用可能にする。

2013/07/01 (C) 2013 Shin Kuboaki 25

Page 26: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

参考資料

2013/07/01 (C) 2013 Shin Kuboaki 26

Page 27: 動きのモデリング With Mindstorms NXT

動きのモデリング 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

Page 28: 動きのモデリング With Mindstorms NXT

動きのモデリング 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

Page 29: 動きのモデリング With Mindstorms NXT

動きのモデリング with Mindstorms

動きのモデリング with Mindstorms

久保秋 真(Shin Kuboaki)

[email protected]

― おしまい ―

2013/07/01 (C) 2013 Shin Kuboaki 29