This thesis investigates the use of Beliefs-Desires-Intentions (BDI) for controlling autonomous mobile robots. Autonomous systems should be designed for flexibility so that they can intelligently react to ever-changing environments and operational conditions. If they are given such flexibility, they can accept goals and set a path to achieve these goals in a self-responsible manner while displaying some form of intelligence. Developers of autonomous mobile robotics are interested in how to program mobile robots while guaranteeing reliability and resilience. In investigating BDI for controlling autonomous mobile robots, the Agent in a Box framework was developed. This framework includes a general architecture for connecting a Jason agent to the environment using Robot Operating System (ROS). This connection is flexible to a variety of application domains that use different sensors and actuators. The Agent in a Box provides the needed customization to the agent's reasoner, ensuring that the agent's behaviours are properly prioritized. Generic plans for behaviours that are common to a variety of mobile robots are also provided. These include plans for resource management and for navigation, which generates a route to a destination in the form of a plan which can be monitored and interrupted by the reasoner if needed. These components allow developers, for specific application domains, to focus on domain-specific code. Agents implemented using the Agent in a Box are rational, mission capable, safety conscious, fuel autonomous, and understandable. The Agent in a Box was used to demonstrate the capability of BDI agents to control robots in a variety of application domains through a set of case studies: a grid environment, a simulated autonomous car, and a prototype mail delivery robot. These case studies demonstrated that the agent was able to successfully control the robots in all the application domains tested, including when it was run on a Raspberry Pi computer. By implementing with the Agent in a Box, the development burden was reduced because the framework provided generic behaviours that could be used by each of the agents. The Agent in a Box was found to enforce good software engineering practices with better runtime performance than other approaches.