Hi mrdauz,
there is still the possibility to use PWM for the motor. If the robot moves downhill the motor current will decrease. Use the difference between straight and level movement and downhill movement current flow to control the PWM signal.
Just think of driving a car. The same applies here. You just have to reduce throttle position accordingly to maintain speed.
That will only work within a certain range, considering your car won't maintain speed at a downhill slope of 7% without extra braking or shifting gears.
With an electric motor you won't need to apply brakes, but short out the motor for hard braking.
I suggest using an MCU for your project.
Regards
Boncuk