Skip to content

sim_ev3_lr_course_change

I-am-one-2018 edited this page Aug 31, 2020 · 7 revisions

ETロボコンシミュレータにおける左右コースの切り替え方について

Summary

ETロボコンは、コース(左コース、右コース)上のラインをセンサーなどで読み取り走行させます。
その際、各コースで走行させるときにパラメータなどの違いがあります。

ここでは、実行委員より提供している「sample_c4」をもとに、コースの切り替え方としてエッジの変更を例に説明します。

実装例

切り替え方の実装例は以下の通りです。

1.左コース、右コースの切り分け方について

 45 /**
 46  * 左コース/右コース向けの設定を定義します
 47  * デフォルトは左コース(ラインの右エッジをトレース)です
 48  */
 49 #if defined(MAKE_RIGHT)
 50     static const int _LEFT = 0;
 51     #define _EDGE -1
 52 #else
 53     static const int _LEFT = 1;
 54     #define _EDGE 1
 55 #endif 

解説
49行目のコード「#if defined(MAKE_RIGHT)」は、ビルド時のコマンドにて、50~51行のコードが有効になります。
それにより、下記ソースコード(179~186行目)で右コースで走行するためのパラメータとしてエッジを切り替えることが可能になります。

165     /**
166     * Main loop
167     */
168     while(1)
169     {
170         if (ev3_button_is_pressed(BACK_BUTTON)) break;
171 
172         if (sonar_alert() == 1) /* 障害物検知 */
173         {
174             forward = turn = 0; /* 障害物を検知したら停止 */
175         }
176         else
177         {
178             forward = 30; /* 前進命令 */
179             if (ev3_color_sensor_get_reflect(color_sensor) >= (LIGHT_WHITE + LIGHT_BLACK)/2)
180             {
181                 turn = -80 * _EDGE; /* 右旋回命令 (右コースは逆) */
182             }
183             else
184             {
185                 turn =  80 * _EDGE; /* 左旋回命令 (右コースは逆) */
186             }
187         }

シミュレータ環境にて左右コースを切り替えるには、以下のビルド方法になります。
【ビルド方法】

区分 コマンド
右コース make right app=sample_c4 sim
左コース make left app=sample_c4 sim

makeコマンドに指定するオプションの詳細については、makeコマンドの説明を参照ください。