mirror of
https://gitee.com/dlmu-cone/half-steering-basic-framework
synced 2026-10-24 01:52:20 +08:00
解决键鼠发射,现在键鼠模式小陀螺移动有点问题
This commit is contained in:
@@ -230,7 +230,7 @@ static void RemoteControlSet()
|
|||||||
shoot_cmd_send.friction_mode = FRICTION_OFF;
|
shoot_cmd_send.friction_mode = FRICTION_OFF;
|
||||||
// 拨弹控制,遥控器固定为一种拨弹模式,可自行选择
|
// 拨弹控制,遥控器固定为一种拨弹模式,可自行选择
|
||||||
if (rc_data[TEMP].rc.dial >500)
|
if (rc_data[TEMP].rc.dial >500)
|
||||||
shoot_cmd_send.load_mode = LOAD_1_BULLET;
|
shoot_cmd_send.load_mode = LOAD_3_BULLET;
|
||||||
else
|
else
|
||||||
shoot_cmd_send.load_mode = LOAD_STOP;
|
shoot_cmd_send.load_mode = LOAD_STOP;
|
||||||
// 射频控制,固定每秒1发,后续可以根据左侧拨轮的值大小切换射频,
|
// 射频控制,固定每秒1发,后续可以根据左侧拨轮的值大小切换射频,
|
||||||
@@ -269,20 +269,45 @@ static void MouseKeySet()
|
|||||||
shoot_cmd_send.bullet_speed = 30;
|
shoot_cmd_send.bullet_speed = 30;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (rc_data[TEMP].key_count[KEY_PRESS][Key_E] % 4) // E键设置发射模式
|
// switch (rc_data[TEMP].key_count[KEY_PRESS][Key_E] % 4) // E键设置发射模式
|
||||||
{
|
// {
|
||||||
case 0:
|
// case 0:
|
||||||
shoot_cmd_send.load_mode = LOAD_STOP;
|
// shoot_cmd_send.load_mode = LOAD_STOP;
|
||||||
break;
|
// break;
|
||||||
case 1:
|
// case 1:
|
||||||
shoot_cmd_send.load_mode = LOAD_1_BULLET;
|
// shoot_cmd_send.load_mode = LOAD_1_BULLET;
|
||||||
break;
|
// break;
|
||||||
case 2:
|
// case 2:
|
||||||
shoot_cmd_send.load_mode = LOAD_3_BULLET;
|
// shoot_cmd_send.load_mode = LOAD_3_BULLET;
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
shoot_cmd_send.load_mode = LOAD_BURSTFIRE;
|
// shoot_cmd_send.load_mode = LOAD_BURSTFIRE;
|
||||||
break;
|
// break;
|
||||||
|
// }
|
||||||
|
// switch (rc_data[TEMP].mouse.press_l) // 鼠标左键射击
|
||||||
|
// {
|
||||||
|
// case 0:
|
||||||
|
// shoot_cmd_send.load_mode = LOAD_STOP;
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// shoot_cmd_send.load_mode = LOAD_1_BULLET; // 按鼠标进行单发
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// switch (rc_data[TEMP].mouse.press_r) // 鼠标右键射击
|
||||||
|
// {
|
||||||
|
// case 0:
|
||||||
|
// shoot_cmd_send.load_mode = LOAD_STOP;
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// shoot_cmd_send.load_mode = LOAD_3_BULLET; // 按鼠标进行单发
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
if (rc_data[TEMP].mouse.press_l) {
|
||||||
|
shoot_cmd_send.load_mode = LOAD_1_BULLET; // 左键单发
|
||||||
|
} else if (rc_data[TEMP].mouse.press_r) {
|
||||||
|
shoot_cmd_send.load_mode = LOAD_3_BULLET; // 右键三连发
|
||||||
|
} else {
|
||||||
|
shoot_cmd_send.load_mode = LOAD_STOP; // 不按鼠标不发射
|
||||||
}
|
}
|
||||||
switch (rc_data[TEMP].key_count[KEY_PRESS][Key_R] % 2) // R键开关弹舱
|
switch (rc_data[TEMP].key_count[KEY_PRESS][Key_R] % 2) // R键开关弹舱
|
||||||
{
|
{
|
||||||
@@ -317,7 +342,18 @@ static void MouseKeySet()
|
|||||||
chassis_cmd_send.chassis_speed_buff = 100;
|
chassis_cmd_send.chassis_speed_buff = 100;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (rc_data[TEMP].key[KEY_PRESS].shift) // 待添加 按shift允许超功率 消耗缓冲能量
|
switch (rc_data[TEMP].key_count[KEY_PRESS][Key_Q] % 2) // Q键设置底盘运动模式
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
chassis_cmd_send.offset_angle = chassis_cmd_send.offset_angle - 360*around;
|
||||||
|
chassis_cmd_send.chassis_mode = CHASSIS_FOLLOW_GIMBAL_YAW;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
chassis_cmd_send.chassis_mode = CHASSIS_ROTATE;
|
||||||
|
around= chassis_cmd_send.offset_angle/360;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (rc_data[TEMP].key[KEY_PRESS].shift) // 待添加 按shift允许超功率 消耗缓冲能量。
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
|
||||||
@@ -330,6 +366,9 @@ static void MouseKeySet()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
* @brief 紧急停止,包括遥控器左上侧拨轮打满/重要模块离线/双板通信失效等
|
* @brief 紧急停止,包括遥控器左上侧拨轮打满/重要模块离线/双板通信失效等
|
||||||
* 停止的阈值'300'待修改成合适的值,或改为开关控制.
|
* 停止的阈值'300'待修改成合适的值,或改为开关控制.
|
||||||
*
|
*
|
||||||
@@ -383,7 +422,7 @@ void RobotCMDTask() {
|
|||||||
else if (switch_is_up(rc_data[TEMP].rc.switch_left)) {
|
else if (switch_is_up(rc_data[TEMP].rc.switch_left)) {
|
||||||
// 遥控器左侧开关状态为[上],键盘控制
|
// 遥控器左侧开关状态为[上],键盘控制
|
||||||
MouseKeySet();
|
MouseKeySet();
|
||||||
shoot_cmd_send.shoot_mode =SHOOT_OFF;
|
shoot_cmd_send.shoot_mode =SHOOT_ON;
|
||||||
}
|
}
|
||||||
else if (switch_is_mid(rc_data[TEMP].rc.switch_left)) {
|
else if (switch_is_mid(rc_data[TEMP].rc.switch_left)) {
|
||||||
// 遥控器左侧开关状态为[中],视觉模式,使用遥控器控制底盘和云台,同时开启发射系统
|
// 遥控器左侧开关状态为[中],视觉模式,使用遥控器控制底盘和云台,同时开启发射系统
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ void GimbalInit()
|
|||||||
.MaxOut = 1000,
|
.MaxOut = 1000,
|
||||||
},
|
},
|
||||||
.speed_PID = {
|
.speed_PID = {
|
||||||
.Kp = 70, // 50
|
.Kp = 60, // 50
|
||||||
.Ki = 15, // 350
|
.Ki = 15, // 350
|
||||||
.Kd = 0.6, // 0
|
.Kd = 0.6, // 0
|
||||||
.MaxOut = 20000,//20000
|
.MaxOut = 20000,//20000
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ static Shoot_Upload_Data_s shoot_feedback_data; // 来自cmd的发射控制信
|
|||||||
|
|
||||||
// dwt定时,计算冷却用
|
// dwt定时,计算冷却用
|
||||||
static float hibernate_time = 0, dead_time = 0;
|
static float hibernate_time = 0, dead_time = 0;
|
||||||
|
//static float target_angle = 0;
|
||||||
void ShootInit()
|
void ShootInit()
|
||||||
{
|
{
|
||||||
// 左摩擦轮
|
// 左摩擦轮
|
||||||
@@ -144,10 +144,10 @@ void ShootTask()
|
|||||||
// if (dead_time == 0) { // 第一次触发
|
// if (dead_time == 0) { // 第一次触发
|
||||||
// last_target_angle = loader->measure.total_angle;
|
// last_target_angle = loader->measure.total_angle;
|
||||||
// }
|
// }
|
||||||
// last_target_angle += ONE_BULLET_DELTA_ANGLE * REDUCTION_RATIO_LOADER; // 每次都在上次目标角度基础上增加固定角度
|
// last_target_angle += 51*36;//ONE_BULLET_DELTA_ANGLE * REDUCTION_RATIO_LOADER; // 每次都在上次目标角度基础上增加固定角度
|
||||||
// DJIMotorSetRef(loader, last_target_angle);
|
// DJIMotorSetRef(loader, last_target_angle);
|
||||||
// hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
// hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
||||||
// dead_time = shoot_cmd_recv.dead_time; // 完成1发弹丸发射的时间
|
// dead_time = 450;//shoot_cmd_recv.dead_time; // 完成1发弹丸发射的时间
|
||||||
// break;
|
// break;
|
||||||
// case LOAD_1_BULLET:
|
// case LOAD_1_BULLET:
|
||||||
// DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
|
// DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
|
||||||
@@ -162,18 +162,27 @@ void ShootTask()
|
|||||||
// break;
|
// break;
|
||||||
case LOAD_1_BULLET:
|
case LOAD_1_BULLET:
|
||||||
DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
|
DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
|
||||||
static float target_angle = 0;
|
static float target_angle = -1900;
|
||||||
target_angle += 51*36;
|
target_angle += 51*36;
|
||||||
|
//float target_angle = loader->measure.total_angle + 51*36;
|
||||||
DJIMotorSetRef(loader, target_angle);
|
DJIMotorSetRef(loader, target_angle);
|
||||||
hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
||||||
dead_time = 450; // 完成1发弹丸发射的时间
|
dead_time = 450; // 完成1发弹丸发射的时间
|
||||||
break;
|
break;
|
||||||
// 三连发,如果不需要后续可能删除
|
// 三连发,如果不需要后续可能删除
|
||||||
case LOAD_3_BULLET:
|
case LOAD_3_BULLET:
|
||||||
DJIMotorOuterLoop(loader, ANGLE_LOOP); // 切换到速度环
|
// DJIMotorOuterLoop(loader, ANGLE_LOOP); // 切换到速度环
|
||||||
DJIMotorSetRef(loader, loader->measure.total_angle + 3 * ONE_BULLET_DELTA_ANGLE); // 增加3发
|
// DJIMotorSetRef(loader, loader->measure.total_angle + 3 * ONE_BULLET_DELTA_ANGLE); // 增加3发
|
||||||
|
// hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
||||||
|
// dead_time = 300; // 完成3发弹丸发射的时间
|
||||||
|
// break;
|
||||||
|
DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
|
||||||
|
//static float target_angle = -1872;
|
||||||
|
target_angle += (51*36)*3;
|
||||||
|
//float target_angle = loader->measure.total_angle + 51*36;
|
||||||
|
DJIMotorSetRef(loader, target_angle);
|
||||||
hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
|
||||||
dead_time = 300; // 完成3发弹丸发射的时间
|
dead_time = 700; // 完成3发弹丸发射的时间
|
||||||
break;
|
break;
|
||||||
// 连发模式,对速度闭环,射频后续修改为可变,目前固定为1Hz
|
// 连发模式,对速度闭环,射频后续修改为可变,目前固定为1Hz
|
||||||
case LOAD_BURSTFIRE:
|
case LOAD_BURSTFIRE:
|
||||||
|
|||||||
Reference in New Issue
Block a user