자율비행 시뮬레이션

안전한 자율비행을 하기 위해서는 사전에 시뮬레이션이 필요합니다. 이전 글에서 진행한 자율비행은 시뮬레이션 없이 진행했습니다. QGroundControl에서 미션을 준거라서 굳이 필요 없기도 했고요. 그런데 Mavlink API를 이용하여 자율비행을 프로그래밍 할 경우에는 비행 전 시뮬레이션을 하는 것은 필수죠.

PX4에서 사용되는 시뮬레이터로는 jmavsimgazebo가 있습니다. 현재(2017년 1월)는 jmavsim 보다는 gazebo가 PX4 mavlink API를 잘 지원하더라고요.

미션 수행 중인 기체 이륙한 곳으로 돌아오기

미션 수행 중인 기체에 Mavlink로 RTL(Return To Launch)명령을 보내고 동작 여부를 시뮬레이션을 통해서 테스트해보았습니다

테스트 환경

  • OS: Ubuntu 14.04 based on docker (https://hub.docker.com/r/osrf/ros/)
  • Simulator: Gazebo7
  • Firmware: PX4 Pro 1.5.3 version ($make posix_sitl_default gazebo)
  • Mavlink Library: pymavlink 2.0.8, mavproxy 1.5.7
  • QGroundControl: 3.1 version (stable)

시뮬레이션 데모

QGrouncControl로 보낸 미션을 수행하는 도중에 telemetry(pymavlink)로 RTL(Return To Launch) Mode 명령을 보내어, 기체가 이륙한 장소로 돌아오는 시나리오를 시뮬레이션 하였습니다.

RTL Mode 명령 보내기

from pymavlink import mavutil

connection_string = '127.0.0.1:14540'

mav = mavutil.mavlink_connection('udp:'+connection_string)
mav.wait_heartbeat()
print("HEARTBEAT OK\n")

mav.mav.command_long_send(1, 1, mavutil.mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH, 0, 0, 0, 0, 0, 0, 0, 0)
[개발] 자율비행 시뮬레이션 (Gazebo)

Leave a Reply

Your email address will not be published. Required fields are marked *