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