From d11b69a0765b05d5678b17b9915e3559227a865b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B6=80=EA=B1=B4?= Date: Tue, 21 Apr 2026 10:08:26 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20SRS-GCU-05=20SILS=201=EB=8B=A8?= =?UTF-8?q?=EA=B3=84=20ICD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ICD-25 guidance_command (GCU->UI, 10ms, NED 가속도 명령) - ICD-26 missile_target_state (UI->GCU, 100ms, 미사일+표적 NED 참값) - IcdId enum에 GUIDANCE_COMMAND(0x0018), MISSILE_TARGET_STATE(0x0019) 추가 - 미사용 RESET_CUR_POSITION_COMMAND(0x0018) 제거 --- include/dto/guidance_command.h | 19 +++++++++++++++ include/dto/missile_target_state.h | 38 ++++++++++++++++++++++++++++++ include/enum/icd_id.h | 5 +++- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 include/dto/guidance_command.h create mode 100644 include/dto/missile_target_state.h diff --git a/include/dto/guidance_command.h b/include/dto/guidance_command.h new file mode 100644 index 0000000..76e6251 --- /dev/null +++ b/include/dto/guidance_command.h @@ -0,0 +1,19 @@ +#ifndef GUIDANCE_COMMAND_H +#define GUIDANCE_COMMAND_H + +#include + +#include "../enum/icd_id.h" + +// ICD-25: 유도 명령 (GCU -> UI, 10ms) +// NED 가속도 명령, 스케일 0.001 m/s², 범위 ±400 m/s² (±40G) +#pragma pack(push, 1) +struct GuidanceCommand { + IcdId message_id; + int32_t a_cmd_n; // 북쪽 방향 가속도 (0.001 m/s²) + int32_t a_cmd_e; // 동쪽 방향 가속도 (0.001 m/s²) + int32_t a_cmd_d; // 아래쪽 방향 가속도 (0.001 m/s²) +}; +#pragma pack(pop) + +#endif // GUIDANCE_COMMAND_H diff --git a/include/dto/missile_target_state.h b/include/dto/missile_target_state.h new file mode 100644 index 0000000..1e132dc --- /dev/null +++ b/include/dto/missile_target_state.h @@ -0,0 +1,38 @@ +#ifndef MISSILE_TARGET_STATE_H +#define MISSILE_TARGET_STATE_H + +#include + +#include "../enum/icd_id.h" + +// ICD-26: 미사일/표적 참값 상태 (UI -> GCU, 100ms) +// SILS 1단계 UI-GCU 통합 ICD — 미사일(6필드) + 표적(6필드) 참값 전달 +// 좌표계: NED (발사점 원점), UI가 WGS84->NED 변환 후 송신 +// 위치 스케일 0.01 m (cm), 속도 스케일 0.001 m/s (mm/s) +#pragma pack(push, 1) +struct MissileTargetState { + IcdId message_id; + + // 미사일 위치 (발사점 기준 NED, 0.01 m) + int32_t missile_pos_n; + int32_t missile_pos_e; + int32_t missile_pos_d; + + // 미사일 속도 (NED, 0.001 m/s) + int32_t missile_vel_n; + int32_t missile_vel_e; + int32_t missile_vel_d; + + // 표적 위치 (발사점 기준 NED, 0.01 m) + int32_t target_pos_n; + int32_t target_pos_e; + int32_t target_pos_d; + + // 표적 속도 (NED, 0.001 m/s) + int32_t target_vel_n; + int32_t target_vel_e; + int32_t target_vel_d; +}; +#pragma pack(pop) + +#endif // MISSILE_TARGET_STATE_H diff --git a/include/enum/icd_id.h b/include/enum/icd_id.h index 1666046..b4f4358 100644 --- a/include/enum/icd_id.h +++ b/include/enum/icd_id.h @@ -28,7 +28,10 @@ enum class IcdId : uint16_t { 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) - RESET_CUR_POSITION_COMMAND = 0x0018 // 현재위치 초기화 명령(reset_cur_position_command) + + // SILS 1단계 (SRS-GCU-05 항법유도) 신규 + GUIDANCE_COMMAND = 0x0018, // 유도 명령 (guidance_command) + MISSILE_TARGET_STATE = 0x0019 // 미사일/표적 참값 상태 (missile_target_state) }; #endif // ICD_ID_H From ddb60e37b0e0a4f21ab2e1f20838927bf6fdb6e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B6=80=EA=B1=B4?= Date: Tue, 21 Apr 2026 10:18:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dto/guidance_command.h | 8 ++++---- include/dto/missile_target_state.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/dto/guidance_command.h b/include/dto/guidance_command.h index 76e6251..ee62ca5 100644 --- a/include/dto/guidance_command.h +++ b/include/dto/guidance_command.h @@ -9,10 +9,10 @@ // NED 가속도 명령, 스케일 0.001 m/s², 범위 ±400 m/s² (±40G) #pragma pack(push, 1) struct GuidanceCommand { - IcdId message_id; - int32_t a_cmd_n; // 북쪽 방향 가속도 (0.001 m/s²) - int32_t a_cmd_e; // 동쪽 방향 가속도 (0.001 m/s²) - int32_t a_cmd_d; // 아래쪽 방향 가속도 (0.001 m/s²) + IcdId message_id; + int32_t a_cmd_n; // 북쪽 방향 가속도 (0.001 m/s²) + int32_t a_cmd_e; // 동쪽 방향 가속도 (0.001 m/s²) + int32_t a_cmd_d; // 아래쪽 방향 가속도 (0.001 m/s²) }; #pragma pack(pop) diff --git a/include/dto/missile_target_state.h b/include/dto/missile_target_state.h index 1e132dc..4f3b986 100644 --- a/include/dto/missile_target_state.h +++ b/include/dto/missile_target_state.h @@ -7,7 +7,7 @@ // ICD-26: 미사일/표적 참값 상태 (UI -> GCU, 100ms) // SILS 1단계 UI-GCU 통합 ICD — 미사일(6필드) + 표적(6필드) 참값 전달 -// 좌표계: NED (발사점 원점), UI가 WGS84->NED 변환 후 송신 +// 좌표계: NED (발사점 원점) // 위치 스케일 0.01 m (cm), 속도 스케일 0.001 m/s (mm/s) #pragma pack(push, 1) struct MissileTargetState {