A system for controlling an unmanned aerial vehicle (1200, 1300), UAV, within an environment, the system comprising: one or more sensors (1208, 1302) carried by the unmanned aerial vehicle (1200, 1300) and configured to provide sensor data; and one or more processors individually or collectively configured to: determine, based on the sensor data, an environment type for the environment from a plurality of different environment types comprising an indoor environment, an outdoor environment, a high altitude environment and a low altitude environment; select a flight mode from a plurality of different flight modes based on the environment type, wherein each of the plurality of different flight modes is associated with a different set of operating rules for the unmanned aerial vehicle (1200, 1300) that define a desired obstacle avoidance strategy such that each of the plurality of different flight modes is associated with an obstacle avoidance strategy of a plurality of avoidance strategies, and cause the unmanned aerial vehicle (1200, 1300) to operate within the environment while conforming to the set of operating rules of the selected flight mode, wherein the set of operating rules defines an obstacle avoidance strategy for the unmanned aerial vehicle (1200, 1300) that is configured for the environment type. one or more sensors (1208, 1302) carried by the unmanned aerial vehicle (1200, 1300) and configured to provide sensor data; and one or more processors individually or collectively configured to: determine, based on the sensor data, an environment type for the environment from a plurality of different environment types comprising an indoor environment, an outdoor environment, a high altitude environment and a low altitude environment; select a flight mode from a plurality of different flight modes based on the environment type, wherein each of the plurality of different flight modes is associated with a different set of operating rules for the unmanned aerial vehicle (1200, 1300) that define a desired obstacle avoidance strategy such that each of the plurality of different flight modes is associated with an obstacle avoidance strategy of a plurality of avoidance strategies, and cause the unmanned aerial vehicle (1200, 1300) to operate within the environment while conforming to the set of operating rules of the selected flight mode, wherein the set of operating rules defines an obstacle avoidance strategy for the unmanned aerial vehicle (1200, 1300) that is configured for the environment type. determine, based on the sensor data, an environment type for the environment from a plurality of different environment types comprising an indoor environment, an outdoor environment, a high altitude environment and a low altitude environment; select a flight mode from a plurality of different flight modes based on the environment type, wherein each of the plurality of different flight modes is associated with a different set of operating rules for the unmanned aerial vehicle (1200, 1300) that define a desired obstacle avoidance strategy such that each of the plurality of different flight modes is associated with an obstacle avoidance strategy of a plurality of avoidance strategies, and cause the unmanned aerial vehicle (1200, 1300) to operate within the environment while conforming to the set of operating rules of the selected flight mode, wherein the set of operating rules defines an obstacle avoidance strategy for the unmanned aerial vehicle (1200, 1300) that is configured for the environment type.