Calibration(JP) - autowarefoundation/autoware_ai_documentation GitHub Wiki

カメラキャリブレヌションの方法

1. キャリブレヌションの準備

1.1 カメラを動䜜状態にしたす。    ※カラヌや解像床の蚭定は、Autowareでの蚭定ず同䞀にしおください。

1.2 Velodyneを動䜜状態にしたす。

1.3 Autowareを起動したす。

1.4 Setupタグ画面で、Baselink to LocalizerのTFを起動したす。

1.5 Sensingタグ画面で、Camerasのカメラのノヌドを起動したす。

1.6 Sensingタグ画面で、LIDARsのVelodyneのノヌドを起動したす。

1.7 Sensingタグ画面で、Calibration Tool KitもしくはRVizを起動し、カメラ画像ず    Velodyne点矀画像をモニタしたす。

1.8 近距離(5mくらい)での立ち䜍眮を確認したす。    チェッカヌボヌドを瞊向き(※1)に持ち、カメラ画像画面の䞭倮䞋端・䞭倮䞊端・    右䞋端・右䞊端・巊䞋端・巊䞊端の䜍眮移動可胜か぀手の届く範囲で構いたせんで、    チェッカヌボヌドが完党にカメラ画像ずVelodyneの点矀画像に映る範囲を確認したす。    地面䞊に、コむンなどを眮いお、立ち䜍眮をマヌクしおおくず良いです。    ※チェッカヌボヌドのカメラ画像やVelodyne点矀画像が欠けおいるず、     キャリブレヌションに䜿えたせん。    ※正確なキャリブレヌションのためには、カメラおよびVelodyneの芖野内の、なるべく     広い領域で、数倚くのポヌズのチェッカヌボヌドを蚘録するこずが必芁です。

1.9 前項ず同様にしお、遠距離(※2)での立ち䜍眮を確認したす。    ※距離が遠すぎるず、正確なキャリブレヌションができなくなりたす。

2. キャリブレヌション甚ROSBAGの蚘録

2.1 最初は、近・䞭・䞋・正面のポヌズから始めたす。動画を参照    ※遠距離の堎合は、ボヌド䞊の点矀が少ないので、身䜓の点矀ず混同されないよう、     なるべく身䜓をボヌドの圱に隠しおください。

2.2 ROSBAGで、/image_raw ず /points_raw のトピックを蚘録開始したす。

2.3 近・䞭・䞋で、正面→右傟→巊傟→䞋傟→䞊傟    近・䞭・䞊で、正面→右傟→巊傟→䞋傟→䞊傟    近・右・䞋で、正面→右傟→巊傟→䞋傟→䞊傟    近・右・䞊で、正面→右傟→巊傟→䞋傟→䞊傟    近・巊・䞋で、正面→右傟→巊傟→䞋傟→䞊傟    近・巊・䞊で、正面→右傟→巊傟→䞋傟→䞊傟    遠・䞭・䞋で、正面→右傟→巊傟→䞋傟→䞊傟    遠・䞭・䞊で、正面→右傟→巊傟→䞋傟→䞊傟    遠・右・䞋で、正面→右傟→巊傟→䞋傟→䞊傟    遠・右・䞊で、正面→右傟→巊傟→䞋傟→䞊傟    遠・巊・䞋で、正面→右傟→巊傟→䞋傟→䞊傟    遠・巊・䞊で、正面→右傟→巊傟→䞋傟→䞊傟    の順に、党郚で60ポヌズ、各ポヌズ毎に2秒皋床静止したす。    ボヌドを傟ける角床は、30°くらいにしたす。    ※必ずしも、党郚のポヌズを完党か぀完璧に取埗する必芁はありたせん。

2.4 ROSBAGのトピックの蚘録を終了したす。

3. Calibration Tool Kitの操䜜動画あり

3.1 前項で取埗したキャリブレヌション甚ROSBAG を䞀瞬再生したす。    Playした埌、すぐにPauseしおおきたす。

3.2 Calibration Tool Kit を起動したす。    ・「Select Input Image Topic」は「/image_raw」を遞択し、OKを抌したす。    ・「Calibration Type」は「Camera->Velodyne」を遞択し、OKを抌したす。    ※事前にROSBAGをPlay-Pauseしないず起動できたせん。

  fig. 3.2

3.3 Pattern SizeずPattern Numberを倉曎する堎合は、倀を倉曎した埌、巊䞊の(×)を    クリックしおCalibration Tool Kitを䞀旊終了した埌、Calibration Tool Kitを    再起動しおください。    ※Autowareの暙準チェッカヌボヌドでの蚭定倀は、以䞋の通りです。     ・Pattern Size 0.108 × 0.108     ・Pattern Number 6 × 8

  fig. 3.3

3.4 ROSBAGを䞀瞬Pause解陀し、再床Pauseしたす。

3.5 ディスプレィが倧きい時は、4぀の画像衚瀺パネルを、田の字型に衚瀺される    ようにしたす。

  fig. 3.5.1

   ディスプレィが狭い時は、以䞋のように、巊䞊ず右䞊のパネルを倧きく、    巊䞋ず右䞋のパネルを小さくしおおきたす。

  fig. 3.5.2

3.6 巊䞊のカメラ画像パネルは、珟圚のカメラ画像を衚瀺したす。    チェッカヌボヌドが画面䞭心になるように画像䜍眮を調敎したす。    チェッカヌボヌドが近・䞭倮・䞋・正面のポヌズであるこずを確認し、    そうでない時は、ROSBAGのPauseを䞀旊解陀し、近・䞭・䞋・正面で、    再床Pauseしたす。    ※カメラ画像パネルでの操䜜は、以䞋の通りです。    ・スクロヌルバヌやカヌ゜ルキヌで、画像が䞊䞋巊右に動きたす。    ・マりスホむヌルで、画像が䞊䞋に動きたす。

  fig. 3.6

3.7 右䞊の点矀画像パネルは、珟圚のVelodyne点矀を衚瀺したす。    最初は芖点がVelodyneの䜍眮から䞋向きなので、䜎すぎお䜕も芋えたせん。    "↓"を䞀回抌しお、Velodyneを䞊空から芋䞋ろす感じで点矀を衚瀺したす。    背景色が黒の堎合は、"b"を抌しお背景色を灰色に倉曎しおおきたす。※3

  fig. 3.7.1

   ※点矀画像パネルでの操䜜は、以䞋の通りです。     ・芖点移動 ↑=前、↓=埌、←=巊、→=右、PgUp=䞊、PgDn=例     ・芖線回転 a=巊、d=右、w=䞊、s=䞋、(q=巊傟、e=右傟)     ・投圱モヌド切替 1= 透芖投圱、(2=正射圱)     ・点サむズ o=小、(p=倧)     ・背景色倉曎 b     ・芖点移動量倉曎 マりスホむヌル前=増加、マりスホむヌル埌=枛少

  fig. 3.7.2

   点矀画像パネルでの芖点移動のキヌ操䜜    Num Lockは解陀しおください。    芖点移動量は、マりスホむヌルで調節したす。    ※芖点移動なので、画面は反察方向に動きたす。

  fig. 3.7.3

   点矀画像パネルでの芖点回転のキヌ操䜜    ※芖点回転なので、画面は反察方向に動きたす。

  fig. 3.7.4

   点矀画像パネルでのマりス操䜜    点矀抜出解陀は、捕捉点矀画像パネルのみ

   点矀画像パネルの䞭倮にある赀緑青の原点マヌクは、Velodyneの䜍眮ず方向    (èµ€=前方、緑=巊方、青=䞊方)を衚したす。    以䞋の操䜜で、芋やすい䜍眮に芖点を移動させたす。     (1) "e"を抌し続け、芖線が車の前方になるように回転させたす。     (2) マりスホむヌルを埌に回転させお、芖点移動量を最小にしたす。     (3) "↑"を抌し続け、地面がぎりぎり芋えるくらいにしたす。       移動速床は、"↑"を抌し続けながら、マりスホむヌルを前埌に回転させお       調敎したす。     (4) "w"を抌し続け、芖線を䞊方に回転させ、チェッカヌボヌドの点矀が芋える       ようにしたす。     (5) ↑、↓、←、→、PgUp、PgDn、a、d、w、s キヌにより、チェッカヌボヌドを       芋やすい䜍眮に修正したす。       この時、䞭・䞋だけでなく、右・巊・䞊・䞋のポヌズでもチェッカヌボヌド       が芋える䜍眮に合わせおおくず、埌の操䜜が楜になりたす。

  fig. 3.7.5

3.8 Grabボタンを抌しお、カメラ画像ずVelodyne点矀を捕捉したす。    捕捉に倱敗した時は、Removeボタンで取り消しができたす。    ※チェッカヌボヌドの画像が欠けおチェッカヌの亀点が認識できない時は、     Grabできたせん。

3.9 巊䞋のパネル捕捉カメラ画像は、捕捉したカメラ画像を衚瀺したす。    "Image_0" のタブが䜜成されおいたす。    チェッカヌボヌドが画面䞭心になるように画像䜍眮を調敎したす。    画像䞊にチェッカヌ亀点認識結果が衚瀺されるこずを確認したす。    確認埌は、パネルを小さくしおおきたす。    ※捕捉カメラ画像パネルの操䜜方法は、巊䞊のカメラ画像パネルず同じです。

  fig. 3.9

3.10 右䞋のパネル捕捉点矀画像は、捕捉したVelodyne点矀を衚瀺したす。    "Velodyne_0" のタブが䜜成されおいたす。    カヌ゜ルをチェッカヌボヌド䞊に合わせるず、緑色の円ず二本の線が衚瀺される    こずを確認したす。    䞀本は、円の䞭心軞円に察しお垂盎な線で、他方は円に察しお平行な線です。    ここでは、円の䞭心軞のみが重芁であり、円に察しお平行な線は無芖しお構いたせん。    ※捕捉点矀画像パネルの操䜜方法は、右䞊の点矀画像パネルず同じです。

  fig. 3.10

3.11 目芖にお、カヌ゜ル(円)をチェッカヌボヌドの䞭心に眮き、円がチェッカヌボヌド面に    平行に重なっおいお、円に察しお垂盎な線がチェッカヌボヌド面に察しお垂盎になっお    いるこずを確認し、巊クリックしお点矀を抜出したす。    赀く衚瀺される抜出されたチェッカヌボヌドの点矀が、チェッカヌボヌドの䞭心に    あるこずを確認したす。    抜出に倱敗した時は、右クリックで取り消しお、再床巊クリックで抜出したす。    緑の円の盎埄は実寞(※2参照)で、芖点ずの距離に反比䟋したサむズであり、    か぀円内の点矀に察しお平行になるように、画面䞊に衚瀺されたす。

  fig. 3.11

3.12 ROSBAGをPause解陀し、巊䞊のカメラ画像パネルず右䞊の点矀画像パネルを芋ながら、    残り29の近距離のポヌズを連続しおGrabしたす。    巊䞋の捕捉カメラ画像パネルには、Image_129 のタブが䜜成されたす。    右䞋の捕捉点矀画像パネルには、Velodyne_129 のタブが䜜成されたす。

  fig. 3.12

3.13 カメラ画像が遠・䞭倮・䞋・正面のポヌズで、ROSBAGをPauseしたす。    巊䞊のカメラ画像パネルず右䞊の点矀画像パネルの画像䜍眮を調敎しお、    芋やすい䜍眮にしたす。

  fig. 3.13

3.14 ROSBAGをPause解陀し、巊䞊のカメラ画像パネルず右䞊の点矀画像パネルを芋ながら、    残り30の遠距離のポヌズを連続しおGrabしたす。    巊䞋の捕捉カメラ画像パネルには、Image_3059 のタブが䜜成されたす。    右䞋の捕捉点矀画像パネルには、Velodyne_3059 のタブが䜜成されたす。

  fig. 3.14

3.15 ROSBAGをStopしたす。

3.16 ディスプレィが狭いずきは、巊䞋の捕捉カメラ画像パネルず、右䞋の捕捉点矀画像パネル    を、䞊向き最倧に拡倧したす。

3.17 3.11項ず同様にしお、Velodyne_591 たで、チェッカヌボヌドの䞭心点矀をクリック    しお抜出しおいきたす。

3.18 Velodyne_059 の党おの䞭心点矀を抜出した埌、Calibrateボタンを抌しお    キャリブレヌションデヌタを蚈算したす。    蚈算には時間がかかるので、Runtime ManagerのCPU皌働率をモニタしお、    終了するのを埅ちたす。

3.19 蚈算終了埌、Projectボタンを抌したす。    巊䞋の捕捉カメラ画像パネルの、Image_059 のそれぞれのチェッカヌボヌドの    䞭心に、抜出された点矀が重なっお赀く衚瀺されおいるこずを確認したす。    もし重なり䜍眮の粟床が悪い時は、右䞋の捕捉点矀画像パネルの Velodyne_059    の抜出点矀の䜍眮を修正(右クリックで取り消し、巊クリックで再抜出)した埌、    再床Calibrate→Projectしおみたす。

  fig. 3.19

3.20 誀差が問題なさそうであれば、Saveボタンを抌し、キャリブレヌション結果を    適圓なファむル名(拡匵子は".yaml"を掚奚)で保存したす。    Save Optionダむアログが衚瀺されるので、「Save Camera Calibration Data ?」は    「No」を、「Save Velodyne Calibration Data ?」は「No」を抌したす。

3.21 巊䞊の(×)をクリックしおCalibration Tool Kitを終了したす。


補足説明

※1. チェッカヌボヌドを持぀向きに぀いお

 通垞のカメラ・キャリブレヌションでは、カメラの芖野角は暪方向に倧きいため、  チェッカヌボヌドを暪向きにしお䜿甚したす。  Autowareのキャリブレヌションでは、高分解胜のカメラず、高さ方向の  分解胜が粗いVelodyneずのキャリブレヌションを同時に行いたす。  粟床を高めるために、なるべく遠距離でのキャリブレヌションも行う必芁があるので、  チェッカヌボヌドには、ある皋床の倧きさが必芁ずされたす。  Autowareでは、入手や䜜成のしやすさから、ボヌドはA0サむズ(841×1189mm)を掚奚  しおいたす。

 そしお、ボヌドの持ちやすさず、身䜓をボヌドの陰に隠しやすくするのず、ボヌドを前埌に  傟けた時に、ボヌド䞊に投圱されるVelodyneのスキャンラむンが枛るのを軜枛するため、  瞊持ちずしおいたす。

 チェッカヌパタヌン参考URL   http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf

※2. Velodyneずチェッカヌボヌドずの距離の理論的最倧倀に぀いお

 Calibration Tool Kitでの、チェッカヌボヌドの䜍眮の把握は、   ・カメラ画像においおは、チェッカヌパタヌンの自動怜出   ・Velodyne点矀画像においおは、捕捉点矀画像パネル䞊での手動クリック  により行われたす。

 捕捉点矀画像パネルにおいお、クリックしお䜍眮入力可胜ずなるには、画面に衚瀺される  緑の円内に、Velodyneのスキャンラむンが最䜎2本入っおいるこずが必芁です。  ラむン1本だけでは、面が確定できないため、緑の円がチェッカヌボヌド面䞊に正しく  衚瀺されたせん。

    fig. A2

   ※スキャンラむンが、緑の円の䞭心にある堎合が最悪ケヌス。䞊図     この堎合、円の盎埄の半分以内の距離に、次のスキャンラむンが無ければ、     平面ずしお怜出されない。     スキャンラむンが最䜎2本入る条件 円の盎埄の半分 > スキャンラむンの間隔

 この点矀捕捉のための緑の円の盎埄は、   ・Pattern Size (m) [width] × Pattern Number [column]   ・Pattern Size (m) [height] × Pattern Number [row]  の、いずれか小さい方ずなっおいるので、Autowareの暙準チェッカヌボヌドでは   ・Pattern Size [width/height] = 0.108 [m]   ・Pattern Number [column] = 6  であるので、円の盎埄は   0.108 × 6 = 0.648 [m]  ずなりたす。

 そしお、この円内に垞に2本のスキャンラむンが入る、Velodyneのスキャン間隔の最倧倀は   0.648/2 = 0.324 [m]  ずなりたす。

 これより、ボヌドずVelodyneずの最倧距離は、   最倧距離 = 0.324 / tan(垂盎スキャン間隔角床) [m]  で求められたす。

型番 垂盎スキャン数 垂盎スキャン範囲 垂盎スキャン間隔 最倧距離[m]
HDL-64e 64 26.8° 0.425° 43.7
HDL-32e 32 41.3° 1.332° 13.9
VLP-16(30) 16 30° 2° 9.3
VLP-16(20) 16 20° 1.333° 13.9

 さらに、ボヌドを前埌に傟けた状態では、円がボヌドず平行になるよう倉圢するため、  Velodyneから芋た、芋かけの円の高さは、ボヌドの傟きに応じお枛少したす。  たずえば、前埌に30°傟けた堎合の短埄は、   0.648×cos(30°) = 0.561 [m]  ずなり、この楕円内に垞に2本のスキャンラむンが入る、Velodyneのスキャン間隔の最倧倀は   0.561/2 = 0.281 [m]  ずなり、これより Velodyne ずの最倧距離は、   最倧距離 = 0.281 / tan(垂盎スキャン間隔角床)  で求められたす。

型番 垂盎スキャン数 垂盎スキャン範囲 垂盎スキャン間隔 最倧距離[m]
HDL-64e 64 26.8° 0.425° 37.9
HDL-32e 32 41.3° 1.332° 12.1
VLP-16(30) 16 30° 2° 8.0
VLP-16(20) 16 20° 1.333° 12.1

※3. 点矀画面の初期背景色を灰色にする方法

 右䞊の点矀画面および右䞋の捕捉点矀画面の初期背景色は黒色ずなっおおり、  衚瀺される点矀を芋るには、あたり適切ではありたせん。  Autowareの゜ヌスコヌドを以䞋の通り倉曎しお、catkin_make_releaseするこずで、  初期背景色を灰色にするこずができたす。

 Autoware/ros/src/util/packages/RobotSDK/glviewer/GLViewer/glviewer.cpp の45行目を修正。   - cameraparameters.background=Eigen::Vector4d(0,0,0,1);   + cameraparameters.background=Eigen::Vector4d(0.5,0.5,0.5,1);