그래서 QGC를 이용할 때는 AUTO 모드라고 가정을 하고, 명령을 내릴 것이다.
https://velog.io/@azurp158/7.-test1.py드론-조종-관련
여기에서 manual_control_send와 관련된 함수들은 모두 먹통이었다. 뿐만 아니라 set_mode_send, master.mode_mapping의 경우에도 뭔가 문제가 많았다. mode_mapping 같은 경우 예상대로라면 정수를 반환해야하는데 튜플을 반환한다던지, 문제가 많았다. 관련된 자료를 찾아보았지만, 우리와 같은 문제를 가진 경우는 거의 없었다.
실질적인 시간이 2주도 남지 않은 상황이라, 빠르게 진행되어야 하는데 드론이 명령을 먹지 않자 멘붕이 온 상태였다.
어쩔 수 없이, 여태까지 작동이 됐었던 command_long_send를 이용하기로 했다.
from pymavlink import mavutil
master = mavutil.mavlink_connection('udpin:0.0.0.0:14550')
master.wait_heartbeat()
print('Drone is connected!')
msg = master.recv_match(type='HEARTBEAT', blocking=True)
current_mode = mavutil.mode_string_v10(msg)
print("Current Mode:", current_mode)
//드론 모드 설정
input('hello')
//드론 ARM/DISARM
master.mav.command_long_send(master.target_system, master.target_component, mavutil.mavlink.MAV_CMD_COMPONENT_ARM_DISARM, 0, 1, 0, 0, 0, 0, 0, 0)
msg = master.recv_match(type='COMMAND_ACK', blocking=True)
print(msg)
input('hello')
// 드론 TAKEOFF
master.mav.command_long_send(master.target_system, master.target_component, mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, 0, 0, 0, 0, 0, 0, 0, 3)
msg = master.recv_match(type='COMMAND_ACK', blocking=True)
print(msg)
//드론 이동(위도 경도 설정 필요)
speed = 1
direction = 0;
latitude =
longitude =
altitude = 5
master.command_long_send(target_system, target_component, mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 0, speed, direction, 0, 0, latitude, longitude, altitude, 0)
msg = master.recv_match(type='COMMAND_ACK', blocking=True)
print(msg)
// 드론 착륙
master.command_long_send(target_system, target_component, mavutil.mavlink.MAV_CMD_NAV_LAND, 0, speed, 0, 0, 0, 0, 0, 0, 0)
msg = master.recv_match(type='COMMAND_ACK', blocking=True)
print(msg)