def METHOD_NAME(extra, target_object):
    """
    Calls the GetModelState service from gazebo to get the realtime position of the model targeted.
    Provides this information to the mission.
    @param extra The target_name passed through some missions.
    Other missions do not pass a target_name thus its label of extra.
    @param target_object Is the model name of the object targeted by the mission.
    Missions that do not pass a target_name must use this.
    """
    now = rospy.get_rostime()
    k = np.uint32(0)
    if extra != "":
        target_object = extra
    if target_object == "":
        fprint("NO TARGET")
        sys.exit(0)
    model = get_position(target_object)
    # Library of offsets. Models must be manually offset as gazebo coordinates != center of model.
    centlib = {
        "start_gate": Point(1.5, 0, 0),
        "nav_gate": Point(1.15, 0, 0),
        "orange_rectangle": Point(0, 0, 2),
    }
    if target_object in centlib:
        offset = centlib[target_object]
    else:
        offset = Point(0, 0, 0)
    pose_stamp = PoseStamped(
        header=Header(seq=k, stamp=now, frame_id="/map"),
        # Offset our pose by the starting position of the sub relative to the world in Gazebo.
        pose=Pose(
            position=Point(
                model.pose.position.x - 13 + offset.x,
                model.pose.position.y - 24 + offset.y,
                model.pose.position.z + offset.z,
            ),
            orientation=model.pose.orientation,
        ),
    )
    covariance_diagonal = Vector3(0, 0, 0)
    found = True
    resp2 = VisionRequestResponse(pose_stamp, covariance_diagonal, found)
    return resp2