-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrov_modes.py
More file actions
64 lines (47 loc) · 1.52 KB
/
Copy pathrov_modes.py
File metadata and controls
64 lines (47 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""Sumber kebenaran untuk pilot mode ArduSub di sisi Python.
Nama GUI:
manual
stabilize
depth_hold
poshold
Nama ArduSub:
MANUAL
STABILIZE
ALT_HOLD
Depth Hold menggunakan ALT_HOLD ArduSub secara langsung.
Tidak ada lagi depth-set atau depth-bias custom di Python.
POSHOLD adalah overlay heading-hold sisi Python yang berjalan
di atas ALT_HOLD ArduSub. Overlay ini menahan heading, bukan
posisi horizontal.
"""
# =========================
# Pemetaan pilot mode
# =========================
PILOT_MODE_MAP = {
"manual": "MANUAL",
"stabilize": "STABILIZE",
"depth_hold": "ALT_HOLD",
"poshold": "ALT_HOLD",
}
# Nama GUI untuk station-keep.
POSHOLD_MODE = "poshold"
# Mode ArduSub tempat overlay POSHOLD berjalan.
# POSHOLD firmware tidak digunakan karena ROV tidak mempunyai
# sumber posisi horizontal yang diperlukan.
POSHOLD_BASE_MODE = PILOT_MODE_MAP[POSHOLD_MODE]
def resolve_pilot_mode(name):
"""Terjemahkan nama mode GUI ke nama mode ArduSub.
Menerima huruf besar/kecil dan spasi di tepi.
Mengembalikan None jika nama mode tidak dikenal.
"""
if not isinstance(name, str):
return None
return PILOT_MODE_MAP.get(name.strip().lower())
def is_poshold_request(name):
"""True jika nama mode GUI meminta overlay POSHOLD."""
if not isinstance(name, str):
return False
return name.strip().lower() == POSHOLD_MODE
def poshold_mode_ok(mode):
"""True jika overlay heading-hold boleh bekerja pada mode tersebut."""
return mode == POSHOLD_BASE_MODE