付属デバイスコネクターの使用¶
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用データフォーマットにしておく必要があります。
注釈
ここで説明しているパイプラインアーキテクチャーは、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形式のパイプライン設定ファイルで行います。 例えば、以下のようなパイプラインを考えることができます。
この例は、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 |
文字列の二次元配列 |
このタスクが受け取るメッセージの送信元を指定します。
メッセージは非同期に送られます。 例えば、
ポート番号が0の場合、ポート番号を省略して |
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 のデバイスパス(例: |
input_send_rate |
整数 ( |
ANALOG-USB Interfaceのサンプリング周波数 [mHz](全ポート共通) |
input_enabled |
boolean( |
ANALOG-USB Interface のアナログ入力ポートごと(全8ポート)の有効/無効 |
input_voltage_min |
整数8個の配列( |
ANALOG-USB Interface のアナログ入力ポートごと(全8ポート)の入力電圧[mV]の最小値 |
input_voltage_max |
整数8個の配列( |
ANALOG-USB Interface のアナログ入力ポートごと(全8ポート)の入力電圧[mV]の最大値 ただし、同一ポートの最小値と最大値の組み合わせは以下のいずれかである必要があります。
上記に一致しない場合は実行時にエラーになります。 |
output_enabled |
|
ANALOG-USB Interface のアナログ出力ポートの有効/無効 |
output_voltage |
整数(20~5000(分解能20)) |
ANALOG-USB Interface のアナログ出力ポートから出力する信号の電圧[mV] |
output_waveform_type |
整数 ( |
ANALOG-USB Interface のアナログ出力ポートから出力する信号の波形(0:擬似ランダム信号、1:正弦波、2:三角波、3:矩形波、16:固定) |
output_frequency |
整数 (1000~100000(分解能1000)) |
ANALOG-USB Interface のアナログ出力ポートから出力する信号波形の周波数[mHz] |
clock_id |
文字列 ( |
タイムスタンプを算出するときにシステムからどのように時刻を取得するか
intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。 |
timestamp_mode |
文字列 ( |
受信したデータに対して、タイムスタンプをどのように付与するか
|
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のデバイスパス(例: |
baudrate |
整数 ( |
CAN 通信のボーレート[kbps] |
silent |
|
CAN-USB Interface から CAN バスへのACKの送信
|
clock_id |
文字列 ( |
タイムスタンプを算出するときにシステムからどのように時刻を取得するか
intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。 |
timestamp_mode |
文字列 ( |
受信したデータに対して、タイムスタンプをどのように付与するか
|
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デバイスのデバイスパス(例: |
baudrate |
整数( |
ボーレート (例: termiosで定義された左記いずれかの値である必要があります。 |
注釈
nmea-packet-srcエレメントは、GPSデバイスの初期化は行いません。あらかじめGPSデバイス(ttyデバイス)が所定のボーレートでNMEAを出力する状態にしてください。
EDGEPLATNT T1でL4Tを使用する場合は、以下のようにすることでGPSデバイスを初期化してデータを取得することができます。
edgeplant-l4t-toolsサービスを有効にします。方法については、 EDGEPLANT T1デベロッパーガイド を参照してください。
パイプライン設定ファイルに以下を追加します。
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です。
例えば |
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 |
文字列 |
デバイスパス(例: |
type |
文字列( |
ドライバーから取得するデータの種類。
|
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 |
文字列 ( |
タイムスタンプを算出するときにシステムからどのように時刻を取得するか
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 |
文字列( |
受信するメッセージにタイムスタンプ( 受信データのタイムスタンプ )が含まれているか
|
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
+---------------+---------------+-----------//--+
CAN_ID + EFF/RTR/ERR flags: Linux SocketCanのcan_frame構造体 の
can_id
。DLC: Linux SocketCanのcan_frame構造体 の
len
。DATA: Linux SocketCanのcan_frame構造体 の
data
。
この変換ルールでは以下の項目を設定可能です。
項目 |
設定値 |
説明 |
---|---|---|
lower_hex |
boolean( |
出力する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 / F32LErate
: 48000channels
: 1channel-mask
: 使わない(GStreamerコマンドに設定しないこと)layout
: 使わない(GStreamerコマンドに設定しないこと)
- 送信ポートでの送信形式
カスタムタイプ "iscp-v2-compat-msg" (bytes型)
エレメント独自の設定項目は以下のとおりです。パイプライン設定ファイルの conf:
以下に記述します。
項目 |
設定値 |
説明 |
---|---|---|
clock_id |
文字列 ( |
タイムスタンプを算出するときにシステムからどのように時刻を取得するか
intdash Edge Agent 2の設定と同じにする必要があります。 intdash Edge Agent 2のデフォルトはCLOCK_MONOTONICです。 |
delay_ms |
小数 |
データ打刻のオフセットを設定入力します。 音声が発生してからデバイスコネクターにデータが届くまでに100ミリ秒かかる場合は、 |
audio_element |
文字列 ( |
コンピューターのマイクジャックを使用する場合、マイクジャックの状態(抜き差し)を示すデバイスエレメント名を入力します。
|
audio_iface |
文字列 ( |
音声を制御するデバイスの種別を入力します。
|
audio_format |
文字列 ( |
音声データの形式を選択します
|
audio_rate |
整数 ( |
サンプリング周波数[Hz] |
audio_channels |
整数 ( |
チャンネルの数。 |
print-log-filter¶
受け取ったメッセージの数とサイズの情報をログとして出力します。 ログの出力先としてデバイスコネクターのログまたは標準エラーを選択できます。
- エレメントの種類
filter
- 前のエレメントから受信するポートの数
1
- 次のエレメントに送信するポートの数
1
- 受信ポートでの受信形式
任意
- 送信ポートでの送信形式
任意(受け取ったメッセージをそのまま送信ポートに書き出します)
エレメント独自の設定項目は以下のとおりです。 conf:
以下に記述します。
項目 |
設定値 |
説明 |
---|---|---|
interval_ms |
小数 |
ログを出力するミリ秒単位の周期(例:1000) 例えば「1000」を指定すると、受け取ったメッセージ数と合計サイズを、1000ミリ秒ごとにログとして出力します。 |
tag |
string |
ログを識別できるように各行の先頭に出力されるタグ。
[connector1] 100 msgs, 1000 bytes
|
output |
string ( |
ログの出力先を指定します。
|
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 のデバイスパス(例: |
baudrate |
整数( |
CAN 通信のボーレート[kbps] |
silent |
|
CAN-USB Interface から CAN バスに ACK を送信しない設定の有効/無効( |
clock_id |
文字列 ( |
タイムスタンプを算出するときにシステムからどのように時刻を取得するか 本エレメントはタイムスタンプを付与しないため、任意の値で構いません。 ただし、EDGEPLANT CAN-USB Interfaceの1つのデバイスパスに対して、apt-cantrx-srcと本エレメントを同時に使用する場合は、apt-cantrx-srcと同じ設定にしてください。 |
timestamp_mode |
文字列 ( デフォルト: |
受信したデータに対して、タイムスタンプをどのように付与するか 本エレメントはタイムスタンプを付与しないため、任意の値で構いません。 ただし、EDGEPLANT CAN-USB Interfaceの1つのデバイスパスに対して、apt-cantrx-srcと本エレメントを同時に使用する場合は、apt-cantrx-srcと同じ設定にしてください。 |
file-sink¶
指定されたパスに、受け取ったメッセージをそのまま書き出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)
エレメント独自の設定項目は以下のとおりです。 conf:
以下に記述します。
- エレメントの種類
sink
- 前のエレメントから受信するポートの数
1
- 受信ポートでの受信形式
任意
項目 |
設定値 |
説明 |
---|---|---|
path |
文字列 |
出力先のファイルパス |
create |
|
trueの場合、出力先のファイルがない場合は作成する。デフォルトは false |
separator |
文字列 |
メッセージ出力ごとに挿入するテキスト。デフォルトは空 |
flush_size |
整数 |
入力をフラッシュするまでにバッファにためるデータ量(バイト)。デフォルトは0 |
null-sink¶
メッセージを受け取りますが、それを何にも使わずに破棄します。(このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)
このエレメントに設定項目はありません
- エレメントの種類
sink
- 前のエレメントから受信するポートの数
1
- 受信ポートでの受信形式
任意
stdout-sink¶
受け取ったメッセージを標準出力に書き出します。 (このエレメントは、Device Connector Frameworkに含まれる基本のエレメントです。)
- エレメントの種類
sink
- 前のエレメントから受信するポートの数
1
- 受信ポートでの受信形式
任意
エレメント独自の設定項目は以下のとおりです。 conf:
以下に記述します。
項目 |
設定値 |
説明 |
---|---|---|
separator |
文字列 |
メッセージ出力ごとに挿入するテキスト。デフォルトは空 |