【P言語】IoT優先のプログラミング言語?Demoがドローン!コントローラーPixHawkにもインプリしてる!【自作UAV】

スポンサーリンク
広告

Pixhawk ってDrone のコントローラーだよね。

このデモ見てみて! うちのHPでもPixHawkは沢山でてくる(笑) ドローン関係では有名なコントローラー

これが、P言語のデモなんです!! (笑)

マイクロソフトがP言語のプロジェクトを発表して・・

数日まえに、

P言語の素晴らしさについて - kuenishi's blog
先週Microsoft社がP言語に関するブログ記事を公開し一部界隈で話題となった。P言語くん pic.twitter.com/uULzxIO4ct— Kuntaro Ishiyama (@_iamkuntao) 2017年3月26日「いまさら一文字言語かよ…」「何個目だ?」といった批判的諦念的なものから、「RustとG...

を読んで、P言語が出てきたんだ。ふ~ん、並列計算だからクラウド用だろうなぁ~ 確かにそういうのも、必要になってくるだろう。。なんて・・あまり気にしていなかったんですが、ちょいと、本家ほんもとを見てみようと。。

P: A programming language designed for asynchrony, fault-tolerance and uncertainty - Microsoft Research
To address the challenges of asynchronous computation, we have developed the P programming language for modeling and specifying protocols.

超要約すると、

P言語の、実装ツール、テストツールを公開したそうです。

  • Pコンパイラは、並行性に関連する競合条件とプロトコルを実行するための実行可能コードの自動テストを提供します
  • Windows8やWindowsPhoneのUSB3.0用、Azureにインプリされる

こないだ、Googleが発表したKotlinは、Java互換ですが、

このP言語は、P#とかいうのもあって、CやC#のソースコードを自動生成していれるそうです。ふ~ん。

って・・思ったんですが。。 Gitの方を見てみたら。。

GitHub - p-org/P: The P programming language.
The P programming language. Contribute to p-org/P development by creating an account on GitHub.
P
P family of languages and tools. P has 14 repositories available. Follow their code on GitHub.

なんと。。 Demoが、PixHawkでドローンのコードを書いていた!! Mavlinkで通信して、SITLでシミュレーションもしてる。

【自作UAVへの道】ドローンをWindowsのシミュレータで動かすSITLのインストール(その1)【ArduPilot】
Windowsで、ドローンシミュレータを動かす Arudpilotを試しに動かすのに、The SITL (Software In The ...
【自作UAVへの道】ドローンをWindowsのシミュレータで動かすSITLを使ってみる(その3)【ArduPilot】
ここまでやっておいて・・・(笑) 実は、シミュレーションで動かすだけなら・・・MissionPlannerをインストールしたら、SITLの...

あれ?Microsoftは、

【自作UAVへ】MicrosoftのAirSimを入れて、遊んでみようと思ったけど、できないじゃん。Udacityの方は動いた【ドローン】
Microsoftがドローン用のシミュレータをオープンソース化 という記事が、あちこちで、出てます。 ドローン界では有名な、SITL...

こっちの方の、シミュレーションじゃなかったの?って、そういえば、これもPixHawk使っていましたね。

PixHawkのP言語バージョンは、Dronaというもののようでドローンなものか?ってみたくなったので、調べると、

GitHub - Drona-Org/Drona: Drona is a programming framework for building safe robotics systems
Drona is a programming framework for building safe robotics systems - GitHub - Drona-Org/Drona: Drona is a programming framework for building safe robotics syst...

らしいです。

Drona自体は、分散ロボットの安全なコントロールのために生まれたフレームワークみたいですね。

この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優先の制御ができるってことですね。

面白い。

—追加

安全な非同期イベント駆動プログラミング

の詳しい解説記事

安全な非同期イベント駆動プログラミングのためのP言語をMicrosoftがオープンソース化
Microsoftが最近オープンソースとして公開したP言語は、非同期イベント駆動プログラムを安全に書くことができ、Linux、macOS、Windows上で動作する。

並列動作をモデル化している元になっているのは、Zingというものらしい。Zingはオープンソースの並行プログラム用モデルチェッカーであり、モデルがとりうるすべての状態を体系的に調査する(PPT)ことができるとのこと。

コメントを残していただけるとありがたいです

Loading Facebook Comments ...
%d人のブロガーが「いいね」をつけました。