tmp
Former-commit-id: b7e0d7df2a42a28fd683029bdf79b88a27cb1130
This commit is contained in:
13
main.py
13
main.py
@ -49,10 +49,12 @@ class MAT:
|
||||
def process_left(self, now: float, value_only=False):
|
||||
if self.state.mode == State.Mode.CRAZY:
|
||||
value_only = True
|
||||
if self.state.mode == State.Mode.ABOUT:
|
||||
return self.total_volume
|
||||
st = self.ch340.start
|
||||
if not value_only:
|
||||
self.ch340.stop()
|
||||
assert abs(self.ch340._get_time()-1) < 1e3
|
||||
assert abs(self.ch340._get_time()-1) < 1e-3
|
||||
r = now - st
|
||||
ret = self.total_volume - (1-r) * self.speeds[self.state.mode.value]
|
||||
if value_only:
|
||||
@ -138,12 +140,12 @@ class MAT:
|
||||
self.control_logger.info(f"middle比例{trans_ratio:.2%}<60%,退出middle检查,返回fast模式")
|
||||
|
||||
if self.state.mode == State.Mode.ABOUT and self.state.about_check:
|
||||
h = self.history.get_recent_records(self.about_time,now)
|
||||
h = self.history.get_recent_records(self.about_time/3,now)
|
||||
ratio = self.history.get_state_ratio("about", h)
|
||||
self.history.about_history.append(ratio<0.3)
|
||||
while len(self.history.about_history) > 10:
|
||||
while len(self.history.about_history) > 5:
|
||||
self.history.about_history.pop(0)
|
||||
if len(self.history.about_history) == 10:
|
||||
if len(self.history.about_history) == 5:
|
||||
rate = sum(self.history.about_history) / len(self.history.about_history)
|
||||
if rate > 0.8:
|
||||
self.state.exit_about()
|
||||
@ -283,7 +285,6 @@ class MAT:
|
||||
self.about_time=about_time
|
||||
|
||||
self.crazy = 0
|
||||
self.state.mode = State.Mode.CRAZY
|
||||
|
||||
while self.running:
|
||||
if not self.ch340.running:
|
||||
@ -358,6 +359,8 @@ if __name__ == "__main__":
|
||||
end_bounce_time=0.01
|
||||
)
|
||||
|
||||
mat.state.mode = State.Mode.FAST
|
||||
|
||||
mat.run(
|
||||
slow_speed = 0.05,
|
||||
quick_speed = 0.15,
|
||||
|
8
utils.py
8
utils.py
@ -41,7 +41,8 @@ class History:
|
||||
self.fulled = False
|
||||
self.about_history = [] # 用于存储最近的about状态记录
|
||||
self.base = None
|
||||
self._base_time = base_time # 可视化相关属性
|
||||
self._base_time = base_time
|
||||
self._base_cnt = 0
|
||||
self.display = display
|
||||
self.fig: Any = None
|
||||
self.ax: Any = None
|
||||
@ -59,6 +60,9 @@ class History:
|
||||
self.records.append(record)
|
||||
self._cleanup_old_records(timestamp)
|
||||
if self.base is None and (timestamp-self._base_time)>= self.records[0].timestamp:
|
||||
if self._base_cnt < 30:
|
||||
self._base_cnt+=1
|
||||
return
|
||||
base_records = self.get_recent_records(self._base_time, timestamp)
|
||||
self.base = sum([rec.rate for rec in base_records]) / len(base_records)
|
||||
get_endpoint_logger().info("Base rate calculated: %.2f", self.base)
|
||||
@ -282,7 +286,7 @@ class State:
|
||||
FAST = 0 # 快速模式
|
||||
SLOW = 1 # 慢速模式 (middle)
|
||||
ABOUT = 2 # 接近终点模式
|
||||
CRAZY = 2 # CRAZY模式
|
||||
CRAZY = 3 # CRAZY模式
|
||||
# END = 3 # 终点模式
|
||||
|
||||
def __init__(self, bounce_time=1, end_bounce_time=5):
|
||||
|
Reference in New Issue
Block a user