Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions include/dto/missile_target_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
12 changes: 9 additions & 3 deletions include/dto/navigation_test_command.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
#ifndef NAVIGATION_TEST_COMMAND_H
#define NAVIGATION_TEST_COMMAND_H

#include <cstdint>

#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
#endif // NAVIGATION_TEST_COMMAND_H
63 changes: 34 additions & 29 deletions include/enum/icd_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,39 @@
#include <cstdint>

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