えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

RaspberryPi4でRealSenseを2台接続する方法(RealSense・ROCK5・RaspberryPi4・v4l2-backend)

RaspberryPi 4でRealSense viewerは動きます🍓📷 (Bookworm・RealSense) - えいあーるれいの技術日記 の続きです。

おそらくこれで暫くのRealSenseネタは出し切ったと思います。


過去のRealSense芸


今回の内容、簡単に言えば

「新しめのLinuxは元からv4l2バックエンドのRealSenseに対応しているから、性能が足りればARM64でもlibrealsenseを使えるよ!」

というものです。

これは他のARM64デバイスでも通用するのでぜひご覧ください!


RealSenseの動作モードについて

RealSenseはUSB3.0経由でデータの送受信を行いますが、Linuxで扱う場合、RealSenseではlibuvcとv4l2の異なるバックエンドを使用することができます。

libuvcはマルチプラットフォームサポートを重視しているため、v4l2の方が効率的にリソースを割り振ることができます。

そのため、マルチカメラを使用するためにはv4l2バックエンドを使用する必要があります。

元々LinuxではRealSenseのv4l2サポートはされていなかったので、カーネルパッチを自分で当てにいく必要があったのですが、これはIntel CPU限定のサポートでした(RealSenseがIntelに入っているのでそれはそう)

ゆえに、複数カメラを使う場合はIntelCPUが搭載されているx86-64マシンを使用する必要があります。


RaspberryPi Bullseye世代のLinuxカーネルではv4l2バックエンドでは動かなかったのですが、Bookwormではその機能が統合されたようで動くようになっていました。


インストール方法

前回同様、RaspberryPi Bookwormを使用します。

  • librealsense 2.54.2
  • v4l2 backend
cd
wget https://s3.ap-northeast-1.wasabisys.com/download-raw/dpkg/librealsense/debian/bookworm/librealsense-v4l2-backend-app-bookworm-2-54-2-arm64.deb -O ./librealsense.deb # 2.54.2 (v4l2) / bookworm
sudo apt install ./librealsense.deb

sudo curl https://raw.githubusercontent.com/IntelRealSense/librealsense/master/config/99-realsense-libusb.rules --output /etc/udev/rules.d/99-realsense-libusb.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

sudo ldconfig

Ar-Ray-code/installer で定期的にメンテしています。


使用方法

RealSenseの型番によりますが、外部からUSB給電した方がいい場合もあります。

realsense-viewer

1280x720x30fpsできました!(30fpsで回っているとは言っていない)

CPU使用率が常時200%を超えてフレームがドロップしまくっているのでスペックが少し厳しめという判断です。

RealSense芸としては十分ですが、実用上は厳しめでした🙃

CPUスピードが3倍と言われているRaspberryPi5に期待ですね🍓


ROCK5なら?

ここ5年の爆発的なIoTブームを背景にシングルボードコンピュータも多種多様になっていますが、RaspberryPi以外にも安価で高性能なボードがあります。

それがRockChip CPUです。

今回は、現行最も高性能で安価な「ROCK 5 Model A (4GB RAM)」を使用します。

ROCK5 Aとは

ROCK5 Aはシングルボードコンピュータを開発・製造しているRadxaのボードです。

RaspberryPi 5 ModelBと形状が似ており、他の製品についてもほとんどラズパイのCPU以外は全部パクリと言ってもいいでしょう。

これらのボードのほとんどにRockchip社のCPUが搭載されています。

ROCK5シリーズには4GB〜16GBのRAM構成が選べたり、M.2が挿せたりします。Wi-Fi Bluetoothはありませんが、M.2で補完できるしそもそも技適の心配をする必要がないのはいいですね。

RK3588のスペック

RK3588にはCortex-A76とCortex-A55が4コアずつ入っているbig.LITTLE構成のCPUが搭載されています。

big.LITTLE構成は、それほど処理性能を必要としていない処理を低消費電力コアで、パフォーマンスが必要な処理を高速コアで処理させることで、省電力ハイパフォーマンスを実現するアーキテクチャです。

スマートフォンでよく使われる構成らしいですが、IntelのCore-i 12世代〜14世代もこれと類似する機能を持っています。

今回の記事では、省電力ハイパフォーマンスとかは無視で、そもそも物理的に8個あるのスゲーという扱いです。


AIアクセラレーションはどうなのかというと、8K出力できる程度のGPU (Mali-G610) と専用のNPUを搭載しているそうです。

GPUは610GFLOPS (FP32)と最近の低価格帯のノートPCといい勝負ができるくらいのスペックはありそうです。

NPUはYOLOv5-sが40fpsで6TOPSの性能があるそうです。

Google Coral USBアクセラレータが4 TOPS (INT8) なので、それに近い性能が内蔵されているみたいです。

何も追加せずとも十分強い。


動作確認🪨

早速動作確認します。

使用したOSはUbuntu22.04 Desktopです。

8コアちゃんと認識されています。

ちなみに、シングルボードコンピュータならでは?のグラフィックスのもたつきもないです。すごい進化。


先ほどのRaspberryPi OSで使用したRealSenseのインストールコマンドをそのままUbuntuで実行します。(バイナリが同じで動的リンクも同じなので本当にそのまま動いちゃいますw🙃)

先ほどのRaspberryPi4とは打って変わってサクサクです。CPU使用率もまだ余裕ありそうです!

RaspberryPi5が技適通る前にRK3588をしばき倒して周りと差をつけちゃいましょう🏃


おまけ

rochchipではじめるROS 2!?

ROS2をチュートリアルページと同じ要領でインストールしてRviz2を起動させてみました。

しっかりと動作しました。

30fps超えなので、Jetson CUDA抜きが欲しい人には朗報ですね。

…そして、私のrpi-bullseye-ros2はもうサ終ですね(しません)😮


rpi-bullseye-ros2とは?(GitHubリポジトリ)↓

github.com


あの使いやすそうなディスプレイは何!?と思われた方へ

Amazonのタイムセールで買ったハイコスパモバイルディスプレイです。

ar-ray.hatenablog.com


誰だよこのつよつよは!?と思われた方へ

週1ペースでゆるーく手を動かして得られた知見を発信している闇(?)のよわよわエンジニア見習いです😉

↓ぜひスポンサーしてね♡

Sponsor @Ar-Ray-code on GitHub Sponsors · GitHub