ROSを使ったOrbbec Astra Proのキャリブレーション
Astra Proは手頃な価格でかつデプスの有効範囲が長め(8m)なRGB-Dカメラです。このカメラは専用のキャリブレーションツールや、工場出荷時にキャリブレーションが行われている訳ではありません。そのため自分でキャリブレーションツールを探し、キャリブレーションを行なう必要があります。ROSを使う方は、camera_calibrationパッケージ[6]を使うことでキャリブレーションができます。本記事ではAstra ProをROSのパッケージでキャリブレーションするまでの流れを説明します。
Astra Proのノードを立ち上げる
ただ一方で、Orbbec公式のROSパッケージastra_launchに含まれているPro用launchファイルastrapro.launchを立ち上げただけでは、RGB用のtopicが立ち上がらないという問題があります。これはAstra ProのHW上の問題で、depthとRGBが別々のデバイスとして認識されているためです。RGB画像用のノードを、別途usb_camパッケージ等を使って立ち上げる必要があります。ただし皆同じように不便を感じているため、Clearpth Roboticsがlibuvc_rosパッケージを使うことで、Depthノードと同時にRGB用ノードも起動してくれるlaunchファイルを提供しています[1]。なおgit cloneする際は、cloneすべき対象がmasterではなくupstreamブランチなので、"git clone -b upstream https://github.com/clearpathrobotics/ros_astra_launch.git"とする必要がありますのでご注意ください。また[1]のlaunchファイルを使って立ち上げるRGB用ノードは、libucv_cameraパッケージ[2]を使っています。このパッケージを使うにはlibuvcが必要なので、[3]からcloneしてmake & make installしてください。さらにそのまま[1]のastra_pro.launchを実行しても、permissionエラーが出るはずです(私は出ました)。[4]の4.1を参考にpermissionの設定をしてください。RGBカメラのVendor idとProduct idは、lsusbでも調べられますが、[5]に記載してありますので、参考にしてください。
Astra Proのキャリブレーションを行なう
ノードを立ち上げた後は、単純に[6]を参考にキャリブレーションを行ってください。キャリブレーション用のチェスボード画像は、[7]からダウンロードできます。
Astra Proのキャリブレーション結果を反映させる
キャリブレーション結果は、~/.ros/camera_infoに保存されます。ここに保存しただけでは、[1]のlaunchファイルを立ち上げても結果は反映されません。結果を反映させるには、[1]の中のcamera_info_urlの中にURL形式でキャリブレーション結果(Yamlファイル)のパスを記述する必要があります。ただastra_pro.launchの中には、Yamlファイルのパスを共通的に使うためのパラメータrgb_camera_info_urlがあるので、Yamlファイルのパスを
なおibuvc_rosノードがキャリブレーション結果を元に画像の歪補正をしたtopic(rgb/image_rect_color)を発行するためには、rgb_processingの値をtrueに変える必要があります。必要な場合は変更をお忘れなく。