しかし、Erlang は、ロボット アプリケーションに対する最良のアプローチではないかもしれません。しかし、 Erlang が多くのロボティクス アプリケーションで重要なコンピューティング モデルをサポートしていることを実証するという、あまり野心的でない論文を選ぶこともできます。ロボット工学に Erlang を使用するポイントは次のとおりです。
- 並行世界をモデル化および監視する並行性。
- センサー、アクチュエーター、コンピューティング リソースの配布。
- 動作を結び付けるステート マシン。と
- フォールト トレランスのためのスーパーバイザ。
どんな言語でも何でもできますが、Erlang は特にアーキテクチャ レベルでいくつかのことを便利にします。
たとえば、Erlang での並列プログラミングの第 14 章では、エレベーターごとに 1 つのプロセス、フロアごとに 1 つのプロセスによってリフト制御システムをモデル化し、後で衛星制御システムのプロセス構造について説明します。リフトやサテライトはあまりロボットに似ていないかもしれませんが、原理は同じです。
Corrado Santoro らによるErlang & Robotics の作業。並行性を十分に活用します。彼らの2007 年のモバイル ロボット プロジェクトには、低レベルの I/O から高レベルの計画まで、さまざまな (同時) OTP 動作が多数あります。ロボット工学とプレーヤー/ステージを使用して Erlang を教えることは、もう 1 つの最近の仕事です。
ロボット サッカーや掃除ロボットのアイデアは問題なく、同時実行性とロボット間通信の余地が十分にあります。しかし、そのサイズの任意のロボット アプリケーションを実行するだけではありません。チームと作業する特定のロボットがあるか、自分でシミュレーターを取得します (どちらの方法でもシミュレーターを取得します)。
それぞれのロボットが独自のプロセスを実行し、すべてが衝突するまで互いに向き合う多数のロボットをシミュレートしてみてください。それが機能している場合は、タスクを置き換えて、モーターを制御する (ふりをする) プロセスを追加し、壁を感じ、環境を見て、ユーザーのコマンドを理解し、分解し、他のロボットや計画プロセスとメッセージを交換します。
そのような設計が一般的であることとその理由を理解するために、ロボット システム アーキテクチャをよく読んでください。Erlang はこの種のプログラミングを容易にしましたか?