小さいドローンをIPネットワークに組み込もう
2025年12月12日 金曜日
CONTENTS
【IIJ 2025 TECHアドベントカレンダー 12/16の記事です】
小さいドローンを実験に活用するには
ニュースサイトを眺めていると、業務用ドローンを活用する記事を頻繁にみかけます。実際に業務で収支をあわせようというところまで考えると色々と課題もあるのでしょうけど、生活の中で普通にみかけるようになるまではもう少しかかかるのかもしれません。
そういうニュースになりやすいドローンとは別に手のひらサイズのドローンも色々な機体が入手しやすくなってきました。手のひらドローンといっても子供でも遊べるように作られたおもちゃドローン、ちょっとした三脚の代わりになって空撮できる空撮ドローン、室内レースの入門用として作られたレース入門機と性能も性格も大きく異なる機体が販売されています。その中で、今回は改造しやすいレース入門機を使って、実験しやすいドローン周辺ネットワーク環境を構築してみようという取り組みをご紹介します。
飛ばすだけなら環境は整っているのだが・・
ドローンの飛ばし方にも色々ありますが、一番特徴的なのは機体側にカメラを搭載して、カメラの映像を見ながら飛ばすFPV(First Person View)というやり方ではないかと思います。これだと自分が機体に乗っているような視点でドローンを飛ばすことができます。お仕事で使う場合でも、カメラは基本的なセンサの一つで、カメラを頼りに対象物に寄せていくこともよくあります。ドローンの周辺で議論をしたいのなら、ここに踏み込み込んでおきたいところです。
ここでカメラの映像を伝送する無線区間が障害として立ちはだかります。ドローンを操作する操縦桿(多く場合、プロポと言います)については2.4GHz帯の無線機として技適を取得してある機材が豊富にあるのですが、映像伝送用の機材はそうではありません。といっても、DJI のような業務機材であればあまり考えることはありませんので業務で利用する場合はそうした業務機材を中心に検討していただければ、利用者が困ることはありません。しかし、カメラやセンサの伝送路にちょっかいを出して実験できる環境を作りたい私としては、ちょっかいを出す余地がない業務機材では困るのです。
レース機材の場合は、レーサが個々に部品を選定して機体を組み上げるところからレースが始まっていますので、自由度はとても高い世界が広がっています。しかし、ここでカメラの映像伝送系で主に使われるのは帯域占有型のアマチュア無線(F3FまたはF8W)となっています。これだと職場では使えないのですよね。いろいろ手続きを踏むと似たような機材を業務無線として開局することもでき、IIJ技術研究所でも一つだけ確保はしているのですが、開局したからといっていつでもどこでも電波を出して良いというものでもなく、使い勝手はとても悪くなっています。
レースに使える性能はなくても Wi-Fi で電波を飛ばせれば、帯域の問題はないし、実験には十分かもしれないのですが、思いの外選択肢はありません。空撮機として作られている機体だと Wi-Fi で映像伝送ができることは多いのですが、中身は普通の IP カメラであり 秒単位で遅延することも多いです。ゆっくり構図を決めるのなら不便はないのですが、映像を見て何がしか反応を返すような仕組みを考えたいとなると流石に遅延が大きすぎます。
何か良い方法はないのものでしょうか。
OpenIPC を使う
そんな中でたどり着いたのが OpenIPC というプロジェクトです。元々は IP カメラの中身がグレーすぐて信用ならないからオープンソースの実装で置き換えたい、というモチベーションで立ち上がったプロジェクトのようです。一通りの機能が揃った現在では、これをベースにちょっと変わったネットワークカメラを作るサブプロジェクトもいくつか立ち上がっています。その中の一つに FPV 対応も含まれており、これを採用してみました。
ハードウェアとしては IP カメラの中身になる基板があり、これにカメラがつながっています。カメラ基板にはUSBインターフェイスが付いているので、そこにUSB無線ドングルを繋げばWi-Fiカメラになるという仕組みです。元々は超高出力の Wi-Fi ユニットを繋いで使うものですが、日本では使えませんので国内で流通している小型のWi-Fiユニットを接続して使います。中身は Buildroot ベースでカスタマイズされた Linux となっていますので、手乗りサイズのLinux搭載ドローンとして自由自在にドローンを含む実験ネットワークを構築できます。
通信方式の特徴
基本的には普通の Linux ですので、手頃な基地局に繋いで普通の IP ノードとして使うこともできますし、ドローン自体を基地局として設定することもできます(色々入れすぎるとストレージが足りなくなりますが)。ちょっと面白いのは WFB(Wi-Fi Broadcast) という独自プロトコルによる低遅延伝送が実装されていることです。Linux の AF_PAKCET の仕組みを使ってIEEE802.11層と直接やりとりしており、IP 層のプロトコルよりもキワモノ感が強いものとなっています。
WFB の特徴は、通常は基地局のビーコン等で使われているブロードキャストフレームを通信で使っていることです。受信側ではブロードキャストフレームをただ受信するだけで確認応答フレームは投げません(Ack-Less というキーワードで呼ばれることが多いようです)。テレビのチャンネルを合わせるように、映像ストリームが流れているチャンネルを選んでデータを受信するだけです。確認応答を行わず、再送も発生しないので再送をトリガにする予測不能な遅延は生じないというわけです。エラー訂正は再送ではなくエラー訂正符号に任せることで、ある程度はエラー率を下げることもできます。
送信端末と受信端末が基地局を経由せずに直接通信するという点では Ad-Hoc モードのような状態ですが、確認応答のないAck-Less通信ですので通信距離が大きく伸びます。IEEE802.11での確認応答のタイムアウトは結構早く、300m離れるとノイズがなくても伝送路遅延でタイムアウトが起こることを考慮しなくてはならなくなると言われています。Ack-Less通信では、この制限がありません。送信局に対する電波干渉で再送が生じることもありません。
色々と便利ではある一方で、基地局による調停がないので他のノードとの共存は事実上できないという大きな弱点があります。チャンネル、変調方式、出力をユーザがちゃんと考えて設定しないと悲惨なことになる迷惑プロトコルという側面もあります。困った話ですが、希望もあります。IEEE802.11にはブロードキャストサービスを拡充するための標準化作業としてIEEE8021.11bc Enhanced Broadcast Services という分科会があり、成果が色々とあるのです。802.11bcの運用環境がちゃんと整備されたら、こういう野良プロトコルを使わなくてもよくなるでしょう。IEEE802.11bcは今のところ影の薄い存在ですが、期待しています。
IPネットワークに参加させるには
ドローンの映像を処理しようと思うと、機体のCPUだけでは色々と限界がありますのでIPネットワークで他のノードにデータを転送したくなります。カメラをIPノードとして動かす場合には特別な処理はありませんが、WFBでAck-Less転送をしている場合には一工夫必要です。WFBでの通信はIP層よりも下層で動作しているため、そのままでは受信したデータをIPパケットとして扱うことはできません。クラウドやエッジで処理を加えたい場合はIPでカプセル化してあげると色々と都合が良いので、IPにカプセル化してデータを中継する受信プログラムを作りました。
ここでどんなIPネットワークが良いのかと考えたのですが、普通のユニキャストに加えIPマルチキャストへの中継を実装しました。IPv6の場合、リンクローカルであればマルチキャストに関する複雑な設計を省略しつつ多対多の通信を手軽に実現できます。元々のWFBが一方的なブロードキャストフレームを好き勝手に受信するという仕組みですので、マルチキャストへの変換は自然です。さらに、WFBは1対多のブロードキャスト通信が基本となっていますが、マルチキャストでは多対多の通信をサポートできますのでここを活用すると画像伝送の質を向上させられる可能性があります。複数のカメラからの映像を同一マルチキャストグループに流してマルチアングル映像を提供するということもできますし、複数の受信機で捉えた映像信号を同一のマルチキャストグループに流して電波障害への耐性を高めるということもできます。
手元では電波障害への耐性を高める実験をしてみました。ドローンが飛び回ると受信との間に障害物が挟まって信号品質が落ちることがあります。ドローンの活動範囲が既知なのであれば、この受信機を複数配置して一つの受信機が影に入ってしまう状況でも他の受信機には情報が届いているという状況を作れるかもしれません。複数の受信機を条件の異なる場所に配置し、受信データをマルチキャストグループ上で混ぜてしまえば、画像処理ノードに比較的欠損の少ない映像信号を届けることが可能になります。冗長なデータ転送がふえるという欠点はありますが、IPネットワークには有線通信も使えますから、無線区間に比べれば対処のしようはあります。
自由に改造できる機材があると、荒削りながらも色々な実験ができます。皆さんもちょっと違う使い方ができそうな機材やプログラムが身の回りにないでしょうか?そんな視点で何かやってみると、そのうちとても面白いものができてくるかもしれません。

Xのフォロー&条件付きツイートで、「IoT米」と「バリーくんシール」のセットを抽選でプレゼント!
応募期間は2025/12/01~2025/12/31まで。詳細はこちらをご覧ください。
今すぐポストするならこちら→
フォローもお忘れなく!



