For an autonomous robotic system, detecting, opening, and navigating through doors remains a very challenging problem. It involves several hard-to-solve sub-tasks such as recognizing the door, grasping the handle, discriminating between pulling or pushing the door, and detecting locked doors. Previous works tackle individual sub-problems, assuming that the robot is already facing the door handle or that the robot knows in advance the exact location of the door. However, ignoring the navigation through the door, using specialized robots, or specific types of doors, reduce the applicability of existing approaches. In this paper, we present a unified framework for the door opening problem, by taking a navigation scenario as a reference. We implement specific algorithms to solve each sub-task, and describe the hierarchical automata which integrates the control of the robot during the entire process. Moreover, we implement error recovery mechanisms to add robustness and to guarantee a high success rate. We carry out experiments on a realistic scenario using a standard service robot, the Toyota Human Support Robot. We show that our framework can successfully detect, open, and navigate through doors in a reliable way, with low error rates, and without adapting the environment to the robot. Our experiments demonstrate the high applicability of our framework.