4. intdash ROS2Bridgeの設定

intdash ROS2Bridgeの設定は、yaml形式の設定ファイルで行います。 ここでは設定可能な項目について説明します。

4.1. コールバックのスレッド数

コールバックのスレッド数は、トピックのサブスクリプションや、サービスリクエスト、アクションゴールリクエストなどを並列に実行することができる最大数です。

設定例:

num_callback_threads: 15

フィールド名

enum

必須/オプショナル

説明

num_callback_threads

-

unsigned int

オプション(デフォルトは10)

並列にコールバックを実行するために、スレッド数を指定します。実装では MultiThreadedExecutor() のコンストラクタの number_of_threads として使われます。参考(foxy): rclcpp::executors::MultiThreadedExecutor Class Reference

4.2. FIFOの設定

intdash ROS2Bridgeとintdash Edge Agentの間でデータのやり取りをするFIFOの設定を行います。

フィールド名

enum

必須/オプショナル

説明

upstream

-

map

オプション

アップストリーム(ROS2→intdash)の設定を記述します。 upstreamの設定(ROS2→intdash) を参照してください。

downstream

-

map

オプション

ダウンストリーム(intdash→ROS2)の設定を記述します。 downstreamの設定(intdash→ROS2) を参照してください。

4.2.1. upstreamの設定(ROS2→intdash)

設定例:

upstream:
  enabled: true
  formats:
  - format: "cdr"
    writer:
      path: "/var/run/intdash/logger_001.tx"
      buffering: false
  - format: "json"
    writer:
      path: "/var/run/intdash/logger_002.tx
      buffering: false
      max_array_size: 100

4.2.1.1. upstream

upstreamでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

アップストリームを有効にします。

formats

-

map

必須

アップストリームで使用するフォーマットを指定します。 upstream.formats を参照してください。

4.2.1.2. upstream.formats

formatsでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

format

-

string

必須

フォーマットを指定します。 "cdr" または "json" を設定可能です。

writer

-

map

必須

アップストリームで使用するフォーマットの情報を指定します。 upstream.formats[].writer を参照してください。

4.2.1.3. upstream.formats[].writer

formatが "cdr" の場合は以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

path

-

string

必須

FIFOのパスを設定します。指定がない場合は"cdr"によるFIFOは有効になりません。

buffering

true

false

bool

オプション(デフォルトはtrue)

FIFOにデータを書き込む際のバッファを有効にするかどうかを設定します。なお、内部では、バッファを有効にするかをsetvbuf関数により設定しています。

formatが"json"の場合は以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

path

-

string

必須

FIFOのパスを設定します。指定がない場合は"json"によるFIFOは有効になりません。

max_array_size

-

int

オプション(デフォルトは無制限)

JSONの配列に書き込まれる要素数を制限します。この設定はROSメッセージにのみ適用されます。サービスやアクションを識別するUUIDこの制限を受けません。

buffering

true

false

bool

オプション(デフォルトは false

FIFOにデータを書き込む際のバッファを有効にするかどうかを設定します。なお、内部では、バッファを有効にするかをsetvbuf関数により設定しています。

4.2.2. downstreamの設定(intdash→ROS2)

設定例:

downstream:
  enabled: true
  format: "cdr"
  reader:
    path: "/var/run/intdash/logger_001.rx"

4.2.2.1. downstream

downstreamは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

ダウンストリームを有効にします。

format

-

string

必須

ダウンストリームで使用するフォーマットの情報を指定します。"cdr"を設定可能です。

reader

-

map

必須

formatの設定を記述します。 downstream.reader を参照してください。

4.2.2.2. downstream.reader

formatが"cdr"の時は以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

path

-

string

必須

FIFOのパスを設定します。指定がない場合は"cdr"によるFIFOは有効になりません。

4.3. QoS(Quality of Service)の設定

QoSは、 subscriberspublishersservice_clientsparameter_clientsparameter_service_servers のそれぞれの qos フィールドで設定することが可能です。

注意

QoSを明示的に設定しない場合、rclcppで設定されるデフォルトと同じものが使用されます。そのため、明示的に設定したい項目以外は記載する必要はありません。詳細は qos.policy を参照してください。

ROS2のQoSの詳細は以下のドキュメントを参照してください。

foxy: About Quality of Service settings

設定例:

qos:
   profile: "default"
   policy:
     history:       "keep_last"
     depth:         10
     reliability:   "best_effort"
     durability:    "transient_local"
     deadline:      "100msec"
     lifespan:      "100msec"
     liveliness:    "automatic"
     liveliness_lease_duration: "100msec"

4.3.1. qos

qosでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

profile

"default"

"services"

"sensor_data"

"parameters"

"system_default"

string

オプション

QoSプロファイルを指定します。enumに該当しないものを設定した場合は、"system_default"が使用されます。詳細は、公式ドキュメントを参照してください。

Foxy: About Quality of Service settings - ROS 2 Documentation: Foxy documentation

policy

-

map

オプション

QoSポリシーを個別に設定します。設定しなかった項目はデフォルトのものが使われます。 qos.policy を参照してください。

4.3.2. qos.policy

policyでは以下の項目を設定可能です。

それぞれのpolicyの詳細については ROS2 DocumentationのQoS policies を参照してください。

設定をしなかったpolicyの項目は、rclcppで設定されるデフォルトと同じものが使用されます。そのため、明示的に設定したい項目以外は記載する必要はありません。

注意

トピックをpublishするノードの durabilitytransient_local、subscribeするノードの durabilityvolatile の組み合わせで、両者の reliabilityreliable としたい場合は、明示的にQoSを設定する必要があります。

フィールド名

enum

必須/オプショナル

説明

history

"keep_all"

"keep_last"

string

オプション

historyポリシーを設定します。誤ったものを記述した場合に設定されるものは不定です。

depth

-

int

オプション(デフォルトは10)

historykeep_last を設定した場合に depth の設定に使用されます。

reliability

"reliable"

"best_effort"

string

オプション

reliability の設定をします。誤った値を記述した場合の設定は不定です。

durability

"transient_local"

"volatile"

string

オプション

durability の設定をします。誤った値を記述した場合の設定は不定です。

deadline

-

string

オプション

deadlineを設定します。 "Xmin""Xsec""Xmsec""Xnsec" のフォーマットで指定が可能です。複数の単位組み合わせることはできません。誤った単位を指定した場合は、0が使用されます。

lifespan

-

string

オプション

ifespanを設定します。 "Xmin""Xsec""Xmsec""Xnsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合は、0が使用されます。

liveliness

"automatic"

"manual_by_topic"

"system_default"

-

オプション

livelinessを設定します。誤った値を記述した場合の設定は不定です。

liveliness_lease_duration

-

string

オプション

livelinessで使用するlease_durationを設定します。 "Xmin""Xsec""Xmsec""Xnsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合は、0が使用されます。

4.4. ROS2トピックの伝送に関する設定

ROS2空間のトピックをサブスクライブする subscribers と、トピックをROS2空間にパブリッシュする publishers を設定可能です。

注意

トピックを適切にブリッジするには、互換性のあるQoSを設定する必要があります。

intdash ROS2Bridge(subscriber)のQoS設定は、エッジデバイス2でトピックをサブスクライブするノードのQoSと互換性のある設定にしてください(同じQoS設定にすることを推奨します)。

また、intdash ROS2Bridge(publisher)は、エッジデバイス1でトピックをパブリッシュしているノードのQoSと互換性のある設定にしてください(同じQoS設定にすることを推奨します)。

../_images/system-topic-bridge.ja.png

図 12 トピックをブリッジする構成

4.4.1. Subscribersの設定(エッジデバイス1)

設定例:

subscribers:
  enabled: true
  advertise_interval: "5sec"
  topics:
  - topic_name: "aaa"
    format:
    - "cdr"
    - "json"
  - topic_name: "string_msg"
    format:
    - "cdr"
    - "json"
    qos:
(中略)
  - topic_name: "/tf"
    tf: true # tf
    format:
    - "cdr"
  - topic_name: "/tf_static"
    tf_static: true # tf static
    format:
    - "cdr"
  - topic_name: "/oneshot_topic"
    format:
    - "cdr"
    resend_interval: "1sec"

4.4.1.1. subscribers

subscribersでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、トピックのサブスクライブとFIFOへの書き込みを行います。

advertise_interval

-

string

オプション(デフォルトは0。毎回書き込まれる)

アップストリームにトピックを書き込むときにトピックの型がメッセージに含まれる間隔を設定します。 "XXmin""XXsec""XXmsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合は、0が使用されます。

topics

-

array

オプション

サブスクライブするトピックの個別の設定を記述します。 subscribers.topics を参照してください。

4.4.1.2. subscribers.topics

topicsには複数のトピックを設定可能です。それぞれのトピックには以下の設定項目があります。

フィールド名

enum

必須/オプショナル

説明

topic_name

-

string

必須

トピック名を指定します。トピック名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりトピック名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

tf

true

false

bool

オプション(デフォルトは false

topic_name"tf" の時は、 true を指定します。指定しなかった場合、トピック名が "tf" であっても通常のトピックと同じ扱いになります。複数トピックに対して設定することはできません

tf_static

true

false

bool

オプション

topic_name"tf_static" の時は、 true を指定します。指定しなかった場合、トピック名が "tf_static" であっても通常のトピックと同じ扱いになります。複数のトピックに対して設定することはできません

qos

-

map

オプション

詳細は qos の設定を参照してください。設定しなかった場合、rclcpp::QoS(10)が使用されます。 tf が設定されている場合は、デフォルトではtf2_ros::DynamicListenerQoS()が使用されます。 tf_static 設定されている場合は、デフォルトではtf2_ros::StaticListenerQoS()が使用されます。

format

-

array of string

必須

upstreamで設定したもののなかから1つ以上のフォーマットを指定できます。upstreamで定義されていないものは無視されます。

resend_interval

-

string

オプション (デフォルトは0。0の場合、再送は行われません)

トピックを再送する間隔を設定します。"Xmin" 、"Xsec" のフォーマットで指定が可能です(Xには数字が入ります)。複数の単位を組み合せることはできません。誤った単位を指定した場合は、0 が設定されます。

注意

サブスクライブしたいトピックに対するQoSの設定は、パブリッシュされるトピックのQoSと互換性を持つ必要があります。

例えば、点群データなどは一般的には reliabilitybest_effort で設定されることが多いです。 そのようなトピックをサブスクライブする場合、 reliabilitybest_effort に設定しなければいけません。

もし互換性のあるQoSを設定しなかった場合、intdash_ros2bridge はトピックをサブスクライブすることができません。 その結果、intdash serverにデータは流れません。

トピックのQoSは ros2 topic info トピック名 -v コマンドによって確認できます。 なお、このコマンドを実行したときに、LifespanDeadlineLivelinessLiveliness の設定も表示されますが、これらの値がシステムのデフォルト値と同じ場合は明示的に設定する必要はありません。

4.4.2. publishersの設定(エッジデバイス2)

設定例:

publishers:
  enabled: true
  suffix: "_suffix"
  topics:
  - topic_name: "string_msg"
    qos:
(中略)
  - topic_name: "/tf"
    tf: true
  - topic_name: "/tf_static"
    tf_static: true
  - topic_name: "/oneshot_topic"
    resend: true

4.4.2.1. publishers

publishersでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、FIFOから読み込まれたトピックのパブリッシュを行います。

suffix

-

string

オプション(デフォルトは ""

パブリッシュするトピックにsuffixを設定します。デバッグ用の設定のため、通常は使用しません。

topics

-

map

オプション

パブリッシュするトピックの個別の設定を記述します。 publishers.topics を参照してください。

4.4.2.2. publishers.topics

ダウンストリームで受信したトピックはすべてパブリッシュされますが、QoSの設定が必要な場合や、tf/tf_staticを扱う場合のみ、topicsの設定が必要です。

topicsには複数のトピックを設定可能です。それぞれのトピックには以下の設定項目があります。

フィールド名

enum

必須/オプショナル

説明

topic_name

-

string

必須

トピック名を指定します。トピック名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりトピック名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

tf

true

false

bool

オプション(デフォルトは false

topic_nameが"tf"の時は、 true を指定します。指定しなかった場合、トピック名が "tf" であっても通常のトピックと同じ扱いになります。

tf_static

true

false

bool

オプション(デフォルトは false

topic_nameが "tf_static" の時は、 true を指定します。指定しなかった場合、トピック名が "tf_static" であっても通常のトピックと同じ扱いになります。

tf_header_timestamp

default

ros_time

system_time

string

オプション (デフォルトは、 default)

tf または tf_statictrue のトピックにおいて、メッセージをパブリッシュする前にヘッダーに含まれるタイムスタンプを更新するかを設定します。

default を設定した場合は更新は行いません。 ros_time を設定した場合はintdash_ros2bridgeが参照するROS時間で更新されます。 system_time を設定した場合は、システム時間で更新されます。

qos

-

map

オプション

qos の設定を参照してください。何も設定しない場合はrclcpp::QoS(10)が適用されます。 tf を設定した場合はtf2_ros::DynamicBroadcasterQoS()が使用されます。 tf_static を設定した場合はtf2_ros::StaticBroadcasterQoS()が使用されます。

resend

true

false

bool

オプション (デフォルトは false)

true を設定すると、再送されたトピックの内容を前回送信した内容と比較して、前回と一致した場合パブリッシュしません。差異がある場合はパブリッシュします。

なお、FIFOから読み込まれたトピックをパブリッシュしないように設定することはできません。トピックをパブリッシュしたくない場合は、intdash Edge Agentでそのトピックをダウンストリームの対象外にしてください。

4.5. ROS2サービスの伝送に関する設定

intdash ROS2Bridgeがサービスリクエストをブリッジする service_servers と、ブリッジしたサービスリクエストを実際のサービスに送信する service_clients を設定が可能です。

2つのintdash ROS2Bridgeが互いにアップストリームを行うため、service_servers側とservice_clients側の双方にupstream/downstreamの設定が必要になります。

また、 format には "cdr" を含む必要があります。

../_images/system-service-bridge.ja.png

図 13 サービスをブリッジする構成

4.5.1. service_serversの設定(エッジデバイス1)

設定例:

service_servers:
  enabled: true
  services:
  - service_name: "service_name"
    service_type: "package_name/srv/ServiceName"
    format:
      - "cdr"
      - "json"
    qos:
(省略)

4.5.1.1. service_servers

service_serversでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、サービスサーバーを利用可能になります。

services

-

array

オプション

サービスサーバーの設定を記述します。 service_servers.services を参照してください。

4.5.1.2. service_servers.services

servicesでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

service_name

-

string

必須

エッジデバイス2のROS2空間にある、アクセスしたいサービスサーバー名を指定します。サービスサーバー名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりサービスサーバー名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

service_type

-

string

必須

package_name/srv/ServiceName の形式で、サービスタイプを指定します。

qos

-

map

オプション

qos の設定を参照してください。設定しなかった場合はrclcpp::ServicesQoS()が使用されます。

format

-

list of string

必須

フォーマットを指定します。 "cdr" が含まれていないと、service_clientsはサービスリクエストを受け取ることができません。

4.5.2. service_clientsの設定(エッジデバイス2)

設定例:

service_clients:
  enabled: true
  response:
    resend_duration: "10min"
    resend_interval: "15sec"
  request:
    timeout: "10sec"
  services:
  - service_name: "service_name"
    service_type: "package_name/srv/ServiceName"
    format:
      - "cdr"
      - "json"
    qos:
(中略)

4.5.2.1. service_clients

service_clientsでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、サービスクライアントが利用可能になります。

request

-

map

オプション

サービスリクエストに関する設定を記述します。 service_clients.request を参照してください。

response

-

map

オプション

サービスレスポンスの再送に関する設定を記述します。 service_clients.response を参照してください。

services

-

map

オプション

サービスクライアントの設定を記述します。 service_clients.services を参照してください。

4.5.2.2. service_clients.response

responseでは、サービスレスポンスが到達しなかった場合のために、再送間隔と再送を試み続ける時間を設定可能です。

フィールド名

enum

必須/オプショナル

説明

resend_duration

-

string

オプション

デフォルトは0(0の場合再送は行われない)

アップストリームにサービスレスポンスの書き込みを繰り返す時間を指定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、0が使用されます。

resend_interval

-

string

オプション

デフォルトは0(0の場合再送は行われない)

アップストリームにサービスレスポンスの書き込みを繰り返す間隔を指定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、0が使用されます。

4.5.2.3. service_clients.request

request には以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

timeout

-

string

オプション(デフォルトは10秒)

サービスリクエストをタイムアウトにする時間を設定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、 "10sec" が使用されます。

サービスリクエストがタイムアウトになった場合、service_servers側にレスポンスは返ってきません。そのため、ユーザーが実装するservice_serversにアクセスするサービスクライアントには適切なタイムアウトが設定されている必要があります。

4.5.2.4. service_clients.services

servicesでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

service_name

-

string

必須

サービスクライアントがアクセスするサービス名を指定します。サービス名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりサービス名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

service_type

-

string

必須

package_name/srv/ServiceName の形式で、サービスタイプを指定します。

qos

-

map

オプション

qos の設定を参照してください。何も設定しなかった場合rclcpp::ServicesQoS()が使用されます。

format

-

array of string

必須

フォーマットを指定します。 "cdr" が含まれていないと、service_serversはサービスレスポンスを受け取ることができません。

4.6. ROS2パラメータの伝送に関する設定

intdash ROS2Bridgeがパラメータリクエストをブリッジする parameter_service_servers と、ブリッジしたサービスリクエストを実際のサービスに送信する parameter_clients の設定が可能です。

2地点のintdash ROS2Bridgeが相互にデータを送り合うため、parameter_service_servers側とparameter_clients側の双方にupstream/downstreamの設定が必要になります。

また、 format"cdr" を含める必要があります。

../_images/system-parameter-bridge.ja.png

図 14 パラメーターをブリッジする構成

4.6.1. parameter_service_server の設定(エッジデバイス1)

設定例:

parameter_service_servers:
  enabled: true
  nodes:
  - node_name: "bbb"
    format:
    - "cdr"
    - "json"
    qos:
(省略)

4.6.1.1. parameter_service_servers

parameter_service_serversでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、パラメータサービスサーバーが利用可能になります。

nodes

-

array

オプション

パラメータサービスサーバーの設定を記述します。 parameter_service_servers.nodes を参照してください。

4.6.1.2. parameter_service_servers.nodes

nodesでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

node_name

-

string

必須

パラメータサーバーを提供するノード名を指定します。ノード名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりノード名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

qos

-

map

オプション

qos の設定を参照してください

format

-

array of string

必須

フォーマットを指定します。 "cdr" が含まれていないと、parameter_service_clientsはパラメータリクエストを受け取ることができません。

4.6.2. parameter_clientsの設定(エッジデバイス2)

設定例:

parameter_clients:
  enabled: true
  response:
    resend_duration: "10min"
    resend_interval: "15sec"
  request:
    timeout: "10sec"
  nodes:
  - node_name: "bbb"
    format:
    - "cdr"
    - "json"
    qos:
(省略)

4.6.2.1. parameter_clients

parameter_clientsでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、パラメータクライアントが利用可能になります。

response

-

map

オプション

パラメータのサービスレスポンスの再送に関する設定を記述します。 parameter_clients.response を参照してください。

request

-

map

オプション

パラメータのサービスリクエストに関する設定を記述します。 parameter_clients.request を参照してください。

nodes

-

array

オプション

パラメータに関する設定を記述します。 parameter_clients.nodes を参照してください。

4.6.2.2. parameter_clients.response

responseでは、パラメータレスポンスが到達しなかった場合のために、再送間隔と再送を試み続ける時間を設定可能です。

フィールド名

enum

必須/オプショナル

説明

resend_duration

-

string

オプション(デフォルトは0。0の場合再送は行われない)

アップストリームにパラメータレスポンスの書き込みを繰り返す時間を指定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、0が使用されます。

resend_interval

-

string

オプション(デフォルトは0。0の場合再送は行われない)

アップストリームにパラメータレスポンスの書き込みを繰り返す間隔を指定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、0が使用されます。

4.6.2.3. parameter_clients.request

requestでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

timeout

-

string

オプション(デフォルトは10秒)

パラメータリクエストをタイムアウトにする時間を設定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合は、"10sec"が使用されます。"msec"を指定した場合は、"10sec"が使用されます。

パラメータリクエストがタイムアウトになった場合、parameter_servers側にレスポンスは返ってきません。そのため、ユーザーが実装するparameter_serversにアクセスするパラメータクライアントには適切なタイムアウトが設定されている必要があります。

4.6.2.4. parameter_clients.nodes

nodesでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

node_name

-

string

必須

パラメータライアントがアクセスするノード名を指定します。ノード名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりノード名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

qos

-

map

オプション

qos の設定を参照してください。設定しなかった場合はrclcpp::ParametersQoS()が使用されます。

format

-

array of string

必須

フォーマットを指定します。 "cdr" が含まれていないと、parameter_service_serversはパラメータレスポンスを受け取ることができません。

4.7. ROS2アクションの伝送に関する設定

intdash ROS2Bridgeがアクションリクエストをブリッジする action_servers と、ブリッジしたアクションリクエストを実際のアクションサーバーに送信する action_clients の設定が可能です。

2地点のintdash ROS2Bridgeが相互にデータを送り合うため、action_servers側とaction_clients側の双方にupstream/downstreamの設定が必要になります。

また、formatは "cdr" を含む必要があります。

../_images/sytem-action-bridge.ja.png

図 15 アクションをブリッジする構成

4.7.1. action_serversの設定(エッジデバイス1)

設定例:

action_servers:
  enabled: true
  request:
    timeout: "10min"
  result:
    timeout: "10min"
  actions:
  - action_name: "aaa"
    action_type: "action_tutorials_interfaces/action/Fibonacci"
    format:
      - "cdr"
      - "json"

4.7.1.1. action_servers

action_serversでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、アクションサーバーが利用可能になります。

request

-

map

オプション

ゴールリクエストとキャンセルリクエストのタイムアウトを設定します。 action_servers.request を参照してください。

result

-

map

オプション(デフォルトは20分)

リザルトのタイムアウトを設定します。アクションが完了するのに必要な十分な時間を設定することが推奨されます。 action_servers.result を参照してください。

actions

-

map

オプション

アクションサーバーの設定を記述します。 action_servers.actions を参照してください。

4.7.1.2. action_servers.request

requestでは、action_clientsにリクエストが届かなかった場合のタイムアウトを設定することが可能です。なお、設定したタイムアウトまでにリクエストへのレスポンスが返ってこなかった場合は、 rclcpp_action::GoalResponse::REJECT がリクエストの結果として返ってきます。

なお、タイムアウトになり rclcpp_action::GoalResponse::REJECT の後に正しいレスポンスが返ってきた場合であってもユーザーが実装したアクションクライアントは処理を継続しないため、設定する場合は十分大きい時間を設定することを推奨します。

フィールド名

enum

必須/オプショナル

説明

timeout

-

string

オプション(デフォルトは "15min"

ゴールリクエストとキャンセルリクエストのタイムアウトを設定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、 "15min" が使用されます。タイムアウトまでにレスポンスを受信できなかった場合は、REJECTが返ってきます。使用しない場合は"0min"または"0sec"を設定します。

4.7.1.3. action_servers.result

resultでは、action_serversにゴールリザルトが返ってこなかった場合のタイムアウトを設定することが可能です。

なお、設定したタイムアウトまでにaction_serversがリザルトを受け取れなかった場合、アクションの結果をrclcpp_action::ResultCode::UNKNOWNとしてクライアントに送信します。

この場合、rclcpp_action::ResultCode::UNKNOWNの送信後に正しいリザルトが返ってきたとしても、ユーザーが実装したアクションクライアントの処理が持つアクションのリザルトはUNKNOWNから変わりません。したがって、使用する場合はアクションを終了するのに十分な時間を設定することを推奨します。

フィールド名

enum

必須/オプショナル

説明

timeout

-

string

オプション(デフォルトは "20min"

ゴールリザルトのタイムアウトを設定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、"20min"が使用されます。タイムアウトまでにリザルトを受信できなかった場合は、UNKNOWNを返します。使用しない場合は"0min"または"0sec"を設定します。

4.7.1.4. action_servers.actions

actionsでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

action_name

-

string

必須

アクションサーバー名を指定します。アクションサーバー名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりアクションサーバー名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

action_type

-

string

必須

package_name/srv/ServiceNameの形式で、サービスタイプを指定します。

format

-

list of string

必須

フォーマットを指定します。 "cdr" が含まれていないと action_clients はゴールリクエストやキャンセルリクエストをを受け取ることができません。

4.7.2. action_clientsの設定(エッジデバイス2)

設定例:

action_clients:
  enabled: true
  response:
    resend_duration: "10min"
    resend_interval: "15sec"
  actions:
  - action_name: "aaa"
    action_type: "action_tutorials_interfaces/action/Fibonacci"
    format:
      - "cdr"
      - "json"

4.7.2.1. action_clients

action_clientsでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

enabled

true

false

bool

オプション(デフォルトは false

true にすると、アクションクライアントが利用可能になります。

response

-

map

オプション

アクションゴールレスポンス、アクションキャンセルレスポンス、アクションリザルトの再送に関する設定を記述します。 action_clients.response を参照してください。

actions

-

map

オプション

アクションクライアントの設定を記述します。 action_clients.actions を参照してください。

4.7.2.2. action_clients.response

responseでは、アクションレスポンス、キャンセルレスポンス、アクションリザルトがaction_serversに到達しなかった場合のために、再送間隔と再送を試み続ける時間を設定可能です。

なお、フィードバックの再送機能はありません。

フィールド名

enum

必須/オプショナル

説明

resend_duration

-

string

オプション(デフォルトは0。0の場合再送は行われない)

レスポンスやリザルトの書き込みを繰り返す時間を指定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、0が使用されます。

resend_interval

-

string

オプション(デフォルトは0。0の場合再送は行われない)

レスポンスやリザルトの書き込みを繰り返す間隔を指定します。 "XXmin""XXsec" のフォーマットで指定が可能です。複数の単位を組み合わせることはできません。誤った単位を指定した場合("XXmsec"など)は、0が使用されます。

4.7.2.3. action_clients.actions

actionsでは以下の項目を設定可能です。

フィールド名

enum

必須/オプショナル

説明

action_name

-

string

必須

アクションクライアントがアクセスするアクション名を指定します。アクション名は明示的にネームスペースを付与することが可能です。ネームスペースを付与しなかった場合、つまりアクション名の最初に / が含まれない場合はintdash ROS2Bridgeと同じネームスペースが付与されます。

action_type

-

string

必須

package_name/action/ActionName の形式で、アクションタイプを指定します。

format

-

array of string

必須

フォーマットを指定します。 "cdr" が含まれていないと、action_serversはレスポンスやフィードバックを受け取ることができません。