I first set up the CARLA (open-source self-driving car simulator) server and the ROS Bridge. You can find a short guide-cum-notes I have put together on my GitHub (permalink here) to get the ROS-CARLA integration right.
The global planner provided by CARLA was used to get the waypoints to a specified destination. The controller node controlled the speed of the car and the steering, avoiding obstacles using cost maps while largely sticking to the global path. Rviz was used for topic visualization.
Guide: Prof. Debasish Chakravarty