実践ロボットプログラミング
LEGO Mindstorms NXT で目指せロボコン！

WEB：http://robot-programming.jp/
著者：藤吉弘亘，藤井隆司，鈴木裕利，石井成郎
E-mail：support@robot-programming.jpP.147■モデリング入門

P.147■モデリングとはモデリングのイメージ• 大会コースが発表された！！！

P.147

モデリングのイメージ• 目標：優勝するぞ！！！

‒ 速く走るロボットとプログラム

P.148

!

!

すぐ決まる（＾＾）

すぐには作れない（ーー）プログラム＋ロボット
task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);Off(OUT_C);}}}

モデリングのイメージ• 目標：優勝するぞ！！！

‒ 速く走るロボットとプログラム

P.148

!

!

すぐ決まる（＾＾）

すぐには作れない（ーー）プログラム＋ロボット
task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を
• 具体化

可視化

詳細化

‒ 設計図を作ること！！

!

わかりやすくなる（＾＾）

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を具体化

可視化

詳細化

‒ 設計図を作ること！！
やりたいこと？

! 遠い "（ーー）

ロボットの組み立て
PAD実現！

コーディングプログラム＋ロボット

優勝

するぞ！

task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を具体化

可視化

詳細化

‒ 設計図を作ること！！
やりたいこと？

!モデリング
遠い "
（ーー）
（設計図）

ロボットの組み立て
PAD

実現！

コーディングプログラム＋ロボット優勝

するぞ！

task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を具体化

可視化

詳細化

‒ 設計図を作ること！！
やりたいこと？

!モデリング
遠い "
（ーー）
（設計図）

ロボットの組み立て
PAD

実現！

コーディングプログラム＋ロボット
task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を具体化

可視化

詳細化

‒ 設計図を作ること！！
やりたいこと？

!モデリング
遠い "
（ーー）
（設計図）

ロボットの組み立て
PAD

実現！

コーディングプログラム＋ロボット

PLAN
計画

task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

P.151■コース攻略をモデリング

コース攻略をモデリング

P.152

小学生大会のコース攻略をモデリング！
得点ルール＝ライントレースポイント

優勝するぞ！

＋

缶倒しポイント＋＋

障害物回避ポイント

タイムポイント

プログラム？

コースモデリングの手順
1. ルールの確認
2. 必要な機能（やりたいこと）の確認
3. 機能（やりたいこと）の内容と必要な情報を整理
4. 機能（やりたいこと）の詳細（実現方法）を記述
5. 機能と機能の関連を記述

P.152

コースモデリングの手順
1. ルールの確認
2. 必要な機能（やりたいこと）の確認
3. 機能（やりたいこと）の内容と必要な情報を整理
4. 機能（やりたいこと）の詳細（実現方法）を記述
5. 機能と機能の関連を記述

P.152

コースモデリングの手順
1. ルールの確認
2. 必要な機能（やりたいこと）の確認
3. 機能（やりたいこと）の内容と必要な情報を整理
4. 機能（やりたいこと）の詳細（実現方法）を記述
5. 機能と機能の関連を記述

P.152

2.

必要な機能（やりたいこと）の確認• どんな機能が必要だと思いますか？
• K君とU君の場合は．．．．

ライントレース

ライントレース

P.153

2.

必要な機能（やりたいこと）の確認• どんな機能が必要だと思いますか？
• K君とU君の場合は．．．．

ライントレース

ライントレース

P.153

コースモデリングの手順
1. ルールの確認
2. 必要な機能（やりたいこと）の確認
3. 機能（やりたいこと）の内容と必要な情報を整理
4. 機能（やりたいこと）の詳細（実現方法）を記述
5. 機能と機能の関連を記述

P.152

3. 機能（やりたいこと）の内容と必要な情報の整理 P.154!"#$%&'!

B．ライントレース：黒線を追跡して走行する
機能の内容(実際にさせたい動作)
回転する（動詞）
必要な情報や量
光量（名詞）

3. 機能（やりたいこと）の内容と必要な情報の整理 P.154!"#$%&'!

B．ライントレース：黒線を追跡して走行する
1．光量を測定する機能の内容(実際にさせたい動作)
回転する（動詞）
必要な情報や量光量（名詞）3. 機能（やりたいこと）の内容と必要な情報の整理 P.154!"#$%&'!

B．ライントレース：黒線を追跡して走行する
1．光量を測定する①光量

機能の内容(実際にさせたい動作)
回転する（動詞）
必要な情報や量
光量（名詞）

3. 機能（やりたいこと）の内容と必要な情報の整理 P.154!"#$%&'!

B．ライントレース：黒線を追跡して走行する
1．光量を測定する
2．光量によって右回転、左回転する①光量

機能の内容(実際にさせたい動作)
回転する（動詞）
必要な情報や量
光量（名詞）

3. 機能（やりたいこと）の内容と必要な情報の整理 P.154!"#$%&'!

B．ライントレース：黒線を追跡して走行する
1．光量を測定する
2．光量によって右回転、左回転する①光量②モータの力機能の内容(実際にさせたい動作)
回転する（動詞）
必要な情報や量
光量（名詞）

3. 機能（やりたいこと）の内容と必要な情報の整理 P.155• すべての機能が整理できたら機能モデルを作成しよう！
!"#$%&!!! !

!!!!!!!!'()!!!*!!!)!

!"#$%%%%%%%%%%!!

)*+#$,((((((((((((((((((((((&!

&'%%%"#%%%%%%%%(%((((((((((((((((((((!

)*+',(((((((((((((((((((((((((((((((((((((((((((%!

!"#$%%%%%%%%%%(((((!
&'%%%$%%%%%%%%%((((((((((((((((((((!

!"#$%&'()*+,-.!
-./01234,56789/034:;<=!
%%'.34<=!
%%(.56789/0>?@A9734BC6=!
%%D/0%%EF*GHI!
J.KLMNO*P,QRBSTAU:;<=!
%%'.VWBX2<=!
%%(.VWYZ[U\]^_`]^<=!
%%DVW%%EF*GHI!
!

!

!

ab%)*'++!cd!

コースモデリングの手順
1. ルールの確認
2. 必要な機能（やりたいこと）の確認
3. 機能（やりたいこと）の内容と必要な情報を整理
4. 機能（やりたいこと）の詳細（実現方法）を記述
5. 機能と機能の関連を記述

P.152

4. 機能（やりたいこと）の詳細（実現方法）を記述 P.156• 各機能ごとに機能の実現のために必要なことを確認して行こう！
0. 絵を描きながら確認するといいよ！（イメージスケッチ）
1. 何を実現する機能か？ （機能の概要）
2. その機能の動作が始まるときの条件は？
（開始条件）
3. 動作の内容とその順番は？ （機能の流れ）
4. その機能の動作が終わるときの条件は？
（終了条件）• K君とU君の場合は．．．．

4. 機能（やりたいこと）の詳細（実現方法）を記述 P.157• 確認した内容を詳細モデルに記述しよう！
!"#$%&!!!!

!

!!!!'()!!!*!!!)!

!"#$%%%%%%&'%%%!"%%%%%%%%#!"#$%%%%%%&'%%%$%%%%%%%%((((((((((((((((()*+#$%%%%%%)*+'%%%%%%%%%%%%%%#,-'!

d^efg*a!

,-./0!

Fh<ijkQlm?@!

1234!
wxy>z{|7}@!
,-.56! &9:;<=>?@ABCDE!
'9FGHIG.JK<?@ABCDE#(9JK.LMNOPQRSTURVTU?@#%%()9FWXYZSTU?@ABC[E#%%(*9F\]GXYZVTU?@ABC[E!
7834!

nopcqrstuNv?@!

^_*`abc)#• このモデルからPADが書けるかな？

P.160参照

コースモデリングの手順
1. ルールの確認
2. 必要な機能（やりたいこと）の確認
3. 機能（やりたいこと）の内容と必要な情報を整理
4. 機能（やりたいこと）の詳細（実現方法）を記述
5. 機能と機能の関連を記述

P.152

5.

機能と機能の関連を記述• 機能と機能の関連を整理しよう！
• K君とU君の場合は．．．．
‒ コースに沿って、機能の動きをイメージ（処理の流れから）‒ 機能と機能の移り変わりをイメージ（機能中心）

P.157

5.

機能と機能の関連を記述

P.158• すべての機能の関連を考えて関連モデルを作成しよう！

機能中心の関連モデル

処理中心の関連モデル
はP.158参照

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を具体化

可視化

詳細化

‒ 設計図を作ること！！
やりたいこと？

! 遠い "（ーー）

ロボットの組み立て
PAD実現！

コーディングプログラム＋ロボット優勝

するぞ！

task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

モデリングのイメージ

P.148• モデリング‒ 実現したい目標を具体化

可視化

詳細化

‒ 設計図を作ること！！
やりたいこと？

!モデリング
遠い "
（ーー）
（設計図）

ロボットの組み立て
PAD

実現！

コーディングプログラム＋ロボット優勝

するぞ！

task main(){
SetSensorLight(IN_3);
while(true) {if(Sensor(IN_3) > 40){
OnFwd(OUT_C, 75);
Off(OUT_A);}
else{
OnFwd(OUT_A, 75);
Off(OUT_C);}}}

P.160■演習問題9-1. に挑戦！

■モデルの評価方法を参考に．．．P.159