OS開発
- HOME
- OS開発
OS開発
当社のドローンOSが優れている点を一言で言えば ドローン専用※のOSである、ということにつきます。
ドローンの飛行の安定性などに優れた特徴があるわけですが、深くご理解いただくために「なぜドローンが飛ぶのか?」から「OSとは何か」について、お話しを進めていきます。
※将来的にはドローン以外のロボットなどにも使える汎用OSを目指しています。
ドローンはなぜ・どうやって飛ぶのでしょうか?
電池式の手持ち扇風機がありますよね。
右の写真のようなものですが、これを机の上にひっくり返して置いて回したら飛ぶでしょうか?
やった方もあると思いますが、その場所で空しく回るだけです。これは電池やモータ、筐体の重量が揚力(浮かび上がる力)に勝るためです。そのため従来はエンジンのように強いパワーがあるもので、プロペラを回さなければ飛ばすことができませんでしたが、最近は軽い割に強力なパワーのリチウムイオン電池が登場し、電池でも飛ばすことができるようになりました。
それでは、この扇風機の電地を、リチウムイオン電池に交換あるいはケーブルでACアダプタ(電源)につないでみましょう。飛ぶでしょうか?
やってみるとわかりますが、机の上で、のたうち回るだけとなります。バランスの問題もありますが、それよりも本質的に重要なことは、作用反作用の問題で、プロペラの回る方向の反対向き力の処理がされていないことです。
モータは、プロペラを回すより楽なら「プロペラを止めてモータ側を回そう」とします。手で持っていてもファンの回る逆の方向に力を感じますよね。もちろん卓上扇風機のように、しっかりと固定すればいいのですが、ドローンのように空中では固定はできません。
そのため、ドローン(マルチコプター)の場合は「左右前後のプロペラの回転方向を逆にして」その力をキャンセルしています。
引用元:https://emb.macnica.co.jp/articles/3738/

注:
CW:プロペラの上から見て時計方向(正転)
CCW:プロペラの上から見て反時計方向(逆転)
では、上図のようにモータを配置したらもう大丈夫?となるかと言えば、そう簡単ではありません。
相互のプロペラの風量のバランスが微妙なので、上手く行っても、くるくるとドローン全体が回転あるいは振動するか、大抵の場合は上下がひっくり返ってぐちゃぐちゃになります。そのバランスを手動で調整することも全く不可能というわけではありませんが、屋外で少し風が吹いただけでも破綻してしまいます。
そのため何らかの自動制御が必要になりますが、キモになるセンサとしてIMUの出番となります。IMUとは「Inertial Measurement Unit」の略で、慣性計測装置と言います。何のことかと思われると思いますが、皆さんの体の中にも精密なIMUをお持ちです。目をつぶってても立てるし歩けますよね。それは耳の奥にある自然IMU(傾きセンサ=平衡感覚)のお陰なのです。例として、普通に立ってたとして、もし前に体が傾くと、背筋の筋肉を収縮させて重心を後ろにもっていって後ろ側にバランスしますが、ドローン(IMU)も同様の感じです。
ホバリング(空中静止)しているドローンが、局所的な風などの影響により前傾したとすれば、前のプロペラの回転数≒揚力を上げ、後ろのプロペラの回転数を下げて水平に戻ります(後ろを下げるのは、前を上げただけでは高度が上がってしまうためです)。
ちなみに、そのような「自動的なバランス制御(フィードバック制御)」のことをPID制御といいます。
具体的に、自動車の運転を例にすると、時速50kmで走りたいとした時、まずは時速50kmになるまでアクセルを踏みこみます、それがP(比例)制御です。今度は50kmを超えそうになったら、アクセルを緩めますが、これがD(微分)制御になります。その後、安定して50kmを維持するために微妙なアクセルの調整をしますが、これがI(積分)制御になります。PID制御は皆さんが普段絶えずやられていることを、自動的にやってくれる優れものの制御となります。

ドローンOSとは何のことでしょうか?
という話に進みます。ドローンOSを一言で例えるなら「座布団」でしょうか。
床面の凸凹(ハードウェア+基礎的な制御プログラム(ファームウェア))と人のお尻(操縦アプリ)の間に挟まって、その凸凹を埋めるイメージです。
引用元:https://knowledge.sakura.ad.jp/22042/


※ファームウェアとは、上記コラムのフライトコントローラとほぼ同義ですが、我が社のOSには、このファームウェア (フライトコントローラ)の機能のできる限り組み込み、,少なくとも我が社で製造するドローンについては、ファームウェアを不要にしたいと考えています。
ちなみに、その”座布団”の中身はアプリとハードの「中継ぎプログラム」が多数入っている感じとなります。このことは以下の【最適化】の所でも説明します。
以下、我が社のドローンOSの優位性について3点説明します。
1【標準化】
先ほどから書いています「フライトコントローラ」の中身ですが、DJI社製など、ほとんどのドローンでは、そのプログラムの内容が公になっておらず自由にアプリを作ることができません。具体的には、DJI社の場合は、SDK(Software Development Kit:ソフトウェア開発キット)と言う形で、フライトコントローラのプログラムの一部の「使い方」は公開されていますが、それ止まりで、結局は、同社のアプリを使用するしかないことになります。
※将来的には『標準化による幅広い普及=我が社のOSを搭載したドローンが広く世界中を飛び回る』時が来ることを願っています(例Windows、Android)。
Q Pixhawk、PX4、Ardupilotなどオープンソース(詳細な中身の公開されたもの)のものがあるが、それらはどのようなものか?
A Pixhawkは先に説明したIMUなどが入っているドローンのハードウェアの規格です。回路図など全て公開されています。ただこれだけでは、空っぽのPCのようなもので、そこにPX4やArdupilotなどの「ファームウェア(フライトコントローラ)」を書き込み、このファームウェアの中で先のPID制御やプロポからの信号などの処理を行わせる必要があります。その後ESC経由でダイレクトにモータ(プロペラ)を制御します。
Q わざわざOSを作らなくてもPX4やArdupilotで完結しているのでは?
A 我が社のOSは、これらPX4、Ardupilotなどに「変わるもの」あるいは「これらの発展的上位互換」と考えています。例えばPX4等だけでは基本的な部分のコントロールだけとなり、例えばレベル4飛行のような画像伝送、LiDAR(注1)処理などについては、他のアプリケーションが必要になってきますが、当社のOSには、その辺りのアプリもデフォルトで(最初から)で組み込んでいきたいと考えています。
注1:LiDAR
LiDARは簡単に言えばレーザー式のレーダーで、右写真のような画像(距離点群データ)が得られます。
狭路通過や壁面点検など、細かい凹凸のある場所を遠隔飛行する際には必須となります。
引用元:https://news.panasonic.com/jp/stories/12390

2【最適化】
既存のOS、例えばLinuxやAndroid、ROSなどを使った方がより良いのではともお考えになるかも知れません。ただ、前述のように、IMUによるPID制御で風にあおられた場合の臨機応変なモーターコントロールなど、ドローン制御では「リアルタイム性」が何より重要となります。その部分を強化し、基本的にフリーズ(動作停止)しない仕組み(注2)を内蔵しています。また先に書きましたように、画像伝送やLiDAR処理などは最初からOSに内蔵されておりますが、その中でもPID制御を最優先に処理させるなど、全体が一体となった円滑な処理システムとなっています。
注2:OSについて(フリーズしない仕組みも含みます)
OSを構成するプログラムは普通のプログラムと少し違っています。普通のプログラムはメインのルーチンの命令を上から下に順番にこなして、途中で一旦他のルーチンに行ったとしても必ずメインのルーチンに戻ってきます。一方OSのプログラムは、特にメインのルーチンがあるわけではなく、基本、待機(アイドリングモード)していて、イベント(割り込み)を待つ形となります。
例えば先のIMUのからの信号によるイベント割り込みがあれば、対応する処理(PID制御など)を行い、処理が終わればアイドリングモードになり、次の割り込み(今度は、例えばLiDARや画像伝送からの割り込み)を待ちます。ちなみに、フリーズとはプログラムが動かなくなることですが、機能が止まってしまうわけではなく、意味のない命令を無限に繰り返しているため止まっているように見えるわけです。ただ、PCと違いドローンの場合は墜落に直結するため、0.1秒程度、プログラムが反応がない場合には、強制的にリセットするWDT(Watchdog timer)という仕組みなどもデフォルトで備えています。
3【セキュリティ】
PID制御など細かな制御はドローン上で行いますが、例えば、国交省API(注3)への対応、わが社のUTMへの対応など、ドローンの高度な制御についてはクラウド(注4)での処理が基本となってきます。クラウドでの処理の場合、サーバ(同注4)の設置場所が国内か否かということが非常に重要なポイントとなります。
サーバのデータは機器に直接あるいは遠隔により抜き取られたり悪用されることがありえるからですが、当社OSではどこのサーバとやりとりしているか、そこでセキュリティが守られているかなどを完全に公開します。
注3:国交省API
プログラミングの世界でのAPIとは個々のルーチンを指しますが(例:画面上に文字”A”を表示など)、ここでのAPIは少しマクロな話で、情報(他のドローンの位置や気象など)のやりとりの枠組み(フレーム)を定めたものとなります。
■注4:クラウドとサーバ
クラウドとは雲のことですが、データを天上に吸い上げ保管するイメージから来ています。クラウド(実際には会社のサーバールームの中)には多数のサーバが設置されていますが、サーバといってもスーパーコンピューターなどではなく、単にネットとつながっているPC、ただし並列処理で高機能(高速処理)という程度にお考えください。
このサーバ上での処理の利点は、人工知能による画像処理など、ドローン(エッジ側)の非力なCPU(中央演算処理装置)では処理に時間がかかるものでも、すぐに答えを出すことができることにあります。ただその手法にも、以下の欠点があります。
まず第1はセキュリティの問題で、PCに集まったデータ(どこを航行中であるかなど)は、サーバ管理者は見たりコピーすることは容易にできてしまうことです。
2つ目は情報伝達の遅延です。各PCには高速なCPUを搭載していますが、通信による遅延、これは5G無線や6G無線になっても光(電波)の速度の限界や、LAN(イーサネット)の転送パケットロスの再送など、原理的にどうしようもない部分です。
最後の3つ目は、処理そのものの遅れです。いかに高速なサーバ(PC)であっても、一度に多数のクライアント(ドローン)の処理が必要な場合は、当然、その「”多数”分の1」の処理しかできませんから。