30 lines
566 B
Python
30 lines
566 B
Python
import sympy as sm
|
|
import sympy.physics.mechanics as me
|
|
sm.init_printing()
|
|
|
|
q1, q2, q3, q4 = sm.symbols('q1:5')
|
|
l1, l2, l3, l4 = sm.symbols('l1:5')
|
|
|
|
N, A, B, C = sm.symbols('N, A, B, C', cls=me.ReferenceFrame)
|
|
|
|
A.orient_body_fixed(N, (q1, q2, 0), 'ZXZ')
|
|
print(A.dcm(N))
|
|
|
|
B.orient_axis(A, q3, A.x)
|
|
|
|
C.orient_body_fixed(B, (q3, q4, 0), 'XZX')
|
|
|
|
r_P1_P2 = l1 * A.z
|
|
print(r_P1_P2)
|
|
|
|
r_P2_P3 = l2 * B.z
|
|
print(r_P2_P3)
|
|
|
|
r_P3_P4 = l3 *C.z - l4 *C.y
|
|
print(r_P3_P4)
|
|
|
|
r_P1_P4 = r_P1_P2 + r_P2_P3 + r_P3_P4
|
|
print(r_P1_P4)
|
|
|
|
print(r_P1_P4.express(B))
|
|
print(r_P1_P4.free_symbols(N)) |