diff --git a/include/dto/missile_target_state.h b/include/dto/missile_target_state.h index faac2b6..2dfa66c 100644 --- a/include/dto/missile_target_state.h +++ b/include/dto/missile_target_state.h @@ -6,9 +6,16 @@ #include "../enum/icd_id.h" // ICD-26: 미사일/표적 참값 상태 (UI -> GCU, 100ms) -// SILS 1단계 UI-GCU 통합 ICD — 미사일(6필드) + 표적(6필드) 참값 전달 -// 좌표계: NED (발사점 원점) -// 위치 스케일 0.01 m (cm), 속도 스케일 0.001 m/s (mm/s) +// SILS 통합 ICD — 미사일(위치·속도·쿼터니언·각속도) + 표적(위치·속도) +// 좌표계: +// - 위치/속도: NED (발사점 원점) +// - 쿼터니언/각속도: Body +// 스케일: +// - 위치: 0.01 m (cm) +// - 속도: 0.001 m/s (mm/s) +// - 쿼터니언: 0.001 (단위 쿼터니언, |q|=1) +// - 각속도: 0.001 rad/s +// - 가속도: 0.001 m/s² (mm/s²) #pragma pack(push, 1) struct MissileTargetState { IcdId message_id; @@ -23,12 +30,26 @@ struct MissileTargetState { int32_t missile_vel_e; int32_t missile_vel_d; - // 미사일 쿼터니언 + // 미사일 쿼터니언 (Body → NED 회전, 0.001 scalar) int32_t q_w; int32_t q_x; int32_t q_y; int32_t q_z; + // 미사일 각속도 (Body frame, 0.001 rad/s) + // omega_p : roll rate (body X) + // omega_q : pitch rate (body Y) + // omega_r : yaw rate (body Z) + int32_t omega_p; + int32_t omega_q; + int32_t omega_r; + + // 미사일 가속도 (Body frame, 0.001 m/s²) + // IMU 가속도계 측정값 (specific force) + int32_t accel_x; // body X (전방) + int32_t accel_y; // body Y (우측) + int32_t accel_z; // body Z (아래) + // 표적 위치 (발사점 기준 NED, 0.01 m) int32_t target_pos_n; int32_t target_pos_e; diff --git a/include/dto/navigation_test_command.h b/include/dto/navigation_test_command.h index fbbe5cf..e4a8271 100644 --- a/include/dto/navigation_test_command.h +++ b/include/dto/navigation_test_command.h @@ -1,13 +1,19 @@ #ifndef NAVIGATION_TEST_COMMAND_H #define NAVIGATION_TEST_COMMAND_H +#include + #include "../enum/icd_id.h" +// ICD-27: 항법시험 명령 (UI -> GCU) +// 시험 시작/종료 알림 +// start = 1 : 시험 시작 (ICD-26/25 송수신 시작) +// start = 0 : 시험 종료 (UART 입력으로 알고리즘 변경 가능) #pragma pack(push, 1) struct NavigationTestCommand { - IcdId message_id; - bool is_start; // 테스트 시작 여부(1 = 시작, 0 = 종료) + IcdId message_id; + uint8_t start; // 1 = 시작, 0 = 종료 }; #pragma pack(pop) -#endif // NAVIGATION_TEST_COMMAND_H \ No newline at end of file +#endif // NAVIGATION_TEST_COMMAND_H diff --git a/include/enum/icd_id.h b/include/enum/icd_id.h index b4f4358..9124d98 100644 --- a/include/enum/icd_id.h +++ b/include/enum/icd_id.h @@ -4,34 +4,39 @@ #include enum class IcdId : uint16_t { - COMMON_PARAMETER = 0x0000, // 공통매개변수(common_parameter) - ACT_INFO = 0x0001, // ACT정보(act_info) - FULL_SYSTEM_INFO = 0x0002, // 부체계 정보 및 GCU 정보(full_system_info) - INS_DATA = 0x0003, // INS값(ins_data) - INS_INFO = 0x0004, // INS정보(ins_info) - SKR_INFO = 0x0005, // SKR정보(skr_info) - FEATURE_INSPECT_COMMAND = 0x0006, // 기능점검명령(feature_inspect_command) - FEATURE_INSPECT_READY_RES = 0x0007, // 기능점검준비완료응답(feature_inspect_ready_res) - TARGET_DISTANCE_REQ = 0x0008, // 목표거리오차요청(target_distance_req) - TARGET_DISTANCE_RES = 0x0009, // 목표거리오차응답(target_distance_res) - POSITION_REQ = 0x000A, // 자세요청(position_req) - POSITION_RES = 0x000B, // 자세응답(position_res) - PIN_CONTROL_REQ = 0x000C, // 핀제어요청(pin_control_req) - PIN_CONTROL_RES = 0x000D, // 핀제어응답(pin_control_res) - FEATURE_INSPECT_FINISH_COMMAND = 0x000E, // 기능점검종료명령(feature_inspect_finish_command) - FEATURE_INSPECT_FINISH_RES = 0x000F, // 기능점검종료응답(feature_inspect_finish_res) - ONE_TEST_RESULT = 0x0010, // 1회 수행결과 전송(one_test_result) - REBOOT_COMMAND = 0x0011, // 재부팅 명령 전송(reboot_command) - REBOOT_RES = 0x0012, // 재부팅 명령 응답(reboot_res) - FEATURE_INSPECT_READY_COMMAND = 0x0013, // 기능점검준비완료명령(feature_inspect_ready_command) - ACT_DATA = 0x0014, // ACT값(act_data) - INS_MAIN_DATA = 0x0015, // INS실제값(ins_main_data) - SKR_MAIN_DATA = 0x0016, // SKR실제값(skr_main_data) - PIN_CONTROL_MAIN_COMMAND = 0x0017, // 핀제어실제명령(pin_control_main_command) - - // SILS 1단계 (SRS-GCU-05 항법유도) 신규 - GUIDANCE_COMMAND = 0x0018, // 유도 명령 (guidance_command) - MISSILE_TARGET_STATE = 0x0019 // 미사일/표적 참값 상태 (missile_target_state) + COMMON_PARAMETER = 0x0000, // 공통매개변수(common_parameter) + ACT_INFO = 0x0001, // ACT정보(act_info) + FULL_SYSTEM_INFO = 0x0002, // 부체계 정보 및 GCU 정보(full_system_info) + INS_DATA = 0x0003, // INS값(ins_data) + INS_INFO = 0x0004, // INS정보(ins_info) + SKR_INFO = 0x0005, // SKR정보(skr_info) + FEATURE_INSPECT_COMMAND = 0x0006, // 기능점검명령(feature_inspect_command) + FEATURE_INSPECT_READY_RES = + 0x0007, // 기능점검준비완료응답(feature_inspect_ready_res) + TARGET_DISTANCE_REQ = 0x0008, // 목표거리오차요청(target_distance_req) + TARGET_DISTANCE_RES = 0x0009, // 목표거리오차응답(target_distance_res) + POSITION_REQ = 0x000A, // 자세요청(position_req) + POSITION_RES = 0x000B, // 자세응답(position_res) + PIN_CONTROL_REQ = 0x000C, // 핀제어요청(pin_control_req) + PIN_CONTROL_RES = 0x000D, // 핀제어응답(pin_control_res) + FEATURE_INSPECT_FINISH_COMMAND = + 0x000E, // 기능점검종료명령(feature_inspect_finish_command) + FEATURE_INSPECT_FINISH_RES = + 0x000F, // 기능점검종료응답(feature_inspect_finish_res) + ONE_TEST_RESULT = 0x0010, // 1회 수행결과 전송(one_test_result) + REBOOT_COMMAND = 0x0011, // 재부팅 명령 전송(reboot_command) + REBOOT_RES = 0x0012, // 재부팅 명령 응답(reboot_res) + FEATURE_INSPECT_READY_COMMAND = + 0x0013, // 기능점검준비완료명령(feature_inspect_ready_command) + ACT_DATA = 0x0014, // ACT값(act_data) + INS_MAIN_DATA = 0x0015, // INS실제값(ins_main_data) + SKR_MAIN_DATA = 0x0016, // SKR실제값(skr_main_data) + PIN_CONTROL_MAIN_COMMAND = + 0x0017, // 핀제어실제명령(pin_control_main_command) + GUIDANCE_COMMAND = 0x0018, // 유도 명령 (guidance_command) + MISSILE_TARGET_STATE = + 0x0019, // 미사일/표적 참값 상태 (missile_target_state) + NAVIGATION_TEST_COMMAND = 0x001A // 항법시험 명령 (navigation_test_command) }; -#endif // ICD_ID_H +#endif // ICD_ID_H