メインコンテンツまでスキップ

Robotics J501 ハードウェアと入門ガイド

reComputer Robotics J501 は、高度なロボティクスおよび産業用途向けに設計された高性能エッジ AI キャリアボードです。MAXN モードの NVIDIA Jetson AGX Orin モジュール(32GB/64GB)に対応し、最大 275 TOPS の AI 性能を発揮します。

1x 10GbE および 4x 1GbE Ethernet ポート、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 モジュール、Ampere GPU および 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: 電気的に絶縁された 2x ネイティブ + 2x 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 J5011reComputer Robotics J5012
モジュールNVIDIA Jetson AGX Orin 32GBNVIDIA Jetson AGX Orin 64GB
AI 性能200 TOPS275 TOPS
GPU1792 コア NVIDIA Ampere @ 930 MHz2048 コア NVIDIA Ampere @ 1.3 GHz
CPU8 コア Arm Cortex-A78AE @ 2.0 GHz12 コア Arm Cortex-A78AE @ 2.2 GHz
メモリ32GB 256-bit LPDDR5 @ 204.8 GB/s64GB 256-bit 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
USB3x USB 3.0 Type-A
1x USB 3.0 Type-C(リカバリ)
1x USB 2.0 Type-C(デバッグ UART)
DI/DO/CAN1x 2x10P 3.81mm 端子台 - 4x DI @12V + 4x DO @40V + 4x CAN(CAN-FD 対応、電気的絶縁)
GMSL2x 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 リセット
LED3x LED(PWR、SSD、およびユーザー LED)
RTC1x CR1220 電池ホルダー、1x RTC 2 ピンヘッダー
電源入力5.08mm 端子台経由で 19〜48V DC(電源アダプタは付属しません)
消費電力Jetson AGX Orin モジュール: 最大 60W(MAXN モード)
システム全体のピーク: 75W(周辺機器を含む)
ソフトウェアJetpack 6.2.1
メカニカル

寸法: 210mm x 180mm x 87mm(スタンド含む)
重量: 200g
取り付け方法: デスク / 壁 / DIN レール(DIN ブラケットは付属品に含まれます)
動作温度: -10℃〜60℃(25W)/ -10℃〜55℃(MAXN)

保証2 年
認証RoHS、REACH、CE、FCC、UKCA、KC

GMSL 拡張ボード仕様(オプション)

デシリアライザMAX96712
GMSL インターフェース2x Robotics-Fakra オスコネクタ
GMSL 入力最大 8x GMSL2 カメラ
接続方法GMSL2 Fakra 1-to-4 M-M ケーブル
POC インターフェース機能電源とデータの同時伝送をサポート

ハードウェア概要​

📦 JetPack OS をフラッシュする​

対応モジュール​

事前準備​

  • Ubuntu ホスト PC
  • reComputer Robotics J501
  • USB Type-C データ転送ケーブル
備考

仮想マシンではなく、物理的な Ubuntu ホストデバイスを使用することを推奨します。 ホストマシンを準備する際は、以下の表を参照してください。

JetPack Version Ubuntu Version (Host Computer)
18.04 20.04 22.04 24.04
JetPack 6.x ✅ ✅
JetPack 7.2 ✅ ✅ ✅

Note: JetPack 7.2 では、Ubuntu 24.04 はフラッシュおよびターゲット側コンポーネントのインストールのみサポートされます。ホスト開発コンポーネントが必要な場合は、Ubuntu 20.04 または 22.04 を使用してください。

Jetpack イメージの準備​

ここでは、使用している Jetson モジュールに対応するシステムイメージを Ubuntu PC にダウンロードする必要があります。

Jetpack VersionJetson Module GMSL Download Link1SHA256
7.2 AGX Orin 64GB✅Downloaddddee915df6dcd939dc05743c6e5e9df
6c2b2b6836a969ce4ae4bc02d3078d50
AGX Orin 32GB✅Download6da5c7cd6c143460958a460a5f9d663
91cb49bb4da8f0e158ecbd34c0a6336f1
6.2.1 AGX Orin 64GB✅ダウンロード46167c63566fa07d9882be338becd44
7021c8fc0a73da18d0291c414cf5c6f4a
AGX Orin 32GB✅ダウンロードe868fd8c7ad05d3acc8c9808f42e1835
28f11df14f48cb6ae16464adb4f23d1f
危険

JetPack イメージファイルはサイズが大きく、ダウンロードに約 60 分かかる場合があります。ダウンロードが完了するまでお待ちください。

備考

ダウンロードしたファームウェアの完全性を検証するには、SHA256 ハッシュ値を比較します。

Ubuntu ホストマシンでターミナルを開き、sha256sum <File> コマンドを実行して、ダウンロードしたファイルの SHA256 ハッシュ値を取得します。結果のハッシュが wiki に記載されている SHA256 ハッシュと一致すれば、ダウンロードしたファームウェアが完全かつ正常であることが確認できます。

⚙️ SEEED の Jetson キャリアボード用のすべての .dts ファイルおよびその他のソースコードは、次からダウンロードできます: Linux_for_Tegra

強制リカバリーモードに入る​

備考

インストール手順に進む前に、ボードが強制リカバリーモードになっていることを確認する必要があります。

手順

ステップ 1. USB Type-C データ転送ケーブルを USB2.0 DEVICE ポートと Ubuntu ホスト PC の間に接続します。

ステップ 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 JetPack 7.2 example: sudo tar xpf mfi_recomputer-robo-agx-orin-32g-j501-7.2.0-39.2.0-2026-06-26.tar.gz
# For JetPack 6.2.1 example: sudo tar xpf mfi_recomputer-robo-agx-orin-32g-j501-6.2.1-36.4.4-2026-02-11.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 から HDMI へのアダプタを使用して HDMI 入力対応ディスプレイに接続するか、PD ケーブルを使用して PD 入力対応ディスプレイに直接接続し、初期設定を完了します:

備考

ニーズに応じて System Configuration を完了してください。

🔌 インターフェースの使用方法​

以下では、Robotics J501 ボードの各種インターフェースとその使用方法について紹介します。

M.2 Key M​

J501 には、PCIe Gen4x4 NVMe SSD に対応したデュアル M.2 Key M スロットが搭載されており、高速なストレージ拡張が可能です。

対応 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. モジュール認識を確認する ModemManager が 5G モジュールを正しく認識できるかどうかを確認するために、mmcli -L コマンドを使用します。

mmcli -L 

5G モジュールが認識されていれば、/org/freedesktop/ModemManager1/Modem/0 のような出力が表示され、検出されたモデムデバイスへのパスを示します。

ステップ 5. APN を設定する APN(Access Point Name)は、モバイルデバイスをネットワークに接続するために重要です。nmcli コマンドを使用してベアラープロファイルを作成します。China Mobile を例に、次のコマンドで設定ファイルを作成できます:

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 を搭載し、10/5/2.5/1/0.1 GbE の 5 つの速度をサポートします。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 は、4x USB 3.2 Type-A ポート(内部 USB 3.1 Gen1 ハブ経由で、高速周辺機器、ストレージデバイス、カメラなどの接続に最大 5Gbps のデータレートをサポート)と、1x 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 は、4 つの独立した CAN インターフェース(CAN 0、CAN 1、CAN 2、CAN 3)を備えており、これらは DI/DO インターフェースと J25 2x10P コネクタを共有します。これらのインターフェースは Classic CAN と CAN FD の両方の通信プロトコルをサポートし、高い耐ノイズ性能とリアルタイムデータ伝送機能を備えているため、自動車エレクトロニクス、産業オートメーション、ロボティクスなどの産業用制御シナリオに適しています。

使用手順​

これは CAN インターフェースの回路図です。

CAN 通信​

このセクションでは、Jetson 上で CAN0↔CAN1 および CAN2↔CAN3 を接続し、Classic CAN モードと CAN‑FD モードの両方で、それぞれのペア間でデータを送受信する方法を示します。

チャンネル名インターフェース種別ピン名GPIO チップGPIO 番号終端抵抗制御
CAN0ネイティブCAN0_120R_ENgpiochip29gpiochip2 line9
CAN1ネイティブCAN1_120R_ENgpiochip28gpiochip2 line8
CAN2SPI-to-CANCAN2_120R_ENgpiochip210gpiochip2 line10
CAN3SPI-to-CANCAN3_120R_ENgpiochip212gpiochip2 line12

4 つの CAN チャンネル用の 120 Ω 終端抵抗は、gpiochip2 上の対応する GPIO ラインによって制御されます。制御信号はアクティブ Low であり、ラインを 0 に設定すると終端抵抗が接続され、1 に設定すると終端抵抗が切断されます。

次のコマンドを入力して GPIO ラインを表示します:

gpioinfo gpiochip2

次のコマンドを使用して終端抵抗を接続します:

sudo gpioset --mode=wait gpiochip2 9=0  # CAN0
sudo gpioset --mode=wait gpiochip2 8=0 # CAN1
sudo gpioset --mode=wait gpiochip2 10=0 # CAN2
sudo gpioset --mode=wait gpiochip2 12=0 # CAN3

次のコマンドを使用して終端抵抗を切断します:

sudo gpioset --mode=wait gpiochip2 9=1  # CAN0
sudo gpioset --mode=wait gpiochip2 8=1 # CAN1
sudo gpioset --mode=wait gpiochip2 10=1 # CAN2
sudo gpioset --mode=wait gpiochip2 12=1 # CAN3

Classic CAN モード​

以下のスクリプトは、CAN0/CAN1 および CAN2/CAN3 間のループバック通信テストを実装しており、終端抵抗の有効化、ビットレートの設定、双方向データ送信を含みます。

配線図は次のとおりです:

FromTo
CAN0_HCAN1_H
CAN0_LCAN1_L
CAN2_HCAN3_H
CAN2_LCAN3_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 インターフェースは、CAN インターフェースと共用で J25 2x10P コネクタ上に統合されています。4 チャンネルのデジタル入力と 4 チャンネルのデジタル出力をサポートし、安定した信号伝送と産業グレードの電圧適応を備えており、デジタルセンサ、リレーなどの周辺機器の接続に適しています。

ハードウェア接続​

デジタル入力(DI)チャネル​

チャネル名電圧特性GPIO ラベルピン名GPIO チップGPIO 番号
DI_12V_112V 入力適応DI_1_GPIO17PP.04gpiochip096
DI_12V_212V 入力適応DI_1_GPIO18PQ.04gpiochip0104
DI_12V_312V 入力適応DI_1_GPIO19PN.02gpiochip086
DI_12V_412V 入力適応DI_1_GPIO33PM.07gpiochip083

デジタル出力(DO)チャネル​

チャネル名電圧特性GPIO ラベルピン名GPIO チップGPIO 番号追加情報
DO_40V_1オープンドレイン出力;プルアップされていないときは約 0V(Low)、プルアップされているときは 12V(High)DO_1_GPIOPAA.04gpiochip14対応番号:320
DO_40V_2オープンドレイン出力;プルアップされていないときは約 0V(Low)、プルアップされているときは 12V(High)DO_2_GPIOPAA.07gpiochip17対応番号:323
DO_40V_3オープンドレイン出力;プルアップされていないときは約 0V(Low)、プルアップされているときは 12V(High)DO_3_GPIOPBB.01gpiochip19対応番号:325
DO_40V_4オープンドレイン出力;プルアップされていないときは約 0V(Low)、プルアップされているときは 12V(High)DO_4_GPIOPBB.00gpiochip18対応番号:324

J25 コネクタ上の DI/DO インターフェースの主要なピン定義は次のとおりです(ピン番号は物理コネクタに対応します):

ピン番号機能ラベル説明
1DI_12V_112V デジタル入力チャネル 1
3DI_12V_212V デジタル入力チャネル 2
5DI_12V_312V デジタル入力チャネル 3
7DI_12V_412V デジタル入力チャネル 4
9GND_DIデジタル入力チャネル用 GND
2DO_40V_140V デジタル出力チャネル 1
4DO_40V_240V デジタル出力チャネル 2
6DO_40V_340V デジタル出力チャネル 3
8DO_40V_440V デジタル出力チャネル 4
10GND_DOデジタル出力チャネル用 GND
注記

完全なピン配置(CAN インターフェースを含む)については、誤接続を避けるために reComputer Robotics J501 のハードウェアドキュメントを参照してください。

使用手順​

デジタル出力(DO)の操作

DO インターフェースはオープンドレイン出力方式を採用しています。コマンドによって出力レベル(High/Low)を設定し、リレーや 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 を High に引き上げる前:

DO を High に引き上げた後:

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) の操作

DI チャンネルの入力レベルを読み取り(戻り値 1 = 高レベル、0 = 低レベル)、周辺機器の状態を取得するには、gpioget コマンドを使用します。

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​

ハードウェア接続​

使用手順​

Dupont ケーブルを使用して、対象 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 には 2 つの独立した UART インターフェース(UART1 と UART2)が搭載されており、RS232、RS422、RS485 通信モードをサポートします。信号伝送が安定しており、周辺機器との高い互換性を備えています。

ハードウェア接続​

UART インターフェースチャンネル​

チャンネル名デバイスノード対応モードデフォルトボーレートGPIO 有効化コマンドモード切り替え方法
UART1 (DB9-1)/dev/ttyTHS1RS232, RS422, RS485RS232: 115200 bps; RS422/RS485: 9600 bpsgpioset --mode=wait gpiochip0 2=0SW3 ディップスイッチ(8 ピン DIP)
UART2 (DB9-2)/dev/ttyTHS4RS232(デフォルト)115200 bpsgpioset --mode=wait gpiochip2 15=0RS232 固定(切り替え不可)

ピン配置定義(DB9 コネクタ)

各 DB9 ピンの機能は通信モードによって異なります。正確な配線のため、以下の表を参照してください(ピン番号は標準的な DB9 オスコネクタ仕様に従います):

DB9 ピン番号RS232 モード機能RS422 モード機能RS485 モード機能
1-TXD- (Transmit Data-)Data- (Differential Data-)
2RXD (Receive Data)TXD+ (Transmit Data+)Data+ (Differential Data+)
3TXD (Transmit Data)RXD+ (Receive Data+)-
4-RXD- (Receive Data-)-
5GND (Ground)GND (Ground)GND (Ground)
6---
7RTS (Request to Send)--
8CTS (Clear to Send)--
9---

モード設定(SW3 ディップスイッチ)

モード切り替えを SW3 ディップスイッチで行えるのは UART1(DB9-1)のみです(UART2 は RS232 固定)。スイッチは 8 ピン DIP タイプで、回路図上では MODE_0、MODE_1、MODE_2 として示されるコア設定ピンがあります。

インターフェースは次の図のようになっています:

設定ルール

動作モードディップスイッチの組み合わせ (MODE_2, MODE_1, MODE_0)スイッチ状態の操作
RS2320 (OFF), 0 (OFF), 1 (ON)MODE_0: ON に切り替え; MODE_1/MODE_2: OFF のまま
RS4220 (OFF), 0 (OFF), 0 (OFF) または 1 (ON), 0 (OFF), 0 (OFF)MODE_0/MODE_1: OFF のまま; MODE_2: 任意(ON/OFF)
RS4850 (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–RS232 アダプタを使用してインターフェースをテストできます。テストには UGREEN USB to RS232 Adapter を使用しました。

配線図は次のとおりです:

ステップ 1: CuteCom の起動 sudo cutecom を実行して CuteCom ターミナルソフトウェアを起動します。

ステップ 2: シリアルポートパラメータの設定 シリアルポートを次のパラメータで設定します:

  • Device: /dev/ttyTHS1(UART1)または /dev/ttyTHS4(UART2)
  • Baud Rate: 115200 bps
  • Data Bits: 8, Parity: None, Stop Bits: 1, Flow Control: None

ステップ 3: シリアルポートを開く "Open Device" をクリックしてシリアルポートを開きます。

ステップ 4: テストデータの送信 テストデータ(例: "232 test from jetson")を送信し、周辺機器側でのデータ受信を確認します。

RS485 モードテスト​

ここでは USB–RS485 アダプタを使用してインターフェースをテストできます。テストには DTech USB to RS485 Adapter を使用しました。

配線図は次のとおりです:

ステップ 1: CuteCom の起動 sudo cutecom を実行して CuteCom ターミナルソフトウェアを起動します。

ステップ 2: シリアルポートパラメータの設定 シリアルポートを次のパラメータで設定します:

  • Device: /dev/ttyTHS1
  • Baud Rate: 9600 bps
  • Data Bits: 8, Parity: None, Stop Bits: 1, Flow Control: None

ステップ 3: シリアルポートを開く "Open Device" をクリックしてシリアルポートを開きます。

ステップ 4: テストデータの送信 テストデータ(例: "485 test from jetson")を送信し、周辺機器側でのデータ受信を確認します。

RS422 モードテスト​

ここでは USB–RS422 アダプタを使用してインターフェースをテストできます。テストには DTech USB to RS485 Adapter を使用しました。

配線図は以下のとおりです:

ステップ 1: CuteCom を起動する CuteCom ターミナルソフトウェアを起動するには、sudo cutecom を実行します。

ステップ 2: シリアルポートパラメータを設定する シリアルポートを次のパラメータで設定します:

  • デバイス: /dev/ttyTHS1
  • ボーレート: 9600 bps
  • データビット: 8、パリティ: なし、ストップビット: 1、フロー制御: なし

ステップ 3: シリアルポートを開く 「Open Device」をクリックしてシリアルポートを開きます。

ステップ 4: テストデータを送信する テストデータ(例: 「422 test from jetson」)を送信し、周辺機器からのデータ受信を確認します。

RTC​

reComputer Robotics J501 には、バッテリーバックアップ付きのハードウェア RTC が搭載されており、正確な時刻管理が可能です。RTC にバックアップ電源を供給する方法は 2 つあります:

  1. CR1220 コイン電池ホルダー(J14)を使用する
  2. 外部電源接続用の 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 に移動して、Ethernet ケーブルでネットワークに接続し、Automatic Date & Time を選択して日付と時刻を自動取得します。

注記

Ethernet 経由でインターネットに接続していない場合は、ここで日付と時刻を手動で設定できます。

ステップ 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 カメラモデルです:

使用手順​

注記

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

リソース​

技術サポート & 製品ディスカッション​

弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに応じて選べる複数のコミュニケーションチャネルを提供しています。

Loading Comments...