IMU2023_NEW——————新陀螺仪代码
IMU2022_OLD——————老陀螺仪代码
RMUL——————————分区赛比赛代码
Sentry—————————哨兵代码根目录
—Chassis——————底盘代码
——ChassisV1.0———第一版底盘代码
—Gimbal——————云台代码
——GimbalV1.0———第一板云台代码
———sentry_Gimbal_L(左云台)
———sentry_Gimbal_R(右云台)
Sentry_down———————新哨兵代码(下供弹)
Sentry_Space———————全向轮步兵(备用哨兵)
第一次上传当前哨兵控制代码,当前能实现的功能主要为:
- 底盘的平移和小陀螺
- 大Yaw轴控制
- 左右云台控制
- 主云台重新改了下限位,之前限位限得比较小,在限位边缘处云台容易抽搐
- 把固定路径部分小改了一点,主要是世界坐标系得xy向速度映射到车坐标系上,之前在小陀螺移动中θ角就取反了。
- 加了功率控制
- 联盟赛加入了热量控制和打弹
- 现在还没有使用功率控制,需要具体测试
- 加入了两云台的辅瞄通信,云台的控制没调好,效果不理想
- 固定路径测试完毕
- 将代码进行部分重构,统一俩云台的task_shoot,task_actionupdate任务
- 在3个主板都添加了can数据帧的接收率
- 将云台板通信均换成串口通信,目前左云台陀螺仪还没有接到can1,所以串口通信内容少一些,后面更换后并且移植了倍哥代码后,考虑需要提高串口波特率
- 很多通信帧降频,比如遥控器降低位14ms一次,热量控制数据为50Hz一次
- 移植倍哥程序测试代码,代码跑不通
- 底盘固定路径进行小修改,能使用雷达定位进行固定路径
- 底盘代码中的完成哨兵策略的框架
- 底盘使用步兵功率限制
- 主云台添加并测试新的协同方案代码,可用,但还需配合辅瞄调
- 主云台和幅云台串口通信内容减少,只将大数据量通信通过串口发送,其余小数据量(遥控器)改回can2
- 发射机构加入新的堵转处理,还需要测试
- 修改了与nuc的导航通信协议,改为控制底盘速度
- 重新标了下大Yaw轴的初始角,使底盘按照3D激光雷达的坐标系移动
- 改下供弹步兵代码,改完底盘裁判系统接收,增加了基本的巡逻区的自动模式(除打弹)
- 云台加了跟踪微分调,效果挺好,但要重新设计PID中D的低通滤波器,目前使用的一阶低通效果不行
- 底盘有紧急模式(分区赛上加过的)
- 在主云台代码里面加了VOFA蓝牙发送,用于输出1K的信号,方便后面做滤波
- 现哨兵云台PID中对速度环作DOUT的低通,设计了11阶的FIR滤波器,截止频率为30Hz,效果还行
- 新哨兵代码中简单加入了决策部分的代码(没写完)
- 现哨兵代码中大Yaw轴加入了陀螺仪掉线检测,检测不到陀螺仪时大Yaw掉电
- 现哨兵代码中重新加上了大Yaw轴跟随辅瞄功能
- 新哨兵代码(下供弹)加入策略部分代码和nuc导航接收部分
- 现哨兵加的大Yaw轴跟随有问题,在辅瞄跟随时是属于速度环控制,云台不稳定,现改为位置环控制
- 现哨兵辅瞄加入距离选项,用于调整弹频
- 新哨兵底盘中SD卡加入了SD卡串口读取功能
- 下供弹导航决策基本完成
- 修改counter定时器为TIM5,保证系统时间没问题,新增了SD卡识别不到就删除SD卡任务逻辑
更改人:李蔚明
更改内容:云台代码中决策部分代码的部分顺序
如下:
void Navigation_State()
{
/**********************全局状态***************************/
/*
不管当前状态,直接转跳到目标状态
遥控器:用于调试
部分裁判系统数据:前哨战无。。。
部分云台手指令:回巡逻区。。。。
*/
if ((RC_Ctl.rc.ch0 - 1024) > 300||// 右右
(F105.JudgeReceive_info.commd_keyboard == 'S') )
// || F105.JudgeReceive_info.defend_flag)
NAV_car.NAV_State = TO_PATROL; // 去巡逻区
if ((RC_Ctl.rc.ch0 - 1024) < -300) // 右左
NAV_car.NAV_State = TO_OUTPOST; // 去前哨站
if ((RC_Ctl.rc.ch1 - 1024) > 300) // 右上
NAV_car.NAV_State = TO_HIGHLAND; // 去高地
if ((RC_Ctl.rc.ch1 - 1024) < -300) //右下
NAV_car.NAV_State = TO_SOURCE; // 去资源岛
if ((RC_Ctl.rc.ch2 - 1024) > 300 ||// 左右
(F105.JudgeReceive_info.commd_keyboard == 'D') )
NAV_car.NAV_State = PATROL; //巡逻区
if ((RC_Ctl.rc.ch2 - 1024) < -300) // 左左
NAV_car.NAV_State = OUTPOST; // 前哨站
if ((RC_Ctl.rc.ch3 - 1024) > 300) // 左上
NAV_car.NAV_State = HIGHLAND; // 高地
if ((RC_Ctl.rc.ch3 - 1024) < -300) // 左下
NAV_car.NAV_State = SOURCE; // 资源岛
/***********************决策状态转换**************************/
NAV_State_Invert();
/***********************决策状态执行**************************/
NAV_State_Act();
/********************状态更新时的过渡状态***************/
if (NAV_car.Last_NAV_State != NAV_car.NAV_State)
{
NAV_car.mode_update_time = GetTime_s();
}
if (GetTime_s() - NAV_car.mode_update_time < NAV_car.MODE_UPDATE_INTERVAL) // 过渡时间1.5s
{
Chassis_Gimbal_Shoot_State(STOP_STATE, STOP_STATE, STOP_STATE);
NAV_car.NAV_x = 0;
NAV_car.NAV_y = 0;
NAV_car.NAV_w = 0;
}
NAV_car.Last_NAV_State = NAV_car.NAV_State;
}
之前状态更新部分放在函数开头,其实根本不会运行,导致不会进入过渡态
更改人:李蔚明
更改内容:新陀螺仪代码中温控目标值设定
原先陀螺仪温控设定温度为定值43,当环境温度大于43度时,由于只有加热电路,导致温控失效,故作判断动态更改初始化设定温度,当初次读取温度大于设定温度时,设定温度为当前温度增加2度。
更改内容:自动打弹部分的射击角度阈值和射频计算
射击角度由原来的固定角度改为根据距离时时计算阈值,保证距离近的装甲板也能打中,射频根据距离进行时时调整
更改内容:在导航状态中加入了追击辅瞄功能,能够打断当前导航状态进行辅瞄射击,但还需要进一步完善一些条件判断