札幌日大中高一貫ロボット部 「非公式」ブログ

札幌日大中高一貫ロボット部の「非公式」ブログです!

全方位ミラーの3Dモデルを作る 前編

 始めまして。SNJRCのメンバーの、ONCと言います。

 現在、ロボカップジュニアの、サッカーオープンで全国大会出場を目指して活動している者です。

 この記事では、全方位ミラーを制作するために必要な3Dモデルを、これまでとは別の方法で作る方法を紹介する、予定でしたが、記事が長くなりすぎたので2つに分けることにしました。

 

初めに

 皆さんご存知の通り、2017年からロボカップジュニアのルールが一部変更され、オープンリーグで使用されるボールが赤外線発光ボールからパッシブボール(オレンジ色のボール)に変わりました。

 そのため、オープンリーグに出場するロボットにはカメラなどを用いて画像処理などを行う機能が必須となりました。

 

 また、新しくなったルールにはカメラについての制約事項があります、

 

8.2.2 制限事項
1 台のロボットには 1 つのカメラしか搭載することができません。市販のオムニディレクショナルカメラやレンズを使用することはできません。選手が自作したオムニディレクショナルカメラおよびレンズのみ使用可能です。つまり、選手達が主となり製作したパーツによって構成されている必要があります。ロボットにそれらを使用しているチームは、プレゼンテーション及びインタビューにおいて、その製作過程を説明しなければなりません。これらの規則において、「オムニディレクショナル」とは、水平方向に140 度以上の視野、または垂直方向に 80 度以上の視野、またはその両方を持つものと定義されます。
(これらの値は、人間の目の視野角をもとに設定されています。 )

 

 オープンリーグの競技で優位に立つには、広い視野角が重要です。しかしそれを実現するには自分たちで全方位ミラーなどを作る必要があるということです。

 

 全方位ミラーの設計及び制作方法は、すでにいくつかのブログなどで紹介されていますが、この記事では少し違うやり方で3Dデータを作る方法を紹介します。

 

全方位ミラーの概形

 

 今回、ミラーの形は双曲線を使います。双曲線のミラーを用いると、カメラから見える画像の中心からの距離と、実際の距離が比例するため、画像処理を行いやすいそうです。

 

 ミラーに使用する双曲線の式を求める方法は、他の方も紹介していましたので、ここでは簡単に書きます。

 

 双曲線関数は一般に、

\dfrac{x^2}{a^2} - \dfrac{y^2}{b^2}=  1 or -1 (a,b定数) 

という式で表されます。

グラフの形はこのようになります。(= 1の場合) 

f:id:snjrc:20190504223126p:plain 


 今回、ミラーを設計するのに使うのは、 = -1の方の式になります。次に、双曲線の一般式を y = の式に直します。

  y = \pm\sqrt{\dfrac{b^2}{a^2}*x^2 + b^2}

 このグラフは、以下のようになります。

f:id:snjrc:20190504230338p:plain 

 今回、ミラーを設計する上で、マイナス側のグラフはいらないので、変形した式の±を消して、+のみにします。

 

 目的の双曲線の式を求めるには、変形した式の未定数、a,bをそれぞれ求めれば良いわけです。

そのために、全方位ミラーにいくつかのパラメーターを設定して、そこからa,bを含む二本の式を立てて連立してあげれば良いです。

 今回設定するパラメーターは、ミラーの焦点距離(d)とミラーの半径(c)、あとカメラの画角(θ)です。参考までに、(めっちゃ見づらい)図を載せておきます。

f:id:snjrc:20190505000010p:plain

この図からこのような条件を設定します:

  1. カメラの画角(Angle of view)(θ)
  2. ミラーの最外縁での反射光は水平に入射する
  3. ミラーの半径(c)

この中の、1.カメラの画角、3.ミラーの半径から、焦点距離(d)が求まります。

d=\dfrac{c}{2*\tan\frac{\theta}{2}}  ……①

 

続いて、さっきの全方位ミラーの図より、ミラーの最外縁の接線と光、画角の関係がわかります。それらを使うと、最外縁(図の半径cと焦点距離dから、座標は(c,d))での接線の傾きが、\tanを用いることでわかります。

双曲線において、(x_0,y_0)での接線の傾きは、

dy/dx=\dfrac{b^2}{a^2}*\dfrac{x_0}{y_0} ……②

x_0,y_0の値は最外縁の座標ですね。この式に、\tanで求めた傾きをイコールで結びます。

 

①、②を連立すると未定数a,bが求まり、双曲線の式が求まります。

 

今回の記事はここまでです。次の記事で、 求めた双曲線の式をどのように3Dモデルにしていくのか紹介します。