mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-24 03:27:45 +08:00
遥控器键鼠
This commit is contained in:
@@ -63,6 +63,7 @@ void BalanceInit()
|
||||
.tx_id = 0x311,
|
||||
.rx_id = 0x312,
|
||||
},
|
||||
.daemon_count = 100,
|
||||
.recv_data_len = sizeof(Chassis_Ctrl_Cmd_s),
|
||||
.send_data_len = sizeof(Chassis_Upload_Data_s),
|
||||
};
|
||||
@@ -225,35 +226,37 @@ static uint8_t DrivenMotorIsLost()
|
||||
/* 切换底盘遥控器控制和云台双板控制 */
|
||||
static void ControlSwitch()
|
||||
{
|
||||
// 根据裁判系统底盘输出电压设定底盘状态
|
||||
float chassis_vol = referee_data->PowerHeatData.chassis_voltage * 0.001;
|
||||
if (chassis_vol < 15.0f || JointMotorIsLost() || DrivenMotorIsLost())
|
||||
{
|
||||
chassis_cmd_recv.chassis_mode = CHASSIS_ZERO_FORCE; // 皆离线,急停
|
||||
return;
|
||||
}
|
||||
// // 根据裁判系统底盘输出电压设定底盘状态
|
||||
// float chassis_vol = referee_data->PowerHeatData.chassis_voltage * 0.001;
|
||||
// if (chassis_vol < 15.0f || JointMotorIsLost() || DrivenMotorIsLost())
|
||||
// {
|
||||
// chassis_cmd_recv.chassis_mode = CHASSIS_ZERO_FORCE; // 皆离线,急停
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // 右侧拨杆向下,进入遥控器底盘控制,此时不响应云台控制指令
|
||||
// if (switch_is_down(rc_data->rc.switch_right) && RemoteControlIsOnline())
|
||||
// {
|
||||
// if (switch_is_up(rc_data->rc.switch_left))
|
||||
// {
|
||||
// chassis_cmd_recv.chassis_mode = CHASSIS_RESET;
|
||||
// chassis_cmd_recv.vx = 0.5 * (float)rc_data[TEMP].rc.rocker_r1; // speed x, unit m/s
|
||||
// chassis_cmd_recv.rotate_w = 0.5 * (float)rc_data[TEMP].rc.rocker_r_;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// chassis_cmd_recv.chassis_mode = CHASSIS_FREE_DEBUG; // 自由转动&前后
|
||||
// chassis_cmd_recv.vx = 0.003 * (float)rc_data[TEMP].rc.rocker_r1; // speed x, unit m/s
|
||||
// chassis_cmd_recv.delta_leglen = -0.0000005f * (float)rc_data[TEMP].rc.dial;
|
||||
// chassis_cmd_recv.offset_angle -= 0.000005 * (float)rc_data[TEMP].rc.rocker_r_;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// chassis_cmd_recv = *(Chassis_Ctrl_Cmd_s *)CANCommGet(cmd_can_comm);
|
||||
// }
|
||||
chassis_cmd_recv = *(Chassis_Ctrl_Cmd_s *)CANCommGet(cmd_can_comm);
|
||||
|
||||
// 右侧拨杆向下,进入遥控器底盘控制,此时不响应云台控制指令
|
||||
if (switch_is_down(rc_data->rc.switch_right) && RemoteControlIsOnline())
|
||||
{
|
||||
if (switch_is_up(rc_data->rc.switch_left))
|
||||
{
|
||||
chassis_cmd_recv.chassis_mode = CHASSIS_RESET;
|
||||
chassis_cmd_recv.vx = 0.5 * (float)rc_data[TEMP].rc.rocker_r1; // speed x, unit m/s
|
||||
chassis_cmd_recv.rotate_w = 0.5 * (float)rc_data[TEMP].rc.rocker_r_;
|
||||
}
|
||||
else
|
||||
{
|
||||
chassis_cmd_recv.chassis_mode = CHASSIS_FREE_DEBUG; // 自由转动&前后
|
||||
chassis_cmd_recv.vx = 0.003 * (float)rc_data[TEMP].rc.rocker_r1; // speed x, unit m/s
|
||||
chassis_cmd_recv.delta_leglen = -0.0000005f * (float)rc_data[TEMP].rc.dial;
|
||||
chassis_cmd_recv.offset_angle -= 0.000005 * (float)rc_data[TEMP].rc.rocker_r_;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chassis_cmd_recv = *(Chassis_Ctrl_Cmd_s *)CANCommGet(cmd_can_comm);
|
||||
}
|
||||
}
|
||||
|
||||
/* 腿缩回复位,只允许驱动轮电机移动 */
|
||||
@@ -267,7 +270,7 @@ static void ResetChassis()
|
||||
chassis.dist = chassis.target_dist = 0;
|
||||
l_side.target_len = r_side.target_len = 0.12;
|
||||
// 角度输入为当前角度
|
||||
chassis_cmd_recv.offset_angle = chassis.target_yaw = chassis.yaw;
|
||||
// chassis_cmd_recv.offset_angle = chassis.target_yaw = chassis.yaw;
|
||||
|
||||
// 撞墙时前后移动保证能重新站立,执行速度输入
|
||||
LKMotorSetRef(l_driven, chassis_cmd_recv.vx + chassis_cmd_recv.rotate_w);
|
||||
@@ -320,7 +323,7 @@ static void WokingStateSet()
|
||||
l_side.target_len = r_side.target_len = 0.12;
|
||||
chassis.dist = chassis.target_dist = 0;
|
||||
// 角度输入为当前角度
|
||||
chassis_cmd_recv.offset_angle = chassis.target_yaw = chassis.yaw;
|
||||
// chassis_cmd_recv.offset_angle = chassis.target_yaw = chassis.yaw;
|
||||
|
||||
for (uint8_t i = 0; i < JOINT_CNT; i++)
|
||||
HTMotorStop(joint[i]);
|
||||
@@ -464,6 +467,6 @@ void BalanceTask()
|
||||
return; // 复位模态或急停,直接退出
|
||||
|
||||
// 运动模态,电机输出映射和限幅
|
||||
WattLimitSet();
|
||||
CANCommSend(cmd_can_comm, (void *)&chassis_feedback_data);
|
||||
// WattLimitSet();
|
||||
// CANCommSend(cmd_can_comm, (void *)&chassis_feedback_data);
|
||||
}
|
||||
Reference in New Issue
Block a user