RosHrkMsgsSubscriberとHarkMsgsStreamFromRosの違い

HARK FORUM RosHrkMsgsSubscriberとHarkMsgsStreamFromRosの違い

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #1931
    Avataritoyama
    Participant

    HARK-ROS Tutorialを見ていると,類似の機能を持った2つのノードが(特に説明なく)使い分けられているように見えます.一方は RosHarkMsgsSubscriber で,HARK-ROS Tutorial 4 で使われています. https://www.hark.jp/packages/ros/hark-ros-tutorials/application-of-publishing-subscribing-hark-std-messages もう一方は HarkMsgsStreamFromRos で,HARK-ROS Tutorial 6 で使われています. https://www.hark.jp/packages/ros/hark-ros-tutorials/recording-and-playing-hark-std-messages-by-rosbag/ 一見するとどちらもROSトピックをsubscribeして後続ノードに送出しているように見え,違いはNOT_EOF(とKILL_NETWORK)の有無のみです.

    これらのノードの使われ方の違いを見ると,RosHarkMsgsSubscriber は RosHarkMsgsPublisher と同じシートに配置されており,そうしない限り動作しないように思われます.(RosHarkMsgsSubscriber を別のiteratorシートや別のネットワークファイルに移動し,常にTrueを出力するConstantノードをSet as conditionしても駄目でした)一方で,HarkMsgsStreamFromRos は RosHarkMsgsPublisher と別のネットワークファイルに含まれています.

    PublisherとSubscriberをそれぞれ異なるホストやプロセスで動作させたい,というのが現実的なROSの運用シナリオの大部分を占めると思われます(そうでなければROSを導入するメリットがほとんどありません).だとすると,RosHarkMsgsPublisher と同じシート(同じホスト)でなければ動作できない RosHarkMsgsSubscriber の存在意義はどこにあるのでしょうか? 実質的にデバッグ用ということでしょうか? もしくはこれ以外の有用な使い方があるのでしょうか.

    もちろん,デバッグ用にこのようなノードがあると便利だということ自体は理解しますが,一方でそのようなデバッグ用としての性質の強いノードがチュートリアルで使用されているのは利用者を混乱させるだけなので,チュートリアルで使用するのは HarkMsgsStreamFromRos に統一したほうがよいように思います.

    • This topic was modified 1 week, 6 days ago by Avatarnterakado.
    #1937
    Avatarnterakado
    Moderator

    お問い合わせありがとうございます。

    HarkMsgsStreamFromRosはAudioを受信するという特定の目的のために作成したノードになります。
    HARKとしては、RosHarkMsgsPublisherRosHarkMsgsSubscriber を使用するというのが基本的な設計思想ですので
    異なるネットワークでも動作することを前提にしています。

    それが同一シート上でしか動作しないとのことですが、
    こちらの意図しない状況ですので調査いたします。

    ただ、こちらの事情で申し訳ございませんが、
    すぐには対応できません。
    ご迷惑をおかけしますが、ご了承いただければ幸いです。

    以上、よろしくお願いいたします。
    HARKサポートチーム

    #1940
    Avataritoyama
    Participant

    すみません,「同一シート上でしか動作しない」というのは一部正しくなく,「同一ネットワークの別シートに配置すると動作しないが,別ネットワークファイルに配置すると動作する」が正確でした.
    ただし別ネットワークファイルに配置した場合には,RosHarkMsgsSubscriber側のネットワークに含まれるDisplayLocalizationの表示が高速に(1秒あたりおよそ40,000フレーム,PCの性能にも依存すると思われますが)流れるため,同一シートに配置した場合とは明らかに異なる望ましくない挙動を示しています.ですので,やはり別ネットワークファイルで動作させるためにはHarkMsgsStreamFromRosを使わざるを得ない,というのが現状です.
    なお,添付画像のようにPublisherとSubscriberを同一ネットワークファイルの別シートに配置した場合,下記のようなエラーメッセージが確認できます.
    —–
    2020-10-14 13:24:57,226 – hark-middleware – 1099129 – INFO – No node class with name ‘LOOP1’ found
    2020-10-14 13:24:57,226 – hark-middleware – 1099129 – INFO – node_def.type: LOOP1, network_def: <harkmw.defs.network.NetworkDef object at 0x7f81d40b0cd0>
    —–

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.