Enter the data for the corrected calibration images captured in April of 2018. There are three lines in 3D space, L1 (left), L2 (top), and L3 (right).

l1={{-14.79741374,-16.87521435,325},{-12.79292464,-10.65838244,248},{-11.31784255,-5.94194744,202},{-7.90123029,3.13707245,115},{-6.46732843,7.36560289,75}};

l1//MatrixForm

l2={{-0.44387569,13.01311593,325},{-0.36799910,13.57554096,248},{-0.16188825,14.28379626,202},{-0.07795661,14.64228286,115},{-0.01116153,14.87864931,75}};

l2//MatrixForm

l3={{14.85952885,-15.63291211,325},{13.01942068,-9.99194954,248},{11.58122154,-5.28130757,202},{8.19790316,3.53997865,115},{6.66201939,7.47829858,75}};

l3//MatrixForm

ListPointPlot3D[{l1,l2,l3},AxesLabel->{x,y,z},BoxRatios->{1,1,340/80},PlotLegends->{left,top,right}]

Find the least-squares fit to a 3D line from the laser point data using generalized inverse.

l1xy=Map[Append[#,1]&,l1[[All,1;;2]]];

l1xy//MatrixForm

l1z=l1[[All,3]]

PseudoInverse[l1xy].l1z

Find the least-squares fit to a 3D line from the laser point data using singular value decomposition.

l1mean=Mean[l1]

l1//MatrixForm

l1shifted=Map[Subtract[#,l1mean]&,l1];

l1shifted//MatrixForm

{u1,w1,v1}=SingularValueDecomposition[l1shifted];

v1//MatrixForm

l1direction=v1[[All,1]]

l2mean=Mean[l2]

l2shifted=Map[Subtract[#,l2mean]&,l2];

{u2,w2,v2}=SingularValueDecomposition[l2shifted];

l2direction=v2[[All,1]]

l3mean=Mean[l3]

l3shifted=Map[Subtract[#,l3mean]&,l3];

{u3,w3,v3}=SingularValueDecomposition[l3shifted];

l3direction=v3[[All,1]]

Dan’s code produces these laser directions:

LASER DIRECTIONS - (Left,Middle,Right) 
-0.03384415 -0.09768274 0.99464197
-0.00179804 -0.00751961 0.99997011
0.03329154 -0.09374973 0.99503903

where I get:

{l1direction,l2direction,l3direction}//MatrixForm

See if the same result for laser 3 is obtained by performing SVD on the covariance of the points.

{u,w,v3cov}=SingularValueDecomposition[Covariance[l3]];

l3dircov=v3cov[[All,1]]

l3direction-l3dircov

Show[
ListPointPlot3D[{l1,l2,l3},AxesLabel->{x,y,z},BoxRatios->{1,1,340/80},PlotLegends->{left,top,right}],ParametricPlot3D[l1mean+t l1direction,{t,-150,175},PlotStyle->Red],
ParametricPlot3D[l2mean+t l2direction,{t,-125,200},PlotStyle->Green],
ParametricPlot3D[l3mean+t l3direction,{t,-200,175},PlotStyle->Blue]
]

(Legended[, (PointLegend[top, right, left])])