25_R1_chassis/User/device/map.c

114 lines
2.2 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 -------------------------------------------------------- */
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;
//点位坐标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 = 0;
sick_2.sick_you = 0;
sick_2.sick_hou = 0;
sick_2.sick_zuo = 0;
sick_2.sick_flag = 1;
//3
path_3.x = pos->pos_x;
path_3.y = pos->pos_y;
//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;
#ifdef camera_angle_static
// 锁死相机偏差角度
static float fixed_yaw = 0;
static int is_calibrating = 0;
static float prev_camera_yaw = 0;
// 非NAVI模式直接重置状态
if (cmd->C_cmd.mode != NAVI) {
is_calibrating = 0;
}
if (cmd->nuc.vw != 0) {
// 只有未校准时才更新固定值
if (is_calibrating == 0) {
fixed_yaw = pos->pos_yaw + cmd->nuc.vw;
is_calibrating = 1;
}
// 校准期间始终使用fixed_yaw
path_3.angle = fixed_yaw;
prev_camera_yaw = cmd->nuc.vw;
}
#endif
}
/**
* 路径选择
*
* 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;
}