The game consists of a grid (a Tiled map), and "units" which occupy grid cell locations (one per cell). Units are moved by touching and dragging them and dropping them in a new empty location.
Units cannot move through some terrain and cannot move through other units, so if they are dragged through another unit, they should stop in the empty cell location closest to where they bumped into the other unit.
I have written a simple mechanism for detecting collisions and backing off to the previous cell location. This works fine for slow movement, because the ccTouchMoved event is frequent enough that the previous location is always a good place to drop the unit.
However, if the user drags rapidly over the screen, the TouchMoved events don't arrive fast enough, such that between two events there can be 200 pixels or more, which for me is many cells. A solution to that then is for me to measure a line between the two points, and then determine the path of that line and check for collisions with every cell on that path. It was at this point that I decided to look at Chipmunk and use that for collision detection, in the hope that it will be much better (and faster) than my code at handling all of this, and give me increased ability for future features too.
(Sorry for the long boring intro story btw! But it might help provide a solution faster than without it

So I have added Chipmunk, removed my "manual" collision detection (which was really crude - basically went through the whole array of all units on the screen at the time to compare their locations, on every single movement event) and I now have Chipmunk detecting collisions instead, and that all appears to be working fine, and has got me back to the same place I was at above in that I now need to do the path detection, and find out where to drop the moving collided unit if it is dragged at high speed through grid locations that should stop it.
My question is that it seems to me this is likely to be an extremely common problem and one that has a well-known and ready solution that perhaps already exists in Chipmunk.
Is that the case? If so, can someone point me in the right direction for it please? Sorry if it is easy to find, I have been looking

Thanks for any help!