Skip to main content

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 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ビット LPDDR5 @ 204.8 GB/s64GB 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
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ピンヘッダー
電源入力19-48V DC(5.08mmターミナルブロック経由)(電源アダプターは含まれません)
消費電力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対4 M-Mケーブル
POCインターフェース機能電源とデータの同時伝送をサポート

ハードウェア概要

📦 JetPack OSのフラッシュ

サポートされるモジュール

前提条件

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

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

JetPackバージョン Ubuntuバージョン(ホストコンピュータ)
18.04 20.04 22.04
JetPack 6.x

Jetpackイメージの準備

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

JetpackバージョンJetsonモジュール GMSL ダウンロードリンク1SHA256
6.2.1 AGX Orin 64GBダウンロードed82745decdf554d82bd93441f1f4ad
149f395a4ba5719664ce2351be8201522
AGX Orin 32GBダウンロード58fa8b76754449b0a49ad7d5f273edd
f3e1d1f458cdb34994f6d8643da7a1249
danger

Jetpack6イメージファイルのサイズは約14.2GBで、ダウンロードには約60分かかります。ダウンロードが完了するまでお待ちください。

info

ダウンロードしたファームウェアの整合性を確認するために、SHA256ハッシュ値を比較できます。

Ubuntuホストマシンで、ターミナルを開いてsha256sum <File>コマンドを実行し、ダウンロードしたファイルのSHA256ハッシュ値を取得します。結果のハッシュがwikiで提供されているSHA256ハッシュと一致する場合、ダウンロードしたファームウェアが完全で破損していないことが確認されます。

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

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

info

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

ステップバイステップ

ステップ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

フラッシュプロセスが成功した場合、以下の出力が表示されます

note

フラッシュコマンドは2〜10分間実行される場合があります。

ステップ3: Robotics J501をPD to HDMIアダプターを使用してHDMI入力をサポートするディスプレイに接続するか、PDケーブルを使用してPD入力をサポートするディスプレイに直接接続し、初期設定セットアップを完了します:

info

必要に応じて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
danger

テスト完了後は、sudo rm /home/$USER/ssd/testコマンドを実行してキャッシュファイルを削除してください。

M.2 Key E (WiFi/BT)

M.2 Key Eスロットは、ワイヤレス接続用のWi-Fi 6およびBluetooth 5.xモジュールをサポートします。

ハードウェア接続

tip

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

使用方法

性能テスト: 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セルラーモジュールをサポートします。

ハードウェア接続

tip

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

使用方法

ステップ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>
info

<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
note

まず 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
note

デフォルトの熱ポリシーは /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.04gpiochip14gpiochip1 line4 (PAA.04)
CAN1ネイティブPAA.07gpiochip17gpiochip1 line7 (PAA.07)
CAN2SPI-to-CAN-gpiochip210gpiochip2 line10
CAN3SPI-to-CAN-gpiochip212gpiochip2 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.04PAA.07 を 0 に設定します:

sudo gpioset --mode=wait gpiochip1 4=0
sudo gpioset --mode=wait gpiochip1 7=0

以下のコマンドを参照して PAA.04PAA.07 を 1 に設定します:

sudo gpioset --mode=wait gpiochip1 4=1
sudo gpioset --mode=wait gpiochip1 7=1

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
note

CANテストスクリプトでは、PWを自分のJetsonパスワードに置き換えてください。

CAN0CAN1間でのデータ送受信が完了します:

CAN-FDモード

CAN FDはより高いデータ伝送レートとより大きなデータフレーム長をサポートします。以下のスクリプトはCAN FDループバックテストを実装します。

CAN-FDモードでCAN0↔CAN1CAN2↔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
note

CANテストスクリプトでは、PWを自分のJetsonパスワードに置き換えてください。

CAN0↔CAN1CAN2↔CAN3間でのデータ送受信が完了します:

DI/DO

reComputer Robotics J501のDI/DOインターフェースはJ25 2x10Pコネクタに統合されており、CANインターフェースとインターフェースを共有しています。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(低)、プルアップされた時は12V(高)DO_1_GPIOPAA.04gpiochip14対応番号:320
DO_40V_2オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高)DO_2_GPIOPAA.07gpiochip17対応番号:323
DO_40V_3オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高)DO_3_GPIOPBB.01gpiochip19対応番号:325
DO_40V_4オープンドレイン出力;プルアップされていない時は~0V(低)、プルアップされた時は12V(高)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デジタル入力チャンネル用グラウンド
2DO_40V_140Vデジタル出力チャンネル1
4DO_40V_240Vデジタル出力チャンネル2
6DO_40V_340Vデジタル出力チャンネル3
8DO_40V_440Vデジタル出力チャンネル4
10GND_DOデジタル出力チャンネル用グラウンド
note

完全なピン配置(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ピンに接続します(データループバック送受信を実現)。

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

note

SPIを使用するには、上図のようにドライバーでデバイスのサイドカバーを取り外してください。

ステップ1:SPIカーネルモジュールの読み込み(前提条件) SPIインターフェースを操作する前に、spidevカーネルモジュールが読み込まれていることを確認してください(デフォルトシステムでは事前に読み込まれている場合がありますが、手動で確認することをお勧めします):

sudo modprobe spidev
note

コマンドがエラープロンプトなしで実行された場合、モジュールが正常に読み込まれたことを意味します;モジュールが既に読み込まれている場合、コマンドは何も返さず、これは正常な現象です。

ステップ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/ttyTHS1RS232, RS422, RS485RS232: 115200 bps; RS422/RS485: 9600 bpsgpioset --mode=wait gpiochip0 2=0SW3 DIPスイッチ(8ピンDIP)
UART2 (DB9-2)/dev/ttyTHS4RS232(デフォルト)115200 bpsgpioset --mode=wait gpiochip2 15=0RS232固定(スイッチなし)

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

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

DB9ピン番号RS232モード機能RS422モード機能RS485モード機能
1-TXD- (送信データ-)Data- (差動データ-)
2RXD (受信データ)TXD+ (送信データ+)Data+ (差動データ+)
3TXD (送信データ)RXD+ (受信データ+)-
4-RXD- (受信データ-)-
5GND (グランド)GND (グランド)GND (グランド)
6---
7RTS (送信要求)--
8CTS (送信許可)--
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)スイッチ状態操作
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)
note

ハードウェア接続完了後、ターミナルソフトウェア(例: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つあります:

  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に移動し、イーサネットケーブルでネットワークに接続してAutomatic Date & Timeを選択し、日付/時刻を自動的に取得します。

note

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

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

使用方法

note

GMSL 機能を有効にする前に、GMSL 拡張ボードドライバーを含む JetPack バージョンがインストールされていることを確認してください。

Jetson IO ファイルの設定

sudo /opt/nvidia/jetson-io/jetson-io.py
note

合計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. フレーム同期モードを設定します(デフォルトでは有効になっていません!)。

info

ここでは、異なるモデルと解像度のカメラを設定する方法を説明します。

#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
note

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...