From eb737cefbaf4f5539062ddb70a45641c5975bdd0 Mon Sep 17 00:00:00 2001 From: Anson Date: Tue, 3 Aug 2021 22:34:30 -0700 Subject: [PATCH] work with help from matty --- DancingT.png | Bin 33094 -> 32620 bytes Quaternions.jl | 4 ++-- SADC.jl | 58 +++++++++++++++++++++++++++---------------------- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/DancingT.png b/DancingT.png index 5ddad21027ae0791dcefb261461881507fb6b9f7..1eccfd4f0fb5eacda0233d73a12feddc7be277ba 100644 GIT binary patch literal 32620 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 IwG01$0Gr57UH||9 diff --git a/Quaternions.jl b/Quaternions.jl index c311dcd..c303d08 100644 --- a/Quaternions.jl +++ b/Quaternions.jl @@ -29,7 +29,7 @@ end function QuaternionMultiplication(l::Quaternion, r::Quaternion) R = [ - r.r r.k r.j r.i + r.r r.k -r.j r.i -r.k r.r r.i r.j r.j -r.i r.r r.k -r.i -r.j -r.k r.r @@ -45,7 +45,7 @@ Base.:*(l::Quaternion, r::Quaternion) = Base.iterate(q::Quaternion, state = 1) = state > 4 ? nothing : (collect(q)[state], state + 1) Base.length(q::Quaternion) = 4 -Base.collect(q::Quaternion) = [q.i q.j q.k q.r] +Base.collect(q::Quaternion) = [q.i, q.j, q.k, q.r] Base.getindex(q::Quaternion, i) = collect(q)[i] Base.isapprox(a::Quaternion, b::Quaternion) = isapprox(collect(a), collect(b)) diff --git a/SADC.jl b/SADC.jl index 340420e..3b349ec 100644 --- a/SADC.jl +++ b/SADC.jl @@ -1,23 +1,28 @@ using LinearAlgebra using NumericalIntegration - +using ProgressBars include("Quaternions.jl") dt = 0.005 -time = 0.0:dt:100 +time = 0.0:dt:60 I = [3 0 0; 0 4 0; 0 0 2] +Iinv = inv(I) T = [0; 0; 0] ω = [2.001; 0.001; 0.001] +ω′ = [0; 0; 0] q = Quaternion([0; 0; 0; 1]) ω_last = [0; 0; 0; ω] -ω_temp = similar(ω_last) +ω0 = copy(ω_last) +ω_area = [0; 0; 0; 0; 0; 0] -integrate_ω(T, I, ω) = inv(I) * (T - cross(ω, I * ω)) +β = [0; 0; 0] + +integrate_ω(T, I, ω) = Iinv * (T - cross(ω, I * ω)) function q_step(β) mag = β .^ 2 |> sum |> sqrt @@ -34,40 +39,40 @@ function integrate_vector(v, v_last) return v_new end -yaw = [] -pitch = [] -roll = [] -for t in time - +qs = [] +for t in ProgressBar(time) + # t = collect(time)[1] ω′ = integrate_ω(T, I, ω) - ω_new = integrate_vector([ω; ω′], ω_last) - ω = ω_new[4:6] - β = ω_new[1:3] .- ω + + ω_new = integrate_vector([ω; ω′], ω_last) + β = ω_new[1:3] .- β + + ω_last = [ω; ω′] + ω = ω_new[4:6] .- ω + ω_area = ω_new .+ ω_area q = q * q_step(β) - y, p, r = q_to_Euler(q) - push!(yaw, y) - push!(pitch, p) - push!(roll, r) + push!(qs, q) end # Plot -# using Plots -# let -# plot(time, yaw, label = "Yaw") -# plot!(time, pitch, label = "Pitch") -# plot!(time, roll, label = "Roll") -# title!("Dancing T Handle") -# xlabel!("Seconds") -# ylabel!("Degrees") -# savefig("DancingT.png") -# end +using Plots +let + plot(title = "T Handle Quaternion") + plot!([q[1] for q in qs], label = "i") + plot!([q[2] for q in qs], label = "j") + plot!([q[3] for q in qs], label = "k") + plot!([q[4] for q in qs], label = "r") +end +# println("done") + +# plot(qs) # Write to CSV # using CSV @@ -83,3 +88,4 @@ end # CSV.write("ypr.csv", df, header = false) # df +