1.0
This commit is contained in:
@@ -2,27 +2,45 @@
|
||||
* @file track_map.c
|
||||
* @brief 赛道地图 — S 型遍历拓扑表
|
||||
*
|
||||
* S 型路径:
|
||||
* C1(→) → 左转 → 连接 → 左转 → C2(←) → 右转 → 连接 → 右转 →
|
||||
* C3(→) → 左转 → 连接 → 左转 → C4(←) → 右转 → 连接 → 右转 →
|
||||
* C5(→) → 左转 → 连接 → 左转 → C6(←) → 左转 → 出场
|
||||
* 正确的场地结构 (参见 Doc/map.md):
|
||||
* - 垄沟沿 X 轴(横向)分布,长 220cm
|
||||
* - 左右两端各有纵向端部通道,宽 40cm
|
||||
* - 启动区在左下角,入口对齐左端通道
|
||||
* - C1 最靠近入口(南侧),C6 最远(北侧)
|
||||
*
|
||||
* S 型路径 (以"北=Y递减=地图上方"为参考):
|
||||
* 入场→左端通道→右转入C1(→东)→右端到端→左转(朝北)
|
||||
* →北行70cm→左转入C2(←西)→左端到端→右转(朝北)
|
||||
* →北行70cm→右转入C3(→东)→...
|
||||
* →C6(←西)→左端到端→左转(朝南)→南行出场
|
||||
*
|
||||
* entry_turn_dir: 从纵向通道(朝北)转入垄沟的方向
|
||||
* exit_turn_dir: 从垄沟到端后转入纵向通道的方向
|
||||
*/
|
||||
|
||||
#include "track_map.h"
|
||||
|
||||
/* =========================================================
|
||||
* 硬编码 S 型遍历表
|
||||
*
|
||||
* 转向方向推导 (北=机器人沿纵向通道前进方向):
|
||||
* C1: 左端通道朝北→右转→朝东入沟; 到右端→左转→朝北
|
||||
* C2: 右端通道朝北→左转→朝西入沟; 到左端→右转→朝北
|
||||
* C3: 左端通道朝北→右转→朝东入沟; 到右端→左转→朝北
|
||||
* C4: 右端通道朝北→左转→朝西入沟; 到左端→右转→朝北
|
||||
* C5: 左端通道朝北→右转→朝东入沟; 到右端→左转→朝北
|
||||
* C6: 右端通道朝北→左转→朝西入沟; 到左端→左转→朝南(出场)
|
||||
* ========================================================= */
|
||||
static const TrackMap_t s_map = {
|
||||
.corridors = {
|
||||
/* id travel_dir exit_turn entry_turn is_last
|
||||
* -- ---------- --------- ---------- ------- */
|
||||
{ 0, TRAVEL_DIR_POSITIVE, TURN_DIR_LEFT, TURN_DIR_LEFT, false }, /* C1: → 到右端后左转 */
|
||||
{ 1, TRAVEL_DIR_NEGATIVE, TURN_DIR_RIGHT, TURN_DIR_RIGHT, false }, /* C2: ← 到左端后右转 */
|
||||
{ 2, TRAVEL_DIR_POSITIVE, TURN_DIR_LEFT, TURN_DIR_LEFT, false }, /* C3: → */
|
||||
{ 3, TRAVEL_DIR_NEGATIVE, TURN_DIR_RIGHT, TURN_DIR_RIGHT, false }, /* C4: ← */
|
||||
{ 4, TRAVEL_DIR_POSITIVE, TURN_DIR_LEFT, TURN_DIR_LEFT, false }, /* C5: → */
|
||||
{ 5, TRAVEL_DIR_NEGATIVE, TURN_DIR_LEFT, TURN_DIR_LEFT, true }, /* C6: ← 最后一条, 左转出场 */
|
||||
/* id travel_dir exit_turn entry_turn is_last
|
||||
* -- ---------- --------- ---------- ------- */
|
||||
{ 0, TRAVEL_DIR_EAST, TURN_DIR_LEFT, TURN_DIR_RIGHT, false }, /* C1: →东, 从左端右转入, 到右端左转出 */
|
||||
{ 1, TRAVEL_DIR_WEST, TURN_DIR_RIGHT, TURN_DIR_LEFT, false }, /* C2: ←西, 从右端左转入, 到左端右转出 */
|
||||
{ 2, TRAVEL_DIR_EAST, TURN_DIR_LEFT, TURN_DIR_RIGHT, false }, /* C3: →东 */
|
||||
{ 3, TRAVEL_DIR_WEST, TURN_DIR_RIGHT, TURN_DIR_LEFT, false }, /* C4: ←西 */
|
||||
{ 4, TRAVEL_DIR_EAST, TURN_DIR_LEFT, TURN_DIR_RIGHT, false }, /* C5: →东 */
|
||||
{ 5, TRAVEL_DIR_WEST, TURN_DIR_LEFT, TURN_DIR_LEFT, true }, /* C6: ←西, 从右端左转入, 到左端左转出(朝南出场) */
|
||||
},
|
||||
.entry_corridor_id = 0,
|
||||
.link_distance_m = TRACK_MAP_LINK_DISTANCE_M,
|
||||
|
||||
Reference in New Issue
Block a user