ETロボコン2024のハードウェア仕様を画像・AI処理の面から確認してみました

# はじめに
ETロボコンの地元大会である東海大会を観戦してまいりました。昨年に引き続いての観戦です。ちなみに[東海地区大会は2007年から開催](https://www.etrobo.jp/2007archive/)しています。

東海地区は、初回参加の2007年にいきなりチャンピオンシップ１位２位を独占するなど、当時は今以上に強豪地区として他地区から恐れられていたように思います。

筆者はできる限りETロボコン東海大会とチャンピオンシップには足を運ぶようにしていますが、2022年だけは全く観戦できませんでした。この年の業務状況がとてつもなく過酷で、とても観戦できる状態ではなかった記憶があります。また、2022年ほどではありませんが2023年もそれなりに過酷で、落ち着いて観戦し、内容を振り返る余裕はありませんでした。

ですので、こうして観戦させて頂き、内容を振り返って技術的に勉強できる、という状況は大変貴重なのかもしれません。（もう２度とこんな日は来ないのかもしれません。）

# 最近のETロボコンは「AI重視」に変化しているそうです
この流れは、2023年大会に関するMONOistさんの記事にも出ています。
[ETロボコン2023 人形を撮影して新幹線を止めろ！AI重視の新ルールで何が変わった？～ETロボコン2023チャンピオンシップ大会～](https://monoist.itmedia.co.jp/mn/articles/2403/13/news021_3.html)

確かに、2024年度の東海大会を観戦して、「画像処理作れないと勝てないコンテストになったんだなぁ」と思いました。どこら辺がそうかというと、この辺りです。
* 人形を撮影する競技
こちらです。人形および台が全て写っていて、かつ顔の右目、左目、口を別々に識別できるような写真をアップロードすると満点(ベストショット)だそうです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1563669/4c024e03-ae20-9dd7-83ba-5ef165dbe169.png)

* 走っているプラレールを撮影する競技
こちらです。柱の四面のうち黄色のプレートが貼ってある面で構えて、走っているプラレールを全て写真に収めると満点(ベストショット)だそうです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1563669/6d8490cf-7e80-17c9-255e-20f95559b36f.png)

* デブリに見立てたペットボトルを除去する競技
こちらです。青色のペットボトルを⚪︎の外に移動すると得点です。ただし赤色のペットボトルは動かしてしまうと減点だそうです。なお、競技開始前に斜め上から撮影した画像が機体に送られるそうなので、そこで画像処理を使えるかもしれません。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1563669/099fda71-6f00-2953-9cee-406ec6e3c73a.png)

念の為、観戦できなかった2022年がどうだったかをネット記事で見てみると、[2022年時点ではここまでのAI重視ではなかったようですが、その萌芽は見られた](https://monoist.itmedia.co.jp/mn/articles/2302/02/news038.html)ようです。

# AI重視に合わせたハードウェアの変遷
ETロボコン2024で使用する機体は、前述の競技中の写真に出てくるあの通りの見た目をしています。こちらは大会の中ではHackSpiと呼ばれています。ソフトウェアを処理するメインのシステムはRaspberry Pi4 Model Bです。こちらを、ETロボコン2023まで使われていたHacEVと比較してみましょう。

|     | HackEV | HackSpi |
|-----|--------|---------|
| 開発環境サイト | [ETrobocon GitHub](https://github.com/ETrobocon/etrobo/wiki) | [ETrobocon RasPike](https://github.com/ETrobocon/RasPike/wiki) |
| Raspi version | Raspberry Pi 3 | Raspberry Pi 4 |
| CPU | Broadcom BCM2837 Quad-core ARM Cortex-A53 64bit 1.2GHz | Broadcom BCM2711B0 quad-core A72 64bit 1.5GHz |
| RAM | 2GB ? | 4GB? |
| GPU | Broadcom VideoCore IV | Broadcom VideoCore VI |
| FLOPS | 28.8 GFLOPS | 32 GFLOPS |
| GPU RAM | メインRAMの一部を割当| メインRAMの一部を割当 |
| Bluetooth | Bluetooth 4.1 | Bluetooth 5.0 |
| Bluetooth Low Energy Consumption(LEC) | 対応 | 対応 |

GPUの性能は以下を参考にしました。
https://www.zep.co.jp/ysugisaki/article/z-rpiqpu-da1/

# カメラの性能と求められるメモリ容量
2024年度の機材であるHackSpiでは、カメラモジュールとして、Raspberry PiカメラモジュールV2とV3を選択できるとのことです。V2は3280 x 2464 = 約8メガピクセル、V3は4608 x 2592 = 12メガピクセルとのことです。この辺りの情報はこちらにあります。
https://www.raspberrypi.com/documentation/accessories/camera.html
https://www.raspberrypi.com/products/camera-module-3/

# GPUの性能をNVIDIAのエッジデバイスと比較
GPUについては、NVIDIAのエッジデバイスであるJetsonに搭載されているデバイスと比較すると、性能は格段に落ちます。(TFLOPSのTはテラ、GFLOPSのGはギガです。)

| モデル | GPU | デバイスのリリース年 | GPUのリリース年 | 最大FLOPS (FP32) | 最大FLOPS (FP16) | 最大FLOPS (INT8) | 参考 |
|--------|-----|----------------------|------------------|-------------------|-------------------|-------------------|-------|
| **Jetson Orin Nano** | Ampere, 512 CUDAコア | 2023 | 2020 | N/A | 40 TFLOPS | 80 TOPS | [NVIDIA Newsroom](https://nvidianews.nvidia.com/news/nvidia-jetson-orin-nano-sets-new-standard-for-entry-level-edge-ai-and-robotics-with-80x-performance-leap) |
| **Jetson Orin NX** | Ampere, 1024 CUDAコア | 2022 | 2020 | N/A | 70 TFLOPS | 140 TOPS | [ConnectTech](https://connecttech.com/sub/NVIDIA-Jetson-Orin-Nano-Datasheet.pdf), [NotebookCheck](https://www.notebookcheck.net/NVIDIA-Jetson-Orin-Nano-4-GB-Specs.663369.0.html) |
| **Jetson AGX Orin** | Ampere, 2048 CUDAコア | 2022 | 2020 | N/A | 275 TFLOPS | 550 TOPS | [NVIDIA Newsroom](https://nvidianews.nvidia.com/news/nvidia-jetson-agx-orin), [TechPowerUp](https://www.techpowerup.com/gpu-specs/nvidia-jetson-agx-orin.c3845) |
| **Raspberry Pi 4** | VideoCore VI | 2019 | 2019 | 40 GFLOPS | N/A | N/A | [TechPowerUp](https://www.techpowerup.com/gpu-specs/raspberry-pi-4.c3846) |
| **Jetson Xavier NX** | Volta, 384 CUDAコア | 2019 | 2017 | N/A | 6 TFLOPS | 21 TOPS | [NVIDIA Developer Forum](https://developer.nvidia.com/embedded/jetson-xavier-nx) |
| **Jetson AGX Xavier** | Volta, 512 CUDAコア | 2018 | 2017 | N/A | 11 TFLOPS | 32 TOPS | [NVIDIA Developer Forum](https://developer.nvidia.com/embedded/jetson-agx-xavier) |
| **Jetson TX2** | Pascal, 256 CUDAコア | 2017 | 2016 | N/A | 1.3 TFLOPS | N/A | [NVIDIA Developer](https://developer.nvidia.com/embedded/jetson-tx2) |
| **Jetson TX1** | Maxwell, 256 CUDAコア | 2015 | 2014 | N/A | 1 TFLOPS | N/A | [NVIDIA Developer](https://developer.nvidia.com/embedded/jetson-tx1) |
| **Raspberry Pi 3** | VideoCore IV | 2016 | 2012 | 24 GFLOPS | N/A | N/A | [Raspberry Pi Datasheet](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2837/README.md) |

# 組込みらしい「詰め込み技術」が求められる競技ルールです
V3の**12メガピクセルをフルに使って、24ビットフルカラー動画を撮影すると**、毎秒12MByte x 3Byte = **毎秒約36MByteの動画データ**ができます。もしも20fps(1秒間に20枚)のペースで撮影するとすると、36 x 20 = 毎秒約720MBの画像が作られます。**メモリが4GBあったとして、5秒ちょっとしか保存できませんね**。ただ、VideoCore GPUがH.264形式でのハードウェアリアルタイム圧縮をサポートしています。(ETロボコンでリアルタイム圧縮が使われているかどうかは知らんけど、ですけどねw)

GPUの性能でいえば・・・12メガピクセル(4608 x 2592)の画像１枚の物体検出を、例えばYOLO7辺りを用いてGFLOPSのGPUで処理したら、恐らく分単位の時間が掛かりそう・・・実行委員が軽量な画像処理サンプルを配っているか、もしくは参加者の努力で、高速に処理できる方法を編み出しているんでしょうね。

# 所管・まとめ
組込み・エッジのコンテストの仕様としてはちょうどいいぐらいでは？と思いました。
AIのコンテストをしているわけではありませんので、ちょうどいいハードウェア仕様と競技ルールかなと思いました。高価すぎないデバイスで軽量処理を省電力で行う、この方向性はいいかな、と。

他方、実際に行われている処理はそこまで性能的にギリギリというわけでもないようでして、参加者の中にはここまで示したようなGPU性能を全く知らずに競技に参加しているケースも多々あるようです(調べる時間もないでしょうしね)。今回の記事が、何らかの意味で読者の皆様にとって有用な情報となっていれば幸いです。

# (参考) システム仕様の情報
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1563669/06ce8e9b-364e-bef9-f34a-5049b478ca6f.png)
https://docs.etrobo.jp/rules/2024/ETRC2024_compesys_api_spec_ver.1.0.pdfより抜粋

https://user-images.githubusercontent.com/790672/160266485-719d880a-64e5-475f-8683-81bd0073c6ac.jpg
https://github.com/ETrobocon/RasPikeより抜粋

SPIKEのハードウェア仕様
SoC STM32F413VG
Arm Cortex-M4, 100MHz, RAM320KB, ROM1MB 32MBフラッシュメモリ
https://toppers.jp/trac_user/ev3pf/raw-attachment/wiki/seminar_text/SPIKE-RT%40TOPPERS活用セミナー2024.pdfより抜粋

Raspi公式ハード仕様
https://www.raspberrypi.com/products/raspberry-pi-4-model-b/specifications/