add emghandler

This commit is contained in:
2026-04-20 15:01:50 +08:00
parent df12ca7256
commit ccfb03f3b7

View File

@@ -153,27 +153,27 @@ static void RemoteControlSet()
}
// 右侧开关状态为[下],底盘旋转
if (switch_is_down(rc_data[TEMP].rc.switch_right))
{
chassis_cmd_send.chassis_mode = CHASSIS_FOLLOW_GIMBAL_YAW;
if (abs(rc_data[TEMP].rc.rocker_r_) > 300)
{
chassis_cmd_send.chassis_mode = CHASSIS_ROTATE;
chassis_cmd_send.rotate_w = 2;
}
if (abs(rc_data[TEMP].rc.rocker_r1) > 300)
{
chassis_cmd_send.chassis_mode = CHASSIS_ROTATE_REVERSE;
chassis_cmd_send.rotate_w = -2;
}
chassis_cmd_send.vx = 0;
}
else
{
// if (switch_is_down(rc_data[TEMP].rc.switch_right))
// {
// chassis_cmd_send.chassis_mode = CHASSIS_FOLLOW_GIMBAL_YAW;
//
// if (abs(rc_data[TEMP].rc.rocker_r_) > 300)
// {
// chassis_cmd_send.chassis_mode = CHASSIS_ROTATE;
// chassis_cmd_send.rotate_w = 2;
// }
// if (abs(rc_data[TEMP].rc.rocker_r1) > 300)
// {
// chassis_cmd_send.chassis_mode = CHASSIS_ROTATE_REVERSE;
// chassis_cmd_send.rotate_w = -2;
// }
// chassis_cmd_send.vx = 0;
// }
// else
// {
chassis_cmd_send.chassis_mode = CHASSIS_FOLLOW_GIMBAL_YAW;
chassis_cmd_send.vx = 0.003f * (-(float)rc_data[TEMP].rc.rocker_r_ + (float)rc_data[TEMP].rc.rocker_r1);
}
// }
// 左侧开关状态为[中],腿长控制
if (switch_is_mid(rc_data[TEMP].rc.switch_left))
@@ -323,22 +323,26 @@ static void MouseKeySet()
*/
static void EmergencyHandler()
{
if (switch_is_down(rc_data[TEMP].rc.switch_left) || switch_is_mid(rc_data[TEMP].rc.switch_left)) // 遥控器左侧开关状态为[下],遥控器控制
// 获取遥控器在线状态 (1:在线 0:离线)
uint8_t rc_online = RemoteControlIsOnline();
if (switch_is_down(rc_data[TEMP].rc.switch_left) || switch_is_mid(rc_data[TEMP].rc.switch_left)) // 遥控器左侧开关状态为[下]或[中]
{
if ((rc_data[TEMP].rc.dial > 300 && switch_is_down(rc_data[TEMP].rc.switch_left)) || robot_state == ROBOT_STOP) // 还需添加重要应用和模块离线的判断
// 急停触发条件:遥控器离线 或者 右侧开关打到[下] 或者 robot_state 已经是 STOP
if (!rc_online || switch_is_down(rc_data[TEMP].rc.switch_right) || robot_state == ROBOT_STOP)
{
robot_state = ROBOT_STOP;
gimbal_cmd_send.gimbal_mode = GIMBAL_ZERO_FORCE;
chassis_cmd_send.chassis_mode = CHASSIS_ZERO_FORCE;
chassis_cmd_send.chassis_mode = CHASSIS_ZERO_FORCE; // 底盘电流归零,无力化
shoot_cmd_send.shoot_mode = SHOOT_OFF;
shoot_cmd_send.friction_mode = FRICTION_OFF;
shoot_cmd_send.load_mode = LOAD_STOP;
gimbal_cmd_send.yaw = gimbal_fetch_data.gimbal_imu_data.YawTotalAngle; // 急停时设定值保持与实际值同步,避免恢复时疯转
gimbal_cmd_send.yaw = gimbal_fetch_data.gimbal_imu_data.YawTotalAngle; // 急停时设定值保持与实际值同步
gimbal_cmd_send.pitch = gimbal_fetch_data.gimbal_imu_data.Pitch;
}
// 遥控器右侧开关为[上],恢复正常运行
if (switch_is_up(rc_data[TEMP].rc.switch_right))
// 恢复正常运行条件:遥控器在线 且 右侧开关状态为[上]
else if (switch_is_up(rc_data[TEMP].rc.switch_right) || switch_is_mid(rc_data[TEMP].rc.switch_right))
{
robot_state = ROBOT_READY;
shoot_cmd_send.shoot_mode = SHOOT_ON;