It should stop PUSHING when it encounters a block so it doesn't crush any more than it has.
One motion system I did had an Omron optical encoder. In the system we had, it gave us .007" resolution over about 12' (16 bits IIRC). Built in NVRAM so it kept zero and position even when off. If the pulses slowed unexpected we'd command a small reverse and then stop to release whatever we'd hit. We measured pulse period to detect s-l-o-w-i-n-g ...