Skip to content

Commit 9f1c663

Browse files
authored
calibrationd: add function typing (commaai#24018)
1 parent 4a8fffd commit 9f1c663

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

selfdrive/locationd/calibrationd.py

+17-16
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88

99
import gc
1010
import os
11+
import capnp
1112
import numpy as np
12-
from typing import NoReturn
13+
from typing import List, NoReturn, Optional
1314

1415
from cereal import log
1516
import cereal.messaging as messaging
@@ -46,20 +47,20 @@ class Calibration:
4647
INVALID = 2
4748

4849

49-
def is_calibration_valid(rpy):
50+
def is_calibration_valid(rpy: np.ndarray) -> bool:
5051
return (PITCH_LIMITS[0] < rpy[1] < PITCH_LIMITS[1]) and (YAW_LIMITS[0] < rpy[2] < YAW_LIMITS[1])
5152

5253

53-
def sanity_clip(rpy):
54+
def sanity_clip(rpy: np.ndarray) -> np.ndarray:
5455
if np.isnan(rpy).any():
5556
rpy = RPY_INIT
5657
return np.array([rpy[0],
5758
np.clip(rpy[1], PITCH_LIMITS[0] - .005, PITCH_LIMITS[1] + .005),
5859
np.clip(rpy[2], YAW_LIMITS[0] - .005, YAW_LIMITS[1] + .005)])
5960

6061

61-
class Calibrator():
62-
def __init__(self, param_put=False):
62+
class Calibrator:
63+
def __init__(self, param_put: bool = False):
6364
self.param_put = param_put
6465

6566
# Read saved calibration
@@ -80,7 +81,7 @@ def __init__(self, param_put=False):
8081
self.reset(rpy_init, valid_blocks)
8182
self.update_status()
8283

83-
def reset(self, rpy_init=RPY_INIT, valid_blocks=0, smooth_from=None):
84+
def reset(self, rpy_init: np.ndarray = RPY_INIT, valid_blocks: int = 0, smooth_from: Optional[np.ndarray] = None) -> None:
8485
if not np.isfinite(rpy_init).all():
8586
self.rpy = RPY_INIT.copy()
8687
else:
@@ -95,7 +96,7 @@ def reset(self, rpy_init=RPY_INIT, valid_blocks=0, smooth_from=None):
9596

9697
self.idx = 0
9798
self.block_idx = 0
98-
self.v_ego = 0
99+
self.v_ego = 0.0
99100

100101
if smooth_from is None:
101102
self.old_rpy = RPY_INIT
@@ -104,13 +105,13 @@ def reset(self, rpy_init=RPY_INIT, valid_blocks=0, smooth_from=None):
104105
self.old_rpy = smooth_from
105106
self.old_rpy_weight = 1.0
106107

107-
def get_valid_idxs(self):
108+
def get_valid_idxs(self) -> List[int]:
108109
# exclude current block_idx from validity window
109110
before_current = list(range(self.block_idx))
110111
after_current = list(range(min(self.valid_blocks, self.block_idx + 1), self.valid_blocks))
111112
return before_current + after_current
112113

113-
def update_status(self):
114+
def update_status(self) -> None:
114115
valid_idxs = self.get_valid_idxs()
115116
if valid_idxs:
116117
rpys = self.rpys[valid_idxs]
@@ -137,16 +138,16 @@ def update_status(self):
137138
if self.param_put and write_this_cycle:
138139
put_nonblocking("CalibrationParams", self.get_msg().to_bytes())
139140

140-
def handle_v_ego(self, v_ego):
141+
def handle_v_ego(self, v_ego: float) -> None:
141142
self.v_ego = v_ego
142143

143-
def get_smooth_rpy(self):
144+
def get_smooth_rpy(self) -> np.ndarray:
144145
if self.old_rpy_weight > 0:
145146
return self.old_rpy_weight * self.old_rpy + (1.0 - self.old_rpy_weight) * self.rpy
146147
else:
147148
return self.rpy
148149

149-
def handle_cam_odom(self, trans, rot, trans_std):
150+
def handle_cam_odom(self, trans: List[float], rot: List[float], trans_std: List[float]) -> Optional[np.ndarray]:
150151
self.old_rpy_weight = min(0.0, self.old_rpy_weight - 1/SMOOTH_CYCLES)
151152

152153
straight_and_fast = ((self.v_ego > MIN_SPEED_FILTER) and (trans[0] > MIN_SPEED_FILTER) and (abs(rot[2]) < MAX_YAW_RATE_FILTER))
@@ -176,7 +177,7 @@ def handle_cam_odom(self, trans, rot, trans_std):
176177

177178
return new_rpy
178179

179-
def get_msg(self):
180+
def get_msg(self) -> capnp.lib.capnp._DynamicStructBuilder:
180181
smooth_rpy = self.get_smooth_rpy()
181182
extrinsic_matrix = get_view_frame_from_road_frame(0, smooth_rpy[1], smooth_rpy[2], model_height)
182183

@@ -189,11 +190,11 @@ def get_msg(self):
189190
msg.liveCalibration.rpyCalibSpread = self.calib_spread.tolist()
190191
return msg
191192

192-
def send_data(self, pm) -> None:
193+
def send_data(self, pm: messaging.PubMaster) -> None:
193194
pm.send('liveCalibration', self.get_msg())
194195

195196

196-
def calibrationd_thread(sm=None, pm=None) -> NoReturn:
197+
def calibrationd_thread(sm: Optional[messaging.SubMaster] = None, pm: Optional[messaging.PubMaster] = None) -> NoReturn:
197198
gc.disable()
198199
set_realtime_priority(1)
199200

@@ -223,7 +224,7 @@ def calibrationd_thread(sm=None, pm=None) -> NoReturn:
223224
calibrator.send_data(pm)
224225

225226

226-
def main(sm=None, pm=None) -> NoReturn:
227+
def main(sm: Optional[messaging.SubMaster] = None, pm: Optional[messaging.PubMaster] = None) -> NoReturn:
227228
calibrationd_thread(sm, pm)
228229

229230

0 commit comments

Comments
 (0)