PX4 & ROS2 User Guide
오늘은 저번시간에 PX4와 ROS2를 사용하기 위해 셋팅했던 px4-ros2에 대해 간단하게 정리한 내용이다. (까먹지 않을 정도만)
PX4-ROS2 아키텍처
-
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 커스텀 가능