今回のブログでは、これまでのシリーズで紹介したEdge.Autoの製品について、実際に動作させるまでの手順と、優れた点や導入のメリットを解説します。
自動運転の開発に取り組まれている方だけでなく、ロボティクスを含む幅広い分野で開発を行われている方にも興味を持っていただける内容になっています。
今回の記事は、ティアフォーのカメラとオープンソースソフトウェア(Open Source Software:OSS)を用いた物体検出システムの構築手順と、ティアフォーのカメラが持つ以下の特徴を説明します。
- ハイダイナミックレンジ機能
- LEDフリッカー低減機能
- シャッター同期機能
ティアフォーのカメラの特徴は、以前の記事でも詳しく説明していますので、そちらも併せてご覧ください。また、カメラの仕様に関しては Edge.AutoのDocumentationサイトにて公開しています。
ティアフォーのカメラの導入
機材の準備
今回は以下の機材を利用しました。
- Connect TechのAnvil
- ティアフォーのC1カメラ1個
- 比較用カメラ

AnvilとC1カメラ
利用環境の準備
機材の準備が完了したら、ティアフォーのカメラのドライバーをインストールしていきます。今回は、環境構築のために、ティアフォーが公開しているedge-auto-jetsonリポジトリのセットアップスクリプトを利用します。こちらのスクリプトは、以下をまとめてAnsibleで実行します。
- ティアフォーのカメラのドライバーをインストール
- ROS2(Humble)をインストール
- 物体検出用(YOLO)の環境を準備
このセットアップスクリプトを利用してインストールを行うことで、ティアフォーのカメラを用いた物体検出と自律移動ロボット制御のソフトウェア開発をすぐに始めることができます。
早速実行してみましょう。
1. ターミナルを立ち上げて、Anvilのホームディレクトリ上で、edge-auto-jetsonリポジトリからソースをクローンします。
git clone https://github.com/tier4/edge-auto-jetson.git
2. 環境構築スクリプトを実行します。
cd edge-auto-jetson ./setup-dev-env.sh
3. 各種アプリケーションをインストールするためのユーザーパスワードが必要か聞かれるので、ユーザーパスワードを入力してください。
BECOME password:
LiDARなどを利用するために、IPアドレスを自動で選択するか聞かれます。こちらは、LiDARとのセンサーフュージョンを行うための設定になります。どちらの設定でも構いませんが、今回はy(yes)を選択します。
Do you want to configure the network? This configuration may overwrite the IP address of the specific network interface [y/N]:
リアルタイムプロセス用の設定を自動で実行するか聞かれます。y(yes)を選択します。
[Warning] Do you want to configure user resources? Only necessary if CONFIG_RT_GROUP_SCHED is enabled [y/N]:
ティアフォーカメラのドライバーをインストールするか聞かれます。y(yes)を選択します。
[Warning] Do you want to install/update the TIER IV camera driver? [y/N]:
上記を入力するとAnsibleが動作し、環境構築が開始されます。環境のビルド完了まで1~2時間ほど待ちます。
環境構築スクリプト実行中の画面

環境構築スクリプト正常終了時の画面
4. 環境構築スクリプトの動作が完了したら、カメラの接続設定を変更します。デフォルトではC2カメラ接続用の設定になっているため、C1カメラ接続用の設定に変更します。
sudo perl -pi -e 's/DEFAULT primary_t4_c2x8/DEFAULT primary_t4_c1x8/g' /boot/extlinux/extlinux.conf
5. 設定変更を適用するため、Anvilを再起動します。デフォルトの電力モードは「2: MODE 30W」となっており、CPU/GPUの動作が制限されているため、以下のコマンドで制限を解除し、再起動します。
sudo nvpmodel 0
以上で、利用環境の準備は完了です。このように、数コマンドを入力し、2~3時間待つだけで、ティアフォーのカメラを用いた物体検出と自律移動ロボット制御のソフトウェア開発をすぐに始められる環境を構築できます。
なお、カメラドライバーのみをインストールする方法も、Documentationサイトで公開しています。ROSやYOLOのインストールは不要で、ティアフォーのカメラのみに関心がある方は、ぜひご覧ください。こちらの作業は約30分程度で実施可能です。
カメラ映像の確認
正常に環境のセットアップが完了し、カメラが正常に動作することを確認します。
カメラ映像の確認には、Gstreamerを利用します。Gstreamerは、映像や音声といったマルチメディアアプリケーションの開発に利用されるフレームワークで、Jetsonデバイスには標準でインストールされています。このため、カメラの動作確認を行う際には頻繁に利用されています。
今回はC1カメラの動作確認を行うため、以下のコマンドを実行します。
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! videoscale ! xvimagesink sync=false
設定が適切に完了している場合、デスクトップ上にC1カメラからの映像が表示されます。

Gstreamer表示画面
ティアフォーカメラの利用
認識処理の実行
edge-auto-jetsonに含まれている画像認識処理を起動し、C1カメラを利用した物体検出処理を実行してみます。jetsonデバイス上で5つターミナルを起動し、以下のコマンドを順番に実行してください。
1. カメラドライバの起動
source ~/edge-auto-jetson/install/setup.bash ros2 launch edge_auto_jetson_launch v4l2_camera.launch.xml
2. 物体認識処理の起動
source ~/edge-auto-jetson/install/setup.bash ros2 launch edge_auto_jetson_launch tensorrt_yolox.launch.xml
3. 物体追跡処理の起動
source ~/edge-auto-jetson/install/setup.bash ros2 launch edge_auto_jetson_launch bytetrack.launch.xml input/image:=/image_raw
rqt -s rqt_image_view/ImageView
5. コマンド実行後、GUIが立ち上がります。以下を選択してください。
/perception/object_recognition/detection/tracked/rois0/debug/image/compressed
上記を実行すると、手順4で立ち上げたGUI上に以下のような映像が表示され、車が検出されていることがわかります。また、検出結果のバウンディングボックスの左上にIDが付与されており、フレームを跨いで同一の車に対してIDが追従することから、画像内でのトラッキングも実行されていることがわかります。
物体認識処理概要図
このように、edge-auto-jetsonでは、移動体が周囲を検知してアクションを起こすために必要な物体の検出や追跡の処理を、複雑な環境構築や認識処理部の構築などを行うことなく試すことが可能です。
また、ここで紹介したソフトウェアはすべてGitHubでオープンソースとして公開されているため、これらの認識処理に独自の変更を加えて利用することも、認識結果に対して独自の処理を加えて利用することも容易にできます。
ティアフォーカメラと他社カメラの比較
今まで紹介した、トリガー出力処理、画像表示処理、検出処理を利用して、ティアフォーのカメラの特徴を3つ紹介します。
ハイダイナミックレンジ機能
ハイダイナミックレンジ(High Dynamic Range:HDR)とは、画像の明るさの幅を広げる技術です。一般的なカメラでは、明暗差が大きい場面で、明るい場所か暗い場所のどちらかに露光時間を合わせると、もう一方の場所で白飛びまたは黒つぶれが発生しやすくなります。しかし、ティアフォーのカメラはHDR機能を有しているため、明暗差が大きい場面でも白飛びや黒つぶれが発生しにくいという特徴があります。
実際にティアフォーのC1カメラと比較用カメラを動作させて比較してみます。以下のコマンドでティアフォーのカメラを起動し、同時に比較用カメラも起動します。
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! videoscale ! xvimagesink sync=false
HDR機能画面(左:C1カメラ、右:比較用カメラ)
上記の画像を比較すると、比較用カメラでは、背景の風景が白飛びし、車周辺が黒つぶれしていますが、ティアフォーのカメラでは白飛びや黒つぶれが少なく、背景だけでなく車の色やデザインまで確認できます。
HDR機能画面(左:C1カメラ、右:比較用カメラ)
LEDフリッカー低減機能
LEDフリッカーとは、LED光源をカメラで撮影した際、光源がちらつき、発光と消灯を繰り返すように見える現象のことです。近年、LED光源は信号機、電光掲示板、ヘッドライトやテールランプなどに利用されることが増えており、LEDフリッカーが発生するリスクが高まっています。(詳細についてはこちらを参照ください。)LEDフリッカーは、自動運転に欠かすことのできない信号認識に影響を与える可能性があります。ティアフォーのC1カメラには、LEDフリッカーを低減するLEDフリッカー低減(LED Flicker Mitigation: LFM)機能があります。実際にその様子を確認してみましょう。
2.3で説明した、Gstreamerのコマンドを利用し、C1カメラと比較用カメラでLEDライトを撮影した結果が以下になります。
以下のコマンドを実行し、C1カメラを起動します。 ティアフォーカメラが/dev/video0として認識されている想定です。
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! videoscale ! xvimagesink sync=false
上記の画像を比較すると、比較用カメラでは発光と消灯が繰り返し発生しているのに対し、C1カメラでは発光と消灯が低減されていることが確認できます。
シャッター同期機能
ティアフォーのカメラではシャッターを切るタイミングをHOST PC側から制御可能です。この機能を実際に動作させて確認してみましょう。
1. カメラがトリガーモードで動作するように設定します。
echo 1 | sudo tee /sys/module/tier4_isx021/parameters/trigger_mode echo 7 | sudo tee /sys/module/tier4_isx021/parameters/fsync_mfp
2. カメラの映像取得ノードを起動します。
source ~/edge_auto_jetson/install/setup.bash ros2 launch edge_auto_jetson_launch v4l2_camera.launch.xml
3. カメラ映像を画面に表示します。この時、カメラには、ストップウォッチアプリなどを表示しておきます。
rqt -s rqt_image_view/ImageView
4. この状態で、トリガーを1fpsと2fpsで切り替えて、画像で取得されている時刻を確認します。
source ~/edge_auto_jetson/install/setup.bash ros2 launch sensor_trigger sensor_trigger.launch.xml gpio_name:=anvil_trigger frame_rate:=1.0
source ~/edge_auto_jetson/install/setup.bash ros2 launch sensor_trigger sensor_trigger.launch.xml gpio_name:=anvil_trigger frame_rate:=2.0
5. 別のターミナルを起動し、以下のコマンドを実行し、トリガーがカメラに出力された時刻を表示しておきます。
ros2 topic echo /camera0/trigger_time
この時、実行画面のストップウォッチの時刻を見てみると、1 fpsでは約1.0秒ごと、2 fpsでは約0.5秒ごとに画像が取得出来ていることが確認できました。
まとめ
今回はティアフォーのカメラについて、実動作をさせながら解説しました。次回はティアフォーで作成しているLiDARドライバーについて解説します。
ティアフォーカメラの特徴は、以前の記事でも詳しく説明しています。ぜひご覧ください。
- 第1回:Edge.Auto 車載HDRカメラの解説
- 第2回:デジタルカメラの中核部品:CMOSイメージセンサーの進化と構造
- 第3回:イメージセンサーの機能概要とシャッター方式
- 第4回:車載カメラにおけるインターフェース
Tetsuya Yamamoto | 山本 哲也
Edge.Autoチーム
2024年よりEdge.Autoチームでカメラと開発キットを担当。前職では自動運転向けのカメラ・LiDARの製品開発およびセンシングシステムの開発業務に従事。
ティアフォーでは、「自動運転の民主化」というビジョンに共感を持ち、自らそれを実現する意欲に満ち溢れた新しい仲間を募集しています。
多くの職種で採用をしています。詳細は、ティアフォーの「求人ページ」をご覧ください。カジュアル面談をご希望の方は、応募する際に「カジュアル面談希望」と記載してください。
「どの職種で自分の経験を活かせるかが分からない」「希望する職種が見つからない」などの場合は、ぜひ「キャリア登録」をお願いします。
お問い合わせ先
- メディア取材やイベント登壇のご依頼:pr@tier4.jp
- ビジネスや協業のご相談:sales@tier4.jp
ソーシャルメディア
X (Japan/Global) | LinkedIn | Facebook | Instagram | YouTube
関連リンク
