Hi,
implementing such stuff has to be done by your own controllers gazebo only provides the physical simulation.
To recognize static obstacles you can use Sensors like the laser scanners. A very primitive approach would be if you detect an object on the right side you move left...(This is probably not the best approach cause you might get stuck in corners etc...)
For path planning you will need some kind of other representation(a map) of your world. This map could be used for different path planning algorithms. If you want to use a map you have to now if this is generated in runtime or if it is know to the robot before you start. If you have to create a map at runtime you might want to take a look at SLAM packages...
After you got a map you can use common path planners with it. Which is the best planner for your purposes is not an easy question. It depends highly on the environment your in, on the size of your environment, if there are moving obstacles etc, maybe the SBPL or OMPL Planners have an algorithm that suits your needs...
It might be a good idea to look at ROS for some of this things, but it is not mandatory...