25_R1_chassis/User/device/map.c
2025-05-25 20:10:14 +08:00

109 lines
2.1 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"
/* Private variables -------------------------------------------------------- */
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;
int finish_flag = 0;
//点位坐标x轴朝前y轴朝右
void block_select(Action_POS_t*pos,CMD_t*cmd){
//1
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;
//2
path_2.x = 2000;
path_2.y = -2000;
path_2.angle=0;
sick_2.sick_qian = 1873;
sick_2.sick_you = 2180;
sick_2.sick_hou = 0;
sick_2.sick_zuo = 3350;
sick_2.sick_flag = 1;
//3
path_3.x = pos->pos_x;
path_3.y = pos->pos_y;
path_3.angle= 10;
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;
// static float target_angle = 0;
// static int finish_flag = 0;
// //检测是否使用相机
// if(cmd->camera_yaw != 0){
//
//// if(finish_flag == 0){
// target_angle += cmd->camera_yaw;
// if(target_angle<0){
// target_angle+=360;
// }
// if(target_angle>360){
// target_angle-=360;
// }
//// finish_flag = 1;
//// }
//// if(abs(pos->pos_yaw - target_angle)){
//// finish_flag = 0;
//// }
// }
// path_3.angle=target_angle;
}
/**
* 路径选择
*
* 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;
}
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;
}