低速(30Hz)システムで高速(200Hz)リアルタイムシステムを制御するにはどうすればよいですか?
現在、複数の制御された自由度とセンサーを備えた移動ロボット+取り付けアームを設計しています。 私は2つの部分でアーキテクチャを検討しています: アームモーターとエンコーダーを制御するための一連のリアルタイムコントローラー(XenomaiなどのRTOSを実行するRaspeberry Piまたはベアメタルマイクロコントローラー)。マイクロコントローラーの数に応じてx = 1,2,3…でこれらのマシンをRTxと呼びましょう。この制御ループは200Hzで実行されます。 ROSを実行してSLAM、mocapを計算し、高レベルのロジックを実行する強力なバニラLinuxマシン(ロボットのタスクを決定し、モーターの希望する位置と速度を計算します)。この制御ループは30Hzで実行されます。 より多くのモーター、より多くのセンサー、より多くのPC(外部のモーションキャプチャーなど)を考慮して、フレームワークをスケーラブルにする必要があることを知っています。 私の主な問題は、さまざまなRTxがPC1と通信する方法を決定することです。ロボットアーキテクチャ(HRP2など)に関連する論文を見てきましたが、ほとんどの場合、高レベルの制御アーキテクチャについて説明していますが、低レベルと高レベルでスケーラブルな方法で通信する方法に関する情報はまだ見つかりません。私は何か見落としてますか? 高速RTマシンを接続して、モーター制御をPC1で保証するために、TCP / IP、CAN、およびUARTを検討しました。 TCP / IP:確定的ではありませんが、簡単に配置できます。非決定性は本当の問題ですか(とにかく遅い30Hzでしか使用されないため)? CAN:低速で、非常に信頼性が高く、車をターゲットにしています(ロボットでCANを使用する例がいくつかありますが、エキゾチックに見えました) UART:モーター制御用のRTマシンが1つしかなかった場合、UARTを検討していましたが、このポートは多くのRTxでうまくスケールしないと思います。とても使いやすい… 現時点では、私にとって明らかな解決策はありません。また、特定の信頼性が高くスケーラブルなソリューションを使用した深刻なロボットの例は見当たらないため、選択する自信がありません。 誰かがこの点または指摘する文献について明確な見解を持っていますか?ロボットで使用される一般的なまたは主流の通信ソリューションはありますか?