-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathmain.py
More file actions
62 lines (49 loc) · 2 KB
/
Copy pathmain.py
File metadata and controls
62 lines (49 loc) · 2 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
from typing import TypedDict
from src import params, vehicle as vehicle_module, camera as camera_module, distance_sensor as distance_sensor_module, led as led_module, switch as switch_module
from src.brains import ModuleTypes as BrainModuleTypes, Types as BrainTypes
import json
from pathlib import Path
class Config(TypedDict):
brains: BrainModuleTypes
camera: camera_module.Config
distance_sensors: list[distance_sensor_module.Config]
leds: list[led_module.LED]
switches: list[switch_module.Switch]
vehicle: vehicle_module.Config
# read from config.json
config: Config = json.loads(params.CONFIG_PATH.read_text())
# Load Camera
camera_config = config['camera']
camera = camera_module.Camera(camera_config)
# Load Distance Sensors
distance_sensors_config = config['distance_sensors']
distance_sensors: list[distance_sensor_module.DistanceSensor] = []
for d in distance_sensors_config:
distance_sensors.append(distance_sensor_module.DistanceSensor(d))
# Load LEDs
leds_config = config['leds']
leds: list[led_module.LED] = []
for d in leds_config:
leds.append(led_module.LED(d))
# Load Switches
switches_config = config['switches']
switches: list[switch_module.Switch] = []
for d in switches_config:
switches.append(switch_module.Switch(d))
# Load Vehicle
vehicle_config = config['vehicle']
saved_slant_Path = Path('saved_slant.txt')
if params.SAVED_SLANT_PATH.exists():
saved_slant = float(params.SAVED_SLANT_PATH.read_text())
vehicle_config['slant'] = saved_slant
vehicle = vehicle_module.Vehicle(vehicle_config)
# Load Brain
brain_type = 'human_driver'
# merge the base brain config with the brain-specific config, giving priority to the brain-specific config
brain_config = {**config['brains']['base'], **config['brains'][brain_type]}
brain_module = BrainTypes[brain_type]
# initialize a brain instance from whichever brain module you loaded
brain = brain_module.Brain(
brain_config, camera, distance_sensors, leds, switches, vehicle)
# Tell the brain to drive the vehicle
brain.run()