| | |
| | | dt = max(now - last, 1e-4) |
| | | last = now |
| | | with self._state_lock: |
| | | # 注意:这里的 self._target_linear/angular 是从 STM32 发回来的 PWM 转换后的估算值 |
| | | # 实际上是 STM32 认为的命令,或者如果我们只收 PWM 的话,它就是实际控制量 |
| | | # STM32 发送的是 target_mps 和 target_turn,或者是 PWM |
| | | # 在 protocols.py 中,如果我们收到了 PWM,就会转换为速度 |
| | | # 如果收到的是 target_mps,那就是 target_mps |
| | | # 现在的逻辑是:Simulator 收到 PythonLinkFrame,里面可能是 PWM 反算的 velocity |
| | | # 这样就构成了闭环:STM32 计算 PWM -> Python 接收 PWM -> 反算速度 -> 物理模型积分 -> 传感器数据 -> STM32 |
| | | state = self.model.step(self._target_linear, self._target_angular, dt).copy() |
| | | self._latest_state = state |
| | | self._sim_time += timedelta(seconds=dt) |