専門教育入門セミナーT in KatLab 2018/10/14 平木場風太 作成 OnOff制御について知ろう 専門教育入門セミナーT in KatLab 2018/10/14 平木場風太 作成
ライントレース 目標 ライントレースを実現する方法 黒線に沿って走行する ON/OFF制御 ←今日の内容 PID制御 ←今度やる内容 その他 向 方 行 進 走行体
ライントレース(ON/OFF制御)の仕組み1 走行体が「黒」の上にある時 「左」に旋回 走行体が「白」の上にある時 「右」に旋回 繰り返すことで「黒線に沿って走行」できる ※上記は左エッジ(黒線の左の境界線)の場合である。
ライントレース(ON/OFF制御)の仕組み2 走行体が「黒」の上にあるとき 「左」に旋回 左モータ出力:前進値 - 転回値 右モータ出力:前進値 + 転回値 走行体が「白」の上にあるとき 「右」に旋回 左モータ出力:前進値 + 転回値 右モータ出力:前進値 - 転回値 ※転回値の正負は走行体によって異なる。
白黒判別はどうやってやるのか 光 光 セ セ ン ン サ サ 地面に光を当て、反射した光の輝度から明るさを得る。 黒の場合 白の場合 明るさ: 5 明るさ: 100 地面に光を当て、反射した光の輝度から明るさを得る。 走行体画像は https://www.etrobo.jp/2017/gaiyou/images/intro_robot_2.jpg より引用
輝度を基にした白黒の判定 判定の基準になる値(閾値)を決める サンプル:黒と白の境目の値 現在の輝度の値が閾値より大きい → 白の上とする 現在の輝度の値が閾値より大きい → 白の上とする 現在の輝度の値が閾値以下 → 黒の上とする 50 100 50より小さい 値なら「黒」 50より大きい 値なら「白」 ロボットは
使用プログラム: hackev_on_off_linetrace KatLab-MiyazakiUniv/hackev_on_off_linetraceのクラス図 https://github.com/KatLab-MiyazakiUniv/hackev_on_off_linetrace
白黒閾値、前進値、転回値の設定 API 使用例 前進値、転回値の有効範囲は-100から+100 void OnOffController::setParam(const int& 閾値, const int& 前進値, const int& 転回値) 使用例 Machine::calibration()より 9行目: 黒(black)の値の取得 14行目: 白(white)の値の取得 18行目: 閾値に白と黒の平均に、前進値を30に, 転回 値を10に設定 前進値、転回値の有効範囲は-100から+100
各モータ出力の計算とモータ回転 API 使用例 void OnOffController::calcurate(const int& 輝度, int& 左モータ出力, int& 右モータ出力) 使用例 Machine::run()より 42行目: 輝度(brightness)の値の取得 43行目: 輝度、左モータ出力、右モータ出力を OnOffController::calcurate()に渡し、次に 取るべき左モータ出力、右モータ出力を設定 44行目: 左モータに左モータ出力(leftPwm)を設定 45行目: 右モータに右モータ出力(rightPwm)を設定