Issues with using GPS & servo together

JeffsInventions:
In my experience, in order for the servo to hold a particular angle, it needs to be constantly receiving a PWM signal. However, if I am manually generating the PWM signal, then any time the Arduino runs other code (e.g, updating the gps or running the obstacle avoidance algorithm), it stops sending the PWM signal. Is there a work around for this?

The Uno has 3 hardware timers, the Mega more. All of those can be configured to output PWM signals and toggle a pin in hardware. Thus the pin is continually toggled regardless of what the code is doing. If you want reliable, constant PWM, use the hardware PWM.

Are Uno shields compatible with Mega boards? Might a Mega solve my problem?

The first pins are largely compatible. Some shields work on the Mega.

However you should be able to get a Uno to do it you can manage with only 3 timers. Normally one of them is used for timekeeping (the millis() and delay() functions).

All timers have 2 outputs each (the A and B sides) so you have a total of 6 hardware outputs (marked with a ~ on the board). That should be enough.