Main Content

Simulink での ROS メッセージのパブリッシュとサブスクライブ

このモデルでは、Simulink® を使用して ROS トピックをパブリッシュおよびサブスクライブする方法を示します。

open_system('rosPubSubExample.slx')

Annotation 2020-07-09 154610.jpg

Blank Message ブロックおよび Bus Assignment ブロックを使用して 'geometry_msgs/Point' メッセージ タイプの X 値と Y 値を指定します。Blank Message ブロック マスクを開いてメッセージ タイプを指定します。Bus Assignment ブロック マスクを開いて、割り当てる信号を選択します。右側列から '???' をもつ値を削除します。X および Y の関連の値をもつ Bus Assignment ブロックを指定します。

Bus 出力を Publish ブロックに送ります。ブロック マスクを開いて、Specify your own をトピック ソースとして選択します。トピック '/location'、およびメッセージ タイプ 'geoemetry_msgs/Point' を指定します。

Subscribe ブロックを追加し、トピックとメッセージ タイプを指定します。出力 Msg を Bus Selector に送り、ブロック マスクで選択した信号を指定します。X 値と Y 値を表示します。

モデルを実行する前に、rosinit を呼び出して ROS ネットワークに接続します。

rosinit
Launching ROS Core...
.Done in 1.3218 seconds.
Initializing ROS master on http://172.29.215.100:54176.
Initializing global node /matlab_global_node_31038 with NodeURI http://dcc696549glnxa64:35691/ and MasterURI http://localhost:54176.

モデルを実行します。xPosition Out および yPosition Out に、ROS ネットワークにパブリッシュされた対応する値が表示されているか確認する必要があります。

sim('rosPubSubExample')

ROS ネットワークをシャットダウンします。

rosshutdown
Shutting down global node /matlab_global_node_31038 with NodeURI http://dcc696549glnxa64:35691/ and MasterURI http://localhost:54176.
Shutting down ROS master on http://172.29.215.100:54176.