-
Notifications
You must be signed in to change notification settings - Fork 20
sim_ev3_lr_course_change
I-am-one-2018 edited this page Aug 31, 2020
·
7 revisions
ETロボコンは、コース(左コース、右コース)上のラインをセンサーなどで読み取り走行させます。
その際、各コースで走行させるときにパラメータなどの違いがあります。
ここでは、実行委員より提供している「sample_c4
」をもとに、コースの切り替え方としてエッジの変更を例に説明します。
切り替え方の実装例は以下の通りです。
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コマンドの説明
を参照ください。
Copyright (C) 2020-2024 ETロボコン実行委員会, Released under the MIT License.