YazawaKenichi / murakumo_ws

0 stars 0 forks source link

[ Bug ] section_length_read( ) の値がなんだかおかしい #14

Closed YazawaKenichi closed 1 year ago

YazawaKenichi commented 1 year ago

問題の内容

section_length_read() を printf したところ、0.30 m になるはずが 0.22 m になっている

実行環境

予想される原因

参考になりそうなサイト

YazawaKenichi commented 1 year ago

section_length_buffer_global_left と section_length_buffer_global_right を初期化する関数を作り、名前を section_length_buffer_reset() とした。

section_length_buffer_reset() を section_length_start() で呼び出すようにした。

YazawaKenichi commented 1 year ago

よくよく考えてみれば、section_length_buffer_global が初期化されていなかったら、最初スタート直後に、section_length_read() の値はゼロになっていないはず。

今回は 0.3 を示してほしいのに 0.22 になっているということはスタート直後に -0.8 くらいを示すはず。

しかしスタート直後、タイヤを動かしていない状態ではゼロを示しているため、和演算の問題ではなく、積演算に問題がありそう。

YazawaKenichi commented 1 year ago

length_read() を printf してみた。

既に間違っている

YazawaKenichi commented 1 year ago

sampling_time_s が間違っているというわけでもなさそう

YazawaKenichi commented 1 year ago

整理

length_update()

概要

tim10_main() でのみ呼び出されている。 tim10_main()1 [ ms ] 周期で実行される。

encoder_set()

length.c > length_update() でのみ呼び出されている。

encoder_length_left(), encoder_length_right()

encoder_left sampling_time_s, encoder_right sampling_time_s

YazawaKenichi commented 1 year ago

なんかいろいろ考えたけど最終的にタイヤの直径を誤魔化すことにした

TIRDIAMETER = 21000      //! タイヤ径真値
ERROR -7250              //! エラー量
(TIRDIAMETER - ERROR)    //! 誤魔化されたタイヤの直径