0

LIDAR とカメラの間の剛体変換を見つけようとしています。変換を dx、dy、dz、yaw、pitch、roll (rad) として見つけたら、ROS 静的変換パブリッシャーを起動ファイルと共に使用して、次のように変換をパブリッシュします。

 <launch>
      <node pkg="tf" type="static_transform_publisher"
            name="transformation_velodyne_to_camera"
            args=" -0.100586794 0.000107629 -0.10208744 -1.51199 0.0741937 -1.59904 velodyne camera 100"/>
</launch>

次に、その変換を聞きます。

Eigen::Matrix4d mat_velo_to_cam;

geometry_msgs::TransformStamped trans_velo_to_cam;
try {
    trans_velo_to_cam = tfBuffer.lookupTransform("camera", "velodyne", ros::Time::now());

}
catch (tf2::TransformException &ex) {
    ROS_WARN("%s", ex.what());
    ros::Duration(0.1).sleep();
}

Eigen::Affine3d affine_velo_to_cam_ = tf2::transformToEigen(trans_velo_to_cam);
mat_velo_to_cam = affine_velo_to_cam_.matrix();
std::cerr << "Transformation matrix lidar to camera: " << std::endl;
std::cout << mat_velo_to_cam.matrix() << std::endl;

出力は次のとおりです。

Transformation matrix lidar to camera: 
  0.0586108   -0.995525  -0.0741256 -0.00156468
 -0.0325459   0.0723083   -0.996851   -0.105047
    0.99775   0.0608387  -0.0281622   0.0974789
          0           0           0           1
  • 私の最初の質問は、翻訳値が互いに異なるのはなぜですか?

  • 2 番目の質問: 同じ 6DoF から 4x4 変換行列を取得するために以下のコードを使用する場合

      Eigen::Matrix<double,4,4> mat_lidar_to_cam;
      Eigen::AngleAxisd rollAngle(roll, Eigen::Vector3d::UnitX());
      Eigen::AngleAxisd pitchAngle(pitch, Eigen::Vector3d::UnitY());
      Eigen::AngleAxisd yawAngle(yaw, Eigen::Vector3d::UnitZ());
      Eigen::Quaternion<double> q =  yawAngle*pitchAngle*rollAngle;
      Eigen::Matrix3d rotationMatrix = q.matrix();
      mat_lidar_to_cam.topLeftCorner(3,3) = rotationMatrix;
      mat_lidar_to_cam(0,3) = dx;
      mat_lidar_to_cam(1,3) = dy;
      mat_lidar_to_cam(2,3) = dz;
    

出力行列は次のとおりです。

 0.0606101 -0.0324357   0.997634       -0.1
 -0.995708    0.06807  0.0627062     0.0001
-0.0699428  -0.997153 -0.0281708     -0.102
         0          0          0          1

この時点で、平行移動も真ですが、ROS tf static transform publisher が提供する行列と回転値が異なるのはなぜですか?

4

0 に答える 0