feat: added pid calculation and better ui

This commit is contained in:
2025-12-23 00:29:18 +01:00
parent f41b760208
commit 45ccd0bedb
2 changed files with 251 additions and 18 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://caj5t8q1fii5m"]
[gd_scene load_steps=8 format=3 uid="uid://caj5t8q1fii5m"]
[ext_resource type="PackedScene" uid="uid://cin3pgpeydkpe" path="res://Assets/PID_Spinning_Target.glb" id="1_0c8sw"]
[ext_resource type="Script" uid="uid://b63aqs33qyp0g" path="res://Levels/pid_test.gd" id="1_sxbsa"]
@@ -9,6 +9,13 @@ background_mode = 2
background_color = Color(0.14478481, 0.14478481, 0.14478481, 1)
ambient_light_source = 2
[sub_resource type="Theme" id="Theme_sxbsa"]
[sub_resource type="Theme" id="Theme_d03hh"]
[sub_resource type="LabelSettings" id="LabelSettings_sxbsa"]
font_size = 24
[node name="PidTest" type="Node3D"]
script = ExtResource("1_sxbsa")
@@ -36,29 +43,179 @@ transform = Transform3D(0.25000006, 0.9659258, 0.06698735, -0.2588191, -1.908172
[node name="PID Menue" type="Control" parent="."]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
offset_left = 20.0
offset_top = 20.0
offset_right = 20.0
offset_bottom = 20.0
theme = SubResource("Theme_sxbsa")
[node name="VBoxContainer" type="VBoxContainer" parent="PID Menue"]
[node name="PanelContainer" type="PanelContainer" parent="PID Menue"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="HBoxContainer" type="HBoxContainer" parent="PID Menue/VBoxContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="PID Menue/PanelContainer"]
layout_mode = 2
theme = SubResource("Theme_d03hh")
[node name="Spinner Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Spinner Controll"
label_settings = SubResource("LabelSettings_sxbsa")
[node name="Proportinal Term (P)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Proportinal Term (P)" type="Label" parent="PID Menue/VBoxContainer/HBoxContainer"]
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"]
layout_mode = 2
size_flags_horizontal = 3
text = "Proportinal Term (P)"
[node name="Proportinal Term (P) Input" type="SpinBox" parent="PID Menue/VBoxContainer/HBoxContainer"]
[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"]
custom_minimum_size = Vector2(20, 0)
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="PID Menue/VBoxContainer"]
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"]
layout_mode = 2
max_value = 10.0
step = 0.01
value = 0.5
[node name="Integral (I)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/VBoxContainer/HBoxContainer2"]
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)"]
layout_mode = 2
size_flags_horizontal = 3
text = "Integral (I)"
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)"]
layout_mode = 2
max_value = 10.0
step = 0.01
[node name="Derivative (D)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="LineEdit" type="SpinBox" parent="PID Menue/VBoxContainer/HBoxContainer2"]
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)"]
layout_mode = 2
size_flags_horizontal = 3
text = "Derivative (D)"
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)"]
layout_mode = 2
max_value = 10.0
step = 0.01
[node name="Force" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Force"]
layout_mode = 2
size_flags_horizontal = 3
text = "Force"
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Force"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="Target Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Target"
label_settings = SubResource("LabelSettings_sxbsa")
[node name="Target Rotation" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation"]
layout_mode = 2
size_flags_horizontal = 3
text = "Target Rotation"
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation"]
layout_mode = 2
max_value = 1439.96
step = 0.01
custom_arrow_step = 10.0
[node name="MarginContainer2" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="Solution" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
text = "Solution"
label_settings = SubResource("LabelSettings_sxbsa")
[node name="Error" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error"]
layout_mode = 2
size_flags_horizontal = 3
text = "Error"
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error"]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
[node name="Error Derivative" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative"]
layout_mode = 2
size_flags_horizontal = 3
text = "Error Derivative"
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative"]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
[node name="Integral" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral"]
layout_mode = 2
size_flags_horizontal = 3
text = "Integral"
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral"]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
[node name="Speed" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed"]
layout_mode = 2
size_flags_horizontal = 3
text = "Speed"
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed"]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
[node name="Acceleration" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration"]
layout_mode = 2
size_flags_horizontal = 3
text = "Acceleration"
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration"]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true