1. A method of planning a path of a vehicle, the method comprising the steps of: defining a first plurality of constraints representing dynamics of the vehicle; defining a second plurality of constraints representing collisions with obstacles; defining a third plurality of constraints representing visibility to threats; and using the first, second and third plurality of constraints with mixed integer linear programming to generate a trajectory for a vehicle from a starting point to a destination point in an environment containing the obstacles and the threats.