From 5fc29da3e81284e1bb7cd0b772227ba4f0753133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A2=85=EC=9B=90?= Date: Tue, 19 May 2026 14:06:18 +0900 Subject: [PATCH 1/2] =?UTF-8?q?imu=5Fattitude=5Ffeedback,=20imu=5Fcalibrat?= =?UTF-8?q?ion=5Fdata=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20telemetry=5Fdata?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dto/imu_attitude_feedback.h | 25 +++++++++++++++++++++++++ include/dto/imu_calibration_data.h | 22 ++++++++++++++++++++++ include/dto/telemetry_data.h | 6 +++--- 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 include/dto/imu_attitude_feedback.h create mode 100644 include/dto/imu_calibration_data.h diff --git a/include/dto/imu_attitude_feedback.h b/include/dto/imu_attitude_feedback.h new file mode 100644 index 0000000..b80d2d5 --- /dev/null +++ b/include/dto/imu_attitude_feedback.h @@ -0,0 +1,25 @@ +#ifndef IMU_ATTITUDE_FEEDBACK_H +#define IMU_ATTITUDE_FEEDBACK_H + +#include + +#include "../enum/icd_id.h" + +#pragma pack(push, 1) +/** + * @brief imu 자세 피드백(imu_attitude_feedback) + * ICD-38 + */ +struct ImuAttitudeFeedback { + IcdId message_id; // imu로 측정한 미사일 표적 상태를 나타내는 식별자 (0x0025) + int32_t imu_quaternion_x; // imu 쿼터니언 x (0.001) + int32_t imu_quaternion_y; // imu 쿼터니언 y (0.001) + int32_t imu_quaternion_z; // imu 쿼터니언 z (0.001) + int32_t imu_quaternion_w; // imu 쿼터니언 w (0.001) + int32_t imu_angular_velocity_p; // imu 각속도 p (0.001 rad/s) + int32_t imu_angular_velocity_q; // imu 각속도 q (0.001 rad/s) + int32_t imu_angular_velocity_r; // imu 각속도 r (0.001 rad/s) +}; +#pragma pack(pop) + +#endif // IMU_ATTITUDE_FEEDBACK_H diff --git a/include/dto/imu_calibration_data.h b/include/dto/imu_calibration_data.h new file mode 100644 index 0000000..22c2ae5 --- /dev/null +++ b/include/dto/imu_calibration_data.h @@ -0,0 +1,22 @@ +#ifndef IMU_CALIBRATION_DATA_H +#define IMU_CALIBRATION_DATA_H + +#include + +#include "../enum/icd_id.h" + +#pragma pack(push, 1) +/** + * @brief imu 캘리브레이션 데이터(imu_calibration_data) + * ICD-39 + */ +struct ImuCalibrationData { + IcdId message_id; // imu 캘리브레이션 데이터를 나타내는 식별자 (0x0026) + int32_t ui_quaternion_x; // ui가 측정한 NED 쿼터니언 값 (0.001) + int32_t ui_quaternion_y; // ui가 측정한 NED 쿼터니언 값 (0.001) + int32_t ui_quaternion_z; // ui가 측정한 NED 쿼터니언 값 (0.001) + int32_t ui_quaternion_w; // ui가 측정한 NED 쿼터니언 값 (0.001) +}; +#pragma pack(pop) + +#endif // IMU_CALIBRATION_DATA_H diff --git a/include/dto/telemetry_data.h b/include/dto/telemetry_data.h index 8077a18..ad1c2eb 100644 --- a/include/dto/telemetry_data.h +++ b/include/dto/telemetry_data.h @@ -4,15 +4,15 @@ #include #include "../enum/icd_id.h" -#include "ins_main_data.h" +#include "imu_attitude_feedback.h" #include "skr_main_data.h" #pragma pack(push, 1) struct TelemetryData { IcdId message_id; - InsMainData ins_data; + ImuAttitudeFeedback imu_data; SkrMainData skr_data; }; #pragma pack(pop) -#endif // TELEMETRY_DATA_H +#endif // TELEMETRY_DATA_H From d9a035ebbfd5c93f7b2ef9e232a73be3f69cd069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A2=85=EC=9B=90?= Date: Tue, 19 May 2026 15:21:19 +0900 Subject: [PATCH 2/2] =?UTF-8?q?enum=EC=97=90=20icd=2038,39=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/enum/icd_id.h | 70 +++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/include/enum/icd_id.h b/include/enum/icd_id.h index dcf45e8..337d95e 100644 --- a/include/enum/icd_id.h +++ b/include/enum/icd_id.h @@ -4,44 +4,42 @@ #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) + 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) - FIN_CONTROL_REQ = 0x000C, // 핀제어요청(fin_control_req) - FIN_CONTROL_RES = 0x000D, // 핀제어응답(fin_control_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) + FIN_CONTROL_REQ = 0x000C, // 핀제어요청(fin_control_req) + FIN_CONTROL_RES = 0x000D, // 핀제어응답(fin_control_res) FEATURE_INSPECT_FINISH_COMMAND = - 0x000E, // 기능점검종료명령(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) + 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) - FIN_CONTROL_MAIN_COMMAND = - 0x0017, // 핀제어실제명령(fin_control_main_command) - GUIDANCE_COMMAND = 0x0018, // 유도 명령 (guidance_command) - MISSILE_TARGET_STATE = - 0x0019, // 미사일/표적 참값 상태 (missile_target_state) - NAVIGATION_TEST_COMMAND = 0x001A, // 항법시험 명령 (navigation_test_command) - CONTROL_TEST_COMMAND = 0x001B, // 제어시험 명령 (control_test_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) + FIN_CONTROL_MAIN_COMMAND = 0x0017, // 핀제어실제명령(fin_control_main_command) + GUIDANCE_COMMAND = 0x0018, // 유도 명령 (guidance_command) + MISSILE_TARGET_STATE = 0x0019, // 미사일/표적 참값 상태 (missile_target_state) + NAVIGATION_TEST_COMMAND = 0x001A, // 항법시험 명령 (navigation_test_command) + CONTROL_TEST_COMMAND = 0x001B, // 제어시험 명령 (control_test_command) CONTROL_TEST_MISSILE_TARGET_STATE = - 0x001C, // 제어시험 미사일/표적 상태 (control_test_missile_target_state) + 0x001C, // 제어시험 미사일/표적 상태 (control_test_missile_target_state) CONTROL_TEST_ATTITUDE_FEEDBACK = - 0x001D, // 제어시험 자세 피드백 (control_test_attitude_feedback) + 0x001D, // 제어시험 자세 피드백 (control_test_attitude_feedback) PCAM_VIDEO_DATA = 0x001E, // PCA 비디오 데이터 (pcam_video_data) HOMING_START_COMMAND = 0x001F, // homing_start_command HOMING_START_RES = 0x0020, // homing_start_res @@ -49,11 +47,13 @@ enum class IcdId : uint16_t { HOMING_END_RES = 0x0022, // homing_end_res TELEMETRY_DATA = 0x0023, // telemetry_data HILS_ROTATE_COMMAND = 0x0024, // hils_rotate_command + IMU_ATTITUDE_FEEDBACK = 0x0025, // imu_attitude_feedback + IMU_CALIBRATION_DATA = 0x0026, // imu_calibration_data // 아래는 테스트용 ICD ID입니다. 실제 운용에서는 사용X. COMM_RELIABLE_TEST = - 0xFFF0, // 통신 신뢰성 테스트용 ICD ID (comm_reliable_test) + 0xFFF0, // 통신 신뢰성 테스트용 ICD ID (comm_reliable_test) COMM_BIG_DATA_TEST = - 0xFFF1 // 통신 대용량 데이터 테스트용 ICD ID (comm_big_data_test) + 0xFFF1 // 통신 대용량 데이터 테스트용 ICD ID (comm_big_data_test) }; -#endif // ICD_ID_H +#endif // ICD_ID_H