考察:「マルチプロセス」

by ご近所のきよきよ



 「RTミドルウェア超入門」(長瀬雅之、中本啓之、池添明宏著 毎日コミュニケーションズ刊)を読みました。ロボットのソフトウェアはコンポーネント指向で標準化されていて、そのミドルウェアはコンポーネントの間のメッセージのやりとりをするものだそうです。SOAみたいですね。私の人工知能システムもコンポーネント指向で作っていきたく思いました。


 それで思ったのですが、コンポーネントはシングルだけでなくて、マルチプロセスにも出来るようにしたほうがいいのでは。同じ処理をパラメータを変えるだけでマルチ並列で実行したいときってあるでないですか。パターン認識なんかはそうですね。コンポーネントに処理を依頼したら、プロセス識別子を返し、内部でコンポーネントをコピーして、異なるパラメータを実行する。プロセスの作業が終了したら、識別子と処理結果を返すのです。識別子でなくてコールバックプロセスをコンポーネントに指定するようにしたほうが自然ですかね。


 コンポーネントウェアというかデータフローマシンは、制御の入れ子構造に工夫がいるのです。メッセージを送ったコンポーネントに制御を返すには、メッセージ送達バスおなるミドルウェアが頑張らないといけない。メッセージを送ったコンポーネントの識別子をメッセージを受け取るコンポーネントに通知し、受け取ったコンポーネントが処理をして、得たデータを返す時に、識別子を指定してミドルウェアにデータ送達を依頼する。このとき、元のコンポーネントが同期して、ウェイト状態だったら、ミドルウェアは元のコンポーネントを活性化しなくてはなりません。ロボットコンポーネントはステートマシンに成っているから、この辺は折り込みの事だと思いますが。


 そんなこんなを考えていました。





おわり