feat: add DEBUG mode with host-side PID tuning, motor enable/disable protection
- Add DEBUG mode (parallel to AUTO/MANUAL) for real-time PID parameter tuning - New 0xA8 debug frame: 12 floats for vision/motor angle PID tuning params - DMMotorSetMode: send zero-velocity before disable, clear PID to prevent jumps - motor_enable topic: pub from robot_cmd, sub in gimbal, controls motor on/off - motor_pid topic: pub from robot_cmd, sub in gimbal, updates motor angle PID - Rename DM motor enums (DM_CMD_ENABLE_MODE/DISABLE_MODE, DM_Motor_Ctrl_Mode_e) - SwitchToAuto/Manual: re-enable motors when switching back from DEBUG mode - Static-allocate enable_msg/pid_tune in GimbalTask to avoid stack churn - Add docs/host_comm_guide.md with Python Tkinter tuning GUI example - Remove ARCHITECTURE.md
This commit is contained in:
@@ -42,6 +42,25 @@ static void DecodeVision()
|
||||
memcpy(&vision_data.pitch_ref, buf + 6, 4);
|
||||
vision_data.manual_updated = 1;
|
||||
}
|
||||
else if (sof == VISION_SOF_DEBUG && len == VISION_DEBUG_LEN)
|
||||
{
|
||||
if (calc_checksum(buf, VISION_DEBUG_LEN) != buf[VISION_DEBUG_LEN - 1])
|
||||
return;
|
||||
uint8_t *p = buf + 1;
|
||||
memcpy(&vision_data.vision_yaw_Kp, p, 4); p += 4;
|
||||
memcpy(&vision_data.vision_yaw_Ki, p, 4); p += 4;
|
||||
memcpy(&vision_data.vision_yaw_Kd, p, 4); p += 4;
|
||||
memcpy(&vision_data.vision_pitch_Kp, p, 4); p += 4;
|
||||
memcpy(&vision_data.vision_pitch_Ki, p, 4); p += 4;
|
||||
memcpy(&vision_data.vision_pitch_Kd, p, 4); p += 4;
|
||||
memcpy(&vision_data.motor_yaw_Kp, p, 4); p += 4;
|
||||
memcpy(&vision_data.motor_yaw_Ki, p, 4); p += 4;
|
||||
memcpy(&vision_data.motor_yaw_Kd, p, 4); p += 4;
|
||||
memcpy(&vision_data.motor_pitch_Kp, p, 4); p += 4;
|
||||
memcpy(&vision_data.motor_pitch_Ki, p, 4); p += 4;
|
||||
memcpy(&vision_data.motor_pitch_Kd, p, 4);
|
||||
vision_data.debug_updated = 1;
|
||||
}
|
||||
else if (sof == VISION_SOF_CMD && len == VISION_CMD_LEN)
|
||||
{
|
||||
if (calc_checksum(buf, VISION_CMD_LEN) != buf[VISION_CMD_LEN - 1])
|
||||
|
||||
Reference in New Issue
Block a user