Post

Conversation

長年、ロボットシステム屋をやってるけど、自分が働くロボットシステム作るときに大事にしてる設計指針のひとつとして 「任意の瞬間の機械の全状態が観測可能とせよ」 というのがある。 例えばアームでの搬送をするとき、ソフトウェアを多少囓ってる人は特に「掴んだかどうかの履歴を使えば、いまその瞬間にロボットがモノを持ってるかどうかが分かる」と考えがちで、それは正しいのだが、信頼度が高い機械システムを作るときは、センサ等で観測できないか検討するべき。 変数を追加することはかなりのコストをかけることになる。本来、ピュアにソフトウェア開発でも状態を増やすのは簡単には容認できない。 機械に話を戻すが、もし機械の全状態が観測可能なら、プログラムはハードウエアにアクセスして、観測した状態に従って行動するのみになり、テストが非常に容易になる。例えば、任意の姿勢を取らせてから観測・行動を1回だけ行う、みたいなテストが可能になる。 状態履歴を残すための変数はそれを不可能にする時点で、実物を扱うロボットの世界では「巨大な」コストを支払う。 コードは一行だが、そのリスクに想いを巡らせられる人は少ない。