Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

回頭・ピボットターンの精度調整 #97

Open
kodama0720 opened this issue Jul 15, 2021 · 7 comments
Open

回頭・ピボットターンの精度調整 #97

kodama0720 opened this issue Jul 15, 2021 · 7 comments
Assignees

Comments

@kodama0720
Copy link
Contributor

kodama0720 commented Jul 15, 2021

完了条件

  • 回頭・ピボットターンの精度の改善(pwmが30の時に2度以内)

実現方法

  • 精度を明確化する
  • アルゴリズムの見直し
  • ループ内のsleepで停止タイミングが遅れる ⇒ 停止直前の速度を調整する(緩やかに止まるように)
  • 左右のモータの速度が異なる?(回頭) ⇒ 左右のモータの止まるタイミングを共通にしてみる

関連資料(省略可)

@hyamadev331
Copy link
Contributor

LGTM

@arimakaoru
Copy link
Contributor

完了条件について

  • もっと具体的に決めた方が、チケットのゴールが明確になって良いと思うよ。回頭とピボットターンは、どのくらいの誤差なら許容できる?

実現方法について

  • ①ではPWM値によって、精度がどう変わるかも知りたい。
  • 現状の問題点とその原因は何?「緩やかに停止する」と「左右のモータの止まるタイミングを共通にする」という対策は、その原因をなくして、問題解決に繋がるの?
  • あ、現状の問題点と原因を考えるのは、①で精度を明確化した後にやるのか。

@mutotaka0426
Copy link
Contributor

mutotaka0426 commented Jul 16, 2021

左右のモータの止まるタイミングが違うってことは,その場で方向転換ができていないってことになるから(実際に黒ブロック設置の中の回頭では動いていた),アルゴリズムの見直しが必要だね.
これに関しては,課題点に対する工夫というよりかは,アルゴリズムの問題だと思うから,最初にそこからやった方がいいのかなって俺は思う.

その後に精度を明確化して,同じ出力にしているのにタイヤの回転角度に差があるとか,出力が大きいと指定角度で止まりきれないとか色々問題が出てくると思うから,それらを解決する工夫をしていく感じ.

あと,直進の精度改善のissueでも言われてるけど,できれば回頭もブロック持った時の精度も知りたい.実際にブロック持ってると回頭角度が足りない?みたいなこと誰かが言ってた気がするし.

@mutotaka0426
Copy link
Contributor

mutotaka0426 commented Jul 16, 2021

改善のヒントになればってことで一応書いておくと,ジャイロセンサなるものがev3にはあるから,それを使うことで精度を調整することも出来ると思うよ.
去年はなんかうまいこと使えなかったから制御を工夫するだけにしてたけど,実機でやってる一昨年は実際に使ってたみたいだから,一昨年のコードを参考にしてみるといいかもしれない.

https://github.com/KatLab-MiyazakiUniv/etrobocon2019/tree/master/src/module
Navigator.cppの53-78行目に回頭の処理が書いてあるよ

参考にしてみます!
あと、ブロックを持った時の誤差も調べてみます。
ブロックを持った時の誤差の調整もこのチケットの完了条件に追加した方がいいですかね?

@yutotanaka24
Copy link
Contributor

完了条件について

  • もっと具体的に決めた方が、チケットのゴールが明確になって良いと思うよ。回頭とピボットターンは、どのくらいの誤差なら許容できる?

実現方法について

  • ①ではPWM値によって、精度がどう変わるかも知りたい。
  • 現状の問題点とその原因は何?「緩やかに停止する」と「左右のモータの止まるタイミングを共通にする」という対策は、その原因をなくして、問題解決に繋がるの?
  • あ、現状の問題点と原因を考えるのは、①で精度を明確化した後にやるのか。

実際にどのくらいの誤差があるのかまだわかっていませんが、pwmが30の時に2度以内ぐらいだとその後のライントレースなどにも影響しないのかなって考えてます。
PWM値が大きいほど停止したときの反動のようなもので誤差がでるのではと予想していて、目標の角度に近づくにつれPWM値を下げていけば解決するのではないかと考えてます。
左右のモータの止まるタイミングが違うというのは原因がまだわかっていないので、武藤さんが書いてくださってる一昨年のコードを参考にしてもう1度アルゴリズムから考え直そうかと思います。

それと、実際の誤差をどうやって測ればいいでしょうか?
今のところ、シミュレータの画面で分度器を使って測るくらいしか思いつかなくて。。。

@mutotaka0426
Copy link
Contributor

左右のモータの止まるタイミングが違うというのは原因がまだわかっていないので、武藤さんが書いてくださってる一昨年のコードを参考にしてもう1度アルゴリズムから考え直そうかと思います。

去年俺が書いたコードと大して変わんないから,アルゴリズムの見直しの参考にはしないほうがいいと思うよ.多分だけど,Rotation.cppの32行目と35行目で左右別々にモータを止めて,両方が止まるまでループってしてるのが問題なんだと思うよ.

@arimakaoru
Copy link
Contributor

それと、実際の誤差をどうやって測ればいいでしょうか?
今のところ、シミュレータの画面で分度器を使って測るくらいしか思いつかなくて。。。
僕も分度器で測るしか思いつかない。
@Takahiro55555 が頑張ってくれているけど、上手くいきそうにないらしい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants