2008/4/22
プログラミング入門第1回
~レゴロボットのプログラミング1~
高畠俊徳,小林
二宮 洋,鈴木
学
誠
[email protected]
[email protected]
[email protected]
[email protected]
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 トランスミッタ、ソフトウェアCDROMなどがセットになっている。
10
2. ロボットの概要
RCXについて
• 8bitCPUを搭載
 センサ入力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を使ったプログラミングの準備
①sitになっている
ことを確認する
(何も無ければここ
に sit と入力す
る)
②ここを左クリック
17
3.1 RCX Codeを使ったプログラミングの準備
「プログラム」を左クリック
18
3.1 RCX Codeを使ったプログラミングの準備
「ロボットの選択」を左クリック
19
3.1 RCX Codeを使ったプログラミングの準備
「ローヴァー
ボット」であ
ることを確
認
ここを左クリック
20
3.2 前進
プログラムの始まりを表す
ここにプログラムの命令
ブロックを入れていく
①「前進」ブロックをクリック
(ブロックがくっつく)
②「前進」を「ブロックの
置き場所」へもって行
き,クリック
③カチッとはまる
21
3.3 後退
①左ターン
をクリック
②前進の下に移動させてクリック
③下にくっつく
22
3.4 ロボットを動かす
③「ダウンロード」ボタンをクリック
(プログラムがロボットに送られる)
②向かい合わせる
④Runを押すと
ロボットが動く
①ロボットの
電源を入れる
23
3.5 練習
24
3.6 動作時間の変更
①ここをクリック
②ここをクリック
25
3.6 動作時間の変更
③「2.0 秒」に
変わる
①「2.0」をクリック
②「OK」をクリック
26
3.7 練習
以下に設定し,ロ
ボットを動作させる
2秒
0.5秒
0.5秒
2秒
27
4 プログラミングの基礎
4.1 プログラムの制御構造1:順次
非常に重要
命令1
プログラムの基本ルール1(順次):
命令は一度に一つだけ実行され,
一つずつ(下に)順々に実行される
命令2
命令3
命令4
28
4.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:条件分岐
ここに取り付ける
①「左ターン」の
時間を2.0秒
に変更
②タッチセンサーをRCXのセン
サーポート1番に取り付け
③動作させてみよう
35
4.3 プログラムの制御構造3:条件分岐
非常に重要
プログラムの基本ルール3(条件分岐):
ある条件を満たした場合には,「は
い」の方が実行され,満たしていない
場合には「いいえ」の方が実行される.
注:一度に実行されるのはどちらか
一方だけ.
「はい」の
とき実行
条件が記述されている
(センサー1とつながったタッチ
センサーがおされている
か?)
「いいえ」の
とき実行
36
5 プログラムの保存と終了
5.1 プログラムの保存
①右上の「ファイル」
メニューをクリック
②「名前を付けて
保存」をクリック
37
5.1 プログラムの保存
①ファイル名を
「sit01」とする
②「保存」をクリック
38
5.2 プログラミングの終了
①「メインメニュー」をクリック
②「終了」ボタンをクリック
39
6. いくつかの例題
次のいくつかの例を実行してみよう
(注:プログラムを理解しながら作成すること)
[例1]
[例2]反応をすばやくする
時間を0.1秒に
40
[例3]ライントレースカー(基本形)
図のようにライトセンサーを
センサーポート2番につなぐ
41
[例3]ライントレースカー(基本形)
①クリック
②「ライト」をクリック
③「次へ」をクリック
42
[例3]ライントレースカー(基本形)
①2番をクリック
②「次へ」をクリック
③「明るい」をクリック
④「次へ」をクリック
43
[例3]ライントレースカー(基本形)
2番のライトセンサーが明るいか?
①「終了」をクリック
②実行させてみよう
(下が黒いところから始めること)
44
[例4]ライントレースカー(衝突するとストップ)
45
[例5]前方が暗いとバック
図のようにライトセンサーをつなぐ
2番のライトセン
サーが暗いか?
46
[例6]リモコンカー
図のようにタッチセンサーを2つつなぐ
47
ダウンロード

1. プログラミングとは?