【Gazebo】TurtleBotのカメラの焦点距離(Focal Length)について
4 views (last 30 days)
Show older comments
https://jp.mathworks.com/help/robotics/examples/read-model-and-simulation-properties-from-gazebo.html を拝見しながら、現在、ターゲット物体のトラッキングのシミュレーションを仮想マシン上のGazeboおよびMATLABを用いて構築中です。
GazeboのTurtleBotのカメラパラメータ(ex. 焦点距離)をMATLAB上で取得したいのですが、どのようにすればよいでしょうか。
【使用ツールボックス】Robotics System Toolbox, Image Processing Toolbox
お手数ですが、ご回答いただけると幸いです。よろしくお願い申し上げます。
2 Comments
Kei Otsuka
on 17 Jan 2018
カメラのパラメータはUDFファイルに記載されているのですが、これをMATLABから読み取りたい、ということでしょうか? (KinectカメラオブジェクトのUDFファイルは以下にあります)
~/.gazebo/models/kinect/model.sdf
Accepted Answer
Tohru Kikawada
on 19 Jan 2018
> RoSのドキュメント(http://docs.ros.org/api/sensor_msgs/html/msg/CameraInfo.html)を調べたところ、sensor_msgs/CameraInfo内のKマトリックス内に焦点距離f_x、f_yが記載されているとのことだったので、以下のようにしてMATLABから読み取ろうと考えたのですが、正しいでしょうか。
はい、正しいです。
> また、この場合、f_x、f_yの単位(Unit)はどうなるのでしょうか。
単位としてはピクセルになります。 実寸(メートル)にしたい場合には画素サイズ(センサーの1ピクセルあたりの実寸値)を掛け算する必要があります。 こちら のサイトに換算方法について記載があるようです。ご参考まで。
ちなみに、Computer Vision System Toolboxをお持ちであれば、歪パラメーターを取得して、歪補正をかけたりできるので便利です。
% 初期化
clear; close all; clc;
% GazeboにROSで接続
rosshutdown;
rosinit('192.168.112.130');
% サブスクライバーの作成
imsub = rossubscriber('/camera/rgb/image_raw');
imInfo = rossubscriber('/camera/rgb/camera_info');
% 画像の取得 & Figureウィンドウでの表示
latestImg = readImage(receive(imsub));
imshow(latestImg)
% latestImg 取得時のTurtleBotのカメラパラメータ(Kマトリックス)の取得
CameraInfo = receive(imInfo);
K = reshape(CameraInfo.K,[3 3]); % 単位はすべてpixel
D = CameraInfo.D(1:3); % ひずみパラメーターはk1からk3まで使用可能
% カメラパラメーターオブジェクトを作成
cameraParams = cameraParameters('IntrinsicMatrix',K,'RadialDistortion',D)
% ひずみ除去 (今回はひずみパラメーターが0のため画像は変化しない)
latestImgUndistorted = undistortImage(latestImg,cameraParams);
figure, imshow(latestImgUndistorted);
実行結果:
K =
554.2547 0 0
0 554.2547 0
320.5000 240.5000 1.0000
D =
0
0
0
cameraParams =
cameraParameters のプロパティ:
Camera Intrinsics
IntrinsicMatrix: [3×3 double]
FocalLength: [554.2547 554.2547]
PrincipalPoint: [320.5000 240.5000]
More Answers (0)
See Also
Categories
Find more on ネットワーク接続と調査 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!