1. 시뮬레이션 테스트

    cd ~/PX4-Autopilot
    # Gazebo 시뮬레이터에서 기본 드론(Iris) 실행
    make px4_sitl g*z_x500*
    
  2. ROS2와 PX4 연결 확인

    2-1. 에이전트 실행 (ROS2와 PX4 연결 확인 하는 것)

    # UDP 포트 8888을 통해 PX4와 대화 시작
    MicroXRCEAgent udp4 -p 8888
    

    2-2. PX4 실행

    cd ~/PX4-Autopilot
    export LIBGL_ALWAYS_SOFTWARE=1
    make px4_sitl gz_x500
    

    2-3. ROS2에서 topic 확인하기.

    # ROS 2에서 드론의 데이터를 읽을 수 있는지 확인
    ros2 topic list
    

    (리스트에 /fmu/out/vehicle_out)과 같은 topic이 나오면 성공이다.

    PX4로 드론 띄우기!

    PX4를 실행하면 pxh> 라는 별도의 command 창이 생긴다. 이 때 드론의 상태를 확인해보자.

    pxh> commander status
    

    드론이 현재 비행을 할 수 있는지 할 수 없는지 나타난다. 만약에 할 수 없다면 GCS 등이 없기 때문에 비행을 할 수 없다고 나온다. GCS가 없다고 뜨면 파라미터 값을 조정하여 해당 경고를 무시할 수 있다.

다음 ROS2에서 드론이 보내는 데이터를 읽어보자. ROS2에서 드론이 보내는 데이터를 읽기 위해서는 px4_msgs 패키지를 설치하고 빌드해야 한다.

cd ~/ros2_ws/src
git clone <https://github.com/PX4/px4_msgs.git>
cd ~/ros2_ws
colcon build --packages-select px4_msgs

(빌드 과정이 꽤 오래 걸린다 15분 이상)

빌드가 완료되었으면 해당 명령어를 쳐서 잘 들어오는지 보자.

  1. GCS 다운로드

px4에서 preflight fail이라고 뜨면서 이유로 GCS가 없다고 하는 경우가 있을 것이다. 이럴 경우를 대비해서 GCS 다운로드를 하는 방법이다.

https://www.google.com/search?q=http://qgroundcontrol.com/downloads/

여기서 다운로드를 받은 후 다운로드 받은 경로에 다음 명령어를 치자.

chmod +x QGroundControl.AppImage
./QGroundControl.AppImage

이러면 GCS가 켜지면서 드론이 takeoff 할 준비가 되고 다음 명령어들이 가능할 것이다.

# 시동
pxh> commander arm
# 이륙
pxh> commander takeoff
# 착륙
pxh> commander land
  1. Open-loop 비행 시키기

해당 코드는 적어도 분석은 해보자!!