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

Slides:



Advertisements
Similar presentations
自動追尾型移動体の作成 指導教官 : 青山 義弘 研究者 : 岡出 幸久 山本 雅俊 吉 田 創.
Advertisements

実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB : 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎 :
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB : 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎 :
PBLテーマタイトル未定 テーマ2 グループC タイトル何にしましょう? グループCメンバ ※五十音順 安部 俊行 東北電機製造株式会社
授業展開#3 アナログとデジタル.
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
第1章 第1節 情報のディジタル化のしくみ 4 音の表現 5 画像の表現
4章 制御の流れ-3.
第1章 第1節 情報のディジタル化のしくみ 4 音の表現 5 画像の表現
Copyright 2010 Vstone Co.,Ltd.Reserved
Copyright 2010 Vstone Co.,Ltd.Reserved
自律型ロボットの プログラミング学習 この授業は、競輪の補助金を受けて実施します。 財団法人コンピュータ教育開発センター.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
PIC制御による赤外線障害物 自動回避走行車
第7回 条件による繰り返し.
本日の内容④ 自律制御ロボットの組立て、動作確認 ソフトウェアの操作方法の説明 順次と繰り返しのプログラム.
京大岡山 3.8m 望遠鏡 分割鏡制御に用いる アクチュエータの特性評価
プログラムの制御構造 選択・繰り返し.
移動ロボットの車庫入れ 桐蔭横浜大学 箱木研究室 T18R020 佐藤 潤.
Cartサブシステム仕様.
LEGO MINDSTORMの車両の PCによる遠隔操縦
複数の移動ロボットによる 協調的な行動: 情報共有に基づく お片づけロボットのシステム開発
アルゴリズムとプログラミング (Algorithms and Programming)
Structured programming
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
1-P-6 パラボラ反射板を用いたアクティブマイクロフォンによる方向推定
ワンチップマイコンを用いた DCモータ走行車制御
考えるロボットを目指して 情報理工学部・情報知能学科 H 可知大資.
専門教育入門セミナーT in KatLab 2018/10/14 平木場風太 作成
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
LEGOを用いた倒立振子の 制御系設計に関する研究
プログラミング入門第6回 ~レゴロボットのプログラミング6~
プログラミング入門第5回 ~レゴロボットのプログラミング5~
高度プログラミング演習 (05).
高度プログラミング演習 (05).
画像の情報量 Copyright(C)2008 Tsutomu Ohara All rights reserved.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
赤外線機能を用いた牧羊犬ロボットの試作 指導教員 川中子 敬至 助教授 S03040  鈴木 良治 (共同実験者  S03060 濁川 豪)
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
MIRS システム解説 (超音波センサボードとシリアル通信)
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
創造実習 (自由課題成果発表会) 障害物回避ロボット 10S6001 青森 太郎 10S6002 弘前 弘子.
情報の授業 サイバースペースに飛び込もう(2) 情報のデジタル化 Go.Ota
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
C#プログラミング実習 第2回.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
画像の情報量 Copyright(C)2008 Tsutomu Ohara All rights reserved.
センサの基礎知識 メカトロニクス機械を作り上げるには,センサについての幅広い知識と経験が必要!.
ライントレーサ 2E20.
プログラミング基礎演習 第4回.
プログラミング入門第2回 ~レゴロボットのプログラミング~
トキのカタチ 2016 Arduino講習会 原田隆尚.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
専門教育入門セミナー 2016/10/31.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
C言語講座 四則演算  if ,  switch 制御文.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
Presentation transcript:

実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン! WEB:http://www.robot-programming.jp/ 著者:藤吉弘亘, 藤井隆司, 鈴木裕利, 石井成郎 E-mail:support@robot-programming.jp

06: 障害物回避(タッチセンサ) (p.71〜) 2

タッチセンサの原理 タッチセンサの測定原理 スイッチボタン タッチセンサの測定原理 スイッチボタンの状態を、押されていないときは”0”、押されたら”1”,離したときに”2”を出力する 3

タッチセンサの接続 EV3の入力ポート1にタッセンサを接続 入力ポート1 4

} タッチセンサによる障害物回避 常にロボットを前進 →無限ループの利用 タッチセンサによる障害物の衝突を判定 →条件分岐 常にロボットを前進 →無限ループの利用 タッチセンサによる障害物の衝突を判定 →条件分岐    衝突あり:一定時間後退し右旋回.その後1. に戻る    衝突なし:1.に戻る } 3. 障害物 後退 旋回 5

タッチセンサによる障害物回避のPAD (p.73) タッチセンサによる条件分岐 タッチセンサが 押された 前進 2 タッチセンサによる障害物回避 1 4 無限ループ 45度右旋回 10cm後退 3 5 True False 条件分岐:if 文 反復: 処理: 選択: PADの構成部品: 6

タッチセンサによる障害物回避 (p.75 touch.c) → int main() { OutputInit(); initSensor(); ButtonLedInit(); setSensorPort(CH_1,TOUCH,0); startSensor(); while(true) { OnFwdEx(OUT_BC, 50, 0); if(getSensor(CH_1)==1) { backward_mm(10.0); turn_right(TURN45); } if(ButtonPressed(BTN1)) break; Off(OUT_BC); closeSensor(); #include "./jissenPBL.h" #define TURN45 250 #define POW 50 void backward_mm(double mm){ double angle; angle=mm*20.5; RotateMotor(OUT_BC, -POW, angle); } void turn_right(int time) { OnFwdEx(OUT_B, POW,0); OnRevEx(OUT_C, POW,0); Wait(time); → 7

07: 障害物回避(超音波センサ) (p.77〜) 8

超音波センサによる障害物回避 30cm前に障害物発見! ぶつからないように回避しよう 9

超音波センサ 受信素子 発信素子 超音波センサの測定原理 超音波を発信し、対象物で反射した超音波を受信し、この音波の発信から受信までの時間を計測することで対象物までの距離を計測 10

超音波センサの接続 EV3の入力ポート4に超音波センサを接続 入力ポート4 11

} 超音波センサによる障害物回避 常にロボットを前進 →無限ループの利用 障害物までの距離を計測 常にロボットを前進 →無限ループの利用 障害物までの距離を計測    30cm以下(障害物あり):右旋回.その後1. に戻る    30cm以上(障害物なし):1.に戻る } 3. 障害物 旋回 →後退する動作を必要としない 12

超音波センサによる障害物回避のPAD (p.78) 超音波センサの値により条件分岐して障害物回避 超音波センサによる障害物回避 無限ループ 1 前進 2 True 4 45度右旋回 障害物との距離が 30cmより小さい 3 False 13

超音波センサによる障害物回避 (p.80 usonic.c) → int main() { OutputInit(); initSensor(); ButtonLedInit(); setSensorPort(CH_4,USONIC,0); startSensor(); while(true) { OnFwdEx(OUT_BC, 50, 0); if(getSensor(CH_4)< 300) { turn_right(TURN45); } if(ButtonPressed(BTN1)) break; Off(OUT_BC); closeSensor(); #include "./jissenPBL.h" #define TURN90 500 #define TURN45 250 void backward_cm(double cm){ double angle; angle=cm*20.5; RotateMotor(OUT_BC, -50, angle); } void turn_right(int time) { OnFwdEx(OUT_B, 50,0); OnRevEx(OUT_C, 50,0); Wait(time); 2 3 4 → 14

08: ジャイロセンサを用いたモータ制御(p.81〜) 15

ジャイロセンサの原理 ジャイロセンサの測定原理 ジャイロチップ (InvenSense社) ジャイロセンサの測定原理 ジャイロセンサは角速度センサとも呼ばれ、単位時間あたりの回転角である角速度[degree/s]を計測 16

ジャイロセンサ EV3のジャイロセンサは一軸の回転角/角速度を計測 回転角 [degree] 角速度 [degree/sec] 17

ジャイロセンサによる旋回角度制御(PAD) (p.81) ジャイロセンサの角度が90度以上になるまで右旋回 ジャイロセンサによる制御 ジャイロセンサのリセット 1 角度<90 2 右旋回 3 角度の取得 4 モータの停止 5 18

ジャイロセンサによる旋回角度制御 (p.82 gyro.c) #include “./jissenPBL.h” int main() { int start, current; OutputInit(); //use Motor initSensor(); //use Sensor ButtonLedInit(); //use button setSensorPort(CH_2,GYRO,0); //ch,type,mode startSensor(); start=getSensor(CH_2); do { OnFwd(OUT_B); OnRev(OUT_C); current=getSensor(CH_2); }while(current <= start+90); Off(OUT_BC); closeSensor(); } 1 3 4 2 5 19

09: カラーセンサ(p.84〜) 20

カラーセンサ LED フォトダイオード カラーセンサの測定原理 LEDにより赤、緑、青の光を照射して、それぞれの反射量(R, G, B成分)をフォトダイオードで計測して,カラーに変換 21

カラーセンサ 二種類のしくみで色や光の強さを計測 R 色 反射光の強さ G B R 周辺の光の強さ G B 反射光の計測 RGB値 LED R 色 反射光の強さ G B フォトダイオード RGB値 周辺光の計測 R 周辺の光の強さ G B フォトダイオード RGB値 22

光の三原色とカラー(加法混色) 赤(R),緑(G),青(B)の3色を組み合わせて色彩を表現 色番号 R G B 1: 黒 2: 青 大 2: 青 大 3: 緑 4: 黄 5: 赤 6: 白 R G B 加法混色 23

カラーセンサの原理 LEDを切り替えて発光し、そのタイミングでの反射光を計測し て、カラーを計測 LED:赤 R: G: B: 24

カラーセンサの原理 LEDを切り替えて発光し、そのタイミングでの反射光を計測し て、カラーを計測 LED:緑 R: G: B: 25

カラーセンサの原理 LEDを切り替えて発光し、そのタイミングでの反射光を計測し て、カラーを計測 LED:青 R: 黄色 G: B: 1[ms] オシロスコープで計測してみたところ: 1秒間に1,000回、R,G,Bと切り替えて発光し、同期してフォトダイオードで反射光量を計測 26

カラーセンサの接続 EV3の入力ポート3にカラーセンサを接続 入力ポート3 27

カラーの利用(PAD) (p.86) カラーに合わせて複数に分岐 3 1 4 2 5 色の識別値 黒 ➡ 1 青 ➡ 2 緑 ➡ 3 6 カラー? カラーに合わせて複数分岐 1 3 無限ループ ステータスライトを赤 6 その他 緑 赤 4 5 ステータスライトをオフ ステータスライトを緑 1秒間待機 2 色の識別値 黒 ➡ 1 青 ➡ 2 緑 ➡ 3 黄 ➡ 4 赤 ➡ 5 白 ➡ 6 カラー:緑 ステータスライト カラー:赤 カラー:その他 28

カラーの利用 (p.88 color_RGB.c) 3 緑 4 赤 5 その他 #include “./jissenPBL.h” int main() { initSensor(); //use Sensor ButtonLedInit(); //use button setSensorPort(CH_3,COLOR,2); //ch,type,mode startSensor(); while(true){ switch (getSensor(CH_3)) { case 3: SetLedPattern(LED_GREEN); break; case 5: SetLedPattern(LED_RED); default: SetLedPattern(LED_BLACK); } if(ButtonPressed(BTN1)) break; //Stop Program closeSensor(); 3 緑 4 赤 5 その他 29

カラーセンサによるライントレース (p.89) カラーセンサの”反射光の強さ”を利用して白と黒に判別 白(明るい)ところでは右旋回,黒(暗い)ところでは左旋回 黒いところ→左旋回 白いところ→右旋回 30

ライントレースのPAD (p.89) 白(明るい)ところでは右旋回,黒(暗い)ところでは左旋回 1 3 2 4 反射光 > 50 ライントーレス 1 3 無限ループ 右旋回 2 True False 4 左旋回 右旋回しながら少し前に進むには: 旋回中心 OnFwd(OUT_B); Off(OUT_C); モータB 順方向に回転 モータC 停止(パワー0) 31

ライントレース (p.91 line_trace.c) → #include "./jissenPBL.h" void turn_right(){ OnFwdEx(OUT_B,50,0); Off(OUT_C); } void turn_left(){ OnFwdEx(OUT_C,50,0); Off(OUT_B); int main() { int i=0; OutputInit(); initSensor(); ButtonLedInit(); setSensorPort(CH_3,COLOR,0); startSensor(); while(true){ if(getSensor(CH_3) > 50){ turn_right(); }else{ turn_left(); } if(ButtonPressed(BTN1))break; Off(OUT_BC); closeSensor(); 1 2 3 白いところ(右旋回) 4 黒いところ(左旋回) → 32

ライントレースの改良 ジグザグ走行なので遅い! ①黒のライン上→前進 ②白→左右に旋回して黒のライン探索 33