시뮬레이션 테스트
cd ~/PX4-Autopilot
# Gazebo 시뮬레이터에서 기본 드론(Iris) 실행
make px4_sitl g*z_x500*
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분 이상)
빌드가 완료되었으면 해당 명령어를 쳐서 잘 들어오는지 보자.
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
해당 코드는 적어도 분석은 해보자!!