Robotics J501 ハードウェアと入門ガイド
reComputer Robotics J501は、高度なロボティクスと産業用アプリケーション向けに設計された高性能エッジAIキャリアボードです。MAXNモードでNVIDIA Jetson AGX Orinモジュール(32GB/64GB)と互換性があり、最大275 TOPSのAI性能を提供します。
豊富な接続オプション(1x 10GbEと4x 1GbEイーサネットポート、NVMe SSD用デュアルM.2 Key Mスロット、5GとWi-Fi/BTモジュール用M.2スロット、複数のUSB 3.0ポート、4つのCANインターフェース(2つのネイティブ + 2つのSPI-to-CAN)、GMSL2カメラ拡張、DI/DO、I2S、UART、RS485を含む包括的なI/O)を装備し、複雑なマルチセンサー融合とリアルタイムAI処理のための強力なロボティクスブレインとして機能します。
JetPack 6.2.1とLinux BSPがプリインストールされており、シームレスな展開を保証します。NVIDIA Isaac ROS、Hugging Face、PyTorch、ROS 2/1などのフレームワークをサポートし、J501は大規模言語モデル駆動の意思決定と物理的ロボティクス制御を橋渡しし、すぐに使用できるインターフェースと最適化されたAIフレームワークで自律ロボットの開発を加速します。

主な特徴
- 高性能AI: Jetson AGX Orin 32/64GBモジュール、AmpereGPUとDLAエンジンで最大275 TOPS
- 豊富な接続性: デュアルM.2 Key M(NVMe);Key E(WiFi/BT)+ Key B(5G);1x 10GbE + 4x 1GbE;3x USB 3.0;2x USB-C
- クアッドCAN-FD: 2つのネイティブ + 2つのSPI-to-CANインターフェース(電気的絶縁付き)
- GMSL2ビジョン: 高速カメラ接続用の単一GMSL2インターフェース(1x)
- 産業用設計: 19-48V DC入力;-10~60°C動作;絶縁インターフェース;JetPack 6.2.1プリインストール
- ロボティクス対応: ROS 2/1、Isaac ROSサポート;DI/DO、I2S、UART、RS485;AMRと自動化最適化
仕様
| Jetson AGX Orin System on Module | ||
|---|---|---|
| 仕様 | reComputer Robotics J5011 | reComputer Robotics J5012 |
| モジュール | NVIDIA Jetson AGX Orin 32GB | NVIDIA Jetson AGX Orin 64GB |
| AI性能 | 200 TOPS | 275 TOPS |
| GPU | 1792コア NVIDIA Ampere @ 930 MHz | 2048コア NVIDIA Ampere @ 1.3 GHz |
| CPU | 8コア Arm Cortex-A78AE @ 2.0 GHz | 12コア Arm Cortex-A78AE @ 2.2 GHz |
| メモリ | 32GB 256ビット LPDDR5 @ 204.8 GB/s | 64GB 256ビット LPDDR5 @ 204.8 GB/s |
| ビデオエンコーダ | 1x 4K60 / 3x 4K30 / 6x 1080p60 / 12x 1080p30 (H.265) | 2x 4K60 / 6x 4K30 / 8x 1080p60 / 16x 1080p30 (H.265) |
| ビデオデコーダ | 1x 8K30 / 2x 4K60 / 4x 4K30 / 9x 1080p60 / 18x 1080p30 (H.265) | 1x 8K30 / 3x 4K60 / 7x 4K30 / 11x 1080p60 / 22x 1080p30 (H.265) |
| CSIカメラ | 最大6台のカメラ(仮想チャネル経由で16台) 16レーン MIPI CSI-2 D-PHY 2.1(最大40Gbps)/ C-PHY 2.0(最大164Gbps) | |
| 機械的仕様 | 100mm x 87mm 699ピン Molex Mirror Mezzコネクタ 統合熱伝達プレート | |
| キャリアボード | ||
| ストレージ | 2x M.2 Key-M(NVMe 2280 SSD) 1x M.2 Key-B(4G/5Gモジュール用) | |
| ネットワーク | 1x M.2 Key-E(WiFi/BT) 1x RJ45 10GbE + 4x RJ45 1GbE | |
| USB | 3x USB 3.0 Type-A 1x USB 3.0 Type-C(リカバリ) 1x USB 2.0 Type-C(デバッグUART) | |
| DI/DO/CAN | 1x 2x10P 3.81mmターミナルブロック - 4x DI @12V + 4x DO @40V + 4x CAN(CAN-FDサポート、電気的絶縁) | |
| GMSL | 2x Mini-Fakraコネクタ(8x GMSL2カメラ用)(オプション) | |
| シリアル | 2x DB9(RS232/422/485) | |
| ディスプレイ | 1x HDMI 2.1 | |
| ファン | 1×12 V(2.54 mm)、1×5 V(1.25 mm JST) | |
| ボタン | 1x リカバリ + 1x リセット | |
| LED | 3x LED(PWR、SSD、ユーザーLED) | |
| RTC | 1x CR1220バッテリーホルダー、1x RTC 2ピンヘッダー | |
| 電源入力 | 19-48V DC(5.08mmターミナルブロック経由)(電源アダプターは含まれません) | |
| 消費電力 | Jetson AGX Orinモジュール:最大60W(MAXNモード) システム全体のピーク:75W(周辺機器を含む) | |
| ソフトウェア | Jetpack 6.2.1 | |
| 機械的仕様 | 寸法:210mm x 180mm x 87mm(スタンド付き) | |
| 保証 | 2年 | |
| 認証 | RoHS、REACH、CE、FCC、UKCA、KC | |
GMSL拡張ボード仕様(オプション)
| デシリアライザ | MAX96712 |
|---|---|
| GMSLインターフェース | 2x Robotics-Fakraオスコネクタ |
| GMSL入力 | 最大8x GMSL2カメラ |
| 接続方法 | GMSL2 Fakra 1対4 M-Mケーブル |
| POCインターフェース機能 | 電源とデータの同時伝送をサポート |
ハードウェア概要



📦 JetPack OSのフラッシュ
サポートされるモジュール
前提条件
- UbuntuホストPC
- reComputer Robotics J501
- USB Type-Cデータ伝送ケーブル
仮想マシンではなく、物理的なUbuntuホストデバイスを使用することをお勧めします。 ホストマシンを準備するために、以下の表を参照してください。
| JetPackバージョン | Ubuntuバージョン(ホストコンピュータ) | ||
| 18.04 | 20.04 | 22.04 | |
| JetPack 6.x | ✅ | ✅ | |
Jetpackイメージの準備
ここでは、使用しているJetsonモジュールに対応するシステムイメージをUbuntu PCにダウンロードする必要があります:
| Jetpackバージョン | Jetsonモジュール | GMSL | ダウンロードリンク1 | SHA256 |
|---|---|---|---|---|
| 6.2.1 | AGX Orin 64GB | ✅ | ダウンロード | ed82745decdf554d82bd93441f1f4ad 149f395a4ba5719664ce2351be8201522 |
| AGX Orin 32GB | ✅ | ダウンロード | 58fa8b76754449b0a49ad7d5f273edd f3e1d1f458cdb34994f6d8643da7a1249 |
Jetpack6イメージファイルのサイズは約14.2GBで、ダウンロードには約60分かかります。ダウンロードが完了するまでお待ちください。
ダウンロードしたファームウェアの整合性を確認するために、SHA256ハッシュ値を比較できます。
Ubuntuホストマシンで、ターミナルを開いてsha256sum <File>コマンドを実行し、ダウンロードしたファイルのSHA256ハッシュ値を取得します。結果のハッシュがwikiで提供されているSHA256ハッシュと一致する場合、ダウンロードしたファームウェアが完全で破損していないことが確認されます。
⚙️ SEEDのJetsonキャリアボード用のすべての.dtsファイルとその他のソースコードは Linux_for_Tegra からダウンロードできます
強制リカバリモードに入る
インストール手順に進む前に、ボードが強制リカバリモードになっていることを確認する必要があります。
ステップバイステップ
ステップ1. USB2.0 DEVICEポートとUbuntuホストPC間にUSB Type-Cデータ転送ケーブルを接続します。

ステップ2. ピンを使ってRECOVERYホールに挿入し、リカバリボタンを押しながら保持します。
ステップ3. 電源を接続します。
ステップ4. リカバリボタンを離します。
ステップ5. LinuxホストPCでターミナルウィンドウを開き、lsusbコマンドを入力します。使用するJetson SoMに応じて、返される内容に以下の出力のいずれかが含まれている場合、ボードは強制リカバリモードになっています。
- AGX Orin 32GBの場合:0955:7223 NVidia Corp
- AGX Orin 64GBの場合:0955:7023 NVidia Corp
以下の画像はAGX Orin 32GBの場合です:

Jetsonにフラッシュする
ステップ1: ダウンロードしたイメージファイルを展開します:
cd <path-to-image>
sudo tar xpf mfi_xxxx.tar.gz
# For example: sudo tar xpf mfi_recomputer-robo-agx-orin-32g-j501-6.2.1-36.4.4-2025-11-01.tar.gz
ステップ2: 以下のコマンドを実行してjetpackシステムをNVMe SSDにフラッシュします:
cd mfi_xxxx
# For example: cd mfi_recomputer-robo-agx-orin-j501x
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 1 --network usb0 --showlogs
フラッシュプロセスが成功した場合、以下の出力が表示されます

フラッシュコマンドは2〜10分間実行される場合があります。
ステップ3: Robotics J501をPD to HDMIアダプターを使用してHDMI入力をサポートするディスプレイに接続するか、PDケーブルを使用してPD入力をサポートするディスプレイに直接接続し、初期設定セットアップを完了します:

必要に応じてSystem Configurationを完了してください。
🔌 インターフェース使用方法
以下では、Robotics J501ボードの様々なインターフェースとその使用方法を紹介します。
M.2 Key M
J501には、高速ストレージ拡張用のPCIe Gen4x4 NVMe SSDをサポートするデュアルM.2 Key Mスロットが含まれています。
サポートされているSSDは以下の通りです
- 128GB NVMe M.2 PCle Gen3x4 2280 Internal SSD
- 256GB NVMe M.2 PCle Gen3x4 2280 Internal SSD
- 512GB NVMe M.2 PCle Gen3x4 2280 Internal SSD
- 1TB NVMe M.2 PCle Gen3x4 2280 Internal SSD
- 2TB NVMe M.2 PCle Gen3x4 2280 Internal SSD
ハードウェア接続

使用方法
Jetsonデバイスでターミナルを開き、以下のコマンドを入力してSSDの読み書き速度をテストします。
ステップ1. テストディレクトリとファイルを作成:
mkdir ssd
touch ~/ssd/test
ステップ2. 書き込み性能をテスト:
dd if=/dev/zero of=/home/$USER/ssd/test bs=1024M count=5 conv=fdatasync

ステップ3. SSD情報を確認:
nvme list

テスト完了後は、sudo rm /home/$USER/ssd/testコマンドを実行してキャッシュファイルを削除してください。
M.2 Key E (WiFi/BT)
M.2 Key Eスロットは、ワイヤレス接続用のWi-Fi 6およびBluetooth 5.xモジュールをサポートします。
ハードウェア接続

注意:インターフェースを使用する前に、筐体のネジを外し、以下の図に示すように対応するモジュールを取り付ける必要があります。

使用方法
性能テスト: Wi-Fi性能をテストするには、以下のコマンドを使用します(IPアドレスをテストサーバーのものに置き換えてください):
# On server: iperf3 -s
# On client:
iperf3 -c 192.168.7.157

Bluetooth機能はM.2 Key Eスロット経由で利用できます。 Bluetoothテスト:

M.2 Key B (4G/5Gモジュール)
M.2 Key Bスロットは、Nano SIMカードホルダー付きの4G/5Gセルラーモジュールをサポートします。
ハードウェア接続

注意:インターフェースを使用する前に、筐体のネジを外し、以下の図に示すように対応するモジュールを取り付ける必要があります。

使用方法
ステップ1. ハードウェア認識を確認
lsusb
このコマンドは、システムに接続されているすべてのUSBデバイスのリストを、製造元(ID)、タイプ、その他の情報と共に表示します。例えば、出力にQuectel Wireless Solutions Co., Ltd. EM12-Gのデバイスが表示される場合、5Gモジュールが存在することを示しています。

ステップ2. ドライバーの読み込みを確認 5Gモジュールに必要なoptionドライバーが読み込まれていることを確認することが重要です。lsmodコマンドを使用して確認できます。
lsmod | grep option
optionドライバーが正常に読み込まれている場合、出力にドライバーに関する関連情報が表示されます。

ステップ3. ModemManagerを設定 ModemManagerはモデムデバイスを管理するためのツールで、インストールして再起動する必要があります。
sudo apt install modemmanager
sudo systemctl restart ModemManager
apt installコマンドはModemManagerパッケージをインストールするために使用され、systemctl restartは新しい設定が有効になるようにModemManagerサービスを再起動します。
ステップ4. モジュール識別を確認 mmcli -Lコマンドを使用して、ModemManagerが5Gモジュールを正しく識別できるかどうかを確認できます。
mmcli -L
5Gモジュールが認識されている場合、/org/freedesktop/ModemManager1/Modem/0のような出力が表示され、検出されたモデムデバイスへのパスを示します。

ステップ5. APNを設定 APN(Access Point Name)は、モバイルデバイスをネットワークに接続するために重要です。nmcliコマンドを使用してベアラープロファイルを作成します。中国移動を例に、以下のコマンドで設定ファイルを作成できます:
sudo nmcli con add type gsm ifname "*" apn "CMNET" ipv4.method auto
このコマンドは、新しいGSM(Global System for Mobile Communications)タイプの接続を追加し、APNを「CMNET」として指定し、自動IPv4設定を使用します。
ステップ6. 接続をアクティベート ベアラープロファイルを作成した後、接続をアクティベートする必要があります。
sudo nmcli con up "gsm"
このコマンドはGSM接続をアクティベートし、成功した場合は確認メッセージが表示されます。

ステップ7. モジュール識別を再確認 APNを設定した後、モジュールが認識されたままであることを確認するために、mmcli -Lコマンドを再度実行します。
mmcli -L
ステップ8. モジュールステータスを確認 最後に、mmcli -m 0コマンドを使用して、IP割り当て、キャリア、ネットワーク接続ステータスなど、モジュールの詳細情報を表示できます。
mmcli -m 0
このコマンドは、製造元、モデル、サポートされている現在のネットワーク技術、デバイスステータス、接続されているネットワークオペレーターなど、5Gモジュールに関する包括的な詳細を提供します。

Ethernet
Robotics J501は、1x 10GbE(ネイティブ)と4x 1GbE(PCIeスイッチ経由)RJ45ポートを提供します。10GbEポートはTI TQSPH-10G PHYを搭載し、5つの速度をサポートします:10/5/2.5/1/0.1 GbE。1GbEポートは10/100/1000M速度をサポートします。

ポートごとのLEDインジケーター:
- 緑色LED: 10G/5G/2.5G/1000Mリンクで点灯
- 黄色LED: ネットワークアクティビティで点滅
Ethernetポートの速度をテストするには、次のように iperf3 を使用します:
iperf3 -c <server_ip> -B <bind_ip>
<server_ip> は iperf3 サーバーの IP アドレスです。クライアントはこのサーバーに接続して帯域幅テストを実行します。
<bind_ip> は、テストトラフィックのソースとして指定されたローカル IP アドレスをバインドします。

LED
J501 には複数のステータス LED が搭載されています:
- PWR LED: 電源ステータス(緑色)
- ACT LED: システムアクティビティ(黄色)
- USR LED: GPIO 制御経由

使用方法
以下では、USER LED を緑、赤、または青に制御する方法を示します。
#change to red
echo 1 | sudo tee /sys/class/leds/on-board:red/brightness
echo 0 | sudo tee /sys/class/leds/on-board:red/brightness
#change to green
echo 1 | sudo tee /sys/class/leds/on-board:green/brightness
echo 0 | sudo tee /sys/class/leds/on-board:green/brightness
#change to blue
echo 1 | sudo tee /sys/class/leds/on-board:blue/brightness
echo 0 | sudo tee /sys/class/leds/on-board:blue/brightness
LED 制御効果は下図に示されています:

USB
Robotics J501 は、4つの USB 3.2 Type-A ポート(内部 USB 3.1 Gen1 ハブ経由、高速周辺機器、ストレージデバイス、またはカメラの接続用に最大 5Gbps のデータレートをサポート)と 1つの USB 2.0 Type-C デバッグポート(システムログへのアクセス、ブート問題のデバッグ、ファームウェア更新を行うためのシリアルコンソールとして機能)を提供します。
USB-A 速度テスト
USB デバイスの速度をテストするスクリプトを作成します:
vim test_usb.sh
以下の内容を貼り付けます:
test_usb.sh
cat <<'EOF' | sudo tee test_usb.sh >/dev/null
#!/bin/bash
set -e
MOUNT_POINT="$1"
TEST_FILE="$MOUNT_POINT/test_usb_speed.bin"
if [ -z "$MOUNT_POINT" ]; then
echo "Usage: $0 <mount_point>"
echo "Example: $0 /media/seeed/USB"
exit 1
fi
if [ ! -d "$MOUNT_POINT" ]; then
echo "Error: $MOUNT_POINT is not a directory"
exit 1
fi
echo "Write test..."
dd if=/dev/zero of="$TEST_FILE" bs=1M count=2048 conv=fdatasync status=progress
echo
echo "Drop caches..."
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
echo "Read test..."
dd if="$TEST_FILE" of=/dev/null bs=1M count=2048 status=progress
echo
echo "Cleaning up..."
rm -f "$TEST_FILE"
EOF
スクリプトを実行可能にしてテストします:
sudo chmod +x test_usb.sh
./test_usb.sh /mnt # If your USB drive is mounted at /mnt
# Or
./test_usb.sh /media/usb # If your USB drive is mounted at /media/usb
# Or
./test_usb.sh /path/to/your/usb/mount_point

まず df -h または lsblk コマンドを使用して、USB デバイスの実際のマウントポイントを確認してください!
USB 2.0 Type-C ポート
このシリアルポートを使用して、USB-C データケーブル経由で PC 側の入出力デバッグ情報を監視できます。

ステップ 1. シリアルポートツール(ここでは MobaXterm ツールを例として使用)を開き、新しいセッションを作成します。

ステップ 2. Serial ツールを選択します。

ステップ 3. 対応するシリアルポートを選択し、ボーレートを 115200 に設定して "OK" をクリックします。

ステップ 4. ユーザー名とパスワードで reComputer Super にログインします。

ファン
Robotics J501 は、Jetson モジュールとキャリアボードコンポーネントの両方を冷却するために設計された 2つの 4ピン PWM ファンコネクタを提供します:
- 12V ファン: 2.54 mm コネクタ、最大 1.5A、高性能冷却に適している
- 5V ファン: 1.25 mm JST コネクタ、最大 1.5A、低電力静音冷却に最適
PWM 制御により、システム温度に基づく動的で精密な速度調整が可能になり、ノイズと消費電力を最小限に抑えながら効率的な冷却を実現します。
12V ファンピン配置:
12V ファンコネクタ(2.54 mm)のピン配置は以下の通りです:

使用方法
手動 PWM 制御:
# Set fan speed (0-255)
sudo -i
echo 200 > /sys/bus/platform/devices/pwm-fan/hwmon/hwmon1/pwm1

デフォルトの熱ポリシーは /etc/nvpmodel.conf で事前設定されています。カスタムプロファイルについては、NVIDIA Jetson Linux Developer Guide を参照してください。
さらに、jtop ツールを使用してファン速度を手動で設定することもできます。
ターミナルで以下のコマンドを入力して jtop をインストールできます。
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install jetson-stats
次に reComputer Mini を再起動します:
sudo reboot
jtop をインストール後、ターミナルで起動できます:
jtop

CAN
reComputer Robotics J501 は、DI/DO インターフェースと J25 2x10P コネクタを共有する 4つの独立した CAN インターフェース(CAN 0、CAN 1、CAN 2、CAN 3)を搭載しています。これらのインターフェースは Classic CAN と CAN FD 通信プロトコルの両方をサポートし、高い抗干渉性能とリアルタイムデータ伝送を特徴とし、自動車電子機器、産業オートメーション、ロボティクスなどの産業制御シナリオに適しています。
使用方法

これは CAN インターフェースの回路図です。
CAN 通信
このセクションでは、Jetson 上で CAN0↔CAN1 と CAN2↔CAN3 を接続し、Classic CAN モードと CAN‑FD モードの両方でこれらのペア間でデータを送受信する方法を示します。
| チャンネル名 | インターフェースタイプ | ピン名 | GPIO チップ | GPIO 番号 | 終端抵抗制御 |
|---|---|---|---|---|---|
| CAN0 | ネイティブ | PAA.04 | gpiochip1 | 4 | gpiochip1 line4 (PAA.04) |
| CAN1 | ネイティブ | PAA.07 | gpiochip1 | 7 | gpiochip1 line7 (PAA.07) |
| CAN2 | SPI-to-CAN | - | gpiochip2 | 10 | gpiochip2 line10 |
| CAN3 | SPI-to-CAN | - | gpiochip2 | 12 | gpiochip2 line12 |
CAN0 と CAN1 の終端抵抗は、gpiochip1 line4 にある PAA.04 と gpiochip1 line7 にある PAA.07 の 2つのピンで制御できます。
終端抵抗制御は以下のルールに従います:
When `PAA.04 = 1`, the 120 Ω termination resistor of CAN0 is **disconnected**;
when `PAA.04 = 0`, the 120 Ω termination resistor of CAN0 is **connected**.
When `PAA.07 = 1`, the 120 Ω termination resistor of CAN1 is **disconnected**;
when `PAA.07 = 0`, the 120 Ω termination resistor of CAN1 is **connected**.
以下のコマンドを入力して gpiochip 1 のピンを表示します:
gpioinfo gpiochip1

以下のコマンドを参照して PAA.04 と PAA.07 を 0 に設定します:
sudo gpioset --mode=wait gpiochip1 4=0
sudo gpioset --mode=wait gpiochip1 7=0
以下のコマンドを参照して PAA.04 と PAA.07 を 1 に設定します:
sudo gpioset --mode=wait gpiochip1 4=1
sudo gpioset --mode=wait gpiochip1 7=1
Classic CAN モード
以下のスクリプトは、終端抵抗の有効化、ビットレートの設定、双方向データ伝送を含む、CAN0/CAN1 と CAN2/CAN3 間のループバック通信テストを実装します。

配線図は以下の通りです:
| From | To |
|---|---|
| CAN0_H | CAN1_H |
| CAN0_L | CAN1_L |
| CAN2_H | CAN3_H |
| CAN2_L | CAN3_L |
配線図は以下の通りです:

標準モードで CAN0↔CAN1 と CAN2↔CAN3 間のデータ送受信をテストする test_can.sh を作成します:
touch test_can.sh
sudo chmod +x test_can.sh
sudo ./test_can.sh
test_can.sh のスクリプトコードは以下の通りです:
test_can.sh
#!/bin/bash
set -e
PW="000000"
echo "$PW" | sudo -S ip link set can0 down || true
echo "$PW" | sudo -S ip link set can1 down || true
echo "$PW" | sudo -S ip link set can2 down || true
echo "$PW" | sudo -S ip link set can3 down || true
# Set socket buffer sizes
echo "$PW" | sudo -S sysctl -w net.core.rmem_max=524288
echo "$PW" | sudo -S sysctl -w net.core.wmem_max=524288
echo "$PW" | sudo -S sysctl -w net.core.rmem_default=524288
echo "$PW" | sudo -S sysctl -w net.core.wmem_default=524288
# Set bitrate, 1 Mbps
BITRATE=1000000
echo "$PW" | sudo -S ip link set can0 type can bitrate ${BITRATE}
echo "$PW" | sudo -S ip link set can1 type can bitrate ${BITRATE}
echo "$PW" | sudo -S ip link set can0 up
echo "$PW" | sudo -S ip link set can1 up
echo "$PW" | sudo -S ip link set can2 type can bitrate ${BITRATE}
echo "$PW" | sudo -S ip link set can3 type can bitrate ${BITRATE}
echo "$PW" | sudo -S ip link set can2 up
echo "$PW" | sudo -S ip link set can3 up
sleep 1
# Enable termination resistors
sudo pkill -f gpioset || true
gpioset --mode=time --sec=200000 gpiochip2 8=0 & # enable CAN1 120R
GPIO1_PID=$!
gpioset --mode=time --sec=200000 gpiochip2 9=0 & # enable CAN0 120R
GPIO2_PID=$!
gpioset --mode=time --sec=200000 gpiochip2 12=0 & # enable CAN3 120R
GPIO3_PID=$!
gpioset --mode=time --sec=200000 gpiochip2 10=0 & # enable CAN2 120R
GPIO4_PID=$!
echo "Start candump on can0 & can1..."
candump can0 &
DUMP0_PID=$!
candump can1 &
DUMP1_PID=$!
echo "Start candump on can2 & can3..."
candump can2 &
DUMP2_PID=$!
candump can3 &
DUMP3_PID=$!
echo "Start cangen on can0 & can1 and can2 & can3 (bi-directional test)..."
# -g 10 sends one frame every 10 ms; adjust as needed
cangen can0 -g 10 &
GEN0_PID=$!
cangen can1 -g 10 &
GEN1_PID=$!
cangen can2 -g 10 &
GEN2_PID=$!
cangen can3 -g 10 &
GEN3_PID=$!
# Cleanup background processes on Ctrl+C
cleanup() {
echo
echo "Stopping CAN test..."
kill $GEN0_PID $GEN1_PID $DUMP0_PID $DUMP1_PID $GPIO1_PID $GPIO2_PID 2>/dev/null || true
kill $GEN2_PID $GEN3_PID $DUMP2_PID $DUMP3_PID $GPIO3_PID $GPIO4_PID 2>/dev/null || true
echo "$PW" | sudo -S ip link set can0 down || true
echo "$PW" | sudo -S ip link set can1 down || true
echo "$PW" | sudo -S ip link set can2 down || true
echo "$PW" | sudo -S ip link set can3 down || true
echo "Done."
}
trap cleanup INT TERM
# Wait for child processes (candump runs until you Ctrl+C)
wait
CANテストスクリプトでは、PWを自分のJetsonパスワードに置き換えてください。
CAN0とCAN1間でのデータ送受信が完了します:

CAN-FDモード
CAN FDはより高いデータ伝送速度とより大きなデータフレーム長をサポートします。以下のスクリプトはCAN FDループバックテストを実装します。
CAN-FDモードでCAN0↔CAN1とCAN2↔CAN3間のデータ送受信をテストするためにtest_canfd.shを作成します:
touch test_canfd.sh
sudo chmod +x test_canfd.sh
sudo ./test_canfd.sh
test_canfd.shのスクリプトコードは以下の通りです:
test_canfd.sh
#!/bin/bash
set -e
PW="000000"
echo "$PW" | sudo -S ip link set can0 down || true
echo "$PW" | sudo -S ip link set can1 down || true
echo "$PW" | sudo -S ip link set can2 down || true
echo "$PW" | sudo -S ip link set can3 down || true
# Set socket buffers
echo "$PW" | sudo -S sysctl -w net.core.rmem_max=524288
echo "$PW" | sudo -S sysctl -w net.core.wmem_max=524288
echo "$PW" | sudo -S sysctl -w net.core.rmem_default=524288
echo "$PW" | sudo -S sysctl -w net.core.wmem_default=524288
# ---- CAN-FD parameters ----
BITRATE=500000 # Arbitration (nominal) bitrate
DBITRATE=5000000 # Data phase bitrate (FD fast mode)
# Configure CAN-FD: arbitration bitrate + data bitrate + FD on + error reporting + auto restart
echo "$PW" | sudo -S ip link set can0 type can bitrate $BITRATE dbitrate $DBITRATE fd on berr-reporting on restart-ms 100
echo "$PW" | sudo -S ip link set can1 type can bitrate $BITRATE dbitrate $DBITRATE fd on berr-reporting on restart-ms 100
echo "$PW" | sudo -S ip link set can2 type can bitrate $BITRATE dbitrate $DBITRATE fd on berr-reporting on restart-ms 100
echo "$PW" | sudo -S ip link set can3 type can bitrate $BITRATE dbitrate $DBITRATE fd on berr-reporting on restart-ms 100
echo "$PW" | sudo -S ip link set can0 up
echo "$PW" | sudo -S ip link set can1 up
echo "$PW" | sudo -S ip link set can2 up
echo "$PW" | sudo -S ip link set can3 up
sleep 1
# Enable termination resistors
sudo pkill -f gpioset || true
gpioset --mode=time --sec=200000 gpiochip2 8=0 & # enable CAN1 120R
GPIO1_PID=$!
gpioset --mode=time --sec=200000 gpiochip2 9=0 & # enable CAN0 120R
GPIO2_PID=$!
gpioset --mode=time --sec=200000 gpiochip2 12=0 & # enable CAN3 120R
GPIO3_PID=$!
gpioset --mode=time --sec=200000 gpiochip2 10=0 & # enable CAN2 120R
GPIO4_PID=$!
echo "Start candump on can0 & can1..."
candump can0 &
DUMP0_PID=$!
candump can1 &
DUMP1_PID=$!
echo "Start candump on can2 & can3..."
candump can2 &
DUMP2_PID=$!
candump can3 &
DUMP3_PID=$!
echo "Start cangen on can0 & can1 and can2 & can3 (bi-directional test)..."
# -g 10 sends one frame every 10 ms; adjust as needed
cangen can0 -g 10 &
GEN0_PID=$!
cangen can1 -g 10 &
GEN1_PID=$!
cangen can2 -g 10 &
GEN2_PID=$!
cangen can3 -g 10 &
GEN3_PID=$!
# Cleanup background processes on Ctrl+C
cleanup() {
echo
echo "Stopping CAN-FD test..."
kill $GEN0_PID $GEN1_PID $DUMP0_PID $DUMP1_PID $GPIO1_PID $GPIO2_PID 2>/dev/null || true
kill $GEN2_PID $GEN3_PID $DUMP2_PID $DUMP3_PID $GPIO3_PID $GPIO4_PID 2>/dev/null || true
echo "$PW" | sudo -S ip link set can0 down || true
echo "$PW" | sudo -S ip link set can1 down || true
echo "$PW" | sudo -S ip link set can2 down || true
echo "$PW" | sudo -S ip link set can3 down || true
echo "Done."
}
trap cleanup INT TERM
# Wait for child processes (candump will run until you Ctrl+C)
wait
CANテストスクリプトでは、PWを自分のJetsonパスワードに置き換えてください。
CAN0↔CAN1とCAN2↔CAN3間でのデータ送受信が完了します:

DI/DO
reComputer Robotics J501のDI/DOインターフェースはJ25 2x10Pコネクタに統合されており、CANインターフェースとインターフェースを共有しています。4チャンネルのデジタル入力と4チャンネルのデジタル出力をサポートし、安定した信号伝送と産業グレードの電圧適応を特徴とし、デジタルセンサー、リレー、その他の周辺機器の接続に適しています。

ハードウェア接続
デジタル入力(DI)チャンネル
| チャンネル名 | 電圧特性 | GPIOラベル | ピン名 | GPIOチップ | GPIO番号 |
|---|---|---|---|---|---|
| DI_12V_1 | 12V入力適応 | DI_1_GPIO17 | PP.04 | gpiochip0 | 96 |
| DI_12V_2 | 12V入力適応 | DI_1_GPIO18 | PQ.04 | gpiochip0 | 104 |
| DI_12V_3 | 12V入力適応 | DI_1_GPIO19 | PN.02 | gpiochip0 | 86 |
| DI_12V_4 | 12V入力適応 | DI_1_GPIO33 | PM.07 | gpiochip0 | 83 |
デジタル出力(DO)チャンネル
| チャンネル名 | 電圧特性 | GPIOラベル | ピン名 | GPIOチップ | GPIO番号 | 追加情報 |
|---|---|---|---|---|---|---|
| DO_40V_1 | オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高) | DO_1_GPIO | PAA.04 | gpiochip1 | 4 | 対応番号:320 |
| DO_40V_2 | オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高) | DO_2_GPIO | PAA.07 | gpiochip1 | 7 | 対応番号:323 |
| DO_40V_3 | オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高) | DO_3_GPIO | PBB.01 | gpiochip1 | 9 | 対応番号:325 |
| DO_40V_4 | オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高) | DO_4_GPIO | PBB.00 | gpiochip1 | 8 | 対応番号:324 |
J25コネクタのDI/DOインターフェースの主要ピン定義は以下の通りです(ピン番号は物理コネクタに対応):
| ピン番号 | 機能ラベル | 説明 |
|---|---|---|
| 1 | DI_12V_1 | 12Vデジタル入力チャンネル1 |
| 3 | DI_12V_2 | 12Vデジタル入力チャンネル2 |
| 5 | DI_12V_3 | 12Vデジタル入力チャンネル3 |
| 7 | DI_12V_4 | 12Vデジタル入力チャンネル4 |
| 9 | GND_DI | デジタル入力チャンネル用グラウンド |
| 2 | DO_40V_1 | 40Vデジタル出力チャンネル1 |
| 4 | DO_40V_2 | 40Vデジタル出力チャンネル2 |
| 6 | DO_40V_3 | 40Vデジタル出力チャンネル3 |
| 8 | DO_40V_4 | 40Vデジタル出力チャンネル4 |
| 10 | GND_DO | デジタル出力チャンネル用グラウンド |
完全なピン配置(CANインターフェースを含む)については、誤った接続を避けるためにreComputer Robotics J501のハードウェアドキュメントを参照してください。
使用方法
デジタル出力(DO)操作
DOインターフェースはオープンドレイン出力を採用しています。コマンドで出力レベル(高/低)を設定して、リレーやLEDなどの周辺機器を制御できます。
DOチャンネルを有効にする(12Vを出力、外部プルアップ抵抗と12V電源によって供給)には、以下のコマンドを実行します:
# Enable DO_40V_1 (gpiochip1 4)
sudo gpioset --mode=wait 1 4=1
# Enable DO_40V_2 (gpiochip1 7)
sudo gpioset --mode=wait 1 7=1
# Enable DO_40V_3 (gpiochip1 9)
sudo gpioset --mode=wait 1 9=1
# Enable DO_40V_4 (gpiochip1 8)
sudo gpioset --mode=wait 1 8=1
DOプルアップ前:

DOプルアップ後:

DOチャンネルを無効にする(~0Vを出力)には、以下のコマンドを実行します:
# Disable DO_40V_1 (gpiochip1 4)
sudo gpioset --mode=wait 1 4=0
# Disable DO_40V_2 (gpiochip1 7)
sudo gpioset --mode=wait 1 7=0
# Disable DO_40V_3 (gpiochip1 9)
sudo gpioset --mode=wait 1 9=0
# Disable DO_40V_4 (gpiochip1 8)
sudo gpioset --mode=wait 1 8=0
デジタル入力(DI)操作
gpiogetコマンドを使用してDIチャンネルの入力レベルを読み取り(戻り値1=高レベル、0=低レベル)、周辺機器の状態を取得します。
DIチャンネルレベルを読み取るコマンドは以下の通りです:
# Read DI_12V_1 (gpiochip0 96) status
gpioget gpiochip0 96
# Read DI_12V_2 (gpiochip0 104) status
gpioget gpiochip0 104
# Read DI_12V_3 (gpiochip0 86) status
gpioget gpiochip0 86
# Read DI_12V_4 (gpiochip0 83) status
gpioget gpiochip0 83

SPI
ハードウェア接続

使用方法
デュポンワイヤーを使用して対象SPIチャンネルのコアピンを接続します(/dev/spidev2.0を例とします): SPI2.0のMOSIピンをMISOピンに接続します(データループバック送受信を実現)。
配線図は以下の通りです:

SPIを使用するには、上図のようにドライバーでデバイスのサイドカバーを取り外してください。
ステップ1:SPIカーネルモジュールの読み込み(前提条件)
SPIインターフェースを操作する前に、spidevカーネルモジュールが読み込まれていることを確認してください(デフォルトシステムでは事前に読み込まれている場合がありますが、手動で確認することをお勧めします):
sudo modprobe spidev
コマンドがエラープロンプトなしで実行された場合、モジュールが正常に読み込まれたことを意味します;モジュールが既に読み込まれている場合、コマンドは何も情報を返しませんが、これは正常な現象です。
ステップ2:SPIデバイスノードの確認 ターミナルで以下のコマンドを入力して、reComputer Robotics J501のSPIインターフェースにマッピングされたデバイス名を確認します:
ls /dev/spidev*
デバイスノードが表示されない場合は、spidevモジュールが正常にロードされていないことを意味します。sudo modprobe spidevを再実行し、システムログを確認してトラブルシューティングを行ってください。
ステップ3:SPIテストコードの取得とコンパイル
GitHubからspidev-testテストコードを取得してコンパイルします:
git clone https://github.com/rm-hull/spidev-test
cd spidev-test
gcc spidev_test.c -o spidev_test
ステップ4:SPIテストプログラムの実行
ターミナルで以下のコマンドを入力してSPIテストプログラムを実行します(/dev/spidev2.0を例とします):
sudo ./spidev_test -v -D /dev/spidev2.0 -s 100000
ステップ5:テスト結果の確認 テストコマンドを実行した後、ターミナルでSPI2.0インターフェースのデータ送受信状況を確認できます。主要な出力は以下の通りです:

重要な判定基準:TX(送信)データとRX(受信)データが一致していることで、SPIループバックテストが成功し、SPIインターフェース機能が正常であることを示します。
UART
reComputer Robotics J501には、RS232、RS422、RS485通信モードをサポートする2つの独立したUARTインターフェース(UART1とUART2)が搭載されており、安定した信号伝送と周辺機器との幅広い互換性を特徴としています。
ハードウェア接続
UARTインターフェースチャンネル
| チャンネル名 | デバイスノード | サポートモード | デフォルトボーレート | GPIO有効化コマンド | モード切替方法 |
|---|---|---|---|---|---|
| UART1 (DB9-1) | /dev/ttyTHS1 | RS232, RS422, RS485 | RS232: 115200 bps; RS422/RS485: 9600 bps | gpioset --mode=wait gpiochip0 2=0 | SW3 DIPスイッチ(8ピンDIP) |
| UART2 (DB9-2) | /dev/ttyTHS4 | RS232(デフォルト) | 115200 bps | gpioset --mode=wait gpiochip2 15=0 | RS232固定(スイッチなし) |
ピン配置定義(DB9コネクタ)
各DB9ピンの機能は通信モードによって異なります。正確な配線については以下の表を参照してください(ピン番号は標準DB9オスコネクタ仕様に従います):
| DB9ピン番号 | RS232モード機能 | RS422モード機能 | RS485モード機能 |
|---|---|---|---|
| 1 | - | TXD- (送信データ-) | Data- (差動データ-) |
| 2 | RXD (受信データ) | TXD+ (送信データ+) | Data+ (差動データ+) |
| 3 | TXD (送信データ) | RXD+ (受信データ+) | - |
| 4 | - | RXD- (受信データ-) | - |
| 5 | GND (グランド) | GND (グランド) | GND (グランド) |
| 6 | - | - | - |
| 7 | RTS (送信要求) | - | - |
| 8 | CTS (送信許可) | - | - |
| 9 | - | - | - |
モード設定(SW3 DIPスイッチ)
UART1(DB9-1)のみがSW3 DIPスイッチによるモード切替をサポートします(UART2はRS232固定)。スイッチは8ピンDIPタイプで、回路図ではMODE_0、MODE_1、MODE_2とラベル付けされた主要設定ピンがあります。
インターフェースは以下の図に示されています:

設定ルール
| 動作モード | DIPスイッチ組み合わせ(MODE_2、MODE_1、MODE_0) | スイッチ状態操作 |
|---|---|---|
| RS232 | 0 (OFF), 0 (OFF), 1 (ON) | MODE_0: ONに切替; MODE_1/MODE_2: OFFを維持 |
| RS422 | 0 (OFF), 0 (OFF), 0 (OFF) または 1 (ON), 0 (OFF), 0 (OFF) | MODE_0/MODE_1: OFFを維持; MODE_2: オプション(ON/OFF) |
| RS485 | 0 (OFF), 1 (ON), 0 (OFF) または 1 (ON), 1 (ON), 0 (OFF) | MODE_1: ONに切替; MODE_0/MODE_2: オプション(ON/OFF) |
ハードウェア接続完了後、ターミナルソフトウェア(例:CuteCom)を使用してUART通信機能をテストしてください。CuteComがインストールされていない場合は、sudo apt-get install cutecomを実行してインストールしてください。UARTチャンネルがGPIOコマンドで有効化されていることを確認してください。
使用方法
GPIO有効化コマンド
接続前に、ターミナルでGPIO有効化コマンドを実行して対応するUARTチャンネルを有効化します:
# Enable UART1 (ttyTHS1)
sudo gpioset --mode=wait gpiochip0 2=0
# Enable UART2 (ttyTHS4)
sudo gpioset --mode=wait gpiochip2 15=0
RS232モードテスト
ここでは、USB to RS232アダプタを使用してインターフェースをテストできます。テストにはUGREEN USB to RS232 Adapterを使用しました。

配線図は以下の通りです:

ステップ1:CuteComの起動
sudo cutecomを実行してCuteComターミナルソフトウェアを起動します。
ステップ2:シリアルポートパラメータの設定 以下のパラメータでシリアルポートを設定します:
- デバイス:
/dev/ttyTHS1(UART1)または/dev/ttyTHS4(UART2) - ボーレート:115200 bps
- データビット:8、パリティ:なし、ストップビット:1、フロー制御:なし
ステップ3:シリアルポートを開く "Open Device"をクリックしてシリアルポートを開きます。
ステップ4:テストデータの送信 テストデータ(例:"232 test from jetson")を送信し、周辺機器からのデータ受信を確認します。


RS485モードテスト
ここでは、USB to RS485アダプタを使用してインターフェースをテストできます。テストにはDTech USB to RS485 Adapterを使用しました。
配線図は以下の通りです:

ステップ1:CuteComの起動
sudo cutecomを実行してCuteComターミナルソフトウェアを起動します。
ステップ2:シリアルポートパラメータの設定 以下のパラメータでシリアルポートを設定します:
- デバイス:
/dev/ttyTHS1 - ボーレート:9600 bps
- データビット:8、パリティ:なし、ストップビット:1、フロー制御:なし
ステップ3:シリアルポートを開く "Open Device"をクリックしてシリアルポートを開きます。
ステップ4:テストデータの送信 テストデータ(例:"485 test from jetson")を送信し、周辺機器からのデータ受信を確認します。

RS422モードテスト
ここでは、USB to RS422アダプタを使用してインターフェースをテストできます。テストにはDTech USB to RS485 Adapterを使用しました。
配線図は以下の通りです:

ステップ1:CuteComの起動
sudo cutecomを実行してCuteComターミナルソフトウェアを起動します。
ステップ2:シリアルポートパラメータの設定 以下のパラメータでシリアルポートを設定します:
- デバイス:
/dev/ttyTHS1 - ボーレート:9600 bps
- データビット:8、パリティ:なし、ストップビット:1、フロー制御:なし
ステップ3:シリアルポートを開く "Open Device"をクリックしてシリアルポートを開きます。
ステップ4:テストデータの送信 テストデータ(例:"422 test from jetson")を送信し、周辺機器からのデータ受信を確認します。

RTC
reComputer Robotics J501には、正確な時刻管理のためのバッテリーバックアップ付きハードウェアRTCが搭載されています。RTCにバックアップ電源を供給する方法は2つあります:
- CR1220コイン電池ホルダー(J14)を使用
- RTC 2ピンヘッダー - J4を使用した外部電源接続
ハードウェア接続
方法1:CR1220コイン電池ホルダーの使用
以下に示すように、3V CR1220コイン電池をボード上のRTCソケットに接続します。電池の正極(+)側が上向きになるようにしてください。

方法2:RTC 2ピンヘッダーの使用
RTC 2ピンヘッダーは、RTCに外部電源を接続する代替方法を提供します。

使用方法
ステップ1. 上記のようにRTCバッテリーを接続します。
ステップ2. reComputer Robotics J501の電源を入れます。
ステップ3. Ubuntuデスクトップで、右上角のドロップダウンメニューをクリックし、Settings > Date & Timeに移動し、イーサネットケーブルでネットワークに接続してAutomatic Date & Timeを選択し、日付/時刻を自動的に取得します。

イーサネット経由でインターネットに接続していない場合は、ここで日付/時刻を手動で設定できます。
ステップ4. ターミナルウィンドウを開き、以下のコマンドを実行してハードウェアクロック時刻を確認します:
cat /sys/devices/platform/bpmp/bpmp\:i2c/i2c-4/4-003c/nvvrs-pseq-rtc/rtc/rtc0/time
ステップ 5. ネットワーク接続を切断してデバイスを再起動します。システム時刻は電源を失いましたが、まだ正常に機能していることがわかります。

ディスプレイ
Robotics J501 は高解像度ディスプレイ出力用の HDMI を搭載しています。
拡張ポート
Robotics J501 キャリアボードは GMSL 拡張ボード用のカメラ拡張ヘッダーを備えています。4台の GMSL カメラを同時に接続して動作させることができます。
ハードウェア接続
以下は Robotics J501 キャリアボード GMSL カメラ拡張ボード接続スロットです(事前に拡張ボードを準備する必要があります):


以下は、すでにサポートしている GMSL カメラモデルです:
- SG3S-ISX031C-GMSL2F
- SG2-AR0233C-5200-G2A
- SG2-IMX390C-5200-G2A
- SG8S-AR0820C-5300-G2A
- Orbbec Gemini 335Lg
使用方法
GMSL 機能を有効にする前に、GMSL 拡張ボードドライバーを含む JetPack バージョンがインストールされていることを確認してください。
Jetson IO ファイルの設定
sudo /opt/nvidia/jetson-io/jetson-io.py




オーバーレイファイルは合計3つあり、それぞれ Seeed GMSL 1X4 3G、Seeed GMSL 1X4 6G、Seeed GMSL 1X4、および Orbbec Gemini 335Lg です。これらはそれぞれ SG3S の 3G カメラ、SG2 と SG8S の 6G カメラ、および Orbbec のカメラに対応しています。図3に示すように、お使いのカメラのモデルに応じて io ファイルを設定してください。
ステップ 2. ビデオインターフェース設定ツールをインストールします。
sudo apt update
sudo apt install v4l-utils wmctrl
SGxxx シリーズのカメラを使用する
ステップ 1. フレーム同期モードを設定します(デフォルトでは有効になっていません!)。
ここでは、異なるモデルと解像度のカメラを設定する方法を説明します。
#enables frame synchronization
v4l2-ctl -d /dev/video0 --set-ctrl=trig_mode=1
#Set the frame rate of the camera
v4l2-ctl -V --set-fmt-video=width=1920,height=1536 -c sensor_mode=0 --stream-mmap -d /dev/video0
#Set the camera format
v4l2-ctl -V --set-fmt-video=width=1920,height=1536 -c sensor_mode=0 -d /dev/video0
trig_mode = 1 はフレーム同期を有効にし、trig_mode = 0 はフレーム同期を無効にします。デフォルト設定はフレーム同期を無効にすることです。
--set-fmt-video は接続されているカメラに基づいて選択される解像度に従います。現在、3つの sensor_mode オプションがあり、それぞれ異なる解像度に対応しています。
- sensor_mode=0 -------> YUYV8_1X16/1920x1536
- sensor_mode=1 -------> YUYV8_1X16/1920x1080
- sensor_mode=2 -------> YUYV8_1X16/3840x2160
ステップ 2. カメラを起動します。
gst-launch-1.0 \
v4l2src device=/dev/video0 ! \
video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! \
videoconvert ! \
videoscale ! \
xvimagesink
gst-launch-1.0 \
v4l2src device=/dev/video1 ! \
video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! \
videoconvert ! \
videoscale ! \
xvimagesink
gst-launch-1.0 \
v4l2src device=/dev/video2 ! \
video/x-raw,format=YUY2,width=1536,height=1080,framerate=30/1 ! \
videoconvert ! \
videoscale ! \
xvimagesink
gst-launch-1.0 \
v4l2src device=/dev/video3 ! \
video/x-raw,format=YUY2,width=3840,height=2160,framerate=30/1 ! \
videoconvert ! \
videoscale ! \
xvimagesink

リソース
- reComputer Robotics J501 キャリアボード回路図
- reComputer Robotics J501 キャリアボードデータシート
- Seeed NVIDIA Jetson 製品カタログ
- Nvidia Jetson 比較
- Seeed Nvidia Jetson 成功事例
- Seeed Jetson ワンページャー
- Seeed の L4T ソースコード
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。