Possibility? I haven’t done this myself and will not write the code for you.
Using just the existing python SDK, write a wrapper function for the set_position. Within that wrapper function, make a vector from your current position to target position. Do 1 mm motions (or whatever increment you think is good) in a for loop from current to target position. Allow keyboard input break the for loop and thus stop motion. You need sleep between motions, otherwise all motion will be queue, I think.
Or if you looking to see if there is a collision, run the get_position after each increment. If the get_position doesn’t get closer, then you collided with something break the for loop.