付属デバイスコネクターの使用

intdash Edge Agent 2をインストールすると、アプトポッド製のデバイスコネクターである device-connector-intdash が、依存パッケージとしてインストールされます。

device-connector-intdashは、intdash用のデータを扱うのに便利な機能を集めたデバイスコネクターです。 device-connector-intdashを使用すると、外部デバイスからのデータを、intdash Edge Agent 2に渡すためのFIFO用データフォーマット( iscp-v2-compat )に簡単に変換することができます。 また、EDGEPLANT CAN-USB Interfaceや、EDGEPLANT ANALOG-USB Interfaceからのデータを簡単に扱うことができます。

注釈

device-connector-intdashは、アプトポッド製のデバイスコネクター作成用フレームワークである、Device Connector Frameworkを使用して開発されています。

Device Connector Frameworkの詳細や、Device Connector Frameworkを使ったデバイスコネクターの開発方法については、「intdash Edge Agent用デバイスコネクターデベロッパーガイド」を参照してください。

パイプラインとエレメント

device-connector-intdashはパイプラインアーキテクチャーを採用しています。 これにより、外部デバイスからデータを取得する処理、データを加工する処理、書き出す処理など、さまざまな処理を組み合わせて実行することができます。この一連のデータの処理の流れをパイプラインと呼びます。パイプライン内で行われる処理は、エレメントと呼ばれる部品を使って表現します。また、パイプラインを流れるデータはメッセージと呼ばれます。

タスク間で送受信されるメッセージは型を持ちます。型はMIMEタイプを表す文字列またはカスタムタイプを表す文字列で指定されます。各ポートがどの型のメッセージを受け取れるかは、エレメントにおいて定義されています。

エレメントに関連する主要な概念を以下に挙げます。

エレメント

エレメントは、メッセージの生成やメッセージの処理を定義したものです。 デバイスコネクター内にメッセージを生成する「srcエレメント」、受け取るだけの「sinkエレメント」、送受信を共に行う「filter エレメント」があります。

1つのパイプラインの定義は、srcエレメントから始まり、sinkエレメントで終わります。必要に応じて途中に1個以上のfilterエレメントを挟むことができます。

タスク

パイプラインの定義はエレメントの組み合わせで行いますが、各エレメントによる処理は実行時には「タスク」と呼ばれます。

メッセージは、各タスクの「ポート」を使って送受信されます。 タスクによっては複数のポートで送受信ができます。使用可能なポートの個数は各タスクの元になったエレメントにおいて決まっています。

メッセージ

タスク間で送受信されるデータです。

タスク間で送受信されるメッセージは、何らかの型を持ちます。 型情報には、MIMEタイプ(例: MIMEタイプ "image/jpeg" )またはカスタムタイプ(例: カスタムタイプ "iscp-v2-compat-msg" )を使用します。

各ポートがどの型のメッセージを受け取れるかは、エレメントにおいて定義されます。

送信元のタスクは、メッセージを最初に送信するとき、そのメッセージの型をデバイスコネクターに通知します。 デバイスコネクターは、メッセージを受信するポートがその型を受け入れ可能かどうかを判定し、受け入れができない場合はエラーとします。

データを"image/jpeg"や"text/plain"のようなMIMEタイプ 、または、"iscp-v2-compat-msg"のようなカスタムタイプで送出するエレメントの場合は、1枚の画像や1まとまりのテキスト、1つのデータポイントのように、意味を持つ単位を1つのメッセージとして送出します。

MIMEタイプに"application/octet-stream"を使用すると、既存のMIMEタイプで定義されていない任意のバイナリ形式を表すことができます。また、このMIMEタイプを使用することで、例えば延々と続くバイナリストリームをセグメントに区切って受け渡すような使い方も可能です。

srcエレメント

srcエレメントは、デバイスコネクター内のパイプラインの始点です。 srcエレメントによって定義されたタスクをsrcタスクと呼びます。 srcタスクは、デバイスコネクターの外部(外部デバイスまたはintdash Edge Agent 2)からデータを受け取ってデバイスコネクター内にデータを生成し、そのデータをメッセージとして次のタスクに渡します。次のタスクにメッセージを渡すための送信用ポートを1つ持っています。

sinkエレメント

sinkエレメントは、デバイスコネクター内のパイプラインの終点です。 sinkエレメントによって定義されたタスクをsinkタスクと呼びます。 sinkタスクは、前のタスクからメッセージを受け取り、デバイスコネクターの外部(外部デバイスまたはintdash Edge Agent 2)にデータを渡します。前のタスクからメッセージを受け取るための受信用ポートを1つ以上持っています。

filterエレメント

filterエレメントは2つのエレメントの間に挟むことができるエレメントです。 filterエレメントによって定義されたタスクをfilterタスクと呼びます。 filterタスクは、前のタスクからメッセージを受け取り、何らかの処理を行って、次のタスクにメッセージを渡します。前のタスクからメッセージを受け取るための受信用ポートを1つ以上持ち、次のタスクにメッセージを渡すための送信用ポートを1つ持っています。

デバイスコネクターのfilterエレメント(filterタスク)は、 フィルタリング/サンプリング のフィルタリング機能とは別の概念です。

注釈

データは、sinkエレメントを使ってintdash Edge Agent 2にデータを渡す前までに、intdash Edge Agent 2のFIFO用データフォーマットにしておく必要があります。

../_images/device-connector-overview-upstream.svg

図 16 デバイスからintdash Edge Agent 2へ入力するパイプラインの例

../_images/device-connector-overview-downstream.svg

図 17 intdash Edge Agent 2からデバイスへ出力するパイプラインの例

注釈

ここで説明しているパイプラインアーキテクチャーは、Device Connector Frameworkが持っている仕組みです。 従って、エレメントやパイプラインについての説明は、device-connector-intdashに限らず、Device Connector Frameworkを使って作られたデバイスコネクターに共通です。

ストリームの方向とパイプライン

アップストリームを行う場合のデバイスコネクターも、ダウンストリームを行う場合のデバイスコネクターも、基本的な設定方法は同じです。 いずれも、srcエレメントから、必要に応じてfilterエレメントを挟み、sinkエレメントまでのパイプラインとして作成します。

アップストリームのためのデバイスコネクターの場合は、「外部デバイスからデータを取得するsrc」→「必要に応じたfilter」→「intdash Edge Agent 2にデータを渡すためのFIFOに書き込むsink(file-sink)」というパイプラインになります。

反対に、ダウンストリームのためのデバイスコネクターの場合は、「intdash Edge Agent 2からデータを受け取るためにFIFOから読み出すsrc(file-src)」→「必要に応じたfilter」→「外部デバイスにデータを渡すsink」というパイプラインになります。

重要

  • アップストリーム方向のデバイスコネクターの場合、1つのパイプライン設定ファイルでは、1つのsinkエレメント(intdash Edge Agent 2にデータを渡すためのFIFO)を終点とするパイプラインを設定します。

  • ダウンストリーム方向のデバイスコネクターの場合、1つのパイプライン設定ファイルでは、1つのsrcエレメント(intdash Edge Agent 2からデータを受け取るFIFO)を起点とするパイプラインを設定します。

パイプライン設定ファイル

パイプラインの定義は、YAML形式のパイプライン設定ファイルで行います。 例えば、以下のようなパイプラインを考えることができます。

../_images/device-connector-example.svg

図 18 パイプラインの例

この例は、apt-cantrx-srcタスクがEDGEPLANT CAN-USB Interfaceからデータを取得し、そのデータをメッセージとしてfile-sinkタスクに送信しています。そして、file-sinkタスクはメッセージをFIFOに書き出しています。

これをパイプライン設定ファイルで表現すると以下のようになります。 タスクの設定は、 tasks: 内に並列に記述します。

tasks:
  - id: 1
    element: apt-cantrx-src
    conf:
      path: /dev/apt-usb/by-id/usb-xxx
      baudrate: 500
      clock_id: CLOCK_MONOTONIC

  - id: 2
    element: file-sink
    from: [[ 1 ]]
    conf:
      path: "/var/run/intdash/can.fifo"

注釈

ここでは、パイプライン設定ファイルのうち、最も重要なtasksについてのみ説明します。 tasks以外の設定については、「intdash Edge Agent用デバイスコネクターデベロッパーガイド」を参照してください。

項目

設定値

説明

id

整数

タスクに割り当てるID(タスクID)です。これはこのパイプライン上で一意でなくてはなりません。

element

文字列

このタスクに割り当てるエレメントの名称です。

from

文字列の二次元配列

このタスクが受け取るメッセージの送信元を指定します。

[["<送信元タスクID>:<送信元ポート番号>"], ... ]

メッセージは非同期に送られます。

例えば、 [[ "1:0" ], [ "2:1" ]] は、以下を意味します。

  • 0番ポートが「タスクID1の0番ポート」からメッセージを受け取る

  • 1番ポートが「タスクID2の1番ポート」からメッセージを受け取る

ポート番号が0の場合、ポート番号を省略して "1:0""1" のように記述することができます。 したがって、 [[ "1:0" ], [ "2:1" ]][[ "1" ], [ "2:1" ]] と同義です。

conf

マップ

エレメント独自の設定項目について設定します。

重要

from に設定する送信元のタスクIDは、自身のタスクIDより小さい数字である必要があります。

パイプライン設定ファイルの環境変数

device-connector-intdash用パイプライン設定ファイルの設定値においては、環境変数を展開して使用することができます。 環境変数を展開するには、パイプライン設定ファイル内で $(VARIABLE_NAME) の形式で記述します。

例として、以下のような設定ファイル(conf.yaml)を考えます。 path$(MY_FIFO_NAME) が含まれています。

...

- id: 3
  element: file-sink
  from: [[2]]
  conf:
    flush_size: 10
    path: /var/run/intdash/$(MY_FIFO_NAME).fifo

その上で、この設定ファイルを使ってデバイスコネクターを実行する際に環境変数を与えます。

$ MY_FIFO_NAME=device123 device-connector-run --config conf.yaml

そうすると、この場合、 path の値が /var/run/intdash/device123.fifo となります。

パイプライン設定ファイルのサンプル

付属デバイスコネクターにはパイプライン設定ファイルのサンプルが付属しています。 サンプルは /etc/dc_conf ディレクトリにインストールされます。

エレメント一覧

device-connector-intdashには、以下のエレメントがあらかじめ含まれています。

srcエレメント

filterエレメント

sinkエレメント

注釈

device-connector-intdashには以下のエレメントも付属していますが、intdash Terminal System専用または実験的なものであるため、直接は使用しないでください。

  • h265-split-filter

独自エレメントを開発する場合は、名前が付属エレメントと重複しないよう注意してください。

apt-analogtrx-src

エッジデバイスに接続されたEDGEPLANT ANALOG-USB Interfaceからデータを取得するときに使用するsrcエレメントです。

このエレメントは、デバイスパスにより指定されたEDGEPLANT ANALOG-USB Interfaceから専用カーネルモジュール経由でデータを取得します。そして iscp-v2-compatフォーマット (bytes型)で送出します。

注釈

EDGEPLANT ANALOG-USB Interface用のカーネルモジュールについては、 アプトポッドのウェブサイト の周辺機器についてのページを参照してください。

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

カスタムタイプ "iscp-v2-compat-msgs" (iscp-v2-compatフォーマット(bytes型)を複数個連結したメッセージ)

エレメント独自の設定項目は以下のとおりです。パイプライン設定ファイルの conf: 以下に記述します。

項目

設定値

説明

path

文字列

ANALOG-USB Interface のデバイスパス(例: /dev/apt-usb/by-id/usb-xxx )

input_send_rate

整数 ( 10 / 100 / 1000 / 10000 / 156250 / 312500 / 625000 / 1250000 / 2500000 / 5000000 / 10000000 )

ANALOG-USB Interfaceのサンプリング周波数 [mHz](全ポート共通)

input_enabled

boolean(true / false) 8個の配列

ANALOG-USB Interface のアナログ入力ポートごと(全8ポート)の有効/無効

input_voltage_min

整数8個の配列( 0 / -5000 / -10000 )

ANALOG-USB Interface のアナログ入力ポートごと(全8ポート)の入力電圧[mV]の最小値

input_voltage_max

整数8個の配列( 5000 / 10000 )

ANALOG-USB Interface のアナログ入力ポートごと(全8ポート)の入力電圧[mV]の最大値

ただし、同一ポートの最小値と最大値の組み合わせは以下のいずれかである必要があります。

  • min:-10000, max:10000

  • min:-5000, max:5000

  • min:0, max:5000

上記に一致しない場合は実行時にエラーになります。

output_enabled

true / false

ANALOG-USB Interface のアナログ出力ポートの有効/無効

output_voltage

整数(20~5000(分解能20))

ANALOG-USB Interface のアナログ出力ポートから出力する信号の電圧[mV]

output_waveform_type

整数 (0 / 1 / 2 / 3 / 16 )

ANALOG-USB Interface のアナログ出力ポートから出力する信号の波形(0:擬似ランダム信号、1:正弦波、2:三角波、3:矩形波、16:固定)

output_frequency

整数 (1000~100000(分解能1000))

ANALOG-USB Interface のアナログ出力ポートから出力する信号波形の周波数[mHz]

clock_id

文字列 (CLOCK_MONOTONIC / CLOCK_MONOTONIC_RAW)

タイムスタンプを算出するときにシステムからどのように時刻を取得するか

  • CLOCK_MONOTONIC: NTPが行う段階的な調整の影響を受ける

  • CLOCK_MONOTONIC_RAW: NTPが行う段階的な調整の影響を受けない

intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。

timestamp_mode

文字列 (device / host) デフォルト: device

受信したデータに対して、タイムスタンプをどのように付与するか

  • device: ANALOG-USB Interface上で、ANALOG-USB Interfaceのクロックを元にタイムスタンプを付与する

  • host: エッジデバイスがANALOG-USB InterfaceからのデータをUSB経由で受信したタイミングで、エッジデバイスのクロックを元にタイムスタンプを付与する

apt-cantrx-src

エッジデバイスに接続されたEDGEPLANT CAN-USB Interfaceからデータを取得するときに使用するsrcエレメントです。

このエレメントは、デバイスパスにより指定されたEDGEPLANT CAN-Interfaceから、専用カーネルモジュール経由でデータを取得します。そして、 iscp-v2-compatフォーマット (can_frame型)で送出します。

注釈

EDGEPLANT CAN-USB Interface用のカーネルモジュールについては、 アプトポッドのウェブサイト の周辺機器についてのページを参照してください。

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

カスタムタイプ "iscp-v2-compat-msgs" (iscp-v2-compatフォーマット(can_frame型)を複数個連結したメッセージ)

エレメント独自の設定項目は以下のとおりです。パイプライン設定ファイルの conf: 以下に記述します。

重要

EDGEPLANT CAN-USB Interfaceの1つのデバイスパスに対してapt-cantrx-srcとapt-cantrx-sinkを同時に使用する場合は、apt-cantrx-srcとapt-cantrx-sinkの設定をすべて同じにしてください。

項目

設定値

説明

path

文字列

CAN-USB Interfaceのデバイスパス(例: /dev/apt-usb/by-id/usb-xxx

baudrate

整数 (125 / 250 / 500 / 10000)

CAN 通信のボーレート[kbps]

silent

true / false

CAN-USB Interface から CAN バスへのACKの送信

  • true: ACKを送信しない

  • false: ACKを送信する

clock_id

文字列 (CLOCK_MONOTONIC / CLOCK_MONOTONIC_RAW)

タイムスタンプを算出するときにシステムからどのように時刻を取得するか

  • CLOCK_MONOTONIC: NTPが行う段階的な調整の影響を受ける

  • CLOCK_MONOTONIC_RAW: NTPが行う段階的な調整の影響を受けない

intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。

timestamp_mode

文字列 (device / host) デフォルト: device

受信したデータに対して、タイムスタンプをどのように付与するか

  • device: CAN-USB Interface上で、ANALOG-USB Interfaceのクロックを元にタイムスタンプを付与する

  • host: エッジデバイスがCAN-USB InterfaceからのデータをUSB経由で受信したタイミングで、エッジデバイスのクロックを元にタイムスタンプを付与する

file-src

指定されたパスのファイルを読み込み、その内容を送出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

MIMEタイプ "application/octet-stream"

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

path

文字列

読み取るファイルのパス

nmea-packet-src

このエレメントでは、デバイスパスにより指定されたTTYデバイスからTTYドライバー経由でNMEAデータを取得します。

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

MIMEタイプ "text/plain" (1つのNMEAセンテンスが1つのメッセージ)

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

path

文字列

GPSデバイスのデバイスパス(例: /dev/ttyUSB9

baudrate

整数( 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400

ボーレート (例:57600)

termiosで定義された左記いずれかの値である必要があります。

注釈

  • nmea-packet-srcエレメントは、GPSデバイスの初期化は行いません。あらかじめGPSデバイス(ttyデバイス)が所定のボーレートでNMEAを出力する状態にしてください。

  • EDGEPLATNT T1でL4Tを使用する場合は、以下のようにすることでGPSデバイスを初期化してデータを取得することができます。

    1. edgeplant-l4t-toolsサービスを有効にします。方法については、 EDGEPLANT T1デベロッパーガイド を参照してください。

    2. パイプライン設定ファイルに以下を追加します。

    before_task:
      - while true; do if test $(stty -F /dev/ttyTHS1 speed) = 57600; then break; fi; sleep 1; done
      - sleep 3
    

process-src

プロセスを起動し、起動したプロセスの標準出力をそのまま送出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

MIMEタイプ "application/octet-stream"

項目

設定値

説明

program

文字列

実行ファイル

args

文字列の配列

実行ファイルに渡す引数

command

文字列

実行ファイルと引数を1文字列で指定したもの。programとargsが指定されなかった場合に使用。

text-src

指定されたテキストを送出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

MIMEタイプ "application/octet-stream"

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

text

文字列

送出するテキスト

interval_ms

整数

メッセージ生成の間隔をミリ秒にて指定

repeat

整数

「メッセージ送出のタイミングごとに、メッセージを何回送出するか」を指定します。デフォルトは1です。 例えば interval_ms: 100 かつ repeat: 5 の場合、100ミリ秒経過ごとに5回メッセージを送出します。

v4l2-src

指定されたカメラからV4L2(Video for Linux 2)経由でH.264形式の動画データを受け取り、h264_annex_b型の iscp-v2-compatフォーマット で送出します。

エレメントの種類

src

次のエレメントに送信するポートの数

1

送信ポートでの送信形式

カスタムタイプ "iscp-v2-compat-msg" (h264_annex_b型)

エレメント独自の設定項目は以下のとおりです。パイプライン設定ファイルの conf: 以下に記述します。

項目

設定値

説明

path

文字列

デバイスパス(例: /dev/video0

type

文字列( h264 / jpeg

ドライバーから取得するデータの種類。

  • h264: H.264のデータを取得します。

  • jpeg: JPEGデータを取得します。

width

整数

画像幅。カメラが対応している画像幅を指定してください。

height

整数

画像高さ。カメラが対応している画像高さを指定してください。

fps

整数

FPS。カメラが対応しているFPSを指定してください。

h264-split-filter

メッセージを受け取り、H.264形式の動画データとしてパースし、 iscp-v2-compatフォーマット (h264_annex_b型)で送出します。

エレメントの種類

filter

前のエレメントから受信するポートの数

1

次のエレメントに送信するポートの数

1

受信ポートでの受信形式

H.264 Annex B形式のバイナリストリームを任意の箇所で区切ったバイト列

送信ポートでの送信形式

カスタムタイプ "iscp-v2-compat-msg" (h264_annex_b型)

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

clock_id

文字列 (CLOCK_MONOTONIC / CLOCK_MONOTONIC_RAW)

タイムスタンプを算出するときにシステムからどのように時刻を取得するか

  • CLOCK_MONOTONIC: NTPが行う段階的な調整の影響を受ける

  • CLOCK_MONOTONIC_RAW: NTPが行う段階的な調整の影響を受けない

intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。

delay_ms

小数

タイムスタンプを付与する際に差し引くオフセット(カメラ処理時間)

例えば、カメラ内での処理に 100 ミリ秒かかる場合は、「100」を指定します。これにより、タイムスタンプ付与時に 100 ミリ秒前の時刻が使用されます。

設定例:

conf:
  clock_id: CLOCK_MONOTONIC
  delay_ms: 100

iscp-v2-compat-filter

データを指定されたフォーマットでパースし、指定に応じてタイムスタンプを付与し、can_frame / jpeg / string/nmea / bytes / float64 / int64 / string いずれかの型の iscp-v2-compatフォーマット で送出します。

エレメントの種類

filter

前のエレメントから受信するポートの数

1

次のエレメントに送信するポートの数

1

受信ポートでの受信形式

任意( timestamp および convert_rule の指定に適合していること)

送信ポートでの送信形式

カスタムタイプ "iscp-v2-compat-msg" (can_frame型 / jpeg型 / string/nmea型 / bytes型 / float64型 / int64型 / string型)

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

timestamp

文字列(stamped)、または、タイムスタンプ付与方法を定義したオブジェクト

受信するメッセージにタイムスタンプ( 受信データのタイムスタンプ )が含まれているか

  • stamped: タイムスタンプが含まれている(このタイムスタンプを出力時にも付与します。)

    conf:
      timestamp: stamped
    
  • stamp: タイムスタンプが含まれていない(出力時には clock_id の指定に従ってタイムスタンプを付与します。)

    conf:
      timestamp:
        stamp:
          clock_id: CLOCK_MONOTONIC
    

    clock_id の指定:

    • CLOCK_MONOTONIC: NTPが行う段階的な調整の影響を受ける時計を使用する

    • CLOCK_MONOTONIC_RAW: NTPが行う段階的な調整の影響を受けない時計を使用する

    clock_id は、intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。

convert_rule

変換ルールを定義したオブジェクト

iscp-v2-compatフォーマットに変換するためのルールを指定します。詳細は以下を参照してください。

受信データのタイムスタンプ

受信するメッセージの先頭にタイムスタンプが追加されている場合は、設定項目 timestamp の値を stamped とします。 この場合、受信したメッセージの先頭8バイトがタイムスタンプとしてパースされます。 期待するフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                      Timestamp (seconds)                      |
+---------------+---------------+---------------+---------------+
|                      Timestamp (nano seconds)                 |
+---------------+---------------+---------------+---------------+
|                      Message
+---------------+---------------+-----------//--+

このTimestamp (seconds)フィールド、Timestamp (nano seconds)フィールドの値は、それぞれiscp-v2-compatでの出力時に同名のフィールドに出力されます。

Messageは、設定項目 convert_rule で指定された任意のフォーマットのデータです。

CANデータ用変換ルール(can)

設定例:

conf:
  timestamp:
    stamp:
      clock_id: CLOCK_MONOTONIC
  convert_rule:
    can:
      lower_hex: true

CANデータ用の変換で期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|            CAN_ID  + EFF/RTR/ERR flags (Little Endian)        |
+---------------+---------------+---------------+---------------+
|      DLC      |      DATA
+---------------+---------------+-----------//--+

この変換ルールでは以下の項目を設定可能です。

項目

設定値

説明

lower_hex

boolean(true / false)

出力するiscp-v2-compatフォーマットのData Nameフィールドに入れる16進数数値表現を小文字で行うか

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: can_frame

  • Data Name: 上記入力データ内のCAN_ID(16進8桁の文字列表現)(ただしEFFフラグはオフになります)

  • Payload: 上記入力データ内のDATAフィールドの内容

JPEG用変換ルール(jpeg)

設定例:

conf:
  timestamp:
    stamp:
      clock_id: CLOCK_MONOTONIC
  convert_rule: jpeg

JPEG用の変換では、入力されたメッセージを、JPEG (ITU-T Rec. T.81 | ISO/IEC 10918-1, 10918-2)としてパースします。 期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                     JPEG
+---------------+---------------+-----------//--+

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: jpeg

  • Data Name: 空文字

  • Payload: 上記入力データ内のJPEGフィールドの内容

この変換ルールには設定項目はありません。

NMEAデータ用変換ルール(nmea)

設定例:

conf:
  timestamp:
    stamp:
      clock_id: CLOCK_MONOTONIC
  convert_rule: nmea

NMEAデータ用の変換では、入力されたメッセージをNMEA 0183としてパースします。 期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                     NMEA
+---------------+---------------+-----------//--+

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: string/nmea

  • Data Name: <NMEAのトーカ>/<NMEAのメッセージ> (上記入力データ内のNMEAフィールドから抽出されたもの)

  • Payload: 上記入力データ内のNMEAフィールドの内容

この変換ルールには設定項目はありません。

Bytesデータ用変換ルール(bytes)

設定例:

conf:
  clock_id: CLOCK_MONOTONIC
  convert_rule:
    bytes:
      name: null

この変換ルールでは以下の項目が設定可能です。

項目

設定値

説明

name

stringまたはnull

出力するiscp-v2-compatフォーマットのData Nameフィールドに入れる文字列

設定項目の name に何らかの文字列を設定した場合は、期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                     Bytes
+---------------+---------------+-----------//--+

設定項目の name がnullの場合、データ名称は入力データ内で指定します。期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|  Name Length  |                     Name
+---------------+---------------+---------------+-----------//--+
|                             Bytes
+---------------+---------------+-----------//--+
  • Name Length: Nameフィールドの長さ。

  • Name: データ名称として使用する文字列。

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: bytes

  • Data Name: 設定項目 name に指定された文字列。または、 name がnullの場合、上記入力データ内のNameフィールドの内容。

  • Payload: 上記入力データ内のBytesフィールドの内容

Float64データ用変換ルール(float64)

設定例:

conf:
  clock_id: CLOCK_MONOTONIC
  convert_rule:
    float64:
      name: null

この変換ルールでは以下の項目が設定可能です。

項目

設定値

説明

name

stringまたはnull

出力するiscp-v2-compatフォーマットのData Nameフィールドに入れる文字列

設定項目の name に何らかの文字列を設定した場合は、期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                                                               |
+                       Float (Little Endian)                   +
|                                                               |
+---------------+---------------+---------------+---------------+

設定項目の name がnullの場合、データ名称は入力データ内で指定します。期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|  Name Length  |                     Name                      |
+---------------+---------------+---------------+-----------//--+
|                                                               |
+                       Float (Little Endian)                   +
|                                                               |
+---------------+---------------+---------------+---------------+
  • Name Length: Nameフィールドの長さ。

  • Name: データ名称として使用する文字列。

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: float64

  • Data Name: 設定項目 name に指定された文字列。または、 name がnullの場合、上記入力データ内のNameフィールドの内容。

  • Payload: 上記入力データ内のFloatフィールドの内容

int64データ用変換ルール(int64)

設定例:

conf:
  clock_id: CLOCK_MONOTONIC
  convert_rule:
    int64:
      name: null

この変換ルールでは以下の項目が設定可能です。

項目

設定値

説明

name

stringまたはnull

出力するiscp-v2-compatフォーマットのData Nameフィールドに入れる文字列

設定項目の name に何らかの文字列を設定した場合は、期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                                                               |
+                      Int (Little Endian)                      +
|                                                               |
+---------------+---------------+---------------+---------------+

設定項目の name がnullの場合、データ名称は入力データ内で指定します。期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|  Name Length  |                     Name                      |
+---------------+---------------+---------------+-----------//--+
|                                                               |
+                      Int (Little Endian)                      +
|                                                               |
+---------------+---------------+---------------+---------------+
  • Name Length: Nameフィールドの長さ。

  • Name: データ名称として使用する文字列。

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: int64

  • Data Name: 設定項目 name に指定された文字列。または、 name がnullの場合、上記入力データ内のNameフィールドの内容。

  • Payload: 上記入力データ内のIntフィールドの内容

Stringデータ用変換ルール(string)

設定例:

conf:
  clock_id: CLOCK_MONOTONIC
  convert_rule:
    string:
      name: abc

この変換ルールでは以下の項目が設定可能です。

項目

設定値

説明

name

stringまたはnull

出力するiscp-v2-compatフォーマットのData Nameフィールドに入れる文字列

設定項目の name に何らかの文字列を設定した場合は、期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|                     String
+---------------+---------------+-----------//--+

設定項目の name がnullの場合、データ名称は入力データ内で指定します。期待する入力データのフォーマットは以下のとおりです。

0                                                               4
+---------------+---------------+---------------+---------------+
|  Name Length  |                     Name                      |
+---------------+---------------+---------------+-----------//--+
|                     String
+---------------+---------------+-----------//--+
  • Name Length: Nameフィールドの長さ。

  • Name: データ名称として使用する文字列。

出力される iscp-v2-compat の各フィールドは以下のようになります。

  • Data Type: string

  • Data Name: 設定項目 name に指定された文字列。または、 name がnullの場合、上記入力データ内のNameフィールドの内容。

  • Payload: 上記入力データ内のStringフィールドの内容

jpeg-split-filter

jpeg-split-filterは、受信したバイナリストリームをJPEGが複数並んでいるバイナリとしてパースして、1枚ごとのJPEGに分けて送信します。

エレメントの種類

filter

前のエレメントから受信するポートの数

1

次のエレメントに送信するポートの数

1

受信ポートでの受信形式

JPEGフォーマットのバイナリを並べたバイナリストリームを任意の箇所で区切ったバイト列

送信ポートでの送信形式

MIMEタイプ "image/jpeg" (1枚の画像が1つのメッセージ)

エレメント独自の設定項目はありません。

pcm-split-filter

GStreamerから出力された音声データを受け取り、bytes型の iscp-v2-compatフォーマット に変換して送出します。

重要

エッジデバイスとして T1 / VTC1910-S 以外を使用する場合は正しく設定を行えない可能性があります。

エレメントの種類

filter

前のエレメントから受信するポートの数

1

次のエレメントに送信するポートの数

1

受信ポートでの受信形式

任意(前のタスクでprocess-srcエレメントを使ってGStreamerから音声を出力させ、その出力を本タスクで受け取るようにします。)

GStreamerからの出力は Raw Audio Media Types における以下のタイプとしてください。

  • format: S16LE / S32LE / F32LE

  • rate: 48000

  • channels: 1

  • channel-mask: 使わない(GStreamerコマンドに設定しないこと)

  • layout: 使わない(GStreamerコマンドに設定しないこと)

送信ポートでの送信形式

カスタムタイプ "iscp-v2-compat-msg" (bytes型)

エレメント独自の設定項目は以下のとおりです。パイプライン設定ファイルの conf: 以下に記述します。

項目

設定値

説明

clock_id

文字列 (CLOCK_MONOTONIC / CLOCK_MONOTONIC_RAW)

タイムスタンプを算出するときにシステムからどのように時刻を取得するか

  • CLOCK_MONOTONIC: NTPが行う段階的な調整の影響を受ける

  • CLOCK_MONOTONIC_RAW: NTPが行う段階的な調整の影響を受けない

intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。

delay_ms

小数

データ打刻のオフセットを設定入力します。 音声が発生してからデバイスコネクターにデータが届くまでに100ミリ秒かかる場合は、 100 を指定します。 ほとんどの場合 0 で問題ありません。

audio_element

文字列 (Mic Jack/ y Jack-state)

コンピューターのマイクジャックを使用する場合、マイクジャックの状態(抜き差し)を示すデバイスエレメント名を入力します。

  • Terminal SystemのコンピューターとしてVTC 1910-Sを使用する場合: Mic Jack

  • Terminal SystemのコンピューターとしてEDGEPLANT T1を使用する場合: y Jack-state

audio_iface

文字列 (card /mixer)

音声を制御するデバイスの種別を入力します。

  • Terminal SystemのコンピューターとしてVTC 1910-Sを使用する場合: card

  • Terminal SystemのコンピューターとしてEDGEPLANT T1を使用する場合: mixer

audio_format

文字列 (S16LE / S32LE / F32LE)

音声データの形式を選択します

  • S16LE: signed 16 bit little-endian

  • S32LE: signed 32 bit little-endian

  • F32LE: floating-point little-endian

audio_rate

整数 (48000)(固定)

サンプリング周波数[Hz]

audio_channels

整数 (1)(固定)

チャンネルの数。

stat-filter

パイプラインを流れるメッセージの回数やサイズを確認するためのエレメントです。 受け取ったメッセージはそのまま加工せずに送信ポートから送出します。受け取ったメッセージの回数とサイズを記録し、その統計情報を標準エラー出力に書き出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

エレメントの種類

filter

前のエレメントから受信するポートの数

1

次のエレメントに送信するポートの数

1

受信ポートでの受信形式

任意

送信ポートでの送信形式

受信ポートに入力されたデータをそのまま出力

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

interval_ms

整数

出力頻度をミリ秒にて指定

apt-cantrx-sink

メッセージを受け取り、 iscp-v2-compatフォーマット (can_frame型)としてパースし、専用カーネルモジュール経由でEDGEPLANT CAN-USB Interfaceに送出します。

注釈

EDGEPLANT CAN-USB Interface用のカーネルモジュールについては、 アプトポッドのウェブサイト の周辺機器についてのページを参照してください。

エレメントの種類

sink

前のエレメントから受信するポートの数

1

受信ポートでの受信形式

任意(iscp-v2-compatフォーマット(can_frame型)を複数個連結したバイナリストリーム)

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

重要

EDGEPLANT CAN-USB Interfaceの1つのデバイスパスに対してapt-cantrx-srcとapt-cantrx-sinkを同時に使用する場合は、apt-cantrx-srcとapt-cantrx-sinkの設定をすべて同じにしてください。

項目

設定値

説明

path

文字列

CAN-USB Interface のデバイスパス(例: /dev/apt-usb/by-id/usb-xxx

baudrate

整数(125 / 250 / 500 / 10000)

CAN 通信のボーレート[kbps]

silent

true / false

CAN-USB Interface から CAN バスに ACK を送信しない設定の有効/無効( true:ACKなし、 false:ACKあり)

clock_id

文字列 (CLOCK_MONOTONIC / CLOCK_MONOTONIC_RAW)

タイムスタンプを算出するときにシステムからどのように時刻を取得するか

本エレメントはタイムスタンプを付与しないため、任意の値で構いません。

ただし、EDGEPLANT CAN-USB Interfaceの1つのデバイスパスに対して、apt-cantrx-srcと本エレメントを同時に使用する場合は、apt-cantrx-srcと同じ設定にしてください。

timestamp_mode

文字列 (device / host )

デフォルト: device

受信したデータに対して、タイムスタンプをどのように付与するか

本エレメントはタイムスタンプを付与しないため、任意の値で構いません。

ただし、EDGEPLANT CAN-USB Interfaceの1つのデバイスパスに対して、apt-cantrx-srcと本エレメントを同時に使用する場合は、apt-cantrx-srcと同じ設定にしてください。

file-sink

指定されたパスに、受け取ったメッセージをそのまま書き出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

エレメントの種類

sink

前のエレメントから受信するポートの数

1

受信ポートでの受信形式

任意

項目

設定値

説明

path

文字列

出力先のファイルパス

create

true / false

trueの場合、出力先のファイルがない場合は作成する。デフォルトは false

separator

文字列

メッセージ出力ごとに挿入するテキスト。デフォルトは空

flush_size

整数

入力をフラッシュするまでにバッファにためるデータ量(バイト)。デフォルトは0

null-sink

メッセージを受け取りますが、それを何にも使わずに破棄します。(このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

このエレメントに設定項目はありません

エレメントの種類

sink

前のエレメントから受信するポートの数

1

受信ポートでの受信形式

任意

stdout-sink

受け取ったメッセージを標準出力に書き出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)

エレメントの種類

sink

前のエレメントから受信するポートの数

1

受信ポートでの受信形式

任意

エレメント独自の設定項目は以下のとおりです。 conf: 以下に記述します。

項目

設定値

説明

separator

文字列

メッセージ出力ごとに挿入するテキスト。デフォルトは空