Skip to content

nbsy000/RM_Sentry_2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

文件结构

IMU2023_NEW——————新陀螺仪代码

IMU2022_OLD——————老陀螺仪代码

RMUL——————————分区赛比赛代码

Sentry—————————哨兵代码根目录

—Chassis——————底盘代码

——ChassisV1.0———第一版底盘代码

—Gimbal——————云台代码

——GimbalV1.0———第一板云台代码

———sentry_Gimbal_L(左云台)

———sentry_Gimbal_R(右云台)

Sentry_down———————新哨兵代码(下供弹)

Sentry_Space———————全向轮步兵(备用哨兵)


2023.3.26

第一次上传当前哨兵控制代码,当前能实现的功能主要为:

  • 底盘的平移和小陀螺
  • 大Yaw轴控制
  • 左右云台控制

2023.3.27

  • 主云台重新改了下限位,之前限位限得比较小,在限位边缘处云台容易抽搐
  • 把固定路径部分小改了一点,主要是世界坐标系得xy向速度映射到车坐标系上,之前在小陀螺移动中θ角就取反了。

2023.3.29

  • 加了功率控制

2023.4.10

  • 联盟赛加入了热量控制和打弹
  • 现在还没有使用功率控制,需要具体测试
  • 加入了两云台的辅瞄通信,云台的控制没调好,效果不理想
  • 固定路径测试完毕

2023.4.17

  • 将代码进行部分重构,统一俩云台的task_shoot,task_actionupdate任务
  • 在3个主板都添加了can数据帧的接收率

2023.4.19

  • 将云台板通信均换成串口通信,目前左云台陀螺仪还没有接到can1,所以串口通信内容少一些,后面更换后并且移植了倍哥代码后,考虑需要提高串口波特率
  • 很多通信帧降频,比如遥控器降低位14ms一次,热量控制数据为50Hz一次

2023.4.21

  • 移植倍哥程序测试代码,代码跑不通

2023.5.8

  • 底盘固定路径进行小修改,能使用雷达定位进行固定路径
  • 底盘代码中的完成哨兵策略的框架
  • 底盘使用步兵功率限制
  • 主云台添加并测试新的协同方案代码,可用,但还需配合辅瞄调
  • 主云台和幅云台串口通信内容减少,只将大数据量通信通过串口发送,其余小数据量(遥控器)改回can2
  • 发射机构加入新的堵转处理,还需要测试

2023.6.12

  • 修改了与nuc的导航通信协议,改为控制底盘速度

2023.6.13

  • 重新标了下大Yaw轴的初始角,使底盘按照3D激光雷达的坐标系移动

2023.6.24

  • 改下供弹步兵代码,改完底盘裁判系统接收,增加了基本的巡逻区的自动模式(除打弹)

2023.7.1

  • 云台加了跟踪微分调,效果挺好,但要重新设计PID中D的低通滤波器,目前使用的一阶低通效果不行
  • 底盘有紧急模式(分区赛上加过的)

2023.7.4

  • 在主云台代码里面加了VOFA蓝牙发送,用于输出1K的信号,方便后面做滤波

2023.7.7

  • 现哨兵云台PID中对速度环作DOUT的低通,设计了11阶的FIR滤波器,截止频率为30Hz,效果还行
  • 新哨兵代码中简单加入了决策部分的代码(没写完)

2023.7.10

  • 现哨兵代码中大Yaw轴加入了陀螺仪掉线检测,检测不到陀螺仪时大Yaw掉电
  • 现哨兵代码中重新加上了大Yaw轴跟随辅瞄功能
  • 新哨兵代码(下供弹)加入策略部分代码和nuc导航接收部分

2023.7.11

  • 现哨兵加的大Yaw轴跟随有问题,在辅瞄跟随时是属于速度环控制,云台不稳定,现改为位置环控制

2023.7.17

  • 现哨兵辅瞄加入距离选项,用于调整弹频
  • 新哨兵底盘中SD卡加入了SD卡串口读取功能

2023.7.26

  • 下供弹导航决策基本完成
  • 修改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;
}

之前状态更新部分放在函数开头,其实根本不会运行,导致不会进入过渡态


2023.7.27

更改人:李蔚明

更改内容:新陀螺仪代码中温控目标值设定

原先陀螺仪温控设定温度为定值43,当环境温度大于43度时,由于只有加热电路,导致温控失效,故作判断动态更改初始化设定温度,当初次读取温度大于设定温度时,设定温度为当前温度增加2度。

更改内容:自动打弹部分的射击角度阈值和射频计算

射击角度由原来的固定角度改为根据距离时时计算阈值,保证距离近的装甲板也能打中,射频根据距离进行时时调整

更改内容:在导航状态中加入了追击辅瞄功能,能够打断当前导航状态进行辅瞄射击,但还需要进一步完善一些条件判断

About

RM_Sentry_2024 code repo for all robots

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published