Pixhawk ってDrone のコントローラーだよね。
このデモ見てみて! うちのHPでもPixHawkは沢山でてくる(笑) ドローン関係では有名なコントローラー
これが、P言語のデモなんです!! (笑)
マイクロソフトがP言語のプロジェクトを発表して・・
数日まえに、
を読んで、P言語が出てきたんだ。ふ~ん、並列計算だからクラウド用だろうなぁ~ 確かにそういうのも、必要になってくるだろう。。なんて・・あまり気にしていなかったんですが、ちょいと、本家ほんもとを見てみようと。。
P: A programming language designed for asynchrony, fault-tolerance and uncertainty
超要約すると、
P言語の、実装ツール、テストツールを公開したそうです。
- Pコンパイラは、並行性に関連する競合条件とプロトコルを実行するための実行可能コードの自動テストを提供します
- Windows8やWindowsPhoneのUSB3.0用、Azureにインプリされる
こないだ、Googleが発表したKotlinは、Java互換ですが、
Googleの新しいFuchsiaは、Javaをやめるから、Kotlin?
Google is developing a mysterious new mobile operating system called Fuchsia https://t.co/PSe6PRE46k— Tetsuya Tominaga (@tom2rd) 2017年5月18日
このP言語は、P#とかいうのもあって、CやC#のソースコードを自動生成していれるそうです。ふ~ん。
って・・思ったんですが。。 Gitの方を見てみたら。。
https://github.com/p-org/P
https://github.com/p-org
なんと。。 Demoが、PixHawkでドローンのコードを書いていた!! Mavlinkで通信して、SITLでシミュレーションもしてる。
【自作UAVへの道】ドローンをWindowsのシミュレータで動かすSITLのインストール(その1)【ArduPilot】
あれ?Microsoftは、
【自作UAVへ】MicrosoftのAirSimを入れて、遊んでみようと思ったけど、できないじゃん。Udacityの方は動いた【ドローン】
こっちの方の、シミュレーションじゃなかったの?って、そういえば、これもPixHawk使っていましたね。
PixHawkのP言語バージョンは、Dronaというもののようでドローンなものか?ってみたくなったので、調べると、
https://github.com/Drona-Org/Drona
らしいです。
Drona自体は、分散ロボットの安全なコントロールのために生まれたフレームワークみたいですね。
- P: Safe asynchronous event-driven programming.
- Systematic testing of asynchronous reactive systems.
- DRONA: A Framework for Safe Distributed Mobile Robotics.
このDronaの論文に乗っているツールチェーンと、P言語のツールチェーン、まったく同じですね。
Dronaのツールチェイン
こっちが、Microsoft Researchのブログにある P言語のツールチェイン
ドローン関係は、もうDJIが安くいいのを作ってコモディティ化が進んでいるので・・って思っていましたが、まだまだドローン自体もいろんな融合があって、勝負あったわけじゃないんですね。また、ドローンの要求条件から、クラウドの非同期などの仕組みが更新されていく。世の中分からないなぁ。。
何故こんなことやったんだろ?
DronaのAbstruct読んでみると・・・
分散型移動ロボット(DMR)には、ネットワーク化されたロボットのチームが、物理的な空間をナビゲートして、調整された方法でタスクを達成します。 DMRの主な課題は、正式な保証と正しい操作の高い保証でロボットのアンサンブルをプログラムすることです。この目的のために、フレームワークであるドロナを紹介します
信頼性の高いDMRアプリケーションを構築します。
(1)我々は、動的に生成されたタスクのための衝突のない計画を実行することができる新規で確かに正しい非集中型非同期動作プランナを提示する。さらに、モーションプランナは、分散型ロボットが公差まで同期化されたクロックを有することができるという事実、すなわちほぼ同期しているという事実を考慮したものである。 (2)DMRシステムを混合同期システムとして正式化し、DMRシステムに健全な抽象化ベースのアプローチを提示する。(3)ドローナは、安全なイベント駆動型プログラミングのためのステートマシンベースの言語を提供する。 DMRシステムおよびコンパイラによって生成されたコードは、ロボットオペレーティングシステム(ROS)などのプラットフォーム上で実行することができる。
ドロナの現状を実証するために、私たちは優先メール配信システムを構築して検証します。我々の抽象化ベースの検証手法を使用して、数時間以内にランダムなシミュレーションを実行することで発見できなかったバグを数分以内に発見することができました。当社の分散型モーションプランナーは、多数のロボット(最大128台のロボット)と作業スペースのサイズ(最大256×256のグリッドまで)のスケーリングを可能にします。
そっかぁ・・・ROSは1msecで情報交換しなくちゃいけなんですね。それで、分散環境で動いていると、相互にやり取りをしなくてはいけなくて、その時、それぞれの計算結果がきちんと終わってないと、ちゃんと飛ばないんだ。。 な~るほど。
それほど、大きくないアプリでも、IoTでデバイス側と、サーバー側でプログラムを作ってみて、それぞれの動きの早さが違うので、通信できなかったりするんですよねぇ。。
P言語に抽象化しているけど・・
我々は、非同期イベント駆動型コードを書くためのドメイン固有の言語であるPの設計と実装について説明します。 Pを使用すると、プログラマーは、イベントを使用して相互に通信する相互作用するステートマシンの集合としてシステムを指定することができます。
Pは、モデリングとプログラミングをプログラマーのための1つのアクティビティーに統合します。 Pプログラムを実行可能なコードにコンパイルできるだけでなく、モデル検査技術を使用してテストすることもできます。 Pは、プログラマーがテスト中にシステムを「閉じる」ために使用される環境を、非決定的なゴーストマシンとして指定することを可能にします。
ゴーストマシンはコンパイル中に実行可能コードに消去されます。型システムは、消去がセマンティクスを保持することを保証する。 P言語は、Pプログラムが応答性(すべてのイベントを適時に処理する能力)をチェックできるように設計されています。デフォルトでは、マシンは次のイベントをすべて処理する必要があります。
すべてのステートに到着する。しかし、すべてのステートのすべてのイベントを処理することは実用的ではありません。この言語は、イベントの処理を遅らせたいときにプログラマが注釈を付けることができる遅延イベントという概念を提供します。デフォルトの安全性チェッカーは、未処理のイベントが存在するかどうかを調べます。この言語は、イベントが潜在的に永遠に延期されることができないデフォルトの生存チェックも提供します。
Pは、Microsoft Windows 8に同梱されているUSBデバイスドライバスタックのコアを実装して検証するために使用されました。その結果、ドライバはより信頼性が高く、以前の化身(Pを使用していない)よりも優れています。私たちは、Pによって提供される言語抽象化と検証のために、その設計の頑強さにもっと自信を持っています
ほ~ 凄いなぁ~
なるほど、遅延をさせたり、イベント処理を遅らせたりできるという、IoT側からクラウドのコントロールもできるような言語になっているんですね。非同期に同期させるための言語なんだ。。 おもしろいですねぇ~
言語がオーケストレータのようなこともするってことですね。
ん?クラウドが先か?IoTが先か?っていうと、IoT優先の制御ができるってことですね。
面白い。
—追加
安全な非同期イベント駆動プログラミング
の詳しい解説記事
https://www.infoq.com/jp/news/2016/10/microsoft-p-language-opensourced
並列動作をモデル化している元になっているのは、Zingというものらしい。Zingはオープンソースの並行プログラム用モデルチェッカーであり、モデルがとりうるすべての状態を体系的に調査する(PPT)ことができるとのこと。
コメントを残していただけるとありがたいです