Skip to content

Commit c819ea9

Browse files
looking good but not behaving good
1 parent 339aed0 commit c819ea9

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

controller.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { vec3, vec4, mat4, quat } from 'https://esm.sh/gl-matrix';
1+
import { vec3, mat3, vec4, mat4, quat } from 'https://esm.sh/gl-matrix';
22

33
export default class Controller {
44
constructor() { }
@@ -23,13 +23,11 @@ export default class Controller {
2323
const k_q = params['dynamics']['rotor_torque_constants'][0];
2424
const [a, b, c] = params['dynamics']['rotor_thrust_coefficients'][0];
2525

26-
// Gains
2726
const k_p = 3.0;
2827
const k_d = 2.0;
2928
const k_R = 1.0;
3029
const k_omega = 0.1;
3130

32-
// Desired states
3331
const p_des = vec3.fromValues(0, 0, 0);
3432
const v_des = vec3.fromValues(0, 0, 0);
3533
const q_des = quat.fromValues(0, 0, 0, 1);
@@ -55,12 +53,24 @@ export default class Controller {
5553
const A_inv = mat4.invert(mat4.create(), A);
5654

5755
const T = vec3.dot(F_des, vec3.transformQuat(vec3.create(), [0, 0, 1], q));
58-
const tau = vec3.add(
59-
vec3.create(),
60-
vec3.scale(vec3.create(), omega, -k_omega),
61-
vec3.scale(vec3.create(), e_p, -k_R)
56+
57+
const R = mat3.fromQuat(mat3.create(), q);
58+
const R_des = mat3.fromQuat(mat3.create(), q_des);
59+
60+
const R_err = mat3.create();
61+
mat3.multiply(R_err, mat3.transpose(mat3.create(), R_des), R);
62+
mat3.subtract(R_err, R_err, mat3.multiply(mat3.create(), mat3.transpose(mat3.create(), R), R_des));
63+
64+
const e_R = vec3.fromValues(
65+
R_err[5], -R_err[2], R_err[1]
6266
);
6367

68+
const tau = vec3.create();
69+
vec3.scale(tau, e_R, -k_R);
70+
const temp = vec3.create();
71+
vec3.scale(temp, omega, -k_omega);
72+
vec3.add(tau, tau, temp);
73+
6474
const controlInputs = vec4.fromValues(T, tau[0], tau[1], tau[2]);
6575
const f = vec4.transformMat4(vec4.create(), controlInputs, A_inv);
6676

@@ -78,4 +88,3 @@ export default class Controller {
7888

7989
reset() { }
8090
}
81-

0 commit comments

Comments
 (0)