Gazebo, Ros, Yolov5를 활용한 군집드론추적 - 1
지난 포스트에서 Yolo와 goturn 모델로 상대 드론을 탐지하는 단계까지 구현했다.
이번 포스트에서는 드론을 mavsdk를 활용하여 추적알고리즘을 구현 할 수 있도록 파이썬 코드(→ px4)로 드론을 제어하는 offboard제어를 구현할 것이다.
MAVSDK는 MAVLink 프로토콜을 사용하는 드론과의 통신을 위한 라이브러리이다.
//mavsdk 다운
pip3 install mavsd
import asyncio
from mavsdk import System
from mavsdk.offboard import (VelocityNedYaw,PositionNedYaw, OffboardError)
import logging
logging.basicConfig(level=logging.DEBUG)
SCREEN_WIDTH = 1280/2
SCREEN_HEIGHT = 720/2
async def run():
""" Does Offboard control using attitude commands. """
print("Waiting for drone to connect1...")
drone = System(mavsdk_server_address='localhost', port=50051)
print("Waiting for drone to connect1.5..")
await drone.connect(system_address="udp://:14540")
print("Waiting for drone to connect2...")
async for state in drone.core.connection_state():
if state.is_connected:
print(f"-- Connected to drone!")
break
print("Waiting for drone to have a global position estimate...")
async for health in drone.telemetry.health():
if health.is_global_position_ok and health.is_home_position_ok:
print("-- Global position estimate OK")
break
print("-- Arming")
await drone.action.arm()
print("-- Taking off")
await drone.action.takeoff()
print("-- Setting initial setpoint")
await drone.offboard.set_velocity_ned(VelocityNedYaw(0.0, 0.0, 0.0, 0.0))
await drone.offboard.set_position_ned(PositionNedYaw(0 ,0 ,-5 ,0))
print("-- Starting offboard")
try:
await drone.offboard.start()
except OffboardError as error:
print(f"Starting offboard mode failed with error code: \\
{error._result.result}")
print("-- Disarming")
await drone.action.disarm()
return
await drone.offboard.set_position_ned(PositionNedYaw(0 ,0 ,-5 ,0))
await asyncio.sleep(5)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
이전 코드 실행 후
$ '/home/woo/yolov5env/lib/python3.8/site-packages/mavsdk/bin/mavsdk_server'
mavsdk서버 활성화.
해당 코드는 mavsdk로 Mavlink에 연결된 드론을 연동 후 Offboard로 드론에 이륙 명령을 전송한 코드이다.
해당 코드를 활용하여 앞전의 Post에서 작성한 drone-tracking.py를 연동하여 추적 알고리즘을 통한 상대 드론을 추적하는 코드를 작성할 것이다.

참고자료: https://medium.com/@yashuff10/active-tracking-using-opencv-and-px4-drone-simulation-825ca8fa580f