From ab8d23e40c51882d5421d833873bb0ebbd804b0a Mon Sep 17 00:00:00 2001 From: Hiva Mohammadzadeh Date: Thu, 28 Jul 2022 15:42:21 -0700 Subject: [PATCH 1/3] Adding type annotations to operator_creater.py --- pylot/operator_creator.py | 104 ++++++++++++++++++++------------------ 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/pylot/operator_creator.py b/pylot/operator_creator.py index 19ab9dd7f..aa8222fa7 100644 --- a/pylot/operator_creator.py +++ b/pylot/operator_creator.py @@ -10,6 +10,9 @@ from pylot.drivers.sensor_setup import (CameraSetup, GNSSSetup, IMUSetup, LidarSetup) +from pylot.loggers.gnss_logger_operator import GNSSLoggerOperator +from pylot.loggers.lidar_logger_operator import LidarLoggerOperator +from pylot.loggers.trajectory_logger_operator import TrajectoryLoggerOperator from pylot.perception.camera_frame import CameraFrame from pylot.perception.depth_frame import DepthFrame from pylot.perception.detection.lane import Lane @@ -23,6 +26,11 @@ from pylot.perception.segmentation.segmented_frame import SegmentedFrame import pylot.utils + +from pylot.loggers.pose_logger_operator import PoseLoggerOperator +from pylot.loggers.imu_logger_operator import IMULoggerOperator +from pylot.prediction import obstacle_prediction + # TODO: Hack to avoid a tensorflow import error. import tensorflow as tf # noqa: F401 @@ -198,7 +206,7 @@ def add_detection_evaluation( frame_gap, FLAGS) -def add_control_evaluation(pose_stream, +def add_control_evaluation(pose_stream: Stream[pylot.utils.Pose], waypoints_stream, name='control_eval_operator'): from pylot.control.control_eval_operator import ControlEvalOperator @@ -226,7 +234,7 @@ def add_traffic_light_detector( def add_traffic_light_invasion_sensor(ground_vehicle_id_stream: Stream, - pose_stream: Stream) -> Stream: + pose_stream: Stream[pylot.utils.Pose]) -> Stream: from pylot.drivers.carla_traffic_light_invasion_sensor_operator import \ CarlaTrafficLightInvasionSensorOperator op_config = erdos.operator.OperatorConfig( @@ -429,7 +437,7 @@ def add_r2p2_prediction(point_cloud_stream, obstacles_tracking_stream, return prediction_stream -def add_prediction_evaluation(pose_stream: Stream, +def add_prediction_evaluation(pose_stream: Stream[pylot.utils.Pose], tracking_stream: Stream, prediction_stream: Stream, name: str = 'prediction_eval_operator'): @@ -446,7 +454,7 @@ def add_prediction_evaluation(pose_stream: Stream, concatenated_streams, FLAGS) -def add_behavior_planning(pose_stream, +def add_behavior_planning(pose_stream: Stream[pylot.utils.Pose], open_drive_stream, global_trajectory_stream, goal_location, @@ -464,10 +472,10 @@ def add_behavior_planning(pose_stream, return trajectory_stream -def add_planning(pose_stream, +def add_planning(pose_stream: Stream[pylot.utils.Pose], prediction_stream, - traffic_lights_stream, - lanes_stream, + traffic_lights_stream: Stream[TrafficLight], + lanes_stream: Stream[Lane], global_trajectory_stream, open_drive_stream, time_to_decision_stream, @@ -642,10 +650,10 @@ def add_gnss(transform: pylot.utils.Transform, return (gnss_stream, gnss_setup) -def add_localization(imu_stream: Stream, - gnss_stream: Stream, - ground_pose_stream: Stream, - name="localization") -> Stream: +def add_localization(imu_stream: Stream[IMUSetup], + gnss_stream: Stream[GNSSSetup], + ground_pose_stream: Stream[pylot.utils.Pose], + name="localization") -> Stream[pylot.utils.Pose]: from pylot.localization.localization_operator import LocalizationOperator op_config = erdos.operator.OperatorConfig( name=name + "_operator", @@ -659,9 +667,9 @@ def add_localization(imu_stream: Stream, return pose_stream -def add_fusion(pose_stream: Stream, obstacles_stream: Stream, - depth_stream: Stream, - ground_obstacles_stream: Stream) -> Stream: +def add_fusion(pose_stream: Stream[pylot.utils.Pose], obstacles_stream: Stream[ObstaclesMessageTuple], + depth_stream: Stream[DepthFrame] | Stream[PointCloud], + ground_obstacles_stream: Stream[Obstacle]) -> Stream: from pylot.perception.fusion.fusion_operator import FusionOperator op_config = erdos.operator.OperatorConfig( name='fusion_operator', @@ -687,7 +695,7 @@ def add_fusion(pose_stream: Stream, obstacles_stream: Stream, return obstacle_pos_stream -def add_mpc(pose_stream, waypoints_stream): +def add_mpc(pose_stream: Stream[pylot.utils.Pose], waypoints_stream): from pylot.control.mpc.mpc_operator import MPCOperator op_config = erdos.OperatorConfig(name='mpc_operator', log_file_name=FLAGS.log_file_name, @@ -698,7 +706,7 @@ def add_mpc(pose_stream, waypoints_stream): return control_stream -def add_pid_control(pose_stream, waypoints_stream): +def add_pid_control(pose_stream: Stream[pylot.utils.Pose], waypoints_stream): from pylot.control.pid_control_operator import PIDControlOperator op_config = erdos.OperatorConfig(name='pid_control_operator', log_file_name=FLAGS.log_file_name, @@ -722,7 +730,7 @@ def add_synchronizer(ground_vehicle_id_stream, stream_to_sync_on): return control_stream -def add_planning_pose_synchronizer(waypoint_stream, pose_stream, +def add_planning_pose_synchronizer(waypoint_stream, pose_stream: Stream[pylot.utils.Pose], localization_stream, notify_stream1, notify_stream2): from pylot.simulation.planning_pose_synchronizer_operator import \ @@ -739,7 +747,7 @@ def add_planning_pose_synchronizer(waypoint_stream, pose_stream, ], FLAGS) -def add_bounding_box_logging(obstacles_stream, +def add_bounding_box_logging(obstacles_stream: Stream[ObstaclesMessageTuple], file_base_name, name='bounding_box_logger_operator'): from pylot.loggers.bounding_box_logger_operator import \ @@ -766,7 +774,7 @@ def add_camera_logging(stream, name, filename_prefix): return finished_indicator_stream -def add_chauffeur_logging(vehicle_id_stream, pose_stream, +def add_chauffeur_logging(vehicle_id_stream, pose_stream: Stream[pylot.utils.Pose], obstacle_tracking_stream, top_down_camera_stream, top_down_segmentation_stream, top_down_camera_setup): from pylot.loggers.chauffeur_logger_operator import ChauffeurLoggerOperator @@ -782,8 +790,8 @@ def add_chauffeur_logging(vehicle_id_stream, pose_stream, def add_eval_metric_logging(collision_stream, lane_invasion_stream, - traffic_light_invasion_stream, imu_stream, - pose_stream): + traffic_light_invasion_stream, imu_stream: Stream[IMUSetup], + pose_stream: Stream[pylot.utils.Pose]): """ Adds an evaluation metric logging operator to the pipeline. Args: @@ -810,8 +818,8 @@ def add_eval_metric_logging(collision_stream, lane_invasion_stream, return finished_indicator_stream -def add_gnss_logging(gnss_stream: Stream, - name='gnss_logger_operator') -> Stream: +def add_gnss_logging(gnss_stream: Stream[GNSSSetup], + name='gnss_logger_operator') -> Stream[GNSSLoggerOperator]: from pylot.loggers.gnss_logger_operator import GNSSLoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -823,8 +831,8 @@ def add_gnss_logging(gnss_stream: Stream, return finished_indicator_stream -def add_pose_logging(pose_stream: Stream, - name='pose_logger_operator') -> Stream: +def add_pose_logging(pose_stream: Stream[pylot.utils.Pose], + name='pose_logger_operator') -> Stream[PoseLoggerOperator]: from pylot.loggers.pose_logger_operator import PoseLoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -836,7 +844,7 @@ def add_pose_logging(pose_stream: Stream, return finished_indicator_stream -def add_imu_logging(imu_stream: Stream, name='imu_logger_operator') -> Stream: +def add_imu_logging(imu_stream: Stream[IMUSetup], name='imu_logger_operator') -> Stream[IMULoggerOperator]: from pylot.loggers.imu_logger_operator import IMULoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -848,9 +856,9 @@ def add_imu_logging(imu_stream: Stream, name='imu_logger_operator') -> Stream: return finished_indicator_stream -def add_lidar_logging(point_cloud_stream: Stream, +def add_lidar_logging(point_cloud_stream: Stream[PointCloud], name: str = 'lidar_logger_operator', - filename_prefix: str = 'lidar') -> Stream: + filename_prefix: str = 'lidar'): from pylot.loggers.lidar_logger_operator import LidarLoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -877,8 +885,8 @@ def add_multiple_object_tracker_logging( return finished_indicator_stream -def add_trajectory_logging(obstacles_tracking_stream: Stream, - name='trajectory_logger_operator') -> Stream: +def add_trajectory_logging(obstacles_tracking_stream: Stream[ObstaclesMessageTuple], + name='trajectory_logger_operator') -> Stream[TrajectoryLoggerOperator]: from pylot.loggers.trajectory_logger_operator import \ TrajectoryLoggerOperator op_config = erdos.operator.OperatorConfig( @@ -891,19 +899,19 @@ def add_trajectory_logging(obstacles_tracking_stream: Stream, return finished_indicator_stream -def add_visualizer(pose_stream=None, - camera_stream=None, - tl_camera_stream=None, - prediction_camera_stream=None, - depth_stream=None, - point_cloud_stream=None, - segmentation_stream=None, - imu_stream=None, - obstacles_stream=None, - traffic_lights_stream=None, - tracked_obstacles_stream=None, - lane_detection_stream=None, - prediction_stream=None, +def add_visualizer(pose_stream: Stream[pylot.utils.Pose], + camera_stream: Stream[CameraFrame], + tl_camera_stream: Stream[CameraFrame], + prediction_camera_stream: Stream[CameraFrame], + depth_stream: Stream[DepthFrame] | Stream[PointCloud], + point_cloud_stream: Stream[PointCloud], + segmentation_stream: Stream[SegmentedFrame], + imu_stream: Stream[IMUSetup], + obstacles_stream: Stream[ObstaclesMessageTuple], + traffic_lights_stream: Stream[TrafficLight], + tracked_obstacles_stream: Stream[ObstacleTrajectoriesMessageTuple], + lane_detection_stream: Stream[Lane], + prediction_stream: Stream[obstacle_prediction], waypoints_stream=None, control_stream=None, name='visualizer_operator'): @@ -991,7 +999,7 @@ def add_perfect_detector(depth_camera_stream, segmented_camera_stream, pose_stream, ground_obstacles_stream, ground_speed_limit_signs_stream, - ground_stop_signs_stream): + ground_stop_signs_stream) -> Stream[ObstaclesMessageTuple]: from pylot.simulation.perfect_detector_operator import \ PerfectDetectorOperator op_config = erdos.OperatorConfig(name='perfect_detector_operator', @@ -1007,9 +1015,9 @@ def add_perfect_detector(depth_camera_stream, def add_perfect_traffic_light_detector(ground_traffic_lights_stream, - center_camera_stream, + center_camera_stream: Stream[CameraFrame], depth_camera_stream, - segmented_camera_stream, pose_stream): + segmented_camera_stream, pose_stream) -> Stream[TrafficLight]: from pylot.simulation.perfect_traffic_light_detector_operator import \ PerfectTrafficLightDetectorOperator op_config = erdos.OperatorConfig( @@ -1026,7 +1034,7 @@ def add_perfect_traffic_light_detector(ground_traffic_lights_stream, def add_perfect_lane_detector(pose_stream, open_drive_stream, - center_camera_stream): + center_camera_stream: Stream[CameraFrame]): from pylot.simulation.perfect_lane_detector_operator import \ PerfectLaneDetectionOperator op_config = erdos.OperatorConfig(name='perfect_lane_detection_operator', @@ -1054,7 +1062,7 @@ def add_perfect_tracking(vehicle_id_stream, ground_obstacles_stream, return ground_tracking_stream -def add_time_to_decision(pose_stream, obstacles_stream): +def add_time_to_decision(pose_stream, obstacles_stream: Stream[ObstaclesMessageTuple]): from pylot.control.time_to_decision_operator import TimeToDecisionOperator op_config = erdos.operator.OperatorConfig( name='time_to_decision_operator', From e03b4ddf901d75bd6b7178fbbaf168042744bc0e Mon Sep 17 00:00:00 2001 From: Hiva Mohammadzadeh Date: Thu, 28 Jul 2022 16:18:32 -0700 Subject: [PATCH 2/3] Added type annotations of operator_creator.py --- pylot/operator_creator.py | 50 ++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/pylot/operator_creator.py b/pylot/operator_creator.py index aa8222fa7..e4273f8c6 100644 --- a/pylot/operator_creator.py +++ b/pylot/operator_creator.py @@ -7,6 +7,7 @@ import erdos from erdos import Stream +from pylot import prediction from pylot.drivers.sensor_setup import (CameraSetup, GNSSSetup, IMUSetup, LidarSetup) @@ -293,9 +294,9 @@ def add_obstacle_tracking( FLAGS.tracker_type, FLAGS) -def add_center_track_tracking(bgr_camera_stream, - camera_setup, - name='center_track'): +def add_center_track_tracking(bgr_camera_stream: Stream[CameraFrame], + camera_setup: Stream[CameraSetup], + name='center_track') -> Stream[List[ObstaclesMessageTuple]]: from pylot.perception.tracking.center_track_operator import \ CenterTrackOperator op_config = erdos.OperatorConfig(name='center_track_operator', @@ -407,7 +408,7 @@ def add_segmentation_decay( def add_linear_prediction(tracking_stream: Stream, - time_to_decision_stream: Stream) -> Stream: + time_to_decision_stream: Stream) -> Stream[prediction]: from pylot.prediction.linear_predictor_operator import \ LinearPredictorOperator op_config = erdos.operator.OperatorConfig( @@ -423,8 +424,8 @@ def add_linear_prediction(tracking_stream: Stream, return prediction_stream -def add_r2p2_prediction(point_cloud_stream, obstacles_tracking_stream, - time_to_decision_stream, lidar_setup): +def add_r2p2_prediction(point_cloud_stream: Stream[PointCloud], obstacles_tracking_stream: Stream[ObstaclesMessageTuple], + time_to_decision_stream, lidar_setup: Stream[LidarSetup]) -> Stream[prediction]: from pylot.prediction.r2p2_predictor_operator import \ R2P2PredictorOperator op_config = erdos.OperatorConfig(name='r2p2_prediction_operator', @@ -563,7 +564,7 @@ def add_lane_invasion_sensor(vehicle_id_stream: Stream) -> Stream: flags=FLAGS) -def add_camera_driver(camera_setup, vehicle_id_stream, release_sensor_stream): +def add_camera_driver(camera_setup, vehicle_id_stream, release_sensor_stream) -> Stream: from pylot.drivers.carla_camera_driver_operator import \ CarlaCameraDriverOperator op_config = erdos.OperatorConfig(name=camera_setup.get_name() + @@ -653,7 +654,7 @@ def add_gnss(transform: pylot.utils.Transform, def add_localization(imu_stream: Stream[IMUSetup], gnss_stream: Stream[GNSSSetup], ground_pose_stream: Stream[pylot.utils.Pose], - name="localization") -> Stream[pylot.utils.Pose]: + name="localization") -> Stream: from pylot.localization.localization_operator import LocalizationOperator op_config = erdos.operator.OperatorConfig( name=name + "_operator", @@ -695,7 +696,7 @@ def add_fusion(pose_stream: Stream[pylot.utils.Pose], obstacles_stream: Stream[O return obstacle_pos_stream -def add_mpc(pose_stream: Stream[pylot.utils.Pose], waypoints_stream): +def add_mpc(pose_stream: Stream[pylot.utils.Pose], waypoints_stream) -> Stream: from pylot.control.mpc.mpc_operator import MPCOperator op_config = erdos.OperatorConfig(name='mpc_operator', log_file_name=FLAGS.log_file_name, @@ -706,7 +707,7 @@ def add_mpc(pose_stream: Stream[pylot.utils.Pose], waypoints_stream): return control_stream -def add_pid_control(pose_stream: Stream[pylot.utils.Pose], waypoints_stream): +def add_pid_control(pose_stream: Stream[pylot.utils.Pose], waypoints_stream) -> Stream: from pylot.control.pid_control_operator import PIDControlOperator op_config = erdos.OperatorConfig(name='pid_control_operator', log_file_name=FLAGS.log_file_name, @@ -717,7 +718,7 @@ def add_pid_control(pose_stream: Stream[pylot.utils.Pose], waypoints_stream): return control_stream -def add_synchronizer(ground_vehicle_id_stream, stream_to_sync_on): +def add_synchronizer(ground_vehicle_id_stream, stream_to_sync_on) -> Stream: from pylot.simulation.synchronizer_operator import SynchronizerOperator op_config = erdos.OperatorConfig(name='synchronizer_operator', flow_watermarks=False, @@ -791,7 +792,7 @@ def add_chauffeur_logging(vehicle_id_stream, pose_stream: Stream[pylot.utils.Pos def add_eval_metric_logging(collision_stream, lane_invasion_stream, traffic_light_invasion_stream, imu_stream: Stream[IMUSetup], - pose_stream: Stream[pylot.utils.Pose]): + pose_stream: Stream[pylot.utils.Pose]) -> Stream: """ Adds an evaluation metric logging operator to the pipeline. Args: @@ -819,7 +820,7 @@ def add_eval_metric_logging(collision_stream, lane_invasion_stream, def add_gnss_logging(gnss_stream: Stream[GNSSSetup], - name='gnss_logger_operator') -> Stream[GNSSLoggerOperator]: + name='gnss_logger_operator') -> Stream: from pylot.loggers.gnss_logger_operator import GNSSLoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -832,7 +833,7 @@ def add_gnss_logging(gnss_stream: Stream[GNSSSetup], def add_pose_logging(pose_stream: Stream[pylot.utils.Pose], - name='pose_logger_operator') -> Stream[PoseLoggerOperator]: + name='pose_logger_operator') -> Stream: from pylot.loggers.pose_logger_operator import PoseLoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -844,7 +845,7 @@ def add_pose_logging(pose_stream: Stream[pylot.utils.Pose], return finished_indicator_stream -def add_imu_logging(imu_stream: Stream[IMUSetup], name='imu_logger_operator') -> Stream[IMULoggerOperator]: +def add_imu_logging(imu_stream: Stream[IMUSetup], name='imu_logger_operator') -> Stream: from pylot.loggers.imu_logger_operator import IMULoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -858,7 +859,7 @@ def add_imu_logging(imu_stream: Stream[IMUSetup], name='imu_logger_operator') -> def add_lidar_logging(point_cloud_stream: Stream[PointCloud], name: str = 'lidar_logger_operator', - filename_prefix: str = 'lidar'): + filename_prefix: str = 'lidar') -> Stream: from pylot.loggers.lidar_logger_operator import LidarLoggerOperator op_config = erdos.operator.OperatorConfig( name=name, @@ -872,7 +873,7 @@ def add_lidar_logging(point_cloud_stream: Stream[PointCloud], def add_multiple_object_tracker_logging( - obstacles_stream, name='multiple_object_tracker_logger_operator'): + obstacles_stream, name='multiple_object_tracker_logger_operator') -> Stream: from pylot.loggers.multiple_object_tracker_logger_operator import \ MultipleObjectTrackerLoggerOperator op_config = erdos.OperatorConfig(name=name, @@ -914,7 +915,7 @@ def add_visualizer(pose_stream: Stream[pylot.utils.Pose], prediction_stream: Stream[obstacle_prediction], waypoints_stream=None, control_stream=None, - name='visualizer_operator'): + name='visualizer_operator') -> Tuple[Stream, Stream]: from pylot.debug.visualizer_operator import VisualizerOperator import pygame pygame.init() @@ -996,8 +997,9 @@ def add_visualizer(pose_stream: Stream[pylot.utils.Pose], def add_perfect_detector(depth_camera_stream, center_camera_stream: Stream[CameraFrame], - segmented_camera_stream, pose_stream, - ground_obstacles_stream, + segmented_camera_stream, + pose_stream: Stream[pylot.utils.Pose], + ground_obstacles_stream : Stream[Obstacle], ground_speed_limit_signs_stream, ground_stop_signs_stream) -> Stream[ObstaclesMessageTuple]: from pylot.simulation.perfect_detector_operator import \ @@ -1017,7 +1019,7 @@ def add_perfect_detector(depth_camera_stream, def add_perfect_traffic_light_detector(ground_traffic_lights_stream, center_camera_stream: Stream[CameraFrame], depth_camera_stream, - segmented_camera_stream, pose_stream) -> Stream[TrafficLight]: + segmented_camera_stream, pose_stream) -> List[Stream]: from pylot.simulation.perfect_traffic_light_detector_operator import \ PerfectTrafficLightDetectorOperator op_config = erdos.OperatorConfig( @@ -1034,7 +1036,7 @@ def add_perfect_traffic_light_detector(ground_traffic_lights_stream, def add_perfect_lane_detector(pose_stream, open_drive_stream, - center_camera_stream: Stream[CameraFrame]): + center_camera_stream: Stream[CameraFrame]) -> List[Stream]: from pylot.simulation.perfect_lane_detector_operator import \ PerfectLaneDetectionOperator op_config = erdos.OperatorConfig(name='perfect_lane_detection_operator', @@ -1049,7 +1051,7 @@ def add_perfect_lane_detector(pose_stream, open_drive_stream, def add_perfect_tracking(vehicle_id_stream, ground_obstacles_stream, - pose_stream): + pose_stream: Stream[pylot.utils.Pose]) -> List[Stream]: from pylot.simulation.perfect_tracker_operator import \ PerfectTrackerOperator op_config = erdos.OperatorConfig(name='perfect_tracking_operator', @@ -1062,7 +1064,7 @@ def add_perfect_tracking(vehicle_id_stream, ground_obstacles_stream, return ground_tracking_stream -def add_time_to_decision(pose_stream, obstacles_stream: Stream[ObstaclesMessageTuple]): +def add_time_to_decision(pose_stream: Stream[pylot.utils.Pose], obstacles_stream: Stream[ObstaclesMessageTuple]) -> Stream: from pylot.control.time_to_decision_operator import TimeToDecisionOperator op_config = erdos.operator.OperatorConfig( name='time_to_decision_operator', From b674f545d2b2af87907ca51685eae8d51811618d Mon Sep 17 00:00:00 2001 From: Hiva Mohammadzadeh Date: Thu, 28 Jul 2022 16:49:26 -0700 Subject: [PATCH 3/3] Adding annotations for component_creator.py --- pylot/component_creator.py | 42 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/pylot/component_creator.py b/pylot/component_creator.py index a2aa71be7..d910ef673 100644 --- a/pylot/component_creator.py +++ b/pylot/component_creator.py @@ -6,12 +6,14 @@ from absl import flags from erdos import Stream +from pylot import prediction import pylot.operator_creator -from pylot.drivers.sensor_setup import DepthCameraSetup, RGBCameraSetup, \ +from pylot.drivers.sensor_setup import DepthCameraSetup, IMUSetup, LidarSetup, RGBCameraSetup, \ SegmentedCameraSetup, CameraSetup from pylot.perception.camera_frame import CameraFrame from pylot.perception.depth_frame import DepthFrame +from pylot.perception.detection import obstacle from pylot.perception.detection.lane import Lane from pylot.perception.messages import (ObstacleTrajectoriesMessageTuple, ObstaclesMessageTuple, @@ -438,14 +440,15 @@ def add_segmentation(center_camera_stream: Stream[CameraFrame], return segmented_stream -def add_prediction(obstacles_tracking_stream, - vehicle_id_stream, - time_to_decision_stream, - camera_transform=None, - release_sensor_stream=None, - pose_stream=None, - point_cloud_stream=None, - lidar_setup=None): +def add_prediction(obstacles_tracking_stream: Stream[ObstaclesMessageTuple], + vehicle_id_stream: Stream[int], + release_sensor_stream: Stream[None], + point_cloud_stream: Stream[PointCloud], + lidar_setup: Stream[LidarSetup], + pose_stream: Optional[Stream[pylot.utils.Pose]] = None, + Camera_transform = None, + time_to_decision_stream: Optional[Stream[float]] = None + ) -> Tuple[Stream[prediction], Stream[int], Stream]: """Adds prediction operators. Args: @@ -508,9 +511,14 @@ def add_prediction(obstacles_tracking_stream, notify_reading_stream) -def add_planning(goal_location, pose_stream, prediction_stream, - traffic_lights_stream, lanes_stream, open_drive_stream, - global_trajectory_stream, time_to_decision_stream): +def add_planning(goal_location, + traffic_lights_stream: Stream[TrafficLight], + lanes_stream: Stream[Lane], + open_drive_stream: Stream, + global_trajectory_stream, + prediction_stream: Stream[prediction], + time_to_decision_stream: Optional[Stream[float]] = None, + pose_stream: Optional[Stream[pylot.utils.Pose]] = None) -> Stream: """Adds planning operators. Args: @@ -544,10 +552,10 @@ def add_planning(goal_location, pose_stream, prediction_stream, return waypoints_stream -def add_control(pose_stream, - waypoints_stream, - ground_vehicle_id_stream=None, - perfect_obstacles_stream=None): +def add_control(waypoints_stream, + ground_vehicle_id_stream: Stream[int], + perfect_obstacles_stream: Stream[obstacle], + pose_stream: Optional[Stream[pylot.utils.Pose]] = None) -> Tuple[Stream, Stream]: """Adds ego-vehicle control operators. Args: @@ -597,7 +605,7 @@ def add_control(pose_stream, return control_stream -def add_evaluation(vehicle_id_stream, pose_stream, imu_stream): +def add_evaluation(vehicle_id_stream: Stream[int], pose_stream: Optional[Stream[pylot.utils.Pose]] = None, imu_stream: Optional[Stream[IMUSetup]] = None) -> Stream: if FLAGS.evaluation: logger.debug('Adding collision logging sensor...') collision_stream = pylot.operator_creator.add_collision_sensor(