LoginSignup
11
4

More than 3 years have passed since last update.

PX4とDDS-RTPSの関係

Posted at

概要

PX4で、DDS eProsima Fast-RTPSっぽいのを使っているという情報を聞いたので、おおよその概要を調査してみる。実際のPX4はないので、あくまでソースなどの公開情報からわかる範囲と、想像のみで調査。DDSとしては、ここにすべての仕様が公開されているので、参考にしてほしい。

結論

PX4 firmwareとDDSの世界(例えば、ROS1/ROS2、他のDDS application)を繋ぐためのbridgeを構築して、CPU側で適当な処理をすることで、PX4の制御やPX4の情報取得などを柔軟にできるようにしようとしている。

トピックス

PX4-FastRTPS Bridge

PX4-FastRTPS Bridgeが一番情報が多い。

下の図からわかる通り、PX4自体とそれを接続する先(via UART or UDP)でPX4コンポーネントが使用するuORB messageをRTPS messageに変換する責務を担っている。つまり、uORB / DDS-RTPSを接続できることで、オフロード先でRTPS applicationを開発してPX4と接続できるということ。

RTPS Bridge

Client/Agentアーキテクチャによって、複数のClientがAgentに対して接続できる形をとっていることがわかる。
物理的な接続にはUART or UDPと記載されている。(UART接続のほうがデバイス間接続には一般的のような気がするが、なぜUDP??)

Client/AgentのソースコードはPX4 firmwareをbuildすることで生成されるようになっている。

ROS1/ROS2との関係

ROS1/ROS2とも以下の図の通り、接続はアーキテクチャ的には可能だが、Real-Timeなのかはわからない。ROS1にとっては通信はできるレベルで、性能はかなり悪く実際に使える状態なのか疑問。

オフロード側のpackageとしては、px4_ros_comが必要で、px4_ros_comによってROS1/ROS2側での通信が可能となる。

PX4 with ROS2

PX4 with ROS1

eProsima Repository

PX4-FastRTPS-PoC

Proof Of Conceptでduplicateになっているが、この時点ではPX4とraspiをUARTで接続して、オフロードするようなことを想定していたよう。
SerializerとしてeProsimaが提供するFast-CDRを利用することでOMG(Object Management Group)のIDLと同じ形式をサポート。

PX4 to Raspi

PX4-FastRTPS-PoC-Snapdragon-UDP

こちらは、PX4とQualcomm SnapdragonをUDP接続してbridge接続をできるように試みるプロジェクト。(実際にどこまで動くかは全く不明)
そもそもUDP接続(network接続)っていうものは、PX4とSnapdragonの間では一般的な接続なのだろうか?PX4がネットワークインターフェースをもっているということか?

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4