コンテンツにスキップ

ROS Domain ID 設定

BATCAM FX ROS Domain ID 設定

1. 概要

BATCAM FX は ROS 2 Humble をベースにセンサーデータをパブリッシュし、同じ ROS_DOMAIN_ID を使用するノード同士のみが互いを検出して通信します。同一ネットワーク上で複数の ROS 2 システムを分離して運用する場合や、ご使用の環境の Domain ID に BATCAM FX を合わせる必要がある場合に、この設定を変更します。

2. 方法の選択: ファームウェアバージョンの確認

ファームウェアバージョンによって設定方法が異なります。まず、ご使用の機器のファームウェアバージョンを確認してください。

ファームウェアバージョン設定方法備考
1.0.3c 以降REST API (項目 3、推奨)公式サポート方法
1.0.3c 未満systemd サービスファイルの手動修正 (項目 4)非公式の方法 — 注意事項を必ずお読みください

ファームウェアバージョンは、機器情報照会 API(GET /setting/status)の firmware_version フィールドで確認できます。

Terminal window
curl -u admin:<password> "http://192.168.0.30/setting/status"
# 例の 192.168.0.30 は実際の BATCAM FX の IP アドレスに置き換えてください。

レスポンス例:

{
"error": 0,
"result": {
"hardware_id": "3287162925128",
"sbrio_version": "1.0.14",
"firmware_version": "v1.0.3c"
}
}

💡 参考: BATCAM FX のすべての REST API は HTTP Basic 認証が必要です。機器にはデフォルトで adminuser の 2 つのアカウントがあらかじめ設定されており、出荷時の初期パスワードは必ず変更してからご使用ください。ファームウェアのアップデート方法については、BATCAM FX Web ソフトウェアアップデート または BATCAM FX シェルソフトウェアアップデート ドキュメントを参照してください。

3. REST API での設定 (推奨、ファームウェア 1.0.3c 以降)

BATCAM FX ファームウェア 1.0.3c バージョンから、REST API による ROS Domain ID の設定が可能です。リクエスト/レスポンススキーマの詳細とリアルタイムテストについては、BATCAM FX API リファレンスros タグを参照してください。

メソッドパス説明リクエストボディ
GET/ros/domain現在設定されている ROS Domain ID の照会なし
PATCH/ros/domainROS Domain ID の変更multipart/form-data

PATCH /ros/domain のリクエストフィールド:

フィールド必須説明
domain_idinteger必須設定する ROS Domain ID

現在の値の照会

Terminal window
curl -u admin:<password> "http://192.168.0.30/ros/domain"

レスポンス例:

{
"error": 0,
"result": {
"domain_id": 123
}
}

値の変更

Terminal window
curl -u admin:<password> -X PATCH "http://192.168.0.30/ros/domain" -F "domain_id=113"

レスポンス例:

{
"error": 0,
"result": {
"domain_id": 113
}
}

⚠️ 注意: 設定が反映される間、カメラとの接続が一時的に切断されます。設定直後に接続が切断されるのは正常な動作です。

4. 旧バージョンの手動設定 (ファームウェア 1.0.3c 未満、非公式)

ご使用の環境の ROS_DOMAIN_ID が 0 以外の場合に、現在非公式にサポートされている ROS_DOMAIN_ID の設定方法です。

1.0.3c 未満のファームウェアの BATCAM FX、あるいは内部で実行される ROS 2 オプションに DOMAIN_ID を追加できる機能はありません。したがって、ROS 2 Node および Topic を生成してパブリッシュする beamforming-camerad 実行サービスファイルの修正が必要です。

⚠️ 注意: このサービスは Restart=alwaysStartLimitAction=reboot で構成されているため、サービスファイルを誤って修正すると、beamforming-camerad が繰り返し再起動され、カメラが再起動する場合があります。修正前に元の内容を保管しておき、以下の例の形式を正確に守ってください。また、ファームウェアをアップデートした後は、設定がそのまま維持されているかを再度確認することを推奨します。

前提条件

  • BATCAM FX に SSH で接続できる必要があります。以下の例の 192.168.50.11 は、実際の BATCAM FX の IP アドレスに置き換えてください。

変更手順

  1. BATCAM FX に ssh でログイン

  2. サービス実行ファイルにアクセス ( vi、nano など )

  3. Service タグに Environment を追加

  4. デーモンおよびサービスファイルの再読み込み

  5. Beamforming-camerad またはカメラの再起動

変更の詳細

BATCAM FX に SSH でログインします。

Terminal window
ssh root@192.168.50.11
# ご使用の環境に合わせて IP アドレスを変更してください。

以下のコマンドを使用してシステム実行ファイルにアクセスします。 エディタは vi、nano など使いやすい方法をご使用ください。

Terminal window
nano /lib/systemd/system/beamforming-camerad.service
# または
vi /lib/systemd/system/beamforming-camerad.service

以下のコードブロックを参照して、Service タグ内に Environment の値を追加します。例の 113 は、ご使用の環境に合った ROS_DOMAIN_ID の値に指定できます。

[Unit]
Description=Batcam FX Camera daemon
Wants=multi-user.target
After=systemd-networkd.service dbus-org.neard.service network.target nvargus-daemon.service setup-account.service
[Service]
## 追加が必要な部分 — ご使用の環境に合わせて ROS_DOMAIN_ID を指定できます。
Environment=ROS_DOMAIN_ID=113
##
ExecStart=/bin/bash -c 'source /opt/ros/humble/local_setup.sh && systemctl restart nvargus-daemon && /opt/ros/humble/bin/beamforming-camerad'
Restart=always
StartLimitAction=reboot
RestartSec=5
TimeoutStopSec=30
TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 15
# RuntimeMaxSec=86400
[Install]
WantedBy=multi-user.target

⚠️ 注意: systemd ユニットファイルは行末コメントをサポートしていません。Environment=ROS_DOMAIN_ID=113 の行の後ろに # コメントを付けると、コメントまで値として解釈され設定が動作しないため、コメントは必ず別の行に記述してください。

以下のコマンドを使用して systemd daemon を再読み込みします。

Terminal window
systemctl daemon-reload

Beamforming-camerad またはカメラを再起動します。

Terminal window
systemctl restart beamforming-camerad
# または
reboot

5. 設定の確認

設定が適用されたかどうかは、2 つの方法で確認できます。

REST API で確認 (ファームウェア 1.0.3c 以降)

GET /ros/domain を呼び出し、返される domain_id が設定した値と一致するかを確認します。(項目 3 の照会例を参照)

ホスト PC で ROS 2 トピックから確認

ホスト PC の ROS 2 環境で機器と同じ ROS_DOMAIN_ID を設定した後、トピック一覧に BATCAM FX のトピックが表示されるかを確認します。

Terminal window
export ROS_DOMAIN_ID=113 # 機器に設定した値と同じ値を指定
ros2 topic list

正常に適用された場合、以下のようにカメラのハードウェア ID に基づくトピックが一覧に表示されます。

Terminal window
/fx_276730383020104/beamforming
/fx_276730383020104/image
/fx_276730383020104/lpoint_audio
/fx_276730383020104/prpd
/fx_276730383020104/ws_audio

トピック名のハードウェア ID(hardware_id)は、機器情報照会 API(GET /setting/status)で確認できます。トピックごとのメッセージ仕様については、FX ROS システム統合の概要 ドキュメントを参照してください。

6. トラブルシューティング (Troubleshooting)

  • ホストで機器のトピックが表示されない場合:

    • ホストと機器の ROS_DOMAIN_ID が同一かを確認します。機器の値は GET /ros/domain(ファームウェア 1.0.3c 以降) またはサービスファイルの Environment 行で確認できます。

    • 機器の ROS デフォルト DOMAIN_ID は 123 です。別途変更していない機器であれば、ホストで export ROS_DOMAIN_ID=123 を実行してから再度確認します。

  • REST API の呼び出しが 401 で失敗する場合:

    • HTTP Basic 認証の資格情報(admin または user アカウント)が正しいかを確認します。
  • PATCH 直後にカメラの接続が切断された場合:

    • 設定が反映される間、接続が一時的に切断されるのは正常な動作です。しばらくしてから再度接続し、GET /ros/domain で値を確認します。
  • 手動修正後にサービスが繰り返し再起動する、またはカメラが再起動する場合:

    • Environment=ROS_DOMAIN_ID=<値> の行に行末コメントや誤字がないかを確認し、修正後に systemctl daemon-reload を再度実行します。

7. 関連ドキュメント