2008/4/22 プログラミング入門第 1 回 ~ レゴロボットのプログラミング 1~ 高畠俊徳, 小林学二宮洋, 鈴木誠 toshi@info.shonan-it.ac.jp kobayasi@info.shonan-it.ac.jp ninomiya@center.shonan-it.ac.jp msuzuki@info.shonan-it.ac.jp 1
講義の進め方 0. 本講義の進め方 毎回演習を行う 9 時までに席に着いていること ( 以降は遅刻とする ) 9 時 20 分までに来ていなければ欠席 万一欠席した場合には, 次の授業までに自分で授業の演習を自習する. 資料は以下の 学生用ページ 授業用ページ にある http://www.shonan-it.ac.jp/each_science/info/ 2
0. 本講義の進め方 プログラミングとはどんなものか? をロボット制御を通して学ぶ ( 全 6 回 ) ロボット LEGO MindStorms プログラミング言語 RCX Code( 純正ファームウェア )(3 回 ) C 言語 (3 回 ) 3
1. プログラミングとは? コンピュータシステムの構成 ハードウェア 電子回路やコンピュータ機器など物そのもの ネットワーク 複数のコンピュータが互いに接続された網状の構造 ソフトウェア ( プログラム ) コンピュータを制御する手順 命令をまとめたもの 多くの先輩はこれらを設計 開発 構築 運用する仕事に従事 4
1. プログラミングとは? プログラミングとは, プログラムを作成すること プログラムとはコンピュータが何をすればよいのか記述した命令の集まり 買ってきたソフトを使うだけではつまらない!? 自分で自由にコンピュータを使いこなしたい!! プログラミングは難しくない!! ただし できるだけ詳しく 他に解釈のしようがないほど丁寧な説明が必要 5
1. プログラミングとは? 人間ならば それ取って 6
1. プログラミングとは? コンピュータ ( ロボット ) に頼む場合 コンピュータにさせたい仕事を できるだけ詳しく 正確に書く必要がある 子供の後ろに本があるその本を持って私のところに来なさい 7
プログラミング言語の種類 ( 一部 ) コンパイラ系 ( 実行速度が速い ) C 言語 ( すべての基礎. 一番重要 ) C++ ( オブジェクト指向 ) JAVA ( オブジェクト指向 ) C# ( オブジェクト指向 ) インタプリタ系 ( 作るのが簡単 ) BASIC ( 開発が容易. 一番古い ) Perl (WEB で利用 ) PHP (WEB で利用 ) 8
情報工学科プログラミング関連科目 総合工学基礎 発展 初級プログラミングプログラミング入門プログラミング基礎プログラミング演習アルゴリズム & データ構造 1 システムプログラム基礎オブジェクト指向プログラミング Web プログラミングアルゴリズム & データ構造 2 オペレーテイングシステム 2 コンパイラ 2 データベース管理システム画像処理プログラミングネットワークアーキテクチャ 2 9
2. ロボットの概要 MindStorms Robotics Invention System 2.0 とは ブロック ギア RCX(Robotics Command System) モータ センサ IR トランスミッタ ソフトウェアCD- ROM などがセットになっている 10
8bitCPU を搭載 2. ロボットの概要 RCX について センサ入力 3 ポート (1,2,3) モータ出力 3 ポート (A,B,C) 赤外線トランスミッタ LCD ディスプレイ 11
2. ロボットの概要 RCX について 注意 1 レゴを動かさないときには, こまめに電源を切ること 注意 2 電池を取り替えるときは, 必ずレゴの電源を切ってから 注意 3 入力ポートへの線の付け方出力ポートへの線の付け方に注意 12
2. ロボットの概要 RCX について 赤外線タワーのケーブルはノート PC の裏の, 上側の USB ポートへつなぐ 13
2. ロボットの概要 RCX Code について このような画面に LEGOブロックを組み合わせてプログラミングを行う RCX Code という言語を用いる 14
3. まずは体験してみよう ローヴァーボットを動かす 15
3.1 RCX Code を使ったプログラミングの準備 RCX Codeを使ったプログラミング 下のアイコンを左ダブルクリック これを左クリック 16
3.1 RCX Code を使ったプログラミングの準備 1sit になっていることを確認する ( 何も無ければここに sit と入力する ) 2 ここを左クリック 17
3.1 RCX Code を使ったプログラミングの準備 プログラム を左クリック 18
3.1 RCX Code を使ったプログラミングの準備 ロボットの選択 を左クリック 19
3.1 RCX Code を使ったプログラミングの準備 ローヴァーボット であることを確認 ここを左クリック 20
3.2 前進 プログラムの始まりを表す ここにプログラムの命令ブロックを入れていく 1 前進 ブロックをクリック ( ブロックがくっつく ) 2 前進 を ブロックの置き場所 へもって行き, クリック 3 カチッとはまる 21
3.3 後退 1 左ターンをクリック 2 前進の下に移動させてクリック 3 下にくっつく 22
3.4 ロボットを動かす 3 ダウンロード ボタンをクリック ( プログラムがロボットに送られる ) 2 向かい合わせる 4Run を押すとロボットが動く 1 ロボットの電源を入れる 23
3.5 練習 24
3.6 動作時間の変更 1 ここをクリック 2 ここをクリック 25
3.6 動作時間の変更 3 20 2.0 秒 に変わる 1 2.0 をクリック 2 OK をクリック 26
3.7 練習 以下に設定し, ロボットを動作させる 2 秒 05 0.5 秒 0.5 秒 2 秒 27
4 プログラミングの基礎 4.1 プログラムの制御構造 1: 順次 非常に重要 命令 1 プログラムの基本ルール 1( 順次 ): 命令は一度に一つだけ実行され, 一つずつ ( 下に ) 順々に実行される 命令 2 命令 3 命令 4 28
4.2 命令の削除 1 右ターン をクリック ( 右ターンより下がくっついて移動 ) 2 ごみ箱へ持っていき, クリック ( 削除される ) 29
4.2 プログラムの制御構造 2: 反復 ( ループ, リピート ) 3 先頭に挿入 2 リピート無限 をクリック 1 リピート をクリック 30
4.2 プログラムの制御構造 2: 反復 ( ループ, リピート ) 2 ブロックの置き場所 に置く 1 前進 をクリック ( 前進より下を移動 ) 3 ロボットを動作させてみよう 31
4.2 プログラムの制御構造 2: 反復 ( ループ, リピート ) 非常に重要 反復の始まり 反復の終わり プログラムの基本ルール 2( 反復 ): 反復の終わりまで来たら反復の始まりまで戻る. ある終了条件を満たすまで反復は繰り返される. 注 : 命令が一つずつ実行されるのは変わらない 終了条件が書いてある ( ここでは無限回繰り返す ) ここでは 前進 左ターン 前進 左ターン を繰り返す 32
4.3 プログラムの制御構造 3: 条件分岐 1 はい またはいいえ をクリック 2 はい またはいいえ ブロックをクリック 3 前進 の前に挿入 33
4.3 プログラムの制御構造 3: 条件分岐 1 前進 をクリック 2 条件の いいえ の中へ移動 3 左ターン を はい の中へ移動 34
4.3 プログラムの制御構造 3: 条件分岐 ここに取り付ける 1 左ターン の時間を 2.0 秒に変更 2 タッチセンサーを RCX のセンサーポート 1 番に取り付け 3 動作させてみよう 35
4.3 プログラムの制御構造 3: 条件分岐 非常に重要 プログラムの基本ルール3( 条件分岐 ): ある条件を満たした場合には, はい の方が実行され, 満たしていない場合には いいえ の方が実行される. 注 : 一度に実行されるのはどちらか一方だけ. はい のとき実行 条件が記述されている ( センサー 1とつながったタッチセンサーがおされている いいえ のか?) とき実行 36
5 プログラムの保存と終了 5.1 プログラムの保存 1 右上の ファイル メニューをクリック 2 名前を付けて保存 をクリック 37
5.1 プログラムの保存 1 ファイル名を sit01 とする 2 保存 をクリック 38
5.2 プログラミングの終了 1 メインメニュー をクリック 2 終了 ボタンをクリック 39
[ 例 1] 6. いくつかの例題 次のいくつかの例を実行してみよう ( 注 : プログラムを理解しながら作成すること ) [ 例 2] 反応をすばやくする 時間を 0.1 秒に 40
[ 例 3] ライントレースカー ( 基本形 ) 図のようにライトセンサーをセンサーポート 2 番につなぐ 41
[ 例 3] ライントレースカー ( 基本形 ) 1 クリック 2 ライト をクリック 3 次へ をクリック 42
[ 例 3] ライントレースカー ( 基本形 ) 12 番をクリック 3 明るい をクリック 2 次へ をクリック 4 次へ をクリック 43
[ 例 3] ライントレースカー ( 基本形 ) 2 番のライトセンサーが明るいか? 1 終了 をクリック 2 実行させてみよう ( 下が黒いところから始めること ) 44
[ 例 4] ライントレースカー ( 衝突するとストップ ) 45
[ 例 5] 前方が暗いとバック 図のようにライトセンサーをつなぐ 2 番のライトセンサーが暗いか? 46
[ 例 6] リモコンカー 図のようにタッチセンサーを 2 つつなぐ 47