def create_rgb_trainer_params():
    from params.simulator.sbpd_simulator_params import create_params as create_simulator_params
    from params.visual_navigation_trainer_params import create_params as create_trainer_params

    from params.waypoint_grid.sbpd_image_space_grid import create_params as create_waypoint_params
    from params.model.resnet50_arch_v1_params import create_params as create_model_params

    from params.reachability_map.reachability_map_params import create_params as create_reachability_map_params

    # Load the dependencies
    simulator_params = create_simulator_params()

    # Seed
    simulator_params.seed = 10

    # Ensure the waypoint grid is projected SBPD Grid
    simulator_params.planner_params.control_pipeline_params.waypoint_params = create_waypoint_params(
    )

    # Ensure the renderer modality is rgb
    simulator_params.obstacle_map_params.renderer_params.camera_params.modalities = [
        'rgb'
    ]
    simulator_params.obstacle_map_params.renderer_params.camera_params.img_channels = 3
    simulator_params.obstacle_map_params.renderer_params.camera_params.width = 1024
    simulator_params.obstacle_map_params.renderer_params.camera_params.height = 1024
    simulator_params.obstacle_map_params.renderer_params.camera_params.im_resize = 0.21875

    # Change episode horizon
    simulator_params.episode_horizon_s = 80.0

    # Ensure the renderer is using area3
    # TODO: When generating our own data, choose area 3, area4, area5
    #  When testing, choosing area 1
    simulator_params.obstacle_map_params.renderer_params.building_name = 'area4'
    # TODO: area3: thread='v1'; area4: thread='v2'; area5a: thread='v3'
    simulator_params.reachability_map_params.thread = 'v2'
    # specify reachability data dir name according to building_name and thread
    create_reachability_data_dir_params(
        simulator_params.reachability_map_params)

    # Save trajectory data
    simulator_params.save_trajectory_data = True

    # Choose cost function
    # TODO: in training, always use 'heuristics'
    # simulator_params.cost = 'heuristics'  # heuristics cost.
    simulator_params.cost = 'reachability'

    p = create_trainer_params(simulator_params=simulator_params)

    # Create the model params
    p.model = create_model_params()

    return p
def create_rgb_trainer_params():
    from params.simulator.sbpd_simulator_params import create_params as create_simulator_params
    from params.visual_navigation_trainer_params import create_params as create_trainer_params

    from params.waypoint_grid.sbpd_image_space_grid import create_params as create_waypoint_params
    from params.model.resnet50_arch_v1_params import create_params as create_model_params

    # Load the dependencies
    simulator_params = create_simulator_params()

    # Ensure the waypoint grid is projected SBPD Grid
    simulator_params.planner_params.control_pipeline_params.waypoint_params = create_waypoint_params(
    )

    # Ensure the renderer modality is rgb
    simulator_params.obstacle_map_params.renderer_params.camera_params.modalities = [
        'rgb'
    ]
    simulator_params.obstacle_map_params.renderer_params.camera_params.img_channels = 3
    simulator_params.obstacle_map_params.renderer_params.camera_params.width = 1024
    simulator_params.obstacle_map_params.renderer_params.camera_params.height = 1024
    simulator_params.obstacle_map_params.renderer_params.camera_params.im_resize = 0.21875

    # Ensure the renderer is using area1
    simulator_params.obstacle_map_params.renderer_params.building_name = 'area1'

    # Change the episode horizon
    simulator_params.episode_horizon_s = 80.0

    # Save trajectory data
    simulator_params.save_trajectory_data = True

    p = create_trainer_params(simulator_params=simulator_params)

    # Create the model params
    p.model = create_model_params()

    return p
def create_params(simulator_params):
    p = DotMap()

    p.simulator_params = simulator_params

    # Model parameters
    p.model = create_model_params()
    
    # Data processing parameters
    p.data_processing = DotMap(
                                # NN Input processing function
                                input_processing_function=None,
                                
                                # NN output processing function
                                output_processing_function=None
    )
    
    # Loss function parameters
    p.loss = DotMap(
                    # Type of the loss function
                    loss_type='mse',

                    # Weight regularization co-efficient
                    regn=1e-6,

                    # Velocity Smoothing co-efficient for end-to-end networks
                    smoothing_coeff=0.0
    )
    
    # Trainer parameters
    p.trainer = DotMap(
                        # Trainer seed
                        seed=10,
                        
                        # Number of epochs
                        num_epochs=400,
        
                        # Total number of samples in the dataset
                        num_samples=int(20e3),
        
                        # The percentage of the dataset that corresponds to the training set
                        training_set_size=0.8,
        
                        # Batch size
                        batch_size=64,
                        
                        # The training optimizer
                        optimizer=tf.train.AdamOptimizer,
        
                        # Learning rate
                        lr=1e-4,
                        
                        # Learning schedule
                        learning_schedule=1,
        
                        # Learning schedule adjustment parameters
                        lr_decay_frequency=None,
                        lr_decay_factor=None,
        
                        # Checkpoint settings
                        max_num_ckpts_to_keep=int(1e2),
                        ckpt_save_frequency=20,
                        ckpt_path='',
                        restore_from_ckpt=False,

                        # Callback settings
                        callback_frequency=20,
                        callback_number_tests=50,
                        callback_seed=10,

                        # For models which regress to waypoints in the image space
                        # True: Supervision for model outputs is normalized to a 0, 1 range
                        # False: Supervision for model outputs is kept in its normal range
                        rescale_imageframe_coordinates = False,

                        # Custom Simulator Parameters for Training. Add more as needed.
                        simulator_params=deepcopy(p.simulator_params)

    )

    # Data creation parameters

    # Custom Simulator Parameters for Data Creation
    simulator_params = deepcopy(p.simulator_params)

    # Change the reset parameters for the simulator
    reset_params = simulator_params.reset_params
    reset_params.obstacle_map.params = DotMap(min_n=5, max_n=5,
                                              min_r=.3, max_r=.8)
    reset_params.start_config.heading.reset_type = 'random'
    reset_params.start_config.speed.reset_type = 'zero'
    reset_params.start_config.ang_speed.reset_type = 'zero'

    p.data_creation = DotMap(
                                # Number of data points
                                data_points=int(100e3),
        
                                # Number of data points per file
                                data_points_per_file=1000,
                                
                                # Data directory
                                data_dir='./REPLACE_ME',

                                # Custom Simulator Params
                                simulator_params = simulator_params
    )

    # Custom Simulator Parameters for Testing
    simulator_params = deepcopy(p.simulator_params)

    # Test parameters
    p.test = DotMap(
                    # Test seed
                    seed=10,
                    
                    simulate_expert=True,

                    expert_success_goals=DotMap(use=False,
                                                dirname = ''),
                    
                    number_tests=100,

                    # If true the velocity and angular velocity profiles of the robot
                    # are plotted along with the x, y, theta trajectory
                    plot_controls=True,

                    # If true, the observed images (topview/occupancy grid, rgb, or depth)
                    # for each episode are plotted as well
                    plot_images=True,
                    
                    # Custom Simulator Parameters for Testing. Add more as needed
                    simulator_params=simulator_params
    )

    return p