digraph G {
rankdir="LR"
"Roll PID"[shape=record
label="<f0>Roll PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=35.000] |<f5> [Ki=0.000] |<f6> [Kd=1.000] |<f7> [alpha=0.880]"]
"Roll" -> "Roll PID":f1 [label="Constant"]
"Yaw Correction" -> "Roll PID":f2 [label="Rotated Y"]
"Ts_IMU" -> "Roll PID":f3 [label="Constant"]
"Pitch PID"[shape=record
label="<f0>Pitch PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=35.000] |<f5> [Ki=0.000] |<f6> [Kd=1.000] |<f7> [alpha=0.880]"]
"Pitch trim add" -> "Pitch PID":f1 [label="Sum"]
"Yaw Correction" -> "Pitch PID":f2 [label="Rotated X"]
"Ts_IMU" -> "Pitch PID":f3 [label="Constant"]
"Yaw PID"[shape=record
label="<f0>Yaw PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=2.600] |<f5> [Ki=0.000] |<f6> [Kd=0.000] |<f7> [alpha=0.000]"]
"Yaw" -> "Yaw PID":f1 [label="Constant"]
"Yaw Setpoint" -> "Yaw PID":f2 [label="Constant"]
"Ts_VRPN" -> "Yaw PID":f3 [label="Constant"]
"Roll Rate PID"[shape=record
label="<f0>Roll Rate PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.030] |<f5> [Ki=0.000] |<f6> [Kd=0.005] |<f7> [alpha=0.880]"]
"Gyro X" -> "Roll Rate PID":f1 [label="Constant"]
"Roll PID" -> "Roll Rate PID":f2 [label="Correction"]
"Ts_IMU" -> "Roll Rate PID":f3 [label="Constant"]
"Pitch Rate PID"[shape=record
label="<f0>Pitch Rate PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.030] |<f5> [Ki=0.000] |<f6> [Kd=0.005] |<f7> [alpha=0.880]"]
"Gyro Y" -> "Pitch Rate PID":f1 [label="Constant"]
"Pitch PID" -> "Pitch Rate PID":f2 [label="Correction"]
"Ts_IMU" -> "Pitch Rate PID":f3 [label="Constant"]
"Yaw Rate PID"[shape=record
label="<f0>Yaw Rate PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.297] |<f5> [Ki=0.000] |<f6> [Kd=0.000] |<f7> [alpha=0.000]"]
"Gyro Z" -> "Yaw Rate PID":f1 [label="Constant"]
"Yaw Rate Clamp" -> "Yaw Rate PID":f2 [label="Bounded"]
"Ts_IMU" -> "Yaw Rate PID":f3 [label="Constant"]
"X pos PID"[shape=record
label="<f0>X pos PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.550] |<f5> [Ki=0.007] |<f6> [Kd=0.000] |<f7> [alpha=0.000]"]
"VRPN X" -> "X pos PID":f1 [label="Constant"]
"X Setpoint" -> "X pos PID":f2 [label="Constant"]
"Ts_VRPN" -> "X pos PID":f3 [label="Constant"]
"Y pos PID"[shape=record
label="<f0>Y pos PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.550] |<f5> [Ki=0.007] |<f6> [Kd=0.000] |<f7> [alpha=0.000]"]
"VRPN Y" -> "Y pos PID":f1 [label="Constant"]
"Y Setpoint" -> "Y pos PID":f2 [label="Constant"]
"Ts_VRPN" -> "Y pos PID":f3 [label="Constant"]
"Altitude PID"[shape=record
label="<f0>Altitude PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=-0.098] |<f5> [Ki=-0.008] |<f6> [Kd=-0.074] |<f7> [alpha=0.880]"]
"VRPN Alt" -> "Altitude PID":f1 [label="Constant"]
"Alt Setpoint" -> "Altitude PID":f2 [label="Constant"]
"Ts_VRPN" -> "Altitude PID":f3 [label="Constant"]
"X Setpoint"[shape=record
label="<f0>X Setpoint  |<f1> [Constant=0.000]"]
"Y Setpoint"[shape=record
label="<f0>Y Setpoint  |<f1> [Constant=0.000]"]
"Alt Setpoint"[shape=record
label="<f0>Alt Setpoint  |<f1> [Constant=0.000]"]
"Yaw Setpoint"[shape=record
label="<f0>Yaw Setpoint  |<f1> [Constant=0.000]"]
"Throttle trim"[shape=record
label="<f0>Throttle trim  |<f1> [Constant=0.000]"]
"T trim add"[shape=record
label="<f0>T trim add  |<f1> --\>Summand 1 |<f2> --\>Summand 2"]
"Altitude PID" -> "T trim add":f1 [label="Correction"]
"Throttle trim" -> "T trim add":f2 [label="Constant"]
"Pitch"[shape=record
label="<f0>Pitch  |<f1> [Constant=0.000]"]
"Roll"[shape=record
label="<f0>Roll  |<f1> [Constant=0.000]"]
"Yaw"[shape=record
label="<f0>Yaw  |<f1> [Constant=0.000]"]
"Lidar"[shape=record
label="<f0>Lidar  |<f1> [Constant=0.000]"]
"Flow Vel X"[shape=record
label="<f0>Flow Vel X  |<f1> [Constant=0.000]"]
"Flow Vel Y"[shape=record
label="<f0>Flow Vel Y  |<f1> [Constant=0.000]"]
"Flow Vel X Filt"[shape=record
label="<f0>Flow Vel X Filt  |<f1> [Constant=0.000]"]
"Flow Vel Y Filt"[shape=record
label="<f0>Flow Vel Y Filt  |<f1> [Constant=0.000]"]
"Flow Quality"[shape=record
label="<f0>Flow Quality  |<f1> [Constant=0.000]"]
"Pitch trim"[shape=record
label="<f0>Pitch trim  |<f1> [Constant=0.045]"]
"Pitch trim add"[shape=record
label="<f0>Pitch trim add  |<f1> --\>Summand 1 |<f2> --\>Summand 2"]
"Pitch trim" -> "Pitch trim add":f1 [label="Constant"]
"Pitch" -> "Pitch trim add":f2 [label="Constant"]
"Gyro Y"[shape=record
label="<f0>Gyro Y  |<f1> [Constant=0.000]"]
"Gyro X"[shape=record
label="<f0>Gyro X  |<f1> [Constant=0.000]"]
"Gyro Z"[shape=record
label="<f0>Gyro Z  |<f1> [Constant=0.000]"]
"P PWM Clamp"[shape=record
label="<f0>P PWM Clamp  |<f1> --\>Bounds in |<f2> [Min=-20000.000] |<f3> [Max=20000.000]"]
"Pitch Rate PID" -> "P PWM Clamp":f1 [label="Correction"]
"R PWM Clamp"[shape=record
label="<f0>R PWM Clamp  |<f1> --\>Bounds in |<f2> [Min=-20000.000] |<f3> [Max=20000.000]"]
"Roll Rate PID" -> "R PWM Clamp":f1 [label="Correction"]
"Y PWM Clamp"[shape=record
label="<f0>Y PWM Clamp  |<f1> --\>Bounds in |<f2> [Min=-20000.000] |<f3> [Max=20000.000]"]
"Yaw Rate PID" -> "Y PWM Clamp":f1 [label="Correction"]
"Yaw Rate Clamp"[shape=record
label="<f0>Yaw Rate Clamp  |<f1> --\>Bounds in |<f2> [Min=-1.500] |<f3> [Max=1.500]"]
"Yaw PID" -> "Yaw Rate Clamp":f1 [label="Correction"]
"VRPN X"[shape=record
label="<f0>VRPN X  |<f1> [Constant=0.000]"]
"VRPN Y"[shape=record
label="<f0>VRPN Y  |<f1> [Constant=0.000]"]
"VRPN Alt"[shape=record
label="<f0>VRPN Alt  |<f1> [Constant=0.000]"]
"VRPN Pitch"[shape=record
label="<f0>VRPN Pitch  |<f1> [Constant=0.000]"]
"VRPN Roll"[shape=record
label="<f0>VRPN Roll  |<f1> [Constant=0.000]"]
"RC Pitch"[shape=record
label="<f0>RC Pitch  |<f1> [Constant=0.000]"]
"RC Roll"[shape=record
label="<f0>RC Roll  |<f1> [Constant=0.000]"]
"RC Yaw"[shape=record
label="<f0>RC Yaw  |<f1> [Constant=0.000]"]
"RC Throttle"[shape=record
label="<f0>RC Throttle  |<f1> [Constant=0.000]"]
"X Vel PID"[shape=record
label="<f0>X Vel PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=-0.100] |<f5> [Ki=0.000] |<f6> [Kd=-0.020] |<f7> [alpha=0.000]"]
"X Vel" -> "X Vel PID":f1 [label="Correction"]
"X Vel Clamp" -> "X Vel PID":f2 [label="Bounded"]
"Ts_VRPN" -> "X Vel PID":f3 [label="Constant"]
"Y Vel PID"[shape=record
label="<f0>Y Vel PID  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.100] |<f5> [Ki=0.000] |<f6> [Kd=0.020] |<f7> [alpha=0.000]"]
"Y Vel" -> "Y Vel PID":f1 [label="Correction"]
"Y vel Clamp" -> "Y Vel PID":f2 [label="Bounded"]
"Ts_VRPN" -> "Y Vel PID":f3 [label="Constant"]
"X Vel"[shape=record
label="<f0>X Vel  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.000] |<f5> [Ki=0.000] |<f6> [Kd=-1.000] |<f7> [alpha=0.880]"]
"VRPN X" -> "X Vel":f1 [label="Constant"]
"zero" -> "X Vel":f2 [label="Constant"]
"Ts_VRPN" -> "X Vel":f3 [label="Constant"]
"Y Vel"[shape=record
label="<f0>Y Vel  |<f1> --\>Cur point |<f2> --\>Setpoint |<f3> --\>dt |<f4> [Kp=0.000] |<f5> [Ki=0.000] |<f6> [Kd=-1.000] |<f7> [alpha=0.880]"]
"VRPN Y" -> "Y Vel":f1 [label="Constant"]
"zero" -> "Y Vel":f2 [label="Constant"]
"Ts_VRPN" -> "Y Vel":f3 [label="Constant"]
"X Vel Clamp"[shape=record
label="<f0>X Vel Clamp  |<f1> --\>Bounds in |<f2> [Min=-2.000] |<f3> [Max=2.000]"]
"X pos PID" -> "X Vel Clamp":f1 [label="Correction"]
"Y vel Clamp"[shape=record
label="<f0>Y vel Clamp  |<f1> --\>Bounds in |<f2> [Min=-2.000] |<f3> [Max=2.000]"]
"Y pos PID" -> "Y vel Clamp":f1 [label="Correction"]
"Yaw Correction"[shape=record
label="<f0>Yaw Correction  |<f1> --\>Current Yaw |<f2> --\>X Position |<f3> --\>Y Position"]
"Yaw" -> "Yaw Correction":f1 [label="Constant"]
"X Vel PID" -> "Yaw Correction":f2 [label="Correction"]
"Y Vel PID" -> "Yaw Correction":f3 [label="Correction"]
"OF Offset Angle"[shape=record
label="<f0>OF Offset Angle  |<f1> --\>Current Yaw |<f2> --\>X Position |<f3> --\>Y Position"]
"Yaw" -> "OF Offset Angle":f1 [label="Constant"]
"Flow Vel X" -> "OF Offset Angle":f2 [label="Constant"]
"Flow Vel Y" -> "OF Offset Angle":f3 [label="Constant"]
"OF Integrate X"[shape=record
label="<f0>OF Integrate X  |<f1> --\>Integrator In |<f2> --\>Integrator dt"]
"OF Offset Angle" -> "OF Integrate X":f1 [label="Rotated X"]
"Ts_IMU" -> "OF Integrate X":f2 [label="Constant"]
"OF Integrate Y"[shape=record
label="<f0>OF Integrate Y  |<f1> --\>Integrator In |<f2> --\>Integrator dt"]
"OF Offset Angle" -> "OF Integrate Y":f1 [label="Rotated Y"]
"Ts_IMU" -> "OF Integrate Y":f2 [label="Constant"]
"OF Trim X"[shape=record
label="<f0>OF Trim X  |<f1> [Constant=0.000]"]
"OF Trim Y"[shape=record
label="<f0>OF Trim Y  |<f1> [Constant=0.000]"]
"OF X Trim Add"[shape=record
label="<f0>OF X Trim Add  |<f1> --\>Summand 1 |<f2> --\>Summand 2"]
"OF Integrate X" -> "OF X Trim Add":f1 [label="Integrated"]
"OF Trim X" -> "OF X Trim Add":f2 [label="Constant"]
"OF Y Trim Add"[shape=record
label="<f0>OF Y Trim Add  |<f1> --\>Summand 1 |<f2> --\>Summand 2"]
"OF Integrate Y" -> "OF Y Trim Add":f1 [label="Integrated"]
"OF Trim Y" -> "OF Y Trim Add":f2 [label="Constant"]
"PSI Dot"[shape=record
label="<f0>PSI Dot  |<f1> [Constant=0.000]"]
"PSI Dot Offset"[shape=record
label="<f0>PSI Dot Offset  |<f1> [Constant=0.000]"]
"PSI Dot Sum"[shape=record
label="<f0>PSI Dot Sum  |<f1> --\>Summand 1 |<f2> --\>Summand 2"]
"PSI Dot" -> "PSI Dot Sum":f1 [label="Constant"]
"PSI Dot Offset" -> "PSI Dot Sum":f2 [label="Constant"]
"PSI Angle"[shape=record
label="<f0>PSI Angle  |<f1> --\>Integrator In |<f2> --\>Integrator dt"]
"PSI Dot Sum" -> "PSI Angle":f1 [label="Sum"]
"Ts_IMU" -> "PSI Angle":f2 [label="Constant"]
"PSI Angle Offset"[shape=record
label="<f0>PSI Angle Offset  |<f1> [Constant=0.000]"]
"PSI Sum"[shape=record
label="<f0>PSI Sum  |<f1> --\>Summand 1 |<f2> --\>Summand 2"]
"PSI Angle" -> "PSI Sum":f1 [label="Integrated"]
"PSI Angle Offset" -> "PSI Sum":f2 [label="Constant"]
"Mag Yaw"[shape=record
label="<f0>Mag Yaw  |<f1> [Constant=0.000]"]
"Signal Mixer"[shape=record
label="<f0>Signal Mixer  |<f1> --\>Throttle |<f2> --\>Pitch |<f3> --\>Roll |<f4> --\>Yaw"]
"T trim add" -> "Signal Mixer":f1 [label="Sum"]
"P PWM Clamp" -> "Signal Mixer":f2 [label="Bounded"]
"R PWM Clamp" -> "Signal Mixer":f3 [label="Bounded"]
"Y PWM Clamp" -> "Signal Mixer":f4 [label="Bounded"]
"Ts_IMU"[shape=record
label="<f0>Ts_IMU  |<f1> [Constant=0.005]"]
"Ts_VRPN"[shape=record
label="<f0>Ts_VRPN  |<f1> [Constant=0.040]"]
"zero"[shape=record
label="<f0>zero  |<f1> [Constant=0.000]"]
}