How can I calculate the shortest path between two 2d vector points in an environment with obstacles?
The usual way to solve this kind of problem is to construct a configuration space: extruding all the polygonal obstacles by sliding the polygon corresponding to the robot around them (some slides).

The exterior vertices of the configuration space can then be used as input to a path-planning algorithm, such as A*.