mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-23 19:25:09 +08:00
add emghandler
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user