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
40 changes: 40 additions & 0 deletions include/dto/control_test_attitude_feedback.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#ifndef CONTROL_TEST_ATTITUDE_FEEDBACK_H
#define CONTROL_TEST_ATTITUDE_FEEDBACK_H

#include <cstdint>

#include "../enum/icd_id.h"

// 좌표계:
// - 쿼터니언/각속도/가속도: Body
// 스케일:
// - 쿼터니언: 0.001 (단위 쿼터니언, |q|=1)
// - 각속도: 0.001 rad/s
// - 가속도: 0.001 m/s² (mm/s²)
#pragma pack(push, 1)
struct ControlTestAttitudeFeedback {
IcdId message_id;

// 미사일 쿼터니언 (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 (아래)
};
#pragma pack(pop)

#endif // CONTROL_TEST_ATTITUDE_FEEDBACK_H
15 changes: 15 additions & 0 deletions include/dto/control_test_command.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef CONTROL_TEST_COMMAND_H
#define CONTROL_TEST_COMMAND_H

#include <cstdint>

#include "../enum/icd_id.h"

#pragma pack(push, 1)
struct ControlTestCommand {
IcdId message_id;
uint8_t start; // 1 = 시작, 0 = 종료
};
#pragma pack(pop)

#endif // CONTROL_TEST_COMMAND_H
39 changes: 39 additions & 0 deletions include/dto/control_test_missile_target_state.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#ifndef CONTROL_TEST_MISSILE_TARGET_STATE_H
#define CONTROL_TEST_MISSILE_TARGET_STATE_H

#include <cstdint>

#include "../enum/icd_id.h"

// 좌표계:
// - 위치/속도: NED (발사점 원점)
// 스케일:
// - 위치: 0.01 m (cm)
// - 속도: 0.001 m/s (mm/s)
#pragma pack(push, 1)
struct ControlTestMissileTargetState {
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 // CONTROL_TEST_MISSILE_TARGET_STATE_H
8 changes: 2 additions & 6 deletions include/dto/navigation_test_command.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,10 @@

#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;
uint8_t start; // 1 = 시작, 0 = 종료
IcdId message_id;
uint8_t start; // 1 = 시작, 0 = 종료
};
#pragma pack(pop)

Expand Down
5 changes: 5 additions & 0 deletions include/enum/icd_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ enum class IcdId : uint16_t {
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)
CONTROL_TEST_ATTITUDE_FEEDBACK =
0x001D // 제어시험 자세 피드백 (control_test_attitude_feedback)
COMM_RELIABLE_TEST = 0xFFF0, // 통신 신뢰성 테스트용 ICD ID (comm_reliable_test)
COMM_BIG_DATA_TEST = 0xFFF1 // 통신 대용량 데이터 테스트용 ICD ID (comm_big_data_test)
};
Expand Down