I have a brushless motor with a propeller attached, driven by an ESC and a LiPo battery. I noticed that as the battery level drops, the motor spins slower, which makes sense. My question is is it possible to get constant performance out of the motor (constant RPM) as the voltage of the battery drops from 4.2 to 3.7V?
If your only goal is a constant speed throughout the charge cycle of the battery, you could drop the voltage to something below the low end of the battery range. If you set the voltage at 3.7 V, you'll draw less current at the high end of the battery charge and more at the low end, but the voltage should stay constant.
Of course, this doesn't give you the maximum speed possible at all times. For that, using something like what Kojoe mentioned is your best bet, but it will drain your battery faster.
For DC motors, RPM depends on volts and Torque depends on current. To keep constant RPMs you need to have some volts (corresponding to the required RPM).
I am not sure though how do you want to keep constant performance when your energy source is getting depleted.
Knowing that you want to keep the motor RPM at a fix value, the watt at the motor need to stay the same and the mechanical resistance at that fix RPM also remain the same (mainly air resistance).
It is possible, IF: 1) Regulate the voltage between the battery and the ESC so that the voltage seen by the ESC stays the same. You could use a buck-boost circuit. Note that, as the battery voltage drop, the current will increase to maintain the same Power. You might then be limited by the internal resistance of the battery, keeping it from discharging the required current.
2) You change the pitch of the propeller (thus changing the air resistance). The RPM will stay the same but the overall performance will take the hit (lower torque and lower max speed).