• Dec 25, 2022 Update structure, fix typo
  • Jul 09, 2023 Separate JA and EN articles
  • Jul 09, 2023 あやしい日本語を修正

English article: Self-made Omnidirectional for RoboCupJunior 2017 [EN]

P1140154
Yunit5.3 Offensive robot of team Mavericks (10th Place in RCJ Japan Open)

はじめに

本記事では全方位カメラを自作する具体的な設計法と製法について説明します。 本記事で紹介するセンサは、2017年世界大会サッカードラフトルールに対応して開発され、ジャパンオープン2017中津川大会に参加するロボットYunit5に搭載されたものです。 中津川大会ではゴールの検出のために使用する予定だったのですが、開発時間や重量制限の関係で残念ながら中津川大会で全方位センサを使うことはできませんでした。

全方位センサを自作するモチベーションとしては、その広い画角による試合での優位性と、ルールにより学生の手による自作が義務付けられている事の2点があります、 2017年よりRoboCupJuniorのルールが大きく変更され、Soccer Open Leagueの競技ボールが従来の赤外線ボールからカラーボールへと変更されました。 加えて、ボールの検出に用いるセンサのうち全方位センサに分類されるものを用いる場合に限り、特殊な制限が設けられています。 以下に2017年のルールブックの一部を引用します。

8.2.2 Limitations

All commercial omnidirectional lenses/cameras are not permitted. Only omnidirectional lenses/cameras made by students are permitted, meaning that their construction needs to be primarily and substantially the original work of a team.

市販されている全方位カメラ/レンズは使用できない。 全方位カメラ/レンズは、学生によって作られたもののみ使用が許可される。 すなわち、全方位センサの作成はチーム独自の主たる活動に基づいたものでなければならない。

from RoboCupJunior Soccer Rule 2017

また、2017年ルールの定める「全方位カメラ」の定義は以下の通りです。

Omnidirectional is defined as having a field-of-view of more than 140 degrees horizontally and more than 80 degrees vertically (these values reflect the optical system of the human eye).

角が水平140° 垂直80°(これは人間の視野に相当する)を超えるものを全方位センサと定義する。

競技の特性上、全方位カメラは非常に有利なアイテムですが、それを競技に使用するには学生が自ら作成する必要があります。 光学デバイスとして機能するために十分な精度を持ったミラーを作りには、何らかの製法の工夫が必要となるわけです。 我々のチームでは、ルールが発表されたその年の国内大会の時点で、プラスチックミラーシートを熱成形する手法を用いて、競技に十分に満足な性能を持つ全方位センサを自作することに成功しました。 本記事では、その詳細な作成方法と、その実際の動作を紹介します。

ミラーの設計

本記事で扱う全方位カメラは、図1に示すように曲面のミラーを下からカメラで覗き込む事で、全天球の映像を取得します。 この構造は、魚眼レンズを使用する方法に比べてカメラモジュール(電装系)を低い位置に配置できるため、視界を遮る配線や構造を排除できることや、ミラーの形状やその大きさにによって明るさや画角を変更可能であることが特徴です。

図2はミラーの曲線の設計データです。 全方位センサにおける曲面ミラーの役割は、黄色い線で示したカメラの画角面View surface (before reflection)を、ミラー反射後の画角面View surface (after reflection)に変換することです。双曲線ミラーを使うことで、反射後のLight axisが焦点を通るようになるため、例えばただの球体の面を使って反射させた場合と比較して、画像で読み込んだあとの処理が複雑になります

今回作成したミラーは、双曲線の原理よりミラー反射後の画角面が図2に示したFocus of hyperbola mirrorを中心とする円弧となるように設計しています。 ミラーの形状は数学的に解がありますが、自分は数学が得意ではなかったため、AutoCADを活用して線分を描画しまくることで双極性を描画しました。 数式によるプロット作図ベースでミラーを作る手法では、聞いたところによれば、式を導出したあとGnuplotで"set terminal dxf"して出力する方法が簡単らしいです。

Inventor1
Figure1 Self-made omnidirectional camera 3D CAD design
slide-3
Figure2 Drawing hyperbola curve on 2D CAD

図3は双曲線ミラー上での光軸の入射角と反射角の関係です。 光軸が曲面ミラー上で反射するとき、入射角と反射角はいかなる点においても等しくなります。 この関係が常に成り立つように、具体的には入射角と反射角は角度の一致拘束を繰り返して作図することで、数学的な式の導出をせずに双曲線を作図できます。

slide-1
Figure3 The relationship between AOI(*) and AOR(**) on the hyperbola mirror
  • (*)入射角: Angle of incident
  • (**)反射角: Angle of reflection

作図していると、ある面白い法則に気が付きます。 図2において、光軸は双曲線ミラー上のいかなる点を反射しても、光路長(Length of light axis)が等しくなります。 あくまで近似解ではありますが、図4で実際にAutoCADでそえぞれの光路長を作図した結果から、3経路それぞれの光路長が等しくなっているのが分かると思います。 作図の際には、数学的にはこれが等しくなるらしいというところから、この経路帳測定をもってファクトチェックをかけていました。

slide-2
Figure4 The mathematical property of length of the optical axis

設計のパラメータを図5にまとめました。 使用するカメラを決めた時点で、カメラ画角は製品により決定されます。 残る必要なミラー画角と焦点間距離は、自分で決定します。

今回の設計では、画角を水平から上 +15 下 -45 degreeとし、ミラー直径を46 mmに決定してすべてのパラメータを決定しました。 ミラー直径を予め決めたのは、アクリルのクリアパイプを特注する際に、汎用在庫品である直径50 mmm, 厚さ2 mmのタイプを使うとコストを削減できたためです。

parameter

Figure5 The parameter for calculate Hyperbola-mirror

ミラー型の製作

ミラーの作成には、ヒートプレスと呼ばれる手法を使っています。 これは、比較的シンプルな凸面形状のプラスチックシート整形に用いる製法で、熱を与えて柔らかくしたプラスチックの薄板を型に押し当てることで任意の形状に仕上げる手法です。 ヒートフォーミングを行うに当たり、図6に示すような三次元形状の型のモデルを3D-CADで設計し、これを3Dプリントしてパテ埋めすることで型を製作しました。

Inventor3

Figure6 The hyperbola curve surface 3D CAD Model

図7は、ヒートプレスに用いるモールド(型)です。 3Dプリンタで出力したあと、ポリパテで細かい段差を埋めてなめらかに仕上げています。 熱で溶けてしまう心配がありましたが、幸いパテの耐熱が充分だったので問題ありませんでした。

UNADJUSTEDNONRAW_thumb_2f7

Figure7 The mold for plastic heat forming

ヒートプレスのための加熱器具には、以下のような電熱器タイプをお勧めします。 ガスコンロを使うと高い確率で材料に火が移ってしまい危ないので、ガスでの加熱は推奨できません。 また、加熱の際にはきつい匂いが出ますので、換気のいい場所を確保して家庭の理解を失わないようにしつつ行いましょう。

ミラー板には、鏡面めっきのかけられた厚さ0.5 mmの透明な塩ビ板を使用しました。 東急ハンズで購入しましたが、ホームセンターやAmazon.co.jpでも購入できるようです。 300x450なので150x150 mmの板が6枚取れます(写真のように切った後それに気が付く)。

塩ビのミラーシートは、CNCで切削した治具に貼り付け、この状態で加熱して型に押し付けます。 ヒートプレスでは、熱で柔らかくした樹脂を押し付けて延ばして整形します。 両面テープは図10に示すようになるべく円形に近い形に繋げて貼り付けて、押し付けて伸ばす際の伸びしろが均等になるようにします。 加えて、材料は型に押し付ける際に伸びる力がかかるため、それに耐えるようにしっかり固定する必要があります。 材料のサイズは最低でも型の直径の2倍、理想的には3倍程度を確保し、変形して伸びる分の余裕をもたせるようにします。

UNADJUSTEDNONRAW_thumb_2eb

Figure8 A vinyl chloride mirror sheet

UNADJUSTEDNONRAW_thumb_2ec

Figure9 Cutting with cnc milling machine

UNADJUSTEDNONRAW_thumb_2ed

Figure10 Taping

UNADJUSTEDNONRAW_thumb_2ee

Figure11 Paste the mirror sheet

整形後は、ハサミを使ってミラーから必要な部分を切り出します。 型に押し付ける際に境界線も写るので、それに添って切っていきます。 一旦大雑把に切ってからハサミで仕上げると楽です。

UNADJUSTEDNONRAW_thumb_2f1

Figure12 Detaching

整形後に切り出したミラーです。 型の上に乗せるとピッタリ重なります。 実際には、熱成形やプレス成形においては「スプリングバック」と呼ばれる、整形後の形状が若干型から浮き上がる現象を考慮する必要がありますが、今回はそれを誤差とみなして無視します。 これでミラーが完成です。 次のセクションで、モジュールの組み立てとカメラ取り付けについて説明します。

UNADJUSTEDNONRAW_thumb_2f3

Figure13 Detached mirror and put it on the mold

動画で実際の作業のプロセスを説明していますので参考にしてください。

Movie1 Plastic sheet heat press forming

カメラモジュールとしての統合

本記事で解説する線方位カメラは、色認識カメラモジュールとしてPixy CMUcam5というモジュールを使用し、ミラー部分のみを自作して全方位センサを構成しています。 最近ではシングルボードコンピュータ等を活用して、より高解像度や高フレームレートを実現するチームも増えてきました。 通常サイズのサッカーフィールドであればPixyの解像度でぎりぎり全域のボールを追跡できますが、例えば世界大会のビッグフィールではこれが難しくなるため、より高みを目指したいチームはシングルボードコンピュータの活用を視野に入れてみてください。

全方位センサのフレームは図15に示すように大部分が3Dプリントで作られています。 ミラー部分を支える透明な筒状の部品は市販品をカット販売にて購入したものです。 日本であればアクリ屋.comで、長さを指定して購入できます。

UNADJUSTEDNONRAW_thumb_2f8

Figure14 Printing parts using 3D printer

UNADJUSTEDNONRAW_thumb_2f4

Figure15 Parts of 360° camera module

図16のPixy cameraは非常に便利ですが、カラーシグネチャの登録に毎回USB接続とGUIによる確認・指定が必要なのが、非常に運用を難しくします。 ロボットに搭載する際には、USBポートに簡単にアクセスできるように、ハードウェアの分解性を良くするか、ケーブルパスを確保してロボットに組み込んだ状態での認識テストをしやすくしておく必要があります。

入手当時の調達先はAmazon.com(Pixy (CMUcam5) Smart Vision Sensor)で、価格はおよそ60~70USDでした。

d30063d1

Figure16 Pixy CMUcam5
※画像引用元(丁度いい写真が無かったから拝借) credit http://kemarin-tech.blog.jp

Pixyの動作とマイコンでのデータ読み取りのデモ動画です。

Movie2 Pixy test 1 (Read with Arduino), from kemarin-tech.blog.jp

L字のUSBケーブルを使ってロボットからケーブルを引き出して調整します。

P1140164

Figure17 Assemble 360° camera module and connect usb cable

実際の動作 Demonstration

動画3は実際に全方位センサとして構成した状態でのデモンストレーションです。 Pixy専用アプリケーションにて映像を取得し、青と黄とオレンジの3色を登録して追跡しています。 マイコンと接続した際にどのように座標が出力されるかは、動画2を参考にしてください。

Movie3 Self-made 360° camera demonstration

図18はオレンジボールを検出できる限界の距離を示したものです。 タイルカーペットが1枚あたり50cmスクエアですので、およそ1m程度であれば検出可能である事がわかります。 因みに、画面を見ると前後方向の視野が削られているように見えますが、水平方向+15°の余裕分が削られているだけなので、正面方向でも遠くのボールは検出可能です。

P1140170

Figure18 Ball detectable max limit distance (In the state of the photograph, the camera can detect the ball)

図19及び図20は、全方位カメラがボールを検出可能な最小距離を示したものです。 図19において、カメラはボールの頭の部分のみを捉えている状態で、これ以上内側にボールが入り込んでしまうと、ボールを見失ってしまいます。 正面の場合、もう少し前進すればあとはホールドセンサ(ボールがロボットのキッカーに接触しているか検出するセンサ)の情報を使ってボールの追跡が可能ですが、ソフトウェアがやや複雑になります。 この問題の対策としては、ソフトウェアでより複雑な追跡処理をかけるよりも、ロボットがボールを常に視認できるようにメカ設計を工夫したほうがいいでしょう。

図20においても、正面と同様に、カメラはボールの頭を少しだけ捉えた状態です。 僕のロボットの場合、後ろにはユーザーインターフェイスが搭載されており、上下方向の視界がフロントに比べて狭くなってしまい、結果的にロボットの後ろ9[cm]ほどが死角となってしまっている状態です。

P1140171

Figure19 Ball detectable min limit distance (in front of Robot)

P1140174

Figure20 Ball detectable min limit distance (behind of Robot)

さいごに

2017年のRoboCupJunior国際ルールで、全方位カメラに関するルールが公開されてから2ヶ月足らずですが、早速こうして自作の全方位センサを実現できたことに満足しています。 いま、世界中のRCJ参加選手がパッシブボール(カラーボール)への対応を迫られており、その中には全方位カメラの導入を模索しているチームも多いと思います。 今回、日本のみならず海外の多くのチームから僕の自作全方位カメラについての問い合わせがあり、僕としても是非多くの人にこの技術をシェアしたいという思いがあったため、この記事の執筆に至りました。 質問等はコメントかTwitterのDMかブログ右のメッセージ欄(公開されません)よりお願いします。