Skip to content

Commit 01a5bcb

Browse files
author
Ryohei Sasaki
authored
Fix function dRV_dQuat of class Optimizer3D
1 parent cb8af3c commit 01a5bcb

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

SLAM/PoseOptimizationSLAM3D/pose_optimization_slam_3d.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -235,22 +235,28 @@ def dR_dRV(self, rv):
235235
duy = dRdqw * dqdu[0,1] + dRdqx * dqdu[1, 1] + dRdqy * dqdu[2, 1] + dRdqz * dqdu[3, 1]
236236
duz = dRdqw * dqdu[0,2] + dRdqx * dqdu[1, 2] + dRdqy * dqdu[2, 2] + dRdqz * dqdu[3, 2]
237237
return dux, duy, duz
238-
238+
239239
def dRV_dQuat(self, q):
240+
241+
qw = q.qw[0]
242+
qx = q.qx[0]
243+
qy = q.qy[0]
244+
qz = q.qz[0]
240245

241-
if 1 - q.qw**2 < 1e-7:
246+
if 1 - qw**2 < 1e-7:
242247
ret = np.array(
243248
[[ 0.0, 2.0, 0.0, 0.0],
244249
[ 0.0, 0.0, 2.0, 0.0],
245250
[ 0.0, 0.0, 0.0, 2.0]]
246251
)
247252
return ret
248-
c = 1/(1 - q.qw**2)
249-
d = np.arccos(q.qw)/(np.sqrt(1-q.qw**2))
253+
254+
c = 1/(1 - qw**2)
255+
d = np.arccos(qw)/(np.sqrt(1-qw**2))
250256
ret = 2.0 * np.array(
251-
[[ c*q.qx*(d*q.qw-1), d, 0.0, 0.0],
252-
[ c*q.qy*(d*q.qw-1), 0.0, d, 0.0],
253-
[ c*q.qz*(d*q.qw-1), 0.0, 0.0, d]]
257+
[[ c*qx*(d*qw-1), d, 0.0, 0.0],
258+
[ c*qy*(d*qw-1), 0.0, d, 0.0],
259+
[ c*qz*(d*qw-1), 0.0, 0.0, d]]
254260
)
255261
return ret
256262

0 commit comments

Comments
 (0)