이번 시간에는 COMMAND_LONG 메시지를 이용하여 드론을 이륙하는 MAV_CMD 명령에 대해 알아 보겠습니다.
드론을 이륙시키기 위해서는 MAV_CMD_NAV_TAKEOFF ( ) 명령을 사용 합니다.
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.).
deg
5: Latitude
Latitude
6: Longitude
Longitude
7: Altitude
Altitude
m
비행 모드 변경
이륙에 앞서 비행모드를 수동 모드가 아닌 GUIDED 모드로 변경 하여야 합니다.
비행 모드 변경 역시 명령을 사용하여 변경 합니다.
의 값을 4(GUIDED)로 주어야 합니다.
# change MODE to GUIDED into COMMAND_LONG
the_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)
# 기체의 최대 고도(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)
[참고] PX4 Offboard 플라이트 모드 설정
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)