はじめまして。世界初の人工星座の実現と「趣味」の衛星コンステレーションを目指すRSP-02の、ミッション系リーダー兼名古屋支部平支部員の瀧田です。
普段は電気・電子関係の設計開発に従事する傍ら、夜と休みの日はリーマンサットで宇宙開発をしています。
今回は、みなさんご存じのソニー(ソニーセミコンダクタソリューションズ株式会社)が作った超小型マイコンであるSPRESENSEのRSP-02への適用の可否についての検討で、一定の結論を出すことができましたので、ご報告します。
1.SPRESENSEとは
SPRESENSEメインボード
SPRESENSEは、Sonyが作った超小型、低消費電力、高性能なArmベースのマイコンです。超小型のチップの中にCortex-M4Fを6コアと必要十分なペリフェラルが統合されています。
さらに上の写真に写っている通り、GPS機能と外部接続を容易にするためのピンヘッダを搭載したSOM(System On Module)まで、用意してくれています。
参考:Sony Developer World
ハードウェアも、SDKや開発環境もフリーで提供されているため、ホビー関連だけでなくキューブサット界隈でも近頃人気のマイコンです。
2.RSP-02のミッション
RSP-02は、宇宙で人工的に星座を作り写真を撮ることがミッションのひとつになっています。そのために、軌道投入後に子衛星を放出し、子衛星との通信を確立した後に子衛星の写真の撮像を行います。
RSP-02のコンセプト
当初は、軌道上での絶対位置を測位することはできないため、写真撮影は、以下3つのタイミングで写真撮影を実行することを検討していました。
①起動投入直後
②子衛星放出直後
③地上局からの指示、撮影予約
撮影するだけなら簡単なのですが、地上局とのダウンリンク速度は9600bpsと狭く、片っ端からダウンリンクしてから人力選別するという戦略は取れません。そのため、衛星側で画像判別で、ある程度の自動選別を行って、良い写真である「可能性の高い」データのみをダウンリンクすることも、ミッションの一部になっています。
RSP-01での実績を重視し、衛星に搭載するミッション系OBC(On Board Computer)は、STM32L476RGの採用が決まっていましたが、BBM(Bread Board Model)開発中に画像判別の実装が難しそうなことが明らかになってきました。
3.スペック比較と適材適所
STM32L476RG(左)とSPRESENSE(右。CPU型番CXD5602)の基本的なスペック
当初から搭載予定のSTM32L476RGとSPRESENSE(CPU型番CXD5602)の基本的なスペックを示します。
coreの種類は同じ、Armシリーズの中では特にリアルタイム性能に全振りした組み込み用途のCortex-M4が使われていますが、Clock数とcore数はSPRESENSEが大きくリードしています。
また、RAM、FLASH共に大容量であり、消費電流についても同様です。
しかし、ペリフェラルは種類こそ変わりはありませんが、STM32L476RGが圧倒的なチャンネル数を持っています。
ここで、誤解してほしくないのは、どちらのCPUが良い、悪いということを議論しているのではないということです。
STM32L476RGは、多くのペリフェラルやコンパニオンシステムを統括する「コントローラ」としての用途として設計されており、STM32シリーズの中にはもっと高速なClockと少ないペリフェラルを持つ品種も存在しています。
SPRESENSEは、エッジIoT用途向けの設計で、どちらかというとエッジでの大容量データ処理や機械学習が得意な位置づけとなっています。
そういう意味では、OBC間通信、モータドライバ、姿勢センサ、カメラなどのたくさんのペリフェラルを統合制御しなければならないミッション系OBCへのSTM32L476RGの採用はとても理にかなっています。
しかし、例えば8bit色深度のFullHD画像は、1920pixel×1080pixel×1byte=約2Mbytesとなります。同サイズのjpeg画像であっても384kbytesもあります。
さらに、プログラムを実行するためのスタック、通信用のバッファなどの様々なデータをRAMに置いておかなければならず、RAMのすべてを画像に使えるわけではありません。
やはり、画像のような大きなデータを高速に処理するためには、それに合った設計のCPUに任せるのが一番です。
4.SPRESENSEの適用方法
前述の議論から、RSP-02では、SPRESENSEを画像処理サブシステムとして採用する方向で検討を始めることにしました。
コントローラ全振りのSTMとデータ処理全振りのSPRESENSEの良いとこどりを狙います。
●適用前
カメラ撮像時
1.Camera搭載のFIFOに画像データを格納
2.STM32L476RGがFIFOから読み出し、SDCardに格納
画像判定時
1.SDCard内から処理可能なデータごとに読みだす
2.処理可能な解像度まで間引いたデータをオンメモリで保持する
3.メモリ内の間引きデータに対して評価を行う
ダウンリンク時
1.SDCardからデータを読み出しながらC&DH系OBCへデータを転送
というのが、ミッション遂行中のおおまかな動作になりますが、STM32L476RGの128kBytesのRAMでオンメモリで保持できるサイズはおそらく32kbytes程度だと考えられます。32kBytesでは、前述の元サイズの約1/64となり、240pixel×135pixel相当となります。
これでは、満足な画像判定はできないというのが、今回SPRESENSEの採用に踏み切った大きな理由のひとつです。
●適用後
ブロックとしてはSPRESENSEが接続されただけです。画像処理以外の処理は今まで通りSTMで行います。SPRESENSEは画像処理だけを行うサブシステムとして搭載します。SPRESENSEにもカメラインターフェースが搭載されていますが、SPRESENSE側のカメラを使うかどうかは、まだ検討中です。
5.課題と今後
RSP-02は現在EM(Engineering Model)の完成に向けて開発を続けています。本稿のSPRESENSE搭載については、当初から計画されていたものではないため、BBM相当の検討から積み上げなければなりません。
ざっと挙げてみても、
・Host IFの実行転送帯域の評価
・SPRESENSE側の画像処理プログラムの再開発
・SPRESENSE側のMulti Core最適化
・etc.
と、なかなかヘビーな開発タスクが待っていますが、EMでは、SPRESENSE搭載型での完成を間に合わせる計画です。
※搭載検討中のイメージです
SPRESENSEの小ささが良くわかる図ではないでしょうか?
まとめ
RSP-02では、元気に開発を続けています。次なるマイルストーンは、「2023年内のEM完成」です。
本稿のSPRESENSEに興味のある方、宇宙が好きな方、我こそ変態エンジニア!(僕はいたって普通のエンジニアですが)という方の新しい参加も引き続き募集しています。
興味のある方はhttps://www.rymansat.com/joinをご覧ください!
【この記事を書いたメンバー】
RSP-02 ミッション系リーダー兼名古屋支部ボスの付き人 瀧田
「どこにでもいるふつ〜のエンジニア(自称)」