Skip to content

Commit eb81c0c

Browse files
authored
Merge pull request #25 from istellartech/fix_jacobian_vel
Fix jacobian calculation
2 parents 37d590b + e05b7c7 commit eb81c0c

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

constraints.py

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -666,8 +666,43 @@ def dynamics(mass, pos, vel, quat, t):
666666
jac["quaternion"]["coo"][1].extend([(a + i + j + 1) * 4 + k] * 3)
667667
jac["quaternion"]["coo"][2].extend(rh_quat[j].tolist())
668668

669-
rh_to = f_center.ravel() * unit_t / 2.0 # rh to
670-
rh_tf = -rh_to # rh tf
669+
# t_o, t_f
670+
to_p = to + dx
671+
672+
if param[2] > 0.0:
673+
t_i_p1_ = (
674+
pdict["ps_params"][i]["tau"] * (tf - to_p) * unit_t / 2.0
675+
+ (tf + to_p) * unit_t / 2.0
676+
)
677+
f_p = dynamics(
678+
mass_i_[1:],
679+
pos_i_[1:],
680+
vel_i_[1:],
681+
quat_i_[1:],
682+
t_i_p1_,
683+
)
684+
rh_to = (
685+
-(f_p * (tf - to_p) - f_center * (tf - to)).ravel() / dx * unit_t / 2.0
686+
)
687+
tf_p = tf + dx
688+
t_i_p2_ = (
689+
pdict["ps_params"][i]["tau"] * (tf_p - to) * unit_t / 2.0
690+
+ (tf_p + to) * unit_t / 2.0
691+
)
692+
f_p = dynamics(
693+
mass_i_[1:],
694+
pos_i_[1:],
695+
vel_i_[1:],
696+
quat_i_[1:],
697+
t_i_p2_,
698+
)
699+
rh_tf = (
700+
-(f_p * (tf_p - to) - f_center * (tf - to)).ravel() / dx * unit_t / 2.0
701+
)
702+
else:
703+
rh_to = f_center.ravel() * unit_t / 2.0
704+
rh_tf = -rh_to
705+
671706
jac["t"]["coo"][0].extend(sum([[k] * 2 for k in range(a * 3, b * 3)], []))
672707
jac["t"]["coo"][1].extend([i, i + 1] * n * 3)
673708
jac["t"]["coo"][2].extend(sum([[rh_to[k], rh_tf[k]] for k in range(3 * n)], []))

0 commit comments

Comments
 (0)