def METHOD_NAME(self, srv):
    """
    Find position of sub and launch the torpedo from there.
    TODO:
        - Test to make sure it always fires from the right spot in the right direction.
            (It seems to but I haven't tested from all rotations.)
    """
    rospy.loginfo("Launching torpedo")
    sub_state = self.get_model(model_name="sub8")
    sub_pose = msg_helpers.pose_to_numpy(sub_state.pose)
    # Translate torpedo init velocity so that it first out of the front of the sub.
    muzzle_vel = np.array([10, 0, 0])
    v = geometry_helpers.rotate_vect_by_quat(np.append(muzzle_vel, 0), sub_pose[1])
    launch_twist = Twist()
    launch_twist.linear.x = v[0]
    launch_twist.linear.y = v[1]
    launch_twist.linear.z = v[2]
    # This is offset so it fires approx at the torpedo launcher location.
    launch_pos = geometry_helpers.rotate_vect_by_quat(
        np.array([0.4, -0.15, -0.3, 0]), sub_pose[1]
    )
    model_state = ModelState()
    model_state.model_name = "torpedo"
    model_state.pose = msg_helpers.numpy_quat_pair_to_pose(
        sub_pose[0] + launch_pos, sub_pose[1]
    )
    model_state.twist = launch_twist
    self.set_torpedo(model_state)
    self.launched = True
    return True