Coincidentally I recently did some research in this area ( using PlayStation®Move )
The most powerful solution I could find was ( simply said ) a combination of the following elements.
- During collision calculate the penetration direction + depth and move the camera relative to the inverse of this vector*
- During collision set the rumble intensity relative to the penetration delta + depth to represent the applied pressure.
+ Upon collision enable rumble for a single frame to let the player know collision has occurred ( state switch ).
* Similar to when you're pushing into a wall, causing your body to move / tilt into the opposite direction.