PX4 & ROS2 User Guide

오늘은 저번시간에 PX4와 ROS2를 사용하기 위해 셋팅했던 px4-ros2에 대해 간단하게 정리한 내용이다. (까먹지 않을 정도만)

PX4-ROS2 아키텍처

architecture_xrce-dds_ros2 DXSOuyOh

  • ROS2 publisher와 subscriber가 PX4 uORB topic들과 다이렉트로 소통 가능

  • uXRCE-DDS communication middleware 사용

  • PX4: uXRCE-DDS client (펌웨어에 default로 세팅되어 있음, 시뮬레이션에서는 자동적으로 켜지지만 직접적인 하드웨어 FC의 경우 다른 작업이 필요)

  • ROS2: uXRCE-DDS agnet (Companion computer에서 세팅이 필요)

  • FC와 Companion computer는 UART/UDP/TCP/Serial 등으로 연결

  • ROS2 workspace에는 사용되는 PX4_msgs를 포함시켜야 함

  • ROS2를 사용할 때 client와 agent 둘 다 실행되어야 함

Controlling a vehicle

  • PX4로부터 publish되는 telemetry topic들은 ROS2 workspace에서 subscribe

  • PX4가 action할 수 있도록 workspace에서 topic publish

  • (예시) VehicleGlobalPosition과 VehicleCommand topic을 이용해서 움직일 수 있음

Compatibility Issues

  • QoS 세팅: PX4와 ROS2의 초기 세팅이 다름

  • ROS2, PX4 Frame Conventions -> 서로 사용하는 좌표계가 다름

  • PX4/px4-ros-com 패키지가 frame_transform을 쉽게 할 수 있도록 라이브러리 제공

ROS, Gazebo, PX4 time synchronization

  • ROS2, PX4는 uXRCE-DDS middleware에 의해 자동적으로 관리됨

  • (시뮬레이션에서는) OS clock과 Gazebo clock으로 세팅 가능

기타

  • uORB topic 커스텀 가능

Referece

https://docs.px4.io/main/en/ros/ros2_comm.html