25_R1_chassis/User/device/map.c
2025-07-11 21:39:07 +08:00

162 lines
3.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*地图,存储全场定位点位
*
*/
#include "map.h"
#include "define.h"
/* Private variables -------------------------------------------------------- */
/*
0---- 1 ______ 7
/ \
2 6
| |
3 ---- 4 ---- 5
计算值: 0-13.1m 1-2: 根2x 2-32.5-x 3-4:1.25+x 4-5:1.25+x 5-6:2.5-x 6-7:根2x 7-1:2.5m
测量值x≈0.8(量的) 1-2: 2-3: 3-4: 4-5: 5-6: 6-7: 7-1:
*/
Path_t path_state; //地图数据
/*点位数据*/
point_t path_1;
sick_t sick_1;
point_t path_2;
sick_t sick_2;
point_t path_3;
sick_t sick_3;
point_t path_4;
sick_t sick_4;
point_t path_5;
sick_t sick_5;
point_t path_6;
sick_t sick_6;
point_t path_7;
sick_t sick_7;
point_t path_8;
sick_t sick_8;
point_t path_9;
sick_t sick_9;
//点位坐标x轴朝前y轴朝右
void block_select(Action_POS_t*pos,CMD_t*cmd){
// path_1.x = 0;
// path_1.y = 0;
// path_1.angle=0;
// sick_1.sick_flag = 0;
// path_2.x = pos->pos_x;
// path_2.y = pos->pos_y;
// path_2.angle= 0;
// sick_2.sick_flag = 0;
//1
path_1.x = 0;
path_1.y = 0;
path_1.angle=0;
sick_1.sick_flag = 0;
//2
path_2.x = 0;
path_2.y = 3100;
path_2.angle=0;
sick_2.sick_flag = 0;
//3
path_3.x = -800;
path_3.y = 2300;
path_3.angle=0;
sick_3.sick_flag = 0;
//4
path_4.x = -2500;
path_4.y = 2300;
path_4.angle= 0;
sick_4.sick_flag = 0;
//5
path_5.x = -2500;
path_5.y = 4350;
path_5.angle= 0;
sick_5.sick_flag = 0;
//6
path_6.x = -2500;
path_6.y = 6400;
path_6.angle= 0;
sick_6.sick_flag = 0;
//7
path_7.x = -800;
path_7.y = 6400;
path_7.angle= 0;
sick_7.sick_flag = 0;
//8
path_8.x = 0;
path_8.y = 5600;
path_8.angle= 0;
sick_8.sick_flag = 0;
//9
path_9.x = 0;
path_9.y = 3100;
path_9.angle= 0;
sick_9.sick_flag = 0;
}
/**
* 路径选择
*
* path_state.target
*/
void path_select(CMD_t*cmd){
static int8_t last_pos = -1;
if (cmd->C_cmd.pos != last_pos) {
switch (cmd->C_cmd.pos){
case POS_1:
path_state.target = &path_1;
path_state.sick = &sick_1;
break;
case POS_2:
path_state.target = &path_2;
break;
case POS_3:
path_state.target = &path_3;
break;
case POS_4:
path_state.target = &path_4;
path_state.sick = &sick_4;
break;
case POS_5:
path_state.target = &path_5;
path_state.sick = &sick_5;
break;
case POS_6:
path_state.target = &path_6;
path_state.sick = &sick_6;
break;
case POS_7:
path_state.target = &path_7;
path_state.sick = &sick_7;
break;
case POS_8:
path_state.target = &path_8;
path_state.sick = &sick_8;
break;
case POS_9:
path_state.target = &path_9;
path_state.sick = &sick_9;
break;
}
path_state.points_flag = 0; //标志位清零
}
last_pos = cmd->C_cmd.pos; // 更新上一次的位置
if(cmd->C_cmd.mode != NAVI){
path_state.points_flag = 0;
}
}
Path_t *get_map_pointer(void){
return &path_state;
}