# 드론에 시동걸기(MAV\_CMD\_COMPONENT\_ARM\_DISARM)

## 개요

MAVLINK를 통해 드론에 명령을 내릴때는 COMMAND\_LONG 메시지에 [MAV\_CMD](https://mavlink.io/en/messages/common.html#mav_commands) 값을 사용하여 MAVLINK 커멘드를 전달합니다.

MAV\_CMD에는 이미 정의된 여러개의 명령 메시지들이 정의되어 있으며 COMMAND\_LONG 메시지에 7개파라메터에 정확한 전문의 값을 채워 전달 합니다.

MAV\_CMD에 대한 목록은 아래 링크를 참고 하세요.

{% embed url="<https://mavlink.io/en/messages/common.html#mav_commands>" %}

이번  시간에는 드론에 시동을 걸고 끄는 MAV\_CMD(MAV\_CMD\_COMPONENT\_ARM\_DISARM)를 알아 보고 실습을 통해 드론에 시동을 걸고 꺼 보도록 하겠습니다.

#### MAV\_CMD\_COMPONENT\_ARM\_DISARM ([400](https://mavlink.io/en/messages/common.html#MAV_CMD_COMPONENT_ARM_DISARM) ) <a href="#mav_cmd_component_arm_disarm" id="mav_cmd_component_arm_disarm"></a>

[\[Command\] ](https://mavlink.io/en/messages/common.html#mav_commands)Arms / Disarms a component

<table><thead><tr><th width="155.33333333333331">Param (:Label)</th><th width="296">Description</th><th>Values</th></tr></thead><tbody><tr><td>1: Arm</td><td>0: disarm, 1: arm</td><td><em>min:</em>0 <em>max:</em>1 <em>increment:</em>1</td></tr><tr><td>2: Force</td><td>0: arm-disarm unless prevented by safety checks (i.e. when landed), 21196: force arming/disarming (e.g. allow arming to override preflight checks and disarming in flight)</td><td><em>min:</em>0 <em>max:</em>21196 <em>increment:</em>21196</td></tr></tbody></table>

## 실습

전시간에 작성한 프로그램에 덧붙여 새로운 arm.py 코드를 작성해 봅시다.

<pre class="language-python"><code class="lang-python">from pymavlink import mavutil

# Start a connection listening on a UDP port
# UDP 14550 for primary GSC
#the_connection = mavutil.mavlink_connection('udpin:localhost:14550')
#for ArduPilot
<strong>#the_connection = mavutil.mavlink_connection('tcp:localhost:5763')
</strong>#for PX4-SITL
the_connection = mavutil.mavlink_connection('udp:localhost:14540')

# Wait for the first heartbeat 
#   This sets the system and component ID of remote system for the link
the_connection.wait_heartbeat()
print("Heartbeat from system (system %u component %u)" % (the_connection.target_system, the_connection.target_component))

# Arming COMMAND_LONG
the_connection.mav.command_long_send(the_connection.target_system, the_connection.target_component, 
                                     mavutil.mavlink.MAV_CMD_COMPONENT_ARM_DISARM, 0, 1, 0, 0, 0, 0, 0, 0)
# check response COMMAND_ACK
msg = the_connection.recv_match(type='COMMAND_ACK', blocking=True)
print(msg)
</code></pre>

결과는 다음과 같습니다.

[COMMAND\_ACK](https://mavlink.io/en/messages/common.html#COMMAND_ACK) 메시지를 통해 MAV\_CMD 명령이 정상적으로 수행 되었는지 확인할 수 있습니다.

```
$ python3 arm.py 
Heartbeat from system (system 1 component 0)
COMMAND_ACK {command : 400, result : 0, progress : 0, result_param2 : 0, target_system : 255, target_component : 0}
```

<figure><img src="https://content.gitbook.com/content/yrhT8fUTtAhJoq98NeDs/blobs/vO6KV2kUJsLGdcgUknv2/image.png" alt=""><figcaption></figcaption></figure>
