2021年11月14日日曜日

スロットルレベル20%の回転数

 引っ接触タコメーターで測定したところ

No.1 3070rpm

No.2 2749rpm

No.3 2715rpm

No.4 2745rpm

というわけで、No.1だけが大きく異なる。これは、このドライブだけが、違うESCを使っているかだ。

さらにいろいろ調べた結果、基本的な問題は、キャリブレーションだった。全てのESCをキャリブレーションしなおしたら

No.1 2800rpm

No.2 2891rpm

No.3 2871rpm

No.4 2865rpm

と、誤差の範囲の差しか出なくなった。これくらいは、フライトコントローラーが吸収できるはずだ。

2021年11月10日水曜日

C++ forkとパイプ

 フライトコントロールの制御ループは、ミリ秒単位の周期になる。C++のスレッドで簡単にできそうだったが結局うまくいかず、forkコマンドで子プロセスを作って動かしている。


途中、親から子プロセスのパラメータを変更するときにパイプ機能を使うことになった。一つハマったのが、パイプはforkする前に作らなければならないことだ。

ピコをudevを制御して区別する

 システムで、dshot信号を作るのをpicoでやらせていた。UARTの使用の関係で、pico1台で、2つのモータに信号を送っていたので、2つのpicoを使っていた。それまでは、pico二信号を送って、あなたはどちらのpicoですかと問い合わせして、その答えを聞いて /dev/t...