25_R1_chassis/User/device/map.c

177 lines
3.4 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 -------------------------------------------------------- */
/*
1 ________ 7
/ \
2 6
| |
3 ---- 4 ---- 5
1-7: 根2 2-32.5-x 3-4:1.25+x 4-5:1.25+x 5-6:根2 7-1:2.5m x≈0.8(量的)
*/
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;
//点位坐标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_qian = 0;
// sick_1.sick_you = 0;
// sick_1.sick_hou = 0;
// sick_1.sick_zuo = 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_qian = 0;
// sick_2.sick_you = 0;
// sick_2.sick_hou = 0;
// sick_2.sick_zuo = 0;
// sick_2.sick_flag = 0;
//1
path_1.x = -800;
path_1.y = -800;
path_1.angle=0;
sick_1.sick_qian = 0;
sick_1.sick_you = 0;
sick_1.sick_hou = 0;
sick_1.sick_zuo = 0;
sick_1.sick_flag = 0;
//2
path_2.x = -2500;
path_2.y = -800;
path_2.angle=0;
sick_2.sick_qian = 0;
sick_2.sick_you = 0;
sick_2.sick_hou = 0;
sick_2.sick_zuo = 0;
sick_2.sick_flag = 0;
//3
path_3.x = -2500;
path_3.y = 1250;
path_3.angle= 0;
sick_3.sick_qian = 0;
sick_3.sick_you = 0;
sick_3.sick_hou = 0;
sick_3.sick_zuo = 0;
sick_3.sick_flag = 0;
//4
path_4.x = -2500;
path_4.y = 3300;
path_4.angle= 0;
sick_4.sick_qian = 0;
sick_4.sick_you = 0;
sick_4.sick_hou = 0;
sick_4.sick_zuo = 0;
sick_4.sick_flag = 0;
//5
path_5.x = -800;
path_5.y = 3300;
path_5.angle= 0;
sick_5.sick_qian = 0;
sick_5.sick_you = 0;
sick_5.sick_hou = 0;
sick_5.sick_zuo = 0;
sick_5.sick_flag = 0;
//6
path_6.x = 0;
path_6.y = 2500;
path_6.angle= 0;
sick_6.sick_qian = 0;
sick_6.sick_you = 0;
sick_6.sick_hou = 0;
sick_6.sick_zuo = 0;
sick_6.sick_flag = 0;
//7
path_7.x = 0;
path_7.y = 0;
path_7.angle= 0;
sick_7.sick_qian = 0;
sick_7.sick_you = 0;
sick_7.sick_hou = 0;
sick_7.sick_zuo = 0;
sick_7.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;
path_state.sick = &sick_2;
break;
case POS_3:
path_state.target = &path_3;
path_state.sick = &sick_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;
}
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;
}