プログラミング入門第5回 ~レゴロボットのプログラミング5~

Slides:



Advertisements
Similar presentations
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB : 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎 :
Advertisements

情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
SDOPxls2xml操作説明書 version1.0
1章 モーションプログラムの仕組みを理解する.
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
PC作業の一時停止 ●「スタンバイ(サスペンド)」: メモリには電源が供給される。実行中のデータがそのままメモリに保持されるため、作業を中断した状態から 数秒で再開ができる。省電力。 操作: 「スタート」→「電源オプション」→「スタンバイ」とクリックする。 ●「休止状態」: メモリの内容をハードディスクに退避してから全デバイスの電源をオフ。作業を中断した状態からの再開ができる。ノートPCでは電池が消耗しない。
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
情報理論2 注意!! 11月26日(火)は休講 (小林が学会出張のため) 湘南工科大学情報工学科 准教授 小林 学 湘南工科大学
Java I 第2回 (4/18)
親子で遊ぶ電子ロボ 平成14年度「未来を拓く生徒の育成事業」 なぜかな?不思議発見!君も科学者のタマゴだ!
基礎プログラミングおよび演習 第4回 担当:花岡 5階522/520.
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
第2章 数値の入力と変数 scanfと変数をやります.
心理学情報処理法Ⅰ やってみよう:Wordの起動.
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
マルチエージェント・シミュレーション(2)
マルチエージェント・シミュレーション(2)
自律型ロボットの プログラミング学習 この授業は、競輪の補助金を受けて実施します。 財団法人コンピュータ教育開発センター.
心理学情報処理法Ⅰ やってみよう:Excelを使ってみよう.
プログラミング入門第4回 ~レゴロボットのプログラミング3~
湘南工科大学 2013年4月23日 プロジェクト実習A アドベンチャーゲームを作ろう 第3回 湘南工科大学情報工学科 准教授 小林 学.
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
情報工学科 二宮 洋・鈴木 誠 小林 学・高畠俊徳 火曜日 1コマ目
プログラムはなぜ動くのか.
プロセッシング入門1 初歩のプログラミング.
初年次セミナー 第2回 文字の出力.
情報学部 プログラミング体験教室 (初級編)
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
第7回 条件による繰り返し.
経営工学基礎演習a PowerPointの利用.
Borland Delphi 6 でビジュアルプログラミング
C言語講習 第0章 Hello, world!.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
プログラミング入門 電卓を作ろう・パートIV!!.
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
第7回 条件による繰り返し.
湘南工科大学 2013年10月8日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
湘南工科大学 2013年10月22日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
Processing使用の準備.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プログラミング入門第6回 ~レゴロボットのプログラミング6~
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
コンピュータ プレゼンテーション.
プログラミングを 体験しよう 選択情報⑧.
環境システム科学演習(後半) FORTRAN & C(以降FORTRANと省略して呼びます)は富士通
情報理論2 第3回 小林 学 湘南工科大学 2011年10月25日 〒 神奈川県藤沢市辻堂西海岸1-1-25
プログラミングⅠ 平成30年10月15日 森田 彦.
プログラミングを 体験しよう 選択情報⑧.
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
MindStorms開発環境の比較・検討
表計算 Excel 演習 1.Excel を使ってみる.
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
基礎プログラミング演習 第6回.
プログラミング入門 電卓を作ろう・パートI!!.
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
C言語講習 第0章 Hello, world!.
クラウド・地域人材利用型プログラミング教育実施モデル実証事業 公益財団法人 学習ソフトウェア情報研究センター
プログラミング入門第2回 ~レゴロボットのプログラミング~
pf-2. 条件分岐 (Python プログラミング基礎を演習で学ぶシリーズ)
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング序論演習.
専門教育入門セミナー 2016/10/31.
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
第2章 数値の入力と変数 scanfと変数をやります.
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

プログラミング入門第5回 ~レゴロボットのプログラミング5~ 情報工学科1年生 2007/5/22 プログラミング入門第5回 ~レゴロボットのプログラミング5~ 湘南工科大学 工学部 情報工学科 高畠俊徳,小林 学 二宮 洋,鈴木 誠 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. legOSとは RCXモジュール用のフリーのOS 余計な動作を省いて、必要最小限の機能を持っている。 フィードバックが速い。 ⇔より細かく記述する必要がある。

1. C言語とは C言語の例 #include<dsensor.h> #include<unistd.h> #include<dmotor.h> #include<conio.h> main() { int akarui=80; ds_active(&SENSOR_2); cputs("GO!!"); while(1){ if(LIGHT_2>=akarui){ motor_a_dir(brake); motor_c_speed(MAX_SPEED); motor_c_dir(fwd); } else{ motor_c_dir(brake); motor_a_speed(MAX_SPEED); motor_a_dir(fwd); C言語の例

1. プログラミングとは?(復習) プログラムを作る≠パソコンに向かって作業する その前にやることがいっぱい 1.テーマを決める LEGOブロックでライン・トレースカーを作ろう!! 2.シナリオを考える どんなライン・トレースカーにするか? 3.シナリオを書く ライン・トレースカーってどうやって動くのか? 4.プログラミング言語に翻訳する 純正ファームウェア,C言語など 5.動かしてみる ライン・トレースカーを走らせる 6.確認する 線を辿って前進している事を確認 7.バージョンアップする もっと早く・複雑に動かすためには? シナリオ?

C言語プログラミングに挑戦! ・準備:C言語を使ったプログラミング ・プログラムの制御構造1 順次 ・プログラムの制御構造2 反復 ・プログラムの制御構造3 条件分岐 図のライントレースカー(基本形) を準備する

「メモ帳」(Notepad)を使って、C言語を入力する 「スタート」→「プログラム」→「アクセサリ」→「メモ帳」を開く ③ ④ ② ①

2. C言語を使ったプログラミング #include<sit.h> main(){ Init(); Zenshin(1.0); Hidari_Turn(1.0); Migi_Turn(1.0); Koutai(1.0); }

2. C言語を使ったプログラミング 「メモ帳」に「半角」で入力 #include<sit.h> main(){ Init(); Zenshin(1.0); Hidari_Turn(1.0); Migi_Turn(1.0); Koutai(1.0); } 「メモ帳」に「半角」で入力 入力が終了したら「名前を付けて保存」する。 「ファイル」→「名前を付けて保存」を選択する。

2. C言語を使ったプログラミング (ファイルの保存) 「保存する場所」は「ローカルディスク(C:)」→「legOS」→「Demo」とする。 ① ② ③ ④

2. C言語を使ったプログラミング (ファイルの保存) 「ファイルの種類」を「すべてのファイル」とする。 「ファイル名」は「sit1.c」とする。 ファイル名を入力したら「保存」ボタンを押す。 ② ③ ①

3. 動かしてみる 純正ファームウェアと異なる点 ↓ C言語はコンパイルという操作が必要 コンパイルしたファイル(コンピュータの理解できるファイル)をロボットへ転送する。 コンパイルする環境を起動 「スタート」→「プログラム」→「Cygnus Solutions」→「Cygwin B20」をクリックしCygwin B20を起動する。 プログラム コンパイル(ビルド) 実行可能ファイル

3. 動かしてみる Cygwin B20

3. 動かしてみる コンパイル ⇒右の画面に次のように入力する。 cd /legOS 2回目以降は次のように 入力する。 ./sit.sh (エラーがでたら、もう一度始めから確かめてやり直す.) ロボットの「Run」ボタンを押す。 前進,左ターン,右ターン,後退することを確認する。

4 プログラミングの基礎 4.1 プログラムの制御構造1:順次 数値の入力に注意! #include<sit.h> 4.1 プログラムの制御構造1:順次  #include<sit.h>  main(){   Init(); Zenshin(2.0); Hidari_Turn(0.5); Migi_Turn(0.5); Koutai(2.0); } 数値の入力に注意!

非常に重要 4.1 プログラムの制御構造1:順次(復習) プログラムの基本ルール1: 命令は,一度に一つだけ実行される 命令1 4.1 プログラムの制御構造1:順次(復習) #include<sit.h> main(){ Init(); Zenshin(2.0); Hidari_Turn(0.5); Migi_Turn(0.5); Koutai(2.0); } 非常に重要 プログラムの基本ルール1: 命令は,一度に一つだけ実行される プログラムの基本ルール2: 命令は,一つずつ(下に)順々に実行される 命令1 命令2 命令3 命令4

4.2 プログラムの制御構造2:反復(ループ,リピート) 4.2 プログラムの制御構造2:反復(ループ,リピート) #include<sit.h>  main(){ Init();    while(MUGEN){      Zenshin(2.0);          Hidari_Turn(0.5);    }  }

非常に重要 4.2 プログラムの制御構造2:反復(復習) プログラムの基本ルール2(反復): 反復の終わりまで来たら反復の始まりまで戻る. 4.2 プログラムの制御構造2:反復(復習) 非常に重要 #include<sit.h> main(){ Init(); while(MUGEN){ Zenshin(2.0); Hidari_Turn(0.5); } プログラムの基本ルール2(反復): 反復の終わりまで来たら反復の始まりまで戻る. ある終了条件を満たすまで反復は繰り返される. 注:命令が一つずつ実行される    のは変わらない 反復の始 反復の終 終了条件が書いてある(ここでは無限回繰り返す) ここでは「前進」→「左ターン」→「前進」→「左ターン」・・・を繰り返す

4.3 プログラムの制御構造3:条件分岐 #include<sit.h> main(){ Init(); 4.3 プログラムの制御構造3:条件分岐 #include<sit.h> main(){ Init(); while(MUGEN){ if(Oshita1){ Hidari_Turn(0.5); } else{ Zenshin(2.0); 図のようにタッチセンサー を1番に取り付ける

非常に重要 4.3 プログラムの制御構造3:条件分岐(復習) 条件が記述されている (センサー1とつながったタッチ 4.3 プログラムの制御構造3:条件分岐(復習) 非常に重要 #include<sit.h> main(){ Init(); while( MUGEN ){     if( Oshita1 ){       Hidari_Turn(0.5);     }     else{  Zenshin(2.0); } プログラムの基本ルール3(条件分岐): ある条件を満たした場合には,「はい」の方が実行され,満たしていない場合には「いいえ」の方が実行される. 注:一度に実行されるのはどちらか   一方だけ. 条件が記述されている (センサー1とつながったタッチ  センサーがおされているか?) 「はい」のとき実行 「いいえ」のとき実行

5. いくつかの例題 次のいくつかの例を実行してみよう(C言語) (注:プログラムを理解しながら作成すること) [例1]数値を変えてロボットの反応を確かめる #include<sit.h> main () { Init(); while (MUGEN) {     if (Oshita1) {        Hidari_Turn(0.1);     }     else {  Zenshin(0.1); } 時間を0.1秒に

[例2]ライントレースカー(基本形) #include<sit.h> main () { Init(); while (MUGEN) {      if (Akarui2) {      Hidari_Turn(0.1);      }      else { Migi_Turn(0.1); }

[例3]ライントレースカー(衝突するとストップ) #include<sit.h> main () { Init(); while (MUGEN) {      if (Oshita1) { }      else { if ( Akarui2 ) {        Hidari_Turn(0.1); } else {   Migi_Turn(0.1);

[例4]前方が暗いとバック 2番のライトセンサーが暗いか? #include<sit.h> main() { Init(); 図のようにライトセンサーをつなぐ #include<sit.h> main() { Init(); while (MUGEN) {      if (Kurai2) {      Koutai(1.0);      }      else {   Zenshin(1.0); } 2番のライトセンサーが暗いか?

[例5]リモコンカー 図のようにタッチセンサーを2つつなぐ #include<sit.h> main() { Init(); while (MUGEN) {      if (Oshita1) { if (Oshita3) { Zenshin(0.1); } else { Migi_Turn(0.1); }      } else { Hidari_Turn(0.1);

5. 課題 次の課題の車をC言語でプログラミング及び実行しなさい [課題1]1秒前進,0.5秒左ターンを繰り返す [課題2]左ターンを繰り返し、ボタンを押している間だけ前進する [課題3]前進し,衝突したら1秒バックし,右へ障害物をよける [課題4]シートの黒枠より内側を走り続ける(ライントレースではない) [課題5]ライントレースカー(障害物に衝突したら1秒バックし,右へ障害物をよけ,再びもとのラインに戻る) [課題6]タッチセンサー1,3,ライトセンサー2をつける.センサー1だけ押すと左ターン,センサー3だけ押すと右ターン.センサー1,3両方押すと前進.両方押していないときはライントレースする. [課題7]次のページを参照 [課題8]ライントレースカー(前方が暗かったら1秒バックし,右へ障害物をよけ,再びラインに戻る.

[課題7]2つのライトセンサーを使った次の動きをするライントレースカー センサー1 センサー3 センサー接続方法

[課題7]2つのライトセンサーを使った次の動きをするライントレースカー 2つのセンサーが両方とも白の時 2つのセンサーが両方とも黒線上の時 右折 左折 直進 2つのセンサーが境界線をまたいでいる時