diff --git a/src/interface_implementations/furuta.jl b/src/interface_implementations/furuta.jl index 2f2ee62e5f9d29cd09ccc2aadd4f0dc62fe0c2b5..fb98742c48653445e03bf8e71fbb5735453d2e1f 100644 --- a/src/interface_implementations/furuta.jl +++ b/src/interface_implementations/furuta.jl @@ -91,13 +91,30 @@ phi(p::Furuta) = measure_phi(p)*2.56 measure_phi_dot(p::Furuta) = read(p.measure_phi_dot) phi_dot(p::Furuta) = (measure_phi_dot(p) + 0.0708)*2.0 measure_theta(p::Furuta) = read(p.measure_theta) -theta(p::Furuta) = (measure_theta(p) + 5.1763)*0.3091 +#theta(p::Furuta) = (measure_theta(p) + 5.1763)*0.3091 measure_theta_dot(p::Furuta) = read(p.measure_theta_dot) -theta_dot(p::Furuta) = (measure_theta_dot(p) - 0.022)*3.76 +#theta_dot(p::Furuta) = (measure_theta_dot(p) - 0.022)*3.76 measure_theta_precise(p::Furuta) = read(p.measure_theta_precise) -theta_precise(p::Furuta) = (measure_theta_precise(p) + 0.7792)*0.058 +#theta_precise(p::Furuta) = (measure_theta_precise(p) + 0.7792)*0.058 measure_theta_dot_precise(p::Furuta) = read(p.measure_theta_dot_precise) -theta_dot_precise(p::Furuta) = measure_theta_dot_precise(p)*0.68 +#theta_dot_precise(p::Furuta) = measure_theta_dot_precise(p)*0.68 + +function theta(p::Furuta) + a = (measure_theta(p) + 5.1763)*0.3091 + if abs(a) < 0.5 + a = (measure_theta_precise(p) + 0.7792)*0.058 + end + return a +end + +function theta_dot(p::Furuta) + a = (measure_theta(p) + 5.1763)*0.3091 + b = (measure_theta_dot(p) - 0.022)*3.76 + if abs(a) < 0.5 + b = measure_theta_dot_precise(p)*0.68 + end + return b +end measure(p::FurutaSimulator) = p.s.sys.C*p.s.state