キャリブレーション概要
3 分
さまざまな座標系にまたがる2Dおよび3Dデータを含むシーンは、位置と向きによってセンサーを整合させるためのキャリブレーションが必要です。これには3D点をカメラの画像平面に投影することも含まれます。
キャリブレーションの作成方法
LIDARセンサーとPinholeタイプの2つのカメラセンサーのキャリブレーションを作成する例を参照してください。Kannala、Fisheye等の他のカメラタイプについては、kognic-io-examplesを参照してください。
from kognic.io.client import KognicIOClient
from kognic.io.model import SensorCalibration
from kognic.io.model.calibration.camera.common import CameraMatrix, DistortionCoefficients
from kognic.io.model.calibration.camera.pinhole_calibration import PinholeCalibration
from kognic.io.model.calibration.common import Position, RotationQuaternion
from kognic.io.model.calibration.common import Position, RotationQuaternion
from kognic.io.model.calibration.lidar.lidar_calibration import LidarCalibration, LidarFieldOfView
client = KognicIOClient()
# Create a sample calibration for lidar.
lidar_position = Position(x=0.0, y=0.0, z=0.0)
lidar_rotation = RotationQuaternion(w=1.0, x=0.0, y=0.0, z=0.0)
lidar_fov = LidarFieldOfView(start_angle_deg=315, stop_angle_deg=45, depth=200)
lidar_calibration = LidarCalibration(position=lidar_position, rotation_quaternion=lidar_rotation, field_of_view=lidar_fov)
# Create a sample calibration for a Pinhole camera. For other camera types visit:
# https://github.com/annotell/kognic-io-examples-python/tree/master/examples/calibration
camera_position = Position(x=0.0, y=0.0, z=0.0)
camera_rotation = RotationQuaternion(w=0.5, x=-0.5, y=0.5, z=-0.5)
camera_camera_matrix = CameraMatrix(fx=3450, fy=3250, cx=622, cy=400)
camera_distortion_coefficients = DistortionCoefficients(k1=0.0, k2=0.0, p1=0.0, p2=0.0, k3=1.0)
pinhole_calibration = PinholeCalibration(
position=camera_position,
rotation_quaternion=camera_rotation,
camera_matrix=camera_camera_matrix,
distortion_coefficients=camera_distortion_coefficients,
image_height=1080,
image_width=1920,
field_of_view=190.0,
)
sensor_calibration = SensorCalibration(
external_id="Create your own id here", # to make it easier for you to find the calibration later
calibration={
# The keys: "lidar", "LEFT_FRONT_CAMERA" etc, must match the
# names of the sensors in the scenes that use this calibration
"lidar": lidar_calibration,
"LEFT_FRONT_CAMERA": pinhole_calibration,
"RIGHT_FRONT_CAMERA": pinhole_calibration
}
)
created_calibration = client.calibration.create_calibration(sensor_calibration)
print(f"Created calibration with id {created_calibration.id}")キャリブレーションが作成されたら、可能な限り同じキャリブレーションを複数のシーンで再利用することができます。また、そうすることを推奨します。詳細は以下を参照してください。