Что внутри у сервопривода?
Автор
using DataFrames, CSV
function run_branch_micro_steps()
model = "ServoMotorBranches"
paths = [model, model*"/ServoTarget", model*"/ServoTarget", model*"/RCServo",
model*"/ServoSolver", model*"/ServoSolver", model*"/ServoSolver"]
keys = ["StopTime", "OutValues", "tsamp", "phi_resolution",
"RelativeTolerance", "AbsoluteTolerance", "MaximumStepSize"]
saved = [deepcopy(engee.get_param(p)[k]) for (p,k) in zip(paths,keys)]
result = DataFrame()
try
engee.set_param!(model, "StopTime"=>"10")
engee.set_param!(model*"/ServoTarget", "tsamp"=>"2", "OutValues"=>"[45,45,45.1,45.2,46,46]")
engee.set_param!(model*"/ServoSolver", "RelativeTolerance"=>"1e-6",
"AbsoluteTolerance"=>"1e-8", "MaximumStepSize"=>"0.0002")
for resolution in [0.1,0.5]
engee.set_param!(model*"/RCServo", "phi_resolution"=>Dict("value"=>string(resolution),"unit"=>"deg"))
engee.run(model)
basic = collect(branches_motor)
servo = collect(branches_servo)
target = collect(branches_motor_target)
trial = DataFrame(time_s=basic.time, target_deg=target.value,
basic_deg=basic.value .*180/pi, servo_deg=servo.value .*180/pi,
resolution_deg=fill(resolution,size(basic,1)))
@assert size(trial,1)>1000 && all(isfinite,Matrix(trial))
append!(result,trial;cols=:union)
end
CSV.write("/user/servo_position_compare/branches_micro_results.csv",result)
result
finally
for (p,k,v) in zip(paths,keys,saved)
engee.set_param!(p,k=>v)
end
engee.open(model)
end
end