A system for controlling a vehicle, wherein the vehicle comprises a land-based vehicle or an aircraft, the vehicle which is configured to be controlled to move autonomously based on control values and acceleration values, the system comprising:
- a navigation module;
- a control module;
- at least one camera;
- a recognition module;
- a safety-determining module;
- a communication module;
- a data storage for camera images, wherein the navigation module, the control module, the at least one camera, the recognition module, the safety-determining module, the communication module, and the data storage are communicatively coupled, the system configured to execute a method comprising:
- obtaining, by the navigation module, a destination for the vehicle, wherein the destination is selected from a finite list of destinations;
- determining, by the navigation module, a current location of the vehicle based on obtaining a last known location of the vehicle;
- generating, by the navigation module, a route from the current location of the vehicle to the destination, wherein the route comprises one or more navigational points;
- converting, by the navigation module, the route into one or more navigational instructions, wherein each navigational instruction of the navigational instructions comprises a terminating navigational point selected from the navigational points;
- continuously obtaining, by the at least one camera, images, wherein the at least one camera captures images from the vehicle;
- transmitting, by the at least one camera, the images to the navigation module, the control module, the recognition module, and the safety-determining module;
- storing, by the safety-determining module, the images in the data storage, wherein the storing comprises pre-processing the images for image recognition;
- based on the storing, annotating, by the safety-determining module, each stored image of the stored images in the data storage with an annotation representing the navigation point of the navigational points representing a physical position of the vehicle when each image was obtained;
- obtaining, by the control module, a control value and an acceleration value for at least one navigational instruction of the navigational instructions, wherein the control value and the acceleration value comprise movement instructions to control the vehicle to execute the at least one navigational instruction, the obtaining comprising:
- obtaining, by the safety-determining module, a live image from the camera;
- comparing, by the safety-determining module, the live image to a portion of the stored images;
- based on the comparing, by the safety-determining module, determining by the control module, a degree of correspondence between the live image and the portion of the stored images;
- based on the degree of correspondence, generating, by the safety-determining module, a safety value;
- comparing, by the control module, the safety value to a predetermined value;
- based on determining that the safety value is greater than the predetermined value, obtaining the control value and the acceleration value, the obtaining comprising:
- converting, by the control module, the at least one navigational instruction to the control value and the acceleration value;
- and
- based on determining that the safety value is less than or equal to the predetermined value, requesting, by the control module, the control value and the acceleration value and obtaining the control value and the acceleration value responsive to the requesting;
- updating, by the control module, at least one stored image of the stored images in the data storage with the acceleration value;
- determining, by the control module, whether to execute the at least one navigational instruction, the determining comprising:
- controlling, by the control module, the vehicle to execute the at least one navigational instruction, wherein the executing is based on the control value and the acceleration value;
- obtaining, by the recognition module, a current image from the camera after the controlling;
- confirming, by the recognition module, the executing of the at least one navigational instruction based on analyzing the current image to determine that the vehicle has reached the terminating navigational point of the at least one navigational instruction;
- and
- transmitting, by the recognition module, the confirming to the navigation module.