이번 시간에는 COMMAND_LONG 메시지를 이용하여 드론을 이륙하는 MAV_CMD 명령에 대해 알아 보겠습니다.
드론을 이륙시키기 위해서는 MAV_CMD_NAV_TAKEOFF (22 ) 명령을 사용 합니다.
MAV_CMD_NAV_TAKEOFF 전문
파라메터
설명
단위
1: Pitch
Minimum pitch (if airspeed sensor present), desired pitch without sensor
deg
2
Empty
3
Empty
4: Yaw
Yaw angle (if magnetometer present), ignored without magnetometer. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).
# change MODE to GUIDED into COMMAND_LONGthe_connection.mav.command_long_send(the_connection.target_system, the_connection.target_component, mavutil.mavlink.MAV_CMD_DO_SET_MODE,0,1,4,0,0,0,0,0)
이륙 명령
이전 시간에 작성한 arm.py 프로그램에 위의 코드를 추가하고 takeoff.py 이름으로 저장한후 실행해 보겠습니다.
실행결과는 다음과 같습니다.
드론의 비행 모드가 GUIDED 모드로 변경후 정상적으로 10m 고도로이륙한 것을 볼 수 있습니다.
# 기체의 최대 고도(meter)
target_altitude = 10
# 최대 고도에 도달할 때까지 반복
while True:
# MSG_ID_GLOBAL_POSITION_INT (33)로부터 GPS 고도 정보 수신
msg = master.recv_match(type='GLOBAL_POSITION_INT', blocking=True)
# GPS_AP보다 GLOBAL_POSITION_INT를 이용하는 것을 추천
# msg = master.recv_match(type='ALTITUDE', blocking=True)
if not msg:
continue
# 기체의 현재 고도(meter)
current_altitude = msg.relative_alt / 1000.0 # 1cm 단위이므로 1000으로 나누어 meter로 변환
# 현재 고도 출력
print(f"Altitude: {current_altitude:.2f}m")
# 최대 고도 도달 확인
if current_altitude >= target_altitude:
print(f"Reached target altitude of {target_altitude}m")
break
time.sleep(1)
param1: VEHICLE_MODE_FLAG_CUSTOM_MODE_ENABLED (1, see commander/commander.cpp)
param2: PX4_CUSTOM_MAIN_MODE_OFFBOARD (6, see commander/px4_custom_mode.h)