ジャイロセンサーを使った旋回制御動作の際、指定した回転角より多く回転する動きを見せることがあります。 ドリフトや振動などの影響もありますが、他のプロセスと協調動作を行う関係上、ある程度はしかたがないことと考えていました。 そんな折、このような情報(?)を目にしました。
Linux リアルタイムカーネルを使いたかった – TK’s HP
リアルタイム性は、ハードウェアにより近いシステム、例えばarduinoのようなものでなければ難しいと思っていましたが、リアルタイムカーネルで実現可能なことを知ったのです。
さらに調べていくと、下記サイトに重要な事が…
プログラムを実行する時に優先度を指示できるコマンドがあったのです。 それはnice(!)
「ジャイロセンサーを使う」の旋回用プログラムをniceコマンドで実行してみます。 nice値は最優先の-20です。
nice -n -20 sudo ./gyro_turn11 r 90
すごい!素晴らしい! 全くと言えるほどズレがなく、何度実行しても再現性抜群です。
今後の開発にも非常に有効な情報であったと思うと同時に、知らなかったことの怖さも実感したのでした。