専門教育入門セミナー 2016/10/31
今日の内容 ライントレースの仕組みを理解する 「sample_c4」プログラムの動作確認 光センサ値の変更 前後命令「forward」と旋回命令「turn」の変更 「sample_c4」プログラムを改造して最終試験に挑戦!
ライントレース 目標 ライントレースを実現する方法 黒線に沿って走行する ON/OFF制御 PID制御 その他 走行体 (ロボット) 向 方 進 走行体 (ロボット)
ライントレース(ON/OFF制御)の仕組み ロボットが「黒」の上にある時 「左(右)」に旋回 ロボットが「白」の上にある時 「右(左)」に旋回 繰り返し
ライントレース(ON/OFF制御)の実装 ロボットが「黒」の上にあるとき 「左(右)」に旋回 「turn」が負(正)の値 ロボットが「白」の上にあるとき 「右(左)」に旋回 「turn」が正(負)の値
ライントレース(ON/OFF制御)の実装 ロボットが「黒」の上にある時 「左(右)」に旋回 ロボットが「白」の上にある時 「右(左)」に旋回 どうやって判断するの? ?
現在地の色の判定 判定の基準になる値(閾値)を決める サンプル:黒と白の平均の光センサー値の中間の値 現在の光センサー値が閾値より大きい → 白の上 現在の光センサー値が閾値以下 → 黒の上 20 40 20より小さい 現在地は「黒」 20より大きい 現在地は「白」 ロボットは
「sample_c4」のプログラム解説 ≧ 閾値 行番号 sample_c4.c 49 #define LIGHT_WHITE 40 白の平均の光センサー値 50 #define LIGHT_BLACK 0 黒の平均の光センサー値 150 forward = 30; 前進する 151 if (ev3_color_sensor_get_reflect(color_sensor) >= (LIGHT_WHITE + LIGHT_BLACK)/2) 152 { 153 turn = 20; 右に旋回 154 } 155 else それ以外の時 156 { 157 Turn = -20; 左に旋回 158 } もし~のとき 現在地の光センサー値 ≧ 閾値
「sample_c4」のプログラム解説 行番号 sample_c4.c 49 #define LIGHT_WHITE 40 白の平均の光センサー値 50 #define LIGHT_BLACK 0 黒の平均の光センサー値 150 forward = 30; 前進する 151 if (ev3_color_sensor_get_reflect(color_sensor) >= (LIGHT_WHITE + LIGHT_BLACK)/2) 152 { 153 turn = 20; 右に旋回 154 } 155 else それ以外の時(ロボットが「黒」の上にある時) 156 { 157 Turn = -20; 左に旋回 158 } もし、現在地の光センサー値 が 閾値 以上 の時 (もしロボットが「白」の上にある時)
主に調整する数値 49 #define LIGHT_WHITE 40 白の平均の光センサー値 50 #define LIGHT_BLACK 0 黒の平均の光センサー値 150 forward = 30; 前進する 151 if (ev3_color_sensor_get_reflect(color_sensor) >= (LIGHT_WHITE + LIGHT_BLACK)/2) 152 { 153 turn = 20; 右に旋回 154 } 155 else 156 { 157 Turn = -20; 左に旋回 158 } これらの値を編集することで より早く走るロボット作りに挑戦してください!