# PX4 Offboard 모드에서만 유효한 주요 MAV\_CMD

> 아래 명령들은 **오직 Offboard 모드에서만** **"accept"되고 수행**되며, 다른 모드에서는 **"Command Denied" 또는 무시됨**:

***

### 🔹 1. 위치/속도/가속도/자세 제어 관련 명령

<table><thead><tr><th>MAV_CMD</th><th width="225">설명</th><th>비고</th></tr></thead><tbody><tr><td><code>MAV_CMD_DO_SET_POSITION</code></td><td>위치 직접 제어</td><td>비공식 / 내부 구현 필요</td></tr><tr><td><code>MAV_CMD_DO_SET_POSITION_LOCAL</code></td><td>로컬 프레임 위치 설정</td><td>NED 또는 ENU 기준</td></tr><tr><td><code>MAV_CMD_DO_SET_VELOCITY</code></td><td>속도 제어</td><td>PX4 자체 구현 없음 (속도 토픽 사용 권장)</td></tr><tr><td><code>MAV_CMD_DO_SET_VELOCITY_LOCAL</code></td><td>로컬 속도 제어</td><td>MAVROS setpoint_velocity 대응</td></tr><tr><td><code>MAV_CMD_DO_SET_ATTITUDE</code></td><td>자세 설정 (Roll/Pitch/Yaw)</td><td>MAVROS setpoint_attitude 대응</td></tr><tr><td><code>MAV_CMD_DO_SET_ATTITUDE_TARGET</code></td><td>자세 + 스러스트 제어</td><td>Attitude target과 yaw_rate</td></tr><tr><td><code>MAV_CMD_DO_SET_ACTUATOR</code></td><td>직접 actuator 제어</td><td>실험적</td></tr></tbody></table>

***

### 🔹 2. Offboard 모드 유지/전환 관련

| MAV\_CMD                    | 설명                              |
| --------------------------- | ------------------------------- |
| `MAV_CMD_DO_SET_MODE`       | 모드를 `OFFBOARD`로 설정 (모드 전환용)     |
| `MAV_CMD_NAV_GUIDED_ENABLE` | 수동 guided 제어 활성화 (Offboard 지원용) |

***

### 🔹 3. MAVROS / MAVSDK에서 자주 사용하는 연속 명령 흐름

이건 직접 `MAV_CMD`는 아니지만, Offboard 모드에서 **이 토픽 메시지만 인식**합니다:

| 메시지 타입                          | 목적                       |
| ------------------------------- | ------------------------ |
| `SET_POSITION_TARGET_LOCAL_NED` | 위치/속도/가속도/yaw 제어 (주로 사용) |
| `SET_ATTITUDE_TARGET`           | 자세/스로틀 제어                |
| `SET_ACTUATOR_CONTROL_TARGET`   | 직접 모터/서보 제어 (고급용)        |

***

## ✅ 반드시 Offboard 모드일 때만 수신되는 이유

PX4는 다음 조건이 만족해야만 Offboard 명령을 수행합니다:

| 조건                 | 설명                                                 |
| ------------------ | -------------------------------------------------- |
| 현재 모드 = OFFBOARD   | `commander mode offboard` 또는 `MAV_CMD_DO_SET_MODE` |
| Offboard 메시지 연속 수신 | 예: `SET_POSITION_TARGET_*` 100ms 이하 주기             |
| safety 상태 OK       | Armed 상태에서만 움직임 수행                                 |

***

## ✅ 예제: MAVROS Offboard 제어 중 유효한 명령

* `SET_POSITION_TARGET_LOCAL_NED`
* `MAV_CMD_DO_SET_MODE (PX4_CUSTOM_MAIN_MODE=OFFBOARD)`
* `SET_ATTITUDE_TARGET`

그 외의 일반 `MAV_CMD_NAV_TAKEOFF`, `MAV_CMD_NAV_WAYPOINT` 등은 **Auto 모드 전용**이며\
Offboard에서는 무시됩니다.

***

## ✍️ 요약

| 범주       | Offboard 모드 전용 MAV\_CMD                                                 |
| -------- | ----------------------------------------------------------------------- |
| 위치/속도 제어 | `MAV_CMD_DO_SET_POSITION_LOCAL`, `MAV_CMD_DO_SET_VELOCITY_LOCAL`        |
| 자세 제어    | `MAV_CMD_DO_SET_ATTITUDE_TARGET`                                        |
| 모드 전환    | `MAV_CMD_DO_SET_MODE (→ OFFBOARD)`, `MAV_CMD_NAV_GUIDED_ENABLE`         |
| 기타       | `SET_POSITION_TARGET_*`, `SET_ATTITUDE_TARGET` 메시지들은 Offboard 모드에서만 실행됨 |
