IRボールの角度を正確に出そう!

 皆さんこんにちは!Air所属のGamuです(Twitter:@Air_Gamu)。Twitterのフォローもして頂けると嬉しいです。
 今回の内容は「IRボールの角度を正確に出そう!」です。 この記事はあくまで自分のやり方を綴っているだけなので、記事というか技術メモだと受け取ってもらいたいです。また、この方法は未完成であり、たまたま上手く行っただけな可能性があるので、間違ってい どうぞ最後まで見ていただけると嬉しいです。それでは始めていきます。

これは私のTwitterの投稿です。このプログラムではIRボールの角度を一度刻みで出しています。自分では中々に精度が出せていると思っています。今回はこれの解説をしていきます。
 まずは私たちが使っているボールセンサーの紹介についてです。RCJで使用されているIRボールは赤外線を発光しています。ロボットはその赤外線を読み取るためにボールセンサーが必要です。IRセンサーにはTSSP4038✖️16個を使用しています。それを取り付ける基板は私たちAirのスポンサーであるJLCPCB様に発注をし作っていただきました。いつも品質の高い基板を作ってくださって、ありがとうございます。この機に一度JLCPCBを利用してみてはどうでしょうか?(リンク:jlcpcb.com/JPV)
 基板に関しては前回のブログで解説をしています。よければ、見ていってください。IRセンサーに関しては全てデジタルで読み取っています。

 次にプログラムの解説です。
1. IRセンサーで角度の読み取り:まずIRボールの大体の位置を出すことから始めます。私たちのロボットには16個のIRセンサーが等間隔に配置されています。間隔としては22.5度づつになります。まずはfor文を用いて1つのIRセンサーがそのfor文の中でどれくらいの回数見ているのかを数えます。私はとりあえず1000回読んでいます。しかし、それでは処理速度の問題などが出てくるので、将来的には833μsの間読み取ろうと考えています。

2. 全てのボールセンサーの値の比較:IRボールの大体の角度を導き出すために、IRボールを読み取った回数が多いIRセンサーを見つけたいので、読み取ったIRセンサーの値を全て比較します。すると、IRボールの角度に最も近いIRセンサーを求めることができます。

3. ベクトル分解と正確な角度:ここからは角度をより正確なものにしていきます。そのためにベクトル分解というものをする必要があります。できるならベクトル分解についてもちょっとした解説を載せたかったのですが、実は自分は全く数学のできない数弱なので、省かせてもらいます。自分が勉強して頭が追いついた範囲でざっくりと説明するならば:角度と大きさを持ってるベクトルってものがあるらしい。で、なんやかんや式に値をぶち込んで、sinだとかcosとかでもみくちゃにしたら、そのベクトルがxの成分とyの成分に分解できるよ!みたいな感じです。
    ではこのベクトル分解を応用し、IRボールの角度を求めます。先の1番で求めたIRセンサーの値は22.5度づつの角度と、IRボールを読んだ回数である大きさの2つの要素を持っています。そのため、そのIRセンサーで読んだ値はベクトルだと考えることができるわけです。
 ベクトル分解の式は、
→ x成分 = そのIRセンサーの大きさ * cos(radians(そのIRセンサーの角度)      
→ y成分 = そのIRセンサーの大きさ * sin(radians(そのIRセンサーの角度)  
になります。sinやcosを使用するには、math.hをincludeする必要があります。また引数はラジアンに直したものである必要があるため注意が必要です。
 IRボールの角度を正確に出す方法というのは、最も大きな情報を持ったベクトルの周囲何個かのIRセンサーの大きさを足し合わせ、一つのベクトルにすることによってIRボールの角度を算出しています。私のプログラムでは、最も大きなIRセンサーと周囲3つのセンサーの合計7つのIRセンサーの各x成分、y成分を足し合わせることで合成しています。
 最後に、合成したベクトルにatan2という関数を通します。これはとても便利で、x成分とy成分を指定してあげると、角度が求められる関数です。これも引数はradianです。そのため、
→ degrees(atan2(y成分、x成分))
になります。degreesは弧度法であるラジアンの値を、度数法に変換できる関数です。
 
 このようにして、私はIRボールの角度を出しました。方法や知識が間違っている可能性も大いにあり得るので、もし見つけた場合はコメントなどで教えていただけると幸いです。
 ここまで長文を読んでくださってありがとうございました。また次の記事でお会いしましょう。










コメント

このブログの人気の投稿

2025年度第基板発注第1弾!!

2024年度基板発注第3弾!!