为什么我收到“输入到SVD必须不包含NaN或Inf?”

19次意见(过去30天)
你好!
我一直在尝试使用激光雷达工具箱来估计激光雷达传感器和使用棋盘的相机之间的转换。到目前为止,我已经创建了MATLAB示例EstimateLCTransformExample的副本。一切都正确执行,棋盘在图像和PCD文件中都被检测到。然而,每当转换函数(estimateLidarCameraTransform)执行时,我得到以下错误:
错误使用 圣言会
SVD的输入不能包含NaN或Inf。
[U,~,V] = svd(Ml'*Mc);
initialRotation = computeInitialRotation(lidarEdgeDirection, imageEdgeDirection,…
lidar.internal.calibration.computeInitialTransform(lidar3DCorners, imageCorners3d, verbose);
tform = computeTransformUsingCorners(lidarCheckerboardPlanes,…
此外,我附上了我一直在使用的脚本:
imageDataPath =10莫Semestre ' D: \ TEC \ \ VTTC \有意者”
imds = imageDatastore(imageDataPath);
imageFileNames = imds.Files;
ptCloudFilePath =' D: \ TEC \ 10莫Semestre \ VTTC \激光雷达
pcds = fileDatastore(ptCloudFilePath,“ReadFcn”, @pcread);
pcfilename = pcds.Files;
focalLength = [628.8, 387.33];
principalPoint = [701.57, 701.57];
imageSize = [720, 1280];
intrinsic = cameraIntrinsics(focalLength,principalPoint,imageSize)
cameraIntrinsicFile = fullfile(imageDataPath,“calibration.mat”);
squareSize = 45;
[imageCorners3d,planeDimension,imagesUsed] = estimateCheckerboardCorners3d(...
imageFileNames, intrinsic squareSize);
pcfilename = pcFileNames(imagesUsed);
[lidarCheckerboardPlanes,framesUsed] = detectRectangularPlanePoints(...
pcFileNames planeDimension,“RemoveGround”,真正的);
framesUsed
imagFileNames = imageFileNames(imagesUsed);
imageFileNames = imageFileNames(framesUsed);
pcFileNames = pcFileNames(framesUsed);
imageCorners3d = imageCorners3d(:,:,framesUsed);
tform= estimateLidarCameraTransform(lidarCheckerboardPlanes, imageCorners3d);

答案(1)

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2021年9月29日
你的输入 圣言会 毫升的* Mc .根据错误消息,结果计算中至少有一个值是NaN或Inf。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!