I went out and try the altitude hold mode with the LV-EZ0 ultrasonic sensor over a grass field. It worked like a dream up to about 3-4 meters, maybe some hiccups here and there, but very smooth overall.
However it happened to me three times that the copter rocketed into the sky, forcing me back into stabilize mode. This seemed to happen at about 4 meters, though don't take the number too strictly.
I think that the barometer might not be reliable, and, as it switches from ultrasonic to barometer, it flies off because its getting the wrong readings. How could I verify that this is indeed the case (and not something else) and how can I fix this?
Edit 1: The barometer is covered in foam.
I had this problem with my APM1 (do not have a LV-EZ0 ultrasonic sensor).
When I tried to put it in alt_hold or loiter it rockeded in to the sky. I tried a lot of things, and the thing that worked was
putting the APM on foam. The rip-away sort you find in cases-stuffing like Pellycases.
I run 2.9.1
If I understand the instructions correctly, altitude hold does not actually hold an altitude. I believe it invokes a constant throttle setting instead. So that if the copter is in stable hover, that will be maintained but if it is climbing when altitude hold is turned on, then it will continue to climb.
Maybe someone else can clarify this further.