def register_sensor(request, response):
    '''
    :param request: dict of {drone_name: string, drone_type: string}
    Parent drone must be initiated before sensors are registered.
    '''
    print("Calling register_sensor service...")
    if checkLatestService(request, "register_sensor"):
        response["message"] = latestService[1]["message"]
        response["success"] = latestService[1]["success"]
        response["id"] = latestService[1]["id"]
        return True

    sensor_name = request["sensor_name"]
    sensor_type = request["sensor_type"]
    parent_drone_name = request["parent_drone_name"]

    if sensor_name in sensor_names:
        response["success"] = False
        response["message"] = "A sensor with this name already exists."
        response["id"] = 0
        print("A sensor with the name", sensor_name, "already exists")
        saveLatestService(request, response, "register_sensor")
        return True

    s = None
    if parent_drone_name in drone_names:
        parent_drone_id = drone_names[parent_drone_name]
        sensor_id = get_id(Sensor)
        s = Sensor.create(sensor_name, sensor_type, ROS_master_connection,
                          parent_drone_id, sensor_id)
        print(f"Adding sensor {id} to global sensor map.")
        sensors[sensor_id] = s
        sensor_names[sensor_name] = sensor_id
        drones.get(parent_drone_id).sensors.append(s)
        response["success"] = True
        response["id"] = s.id
        response["message"] = "Sensor registered"
    else:
        response["success"] = False
        response["id"] = 0
        response["message"] = "No drone with that name."

    print(sensor_names)
    print(sensors)
    print("Register_sensor service finished!")
    saveLatestService(request, response, "register_sensor")
    return True