学生プロジェクトとして、定義されたコースを実行し、木製の立方体を拾うロボットを構築しています。そのコアは、250MHzでARM9を搭載したdebianを実行するシングルボードコンピュータです。したがって、コントローラーには十分な処理能力があります。さらに、それはいくつかの画像処理を行います(運転中ではなく、停止したときのみ)。そのため、OSなしで単純なマイクロコントローラーを使用しません。
現時点ではすべてがうまく機能していますが、1つの問題があります。メインの制御ループが遅延なしで実行され、1kHzを超えるサイクル周波数を達成します。これで十分です。100Hzでも十分です。しかし、時々、100ms以上かかる単一のサイクルがあり、コントローラーを大きく混乱させる可能性があります。
スケジューラーが長期間CPU時間を取得していないことを検出する可能性があるため、この遅延を引き起こす他のタスクがあると思われます。
したがって、私が最も望んでいるのは次のとおりです。コントローラーのメインループで5ミリ秒の短いスリープが発生します。これは、実際には5ミリ秒しかかかりませんが、システムの残りの部分にプロセッサー時間を与えます。nanosleepを使用してたとえば500usの遅延を含めることができますが、これは実行に常に10ミリ秒以上かかるため、実際には代替手段ではありません。待機中のタスクに何かをする機会を与えるために、自発的な睡眠のようなものが好きですが、できるだけ早く戻ります。
それ以外の場合、システムはアンロードされるため、長時間にわたって実際に多くの処理を必要とする可能性のあるものはありません。
ユーザースペースでこれを行う方法はありますか?つまり、RTAIのようなものに固執する必要はありませんか?
ありがとう、フィリップ