def main(): state = { "should_exit": False, "is_manual_mode": True, "is_cruise_mode": False, } dm, js, cam = hardware_setup() ws_server = start_ws() dl = DataLogger(LOG_PATH + "/data.csv") logging.info("All services up and running") last_ws_ts = time.time() last_sync_ts = time.time() while not state["should_exit"]: event = js.get_event() # dispatch control command if state["is_manual_mode"]: if state["is_cruise_mode"]: if "direction" in event: event["direction"] = state["direction"] if "throttle" in event: event["throttle"] = state["throttle"] dm.batch_update(event) else: ai_command = fetch_ai_command() state.update(ai_command) event.update(ai_command) dm.batch_update(ai_command) state.update(event) if state["should_exit"]: continue ts = time.time() # broadcast state/event to client if ts - last_sync_ts > 0.5: # sync state every 0.5s state.update(dm.get_state()) ws_server.broadcast(state) last_sync_ts = time.time() if ts - last_ws_ts > 0.1: # push delta only every 0.1s if there is any event.update(dm.get_event()) if len(event) > 0: ws_server.broadcast(event) last_ws_ts = time.time() #logging image_file_name = ('%.6f' % ts) + ".jpg" state.update({"timestamp": ts, "image_file_name": image_file_name}) cam.capture_and_mark(image_file_name) dl.write(state)
import os import time from DataLogger import DataLogger def get_image_file_name(): ts = time.time() return ts, ('%.6f' % ts) + ".jpg" state = { "direction": 130.32, "throttle": 0.8, "lat": 123.21123234, "is_manual_mode": False } state["timestamp"], state["image_file_name"] = get_image_file_name() dl = DataLogger(os.getcwd() + "/demo.csv") dl.write(state) state["timestamp"], state["image_file_name"] = get_image_file_name() dl.write(state) state["timestamp"], state["image_file_name"] = get_image_file_name() dl.write(state)