Source code for control
try:
from ulab.numpy import eye as identity, array, linalg, cross, dot as matmul, isfinite, all
except Exception:
from numpy import identity, array, linalg, cross, matmul, isfinite, all
[docs]def bcross(b, ω, k=7e-4):
b = (array(b))
ω = (array(ω))
b_hat = b / linalg.norm(b)
bbt = matmul(array([b_hat]).transpose(), array([b_hat]))
M = - k * matmul(identity(3) - bbt, ω)
# control
m = (1 / linalg.norm(b)) * cross(b_hat, M)
if all(isfinite(m)):
return m
return [0, 0, 0]