Navigation of impaired vehicle

A system includes a computer programmed to receive first data from a first source that is a vehicle. The first data identifies a fault of the vehicle. The computer is programmed to receive second data from a second source outside the vehicle describing an area around the vehicle. The computer is programmed to determine, based on the first and second data, a navigational plan. The computer is programmed to transmit an instruction to the vehicle to actuate the vehicle according to the navigational plan.

BACKGROUND

A vehicle typically relies on information from various systems and components, such as a navigation system, sensors, etc. Information from the various systems and components may be used to navigate the vehicle, such as that used to navigate a semi-autonomous or autonomous vehicle. Faults may arise with the various systems and components of the vehicle that render the vehicle wholly or partially inoperable, possibly leaving the vehicle stranded in an undesirable location, such as blocking a road.

DETAILED DESCRIPTION

Introduction

Disclosed herein is a method including receiving first data from a first source that is a vehicle. The first data identifies a fault of the vehicle. The method includes receiving second data from a second source outside the vehicle describing an area around the vehicle. The method includes determining, based on the first and second data, a navigational plan. The method includes transmitting an instruction to the vehicle to actuate the vehicle according to the navigational plan.

The second data may include a vehicle location.

The instruction to the vehicle may include an instruction to actuate one or more of a propulsion, a brake system, and a steering system.

The first data may include a location of the vehicle.

The second data may include data describing navigation of at least one other vehicle.

The second data may include a location of an object.

The second data may include a status identifier of an element within the area around the vehicle.

The method may include transmitting the first data in response to a determination that the vehicle cannot operate in a normal mode.

The method may include actuating a brake system of the vehicle to bring the vehicle to a stop upon at least one of a detection of an object in a path of the vehicle and a detection of an impact to the vehicle. The method may include determining that the vehicle cannot operate in the normal mode in response to the stop.

The method may include identifying a location of the vehicle after bringing the vehicle to the stop. The method may include transmitting the first data in response to a determination that the location is not an authorized stop location.

The method may include determining an area traversable by the vehicle. The navigational plan may include a route outside the area traversable by the vehicle.

The method may include transmitting the first data in response to identifying the fault as preventing the vehicle from operating in the normal mode.

Disclosed herein is a computer programmed to perform the method.

Disclosed herein is a computer readable medium storing program instructions executable by a computer processor to perform the method.

Disclosed herein is a system including a server computer and a vehicle computer. The computers are programmed to jointly perform the method.

Disclosed herein is a system including a computer programmed to receive first data from a first source that is a vehicle. The first data identifies a fault of the vehicle. The computer is programmed to receive second data from a second source outside the vehicle describing an area around the vehicle. The computer is programmed to determine, based on the first and second data, a navigational plan. The computer is programmed to transmit an instruction to the vehicle to actuate the vehicle according to the navigational plan.

The second data may include a vehicle location.

The instruction to the vehicle may include an instruction to actuate one or more of a propulsion, a brake system, and a steering system.

The first data may include a location of the vehicle.

The second data may include data describing navigation of at least one other vehicle.

The system may include a second computer that is in the vehicle. The second computer may be programmed to transmit the first data in response to a determination that the vehicle cannot operate in a normal mode.

The second computer may be programmed to actuate a brake system of the vehicle to bring the vehicle to a stop upon at least one of a detection of an object in a path of the vehicle and a detection of an impact to the vehicle. The second computer may be programmed to determine that the vehicle cannot operate in the normal mode in response to the stop.

The second computer may be programmed to identify a location of the vehicle after bringing the vehicle to the stop. The second computer may be programmed to transmit the first data in response to a determination that the location is not an authorized stop location.

The second computer may be programmed to determine an area traversable by the vehicle. The navigational plan may include a route outside the area traversable by the vehicle.

The second computer may be programmed to transmit the first data in response to identifying the fault as preventing the vehicle from operating in the normal mode.

With reference toFIGS. 1 and 2, a system10for controlling a vehicle12addresses the problem of the vehicle12being adversely effected due to a fault with one or more vehicle12components or systems. A computer, e.g., a server computer14, can be programmed to provide instructions to the vehicle12. The server computer14receives information from the vehicle12and from at least one other source. Accordingly, the server computer14is programmed to receive first data from a first source that is the vehicle12. The first data describes a fault of the vehicle12. The server computer14is programmed to receive second data from a second source outside the vehicle12. Example sources outside the vehicle12include one or more other vehicles16, one or more other server computers14, a user device18, etc. The second data describes an area around the vehicle12. The server computer14is programmed to determine, based on the first and second data, a navigational plan. The server computer14is programmed to transmit an instruction to the vehicle12to actuate the vehicle12according to the navigational plan.

As used herein, “fault” is a state in which one or more components of the vehicle12are not operating properly, i.e., one or more components of the vehicle12are malfunctioning or inoperable. Each fault may be associated with a specific vehicle12component, e.g., a specific vehicle12system, subsystem, device, sensor20, etc. A fault may be determined based on a message from a vehicle12component explicitly indicating the fault. A fault may be determined based on information from one or more vehicle12components, and/or sensors20, that may be used to infer one or more fault with one or more vehicle12components.

As used herein, “area around the vehicle”12is an area within a threshold distance, e.g., 50 meters, of a location of the vehicle12. When this disclosure refers to a “location,” it is to be understood that the location could be determined in a known manner, e.g., according to geo-coordinates such as are known. For example, global positioning system (GPS) devices can determine latitude and longitude, and could be used to determine locations discussed herein.

The data describing the area around the vehicle12may include characteristics of terrain and objects within the area. For example, the data may describe a surface type of various portions of the area, e.g. paved, gravel, lawn, water, etc. The data may describe a surface profile of various portions of the area, e.g., a slope, including an angle and direction of such slope, a tier, including an elevation change such as a drop off such of tier, etc. The data may provide a location of one or more objects within the area, e.g., the location of another vehicle16, the location of an infrastructure element such as a road barrier or overpass support column, etc. The data describing the area around the vehicle12may include a status identifier of elements within the area, e.g., that a lane22within the area is closed to traffic, e.g., the lane22is blocked upstream of the area around the vehicle12. The data describing the area around the vehicle12may include a vehicle location24. As used herein “vehicle location”24is a location for the vehicle12, e.g., after navigating the vehicle12according to the navigational plan. The data describing the area around the vehicle12may describe navigation of at least one other vehicle, e.g., the second vehicle16, in the area around the vehicle12. The data describing the area around the vehicle12may include image data, e.g., obtained by one or more other vehicles16located in the area around the vehicle12.

As used herein, “navigational plan” is a set of one or more instructions to actuate the vehicle12components to bring the vehicle12to an identified location. The navigational plan thus includes a route26along with the instructions specifying actuation of one or more vehicle12components along the route26.

As used herein, “route”26is a series of one or more locations and/or vectors to be used for navigating the vehicle12, e.g., to actuate the vehicle12according to the navigational plan. The vector may include a direction, e.g., a compass heading direction, and a distance, e.g., 10 meters.

The Wide Area Network

A network28(sometimes referred to as a wide area network because it can include communications between devices that are geographically remote from one another, i.e., not in a same building, vehicle12, etc.) represents one or more mechanisms by which remote devices, e.g., the vehicle12, the second vehicle16, the server computer14, the user device18, etc., may communicate with each other. Accordingly, the network28may be one or more wired or wireless communication mechanisms, including any desired combination of wired (e.g., cable and fiber) and/or wireless (e.g., cellular, wireless, satellite, microwave, and radio frequency) communication mechanisms and any desired network topology (or topologies when multiple communication mechanisms are utilized). Exemplary communication networks include wireless communication networks (e.g., using Bluetooth, IEEE 802.11, etc.), local area networks (LAN) and/or wide area networks (WAN), including the Internet, providing data communication services.

The Vehicle

The vehicle12may include any passenger or commercial automobile such as a car, a truck, a sport utility vehicle, a crossover vehicle, a van, a minivan, a taxi, a bus, etc. The vehicle12may operate in an autonomous (e.g., driverless) mode, a semi-autonomous mode, and/or a non-autonomous mode. For purposes of this disclosure, an autonomous mode is defined as one in which each of a propulsion30, a brake system32, and a steering system34of the vehicle12are controlled by one or more vehicle12computers36; in the semi-autonomous mode one or two of the vehicle12propulsion30, brake system32, and steering system34are controlled by one or more vehicle12computers36; each of these are controlled by a human operator in the non-autonomous mode. The vehicle12may additionally include sensors20, a navigation system38, a user interface39, and an in-vehicle communication network40for providing communication between the vehicle12components.

The propulsion30of the vehicle12translates stored energy into motion of the vehicle12. The propulsion30may be a conventional vehicle12subsystem, for example, a conventional powertrain including an internal-combustion engine coupled to a transmission that transfers rotational motion to wheels; an electric powertrain including batteries, an electric motor, and a transmission that transfers rotational motion to the wheels; a hybrid powertrain including elements of the conventional powertrain and the electric powertrain; or any other type of propulsion30. The propulsion30is in communication with and receives input from the vehicle12computer36and from a human driver. The human driver may control the propulsion30via an input device, e.g., an accelerator pedal and/or a gear-shift lever. The propulsion30may send a message to the vehicle12computer36. The message may indicate a fault with the propulsion30. The message may indicate a state of the propulsion30, e.g., that the electric motor is outputting torque, e.g., in response to an instruction received from the vehicle12computer36.

The brake system32can be a conventional vehicle12subsystem that resists the motion of the vehicle12to thereby slow and/or stop the vehicle12. The brake system32may be friction brakes such as disc brakes, drum brakes, band brakes, etc.; regenerative brakes; any other suitable type of brakes; or a combination. The brake system32can include an electronic control unit (ECU) or the like that actuates the brake system32to resist the motion of the vehicle12, e.g., in response to a command from the vehicle12computer36and/or from a human driver. The human driver may control the brake system32via an input device, e.g., a brake pedal. The brake system32may send a message to the vehicle12computer36. The message may indicate a fault with the brake system32. The message may indicate a state of the brake system32, e.g., that the disc brake is engaged, e.g., in response to an instruction received from the vehicle12computer36.

The steering system34is typically a conventional vehicle12subsystem and controls the turning of the wheels, i.e., changes wheel orientation. The steering system34is in communication with and receives input from a steering wheel and/or the vehicle12computer36. The steering system34may be a rack-and-pinion system with electric power-assisted steering, a steer-by-wire system, as are both known in the art, or any other suitable system. The steering system34may send a message to the vehicle12computer36. The message may indicate a fault with the steering system34. The message may indicate a state of the steering system34, e.g., that the steer-by-wire wire system is turning the wheels, e.g., in response to an instruction received from the vehicle12computer36.

The vehicle12sensors20may detect internal states of the vehicle12, for example, wheel speed, wheel orientation, tire pressure, suspension travel, brake sensors, traction control sensors, and engine and transmission variables. The vehicle12sensors20may detect the position or orientation of the vehicle12, for example, global positioning system (GPS) sensors; accelerometers such as piezo-electric or microelectromechanical systems (MEMS); gyroscopes such as rate, ring laser, or fiber-optic gyroscopes; inertial measurement units (IMU); and magnetometers. The vehicle12sensors20may detect the external world, for example, light measurement sensors, photometers, wind speed measurement sensors, proximity sensors, radar sensors, scanning laser range finders, light detection and ranging (LIDAR) devices, and image processing sensors such as cameras. The vehicle12sensors20may provide vehicle12data to detect an impact to the vehicle12, e.g., sensors20may include post-contact sensors such as accelerometers, pressure sensors, and contact switches.

The vehicle12navigation system38determines a location and orientation of the vehicle12according to map data, e.g., by geocoordinates and compass heading direction that can be used to determine the vehicle location24and orientation on a map. To determine the location and orientation of the vehicle12, the vehicle12navigation system38may rely on information from a global navigation satellite system, distance data from vehicle12sensors20attached to a drivetrain of the vehicle12, a gyroscope, an accelerometer, a magnetometer, and/or other vehicle12sensors20.

The map data may include roads and related data, such as a number of lanes22, parking lot locations, etc. The map data may include area traversable by the vehicle12. The map data may include authorized stop locations. The map data may be stored locally, such as in the vehicle12computer36memory (discussed below), in the vehicle12navigation system38, etc., and remotely, such as in the server computer14. Exemplary vehicle12navigation systems38include known GPS (global positioning system) navigation devices, personal navigation devices, and automotive navigation systems. A location as described herein can be specified in geo-coordinates such as are known, and the map data may specify a location of map features such as roads, landmarks, etc., according to such geo-coordinates.

An “authorized stop location” is a predetermined location where the vehicle12may stop, e.g., with little adverse effect such as a potential collision with another vehicle16, being subject to towing and/or traffic citations, etc. Example authorized stop locations include locations at parking lots, designated street side parallel parking, driveways, etc.

An “area traversable by the vehicle”12is a geographic region where the vehicle12may operate in a normal mode (defined below) with little adverse effect such as a potential collision with another vehicle12, a traffic citation, a loss of traction, i.e., getting “stuck,” etc. The area traversable by the vehicle12may include roads, including a specific lane22and a permitted direction of travel therein. The area traversable by the vehicle12may include other regions specifically designed for ordinary vehicle12transportation duties, e.g., parking lots, etc. The area traversable by the vehicle12may exclude regions not specifically designed for ordinary vehicle12transportation duties that may nonetheless be navigable by the vehicle12, e.g., a shoulder of a road, a median of a divided highway, etc., including navigating in a lane22or road in a direction other than the permitted direction of travel.

The user interface39presents information to and receives information from an occupant of the vehicle12. The user interface39may be located, e.g., on an instrument panel in the passenger cabin of the vehicle12, or wherever may be readily seen by the occupant. The user interface39may include dials, digital readouts, screens such as a touch-sensitive display screen, speakers, and so on for providing information to the occupant, e.g., human-machine interface (HMI) elements. The user interface39may include buttons, knobs, keypads, microphone, and so on for receiving information from the occupant.

The in-vehicle communication network40includes hardware, such as a communication bus, an antenna, circuits, chips, etc., for facilitating wired or wireless communication among the vehicle12components in accordance with a number of communication protocols such as the Dedicated Short Range Communication (DSRC) communication protocol, controller area network (CAN), Ethernet, WiFi, Local Interconnect Network (LIN), and/or other wired or wireless mechanisms.

The vehicle12computer36, implemented via circuits, chips, antenna and/or other electronic components, is included in the vehicle12for carrying out various operations and processes, including those described herein. The vehicle12computer36is a computing device that generally includes a processor and a memory, the memory including one or more forms of computer-readable media, and storing instructions executable by the processor for performing various operations and processes, including those described herein. The memory of the vehicle12computer36further generally stores remote data received via various communications mechanisms; e.g., the vehicle12computer36is generally configured for communications with vehicle12components on a controller area network (CAN) bus, e.g., the in-vehicle communication network40, and for using other wired or wireless protocols to communicate with devices outside the vehicle12, e.g., Bluetooth®, IEEE 802.11 (colloquially referred to as WiFi), satellite telecommunication protocols, and cellular protocols such as 3G, LTE, etc. Via the in-vehicle communication network40the vehicle12computer36may transmit messages to various devices in the vehicle12and/or receive messages from the various devices, e.g., systems, actuators, sensors20, etc., e.g., as discussed herein. Although one vehicle12computer36is shown inFIG. 1for ease of illustration, it is to be understood that the vehicle12computer36could include, and various operations described herein could be carried out by, one or more computing devices.

The vehicle12computer36is programmed to receive vehicle12data, i.e., data provided via a vehicle12network such as a CAN bus or the like. Vehicle12data may include messages from the vehicle12components. Vehicle12data may include data from the sensors20. Vehicle12data may be received via the in-vehicle communication network40.

The vehicle12computer36may be programmed to determine whether an impact to the vehicle12has been detected, e.g., using known techniques based on information from the sensors20, e.g., accelerometers, pressure sensors, and contact switches.

The vehicle12computer36may be programmed to determine whether an object in a path of the vehicle12has been detected. As used herein, a “path of the vehicle”12is an area within a threshold distance of a location of vehicle12, e.g., 50 meters, and in a direction of vehicle12travel, e.g., in front of a forward traveling vehicle12. An object in the path of the vehicle12presents a collision risk with the vehicle12if the vehicle12is not stopped or if the vehicle12does not change direction. The vehicle12computer36may determine whether there is an object in the path of the vehicle12based on information from the vehicle12sensors20, e.g., sensors configured to detect wheel orientation, proximity sensors, radar sensors, scanning laser range finders, light detection and ranging (LIDAR) devices, and image processing sensors such as cameras.

The vehicle12computer36may be programmed to actuate the brake system32of the vehicle12to bring the vehicle12to a stop. As used herein, “stop” is a state of the vehicle12where a speed of the vehicle12is substantially zero, i.e., the vehicle12is not moving. The vehicle12computer36may actuate the brake system32to bring the vehicle12to the stop by sending an instruction to the brake system32. The vehicle12computer36may actuate the brake system32to bring the vehicle12to the stop upon the detection of the object in the path of the vehicle12. The vehicle12computer36may actuate the brake system32to bring the vehicle12to the stop upon the detection of the impact to the vehicle12. The vehicle12computer36may actuate the brake system32to bring the vehicle12to the stop based on the vehicle12data, e.g., indicating a fault. The vehicle12computer36may actuate the brake system32to bring the vehicle12to the stop upon receiving a user input via the user interface39.

The vehicle12computer36may be programmed to identify a location of the vehicle12. For example, the vehicle12computer36may determine the location of the vehicle12based on information received from the navigation system38via the in-vehicle communication network40. The vehicle12computer36may identify the location of the vehicle12in response to actuating the brake system32to bring the vehicle12to the stop.

The vehicle12computer36may be programmed to identify one or more faults of the vehicle12. The vehicle12computer36may identify fault(s) based on messages and/or data received from the vehicle12components and/or sensors20, and/or a lack thereof.

The vehicle12computer36may identify the fault based on a message received from a vehicle12component indicating the fault, e.g., Controller Area Network28(CAN) messages can indicate vehicle12component malfunctions. For example, the vehicle12computer36may receive a fault message from the brake system32indicating a malfunction of the brake system32.

The vehicle12computer36may identify the fault based on other messages received from the one or more components of the vehicle12. For example, the vehicle12computer36may identify the fault indicating the malfunctioning of the brake system32based on a message from the brake system32indicating actuation of the brake system32other than instructed by the vehicle12computer36.

The vehicle12computer36may identify the fault based on a lack of a message from the one or more components of the vehicle12. For example, the vehicle12computer36may identify the fault indicating the malfunctioning of the brake system32based on a lack of response within a predetermined amount of time, e.g., 100 milliseconds, from the brake system32to an instruction provided to the brake system32.

The vehicle12computer36may identify the fault based on data received from the vehicle12sensors20. For example, sensor20data may indicate the vehicle12is not responding in an expected manner after an instruction has been sent to actuate a vehicle12component, e.g., the vehicle12is not decelerating at an expected rate after the instruction to the brake system32.

The vehicle12computer36may identify the fault based on a lack of data from the sensors20. For example, the vehicle12computer36may identify a fault indicating a malfunction of the LIDAR sensor when no data is received from the LIDAR sensor for a predetermined amount of time, e.g. 500 milliseconds.

Messages and/or data from multiple vehicle12components and/or sensors20may be combined to identify one or more faults with one or more vehicle12components and/or sensors20. Additional fault identification techniques and methods may be used.

The vehicle12computer36may be programmed to determine whether the vehicle12cannot operate in the normal mode. As used herein, the “normal mode” is a state of the vehicle12in which a predetermined set of vehicle12components are operating without a fault.

The predetermined set of vehicle12components is typically defined to include components needed for operation of the vehicle12to safely travel on a public roadway, e.g., to navigate to a location, to detect an object that may pose a collision risk, to stop the vehicle12at a threshold deceleration rate, e.g., 20 miles per hour per second, to propel the vehicle12at a threshold speed, e.g. 55 miles per hour, etc., without necessarily relying on information from the source outside the vehicle12. Example components that may be included in the predetermined set of components include the brake system32, the steering system34, the propulsion30, the sensors20, e.g., sensors used to navigate the vehicle12, the navigation system38, etc. The predetermined set of vehicle12components may be stored in a lookup table or the like, e.g., in the memory of the vehicle12computer36.

The vehicle12computer36may be programmed to determine whether the vehicle12cannot operate in the normal mode by comparing the predetermined set of vehicle12components with the one or more faults identified by the vehicle12computer36. The vehicle12computer36may determine the vehicle12cannot operate in the normal mode when the fault(s) indicate that one or more of the vehicle12components of the predetermined set of vehicle12components is malfunctioning. Other methods may be used to determine whether the vehicle12cannot operate in the normal mode.

The vehicle12computer36may determine whether the vehicle12cannot operate in the normal mode in response actuating the brake system32of the vehicle12to bring the vehicle12to the stop.

The vehicle12computer36may be programmed to determine whether the vehicle12is at an authorized stop location. Additionally or alternatively to being included in the map data, authorized stop locations may be stored in a look-up table or the like, e.g., in the memory of the vehicle12computer36, in the server computer14, etc., including such locations, e.g., as GPS coordinates. The vehicle12computer36may determine whether the vehicle12is at an authorized stop location by comparing the identified location of the vehicle12with the predetermined locations where the vehicle12may stop.

The vehicle12computer36is programmed to transmit data, e.g., the location of the vehicle12, the identified fault(s), vehicle12data, etc. The vehicle12computer36may transmit the data to the server computer14. For example, the transmitted data may include identification information, e.g., a unique name or other identifier, Internet protocol (IP) address, etc., for the server computer14. The data may be transmitted in response to the determination that the vehicle12cannot operate in the normal mode. For example, the data may be transmitted in response to identifying the fault as preventing the vehicle12from operating in the normal mode, e.g., in response to identifying a fault included in the predetermined set of vehicle12components needed for operation of the vehicle12to safely travel on a public roadway. The data may be transmitted in response to determining that the location of the vehicle12is not at an authorized stop location.

The vehicle12computer36may be programmed to receive an instruction to actuate one or more of the vehicle12components. For example, the vehicle12computer36may be programmed to receive such instruction from the server computer14via the network28.

The vehicle12computer36may be programmed to actuate vehicle12components. For example, the vehicle12computer36may transmit instructions to the brake system32, the propulsion30, the steering system34, etc., via the in-vehicle communication network40.

The Second Vehicle

The second vehicle16may be implemented as described above for the vehicle12.

The second vehicle16may be programmed to transmit a location of the second vehicle16, the location of one or more objects, e.g., relative to the location of the second vehicle16, a status of a lane22and/or road blocked the second vehicle16, data describing navigation of the second vehicle16, vehicle16data, e.g., image data from sensors of the second vehicle16, etc. The second vehicle16may determine such information based on information, e.g., image data, from sensors, a navigation system, etc., of the second vehicle16. The second vehicle16may transmit such information in response to a request, e.g., from the server computer14. The second vehicle16may transmit such information to the server computer14, e.g. via the network28.

The User Device

The user device18may be any one of a variety of computing devices implemented via circuits, chips, antenna, or other electronic components, and is typically a portable device, e.g., a smartphone, a tablet, a personal digital assistant, etc. The user device18may include a computer having a processor and a memory. The memory my store instructions for executing the programming and processes described herein. The user device18may include a user interface that presents information to and receives information from a user of the user device18. The user interface may include a touch-sensitive display screen, speaker, microphone, etc. The user device18may communicate with other vehicles and computing devices, as described herein.

The user device18may be programmed to transmit characteristics of terrain and objects including a location of such terrain and objects, a status identifier of a lane22, e.g., the lane22is closed to traffic in the area around the vehicle12, a vehicle location24, etc. The user device18may identify such information based on a user input to the user interface. The user device18may transmit such information to the server computer14. The user device18may transmit such information in response to a user input to the user interface.

The Server Computer

The server computer14is a computing device that includes hardware, e.g. circuits, chips, antenna, etc., programmed to transmit, receive, and process information, to and from other computing devices such as those in the vehicle12, the second vehicle16, the user device18, etc., e.g., via the network28. The server computer14may be one or more computers, each generally including at least one processor and at least one memory, implemented as described herein, the memory storing instructions executable by the processor, including instructions for carrying out various processes described herein.

The server computer14is programmed to receive data, e.g., the data identifying the fault of the vehicle12, the data describing the area around the vehicle12, vehicle1216data, e.g. image data, etc. The data may be received from the vehicle12, the second vehicle16, the user device18, another server computer, etc. The data may be received via the network28.

The server computer14is programmed to identify objects in the area around the vehicle12, e.g., based on the location of the vehicle12and/or the second vehicle16, and on the vehicle1216data, e.g., image data, e.g., using image recognition processes and techniques, such as are known.

The server computer14is programmed to determine the navigational plan. The navigational plan is based on data identifying the fault of the vehicle12and on the data describing an area around the vehicle12.

To determine the navigational plan the server computer14may supplement the map data stored on the server computer14with objects included in the data describing the area around the vehicle12, identified by the server computer14, etc. For example, the map data may be supplemented to include the location of the second vehicle16, the location of infrastructure elements, etc. The navigational plan may be determined to avoid collision between the vehicle12and such objects.

To determine the navigational plan the server computer14may identify areas not specifically designed for ordinary vehicle12transportation duties that may be preferable to current location. For example, the server computer14may store a lookup table or the like with preferred areas, e.g., a right shoulder is preferred over a left shoulder, a center lane left hand turn lane is preferred over lanes for normal travel, an outside lane is preferred over an inner lane, a gravel area preferred over a lawn area, etc. The lookup table may be populated based on the data describing the area around the vehicle12, e.g., received from another server computer, the user device18, etc.

To determine the navigational plan the server computer14may identify areas that have nullified collision risk, e.g., a blocked lane22and/or road that would normally have traffic. The server computer14may identify such area based on the data describing the area around the vehicle12. For example, based on the data describing the area around the vehicle12that identifies the second vehicle16is stopped in a lane22or road thereby blocking traffic therein. The navigational plan may include navigation of the blocked lane22and/or road without necessary relying on vehicle12sensor20data that may be normally used to navigate such area, e.g., to avoid collision with other vehicles than may typically navigate the lane22and/or road.

To determine the navigational plan the server computer14may identify what vehicle12components are functioning, e.g., based on the data indicating vehicle12faults. Based on such identification, the navigational plan may use alternate actuation strategies, e.g., only drive in reverse, only make left hand turns, etc. The server computer14may limit locations for use with the navigational plan to those the vehicle12is capable of navigating to with fault. The server computer14may identify other limits of vehicle12components, e.g., a limited range of travel. Based on such identified limits, the navigational plan may navigate the vehicle12only to a location within range of the location of the vehicle12.

To determine the navigational plan the server computer14may identify areas other vehicles16have navigated. For example, the data describing the area around the vehicle12may indicate that the second vehicle16has navigated outside of the area traversable by the vehicle12. The navigational plan may include navigation of the vehicle12along a route26through such areas.

To determine the navigational plan the server computer14may rely on the vehicle location24included in the data describing the area around the vehicle12, e.g., from the user device18. The navigational plan may navigate the vehicle12to the vehicle location24.

The server computer14may be programmed to transmit an instruction to the vehicle12, e.g., via the network28, to actuate the vehicle12according to the navigational plan. The instruction to the vehicle12may include an instruction to actuate one or more of the propulsion30, the brake system32, and the steering system34. For example, the server computer14may determine which vehicle12components, individually and in combination, and in what order, to actuate to navigate the vehicle12along the route26according to the navigational plan, and transmit such instructions to the vehicle12.

The server computer14may be programmed to determine whether the navigational plan is complete. For example, the server computer14may compare the location of the vehicle12with the location of the navigational plan, e.g., the vehicle location24. The server computer14may determine the navigational plan is complete when the location of the vehicle12matches the location of the navigational plan.

Process

FIG. 3is a process flow diagram illustrating an exemplary process300for controlling the vehicle12. The process300may be performed by executing program instructions in the server computer14and the vehicle12computer36.

The process300begins in a block305in which the computer36receives vehicle12data. Further, the data may be received throughout the process300. Throughout the process300, means at time intervals, e.g., every 500 milliseconds, substantially continuously, etc.

Next at a block310the computer36determines whether an impact to the vehicle12has been detected. Upon a determination that no impact has been detected the process300moves to a block315. Upon a determination that an impact has been detected the process300moves to a block320.

At the block315the computer36determines whether an object in a path of the vehicle12has been detected. Upon a determination that an object in a path of the vehicle12has been detected the process300moves to the block320. Upon a determination that an object in a path of the vehicle12has not been detected the process300returns to the block305.

At the block320the computer36provides an instruction to actuate the brake system32of the vehicle12to bring the vehicle12to a stop. The computer36may actuate the brake system32upon determining the impact to the vehicle12has been detected, upon determining that the object in a path of the vehicle12has been detected, based on the vehicle12data, e.g. indicating a fault, upon receiving a user input via the user interface39, etc. In addition to bringing the vehicle12to the stop, the computer36may identify the location of the vehicle12, e.g., upon completion of the stop.

Next at a block325the computer36may identify one or more faults of the vehicle12, e.g., based on the received vehicle12data.

Next at a block330the computer36determines whether the vehicle12cannot operate in the normal mode, e.g., based on the one or more identified faults. Upon a determination that the vehicle12cannot operate in the normal mode the process300moves to a block335. Upon a determination that the vehicle12can operate in the normal mode the process300returns to the block305.

At the block335the computer36determines whether the vehicle12is at an authorized stop location. Upon a determination that the vehicle12is at an authorized stop location the process300moves to a block340. Upon a determination that the vehicle12is not at an authorized stop location the process300moves to a block345.

At the block340the computer36transmits identified faults and location of the vehicle12via the network28for receipt by the server computer14. After the block340the process300may end.

At the block345, which may follow the block335, the computer36transmits the vehicle12data, identified faults, and the location of the vehicle12via the network28for receipt by the server computer14. The vehicle12data, identified faults, and the location of the vehicle12may be transmitted throughout the process300.

Next, at the block350the server computer14receives the vehicle12data, the identified faults, and the location of the vehicle12. The vehicle12data, identified faults, and the location of the vehicle12may be received in the server computer14throughout the process300.

Next, at the block355the computer14receives data describing the area around the vehicle12. For example, the server computer14may receive such information from one or more second vehicles16, from another server computer14, from one or more user devices18, etc. The data describing the area around the vehicle12may be received throughout the process300.

Next, at a block360the server computer14determines a navigational plan, e.g., based on the vehicle12data, the identified faults, the location of the vehicle12, and the data describing the area around the vehicle12.

Next, at a block365the computer14transmits an instruction to the vehicle12computer36, e.g., via the network28, to actuate the vehicle12, e.g. vehicle12components, according to the navigational plan.

Next, at a block370the computer36receives the instruction to actuate the vehicle12according to the navigational plan.

Next, at a block375the computer36provides one or more instructions to actuate one or more vehicle12components, e.g., the propulsion30, the brake system32, and/or the steering system34may be actuated based on the instruction to actuate the vehicle12according to the navigational plan.

Next, at a block380the computer14determines whether the navigational plan is complete. Upon a determination that the navigational plan is not complete, the process300returns to the block360. Upon a determination that the navigational plan is complete, the process300ends.

CONCLUSION

As used herein a computer is a computing device that includes a processor and a memory. The processor is implemented via circuits, chips, or other electronic component and may include one or more microcontrollers, one or more field programmable gate arrays (FPGAs), one or more application specific circuits ASICs), one or more digital signal processors (DSPs), one or more customer integrated circuits, etc. The processor can receive the data and execute the processes described herein.

The memory (or data storage device) is implemented via circuits, chips or other electronic components and can include one or more of read only memory (ROM), random access memory (RAM), flash memory, electrically programmable memory (EPROM), electrically programmable and erasable memory (EEPROM), embedded MultiMediaCard (eMMC), a hard drive, or any volatile or non-volatile media etc. The memory may store data collected from sensors. The memory may store program instruction executable by the processor to perform the processes described herein.

The adjectives “first” and “second” are used throughout this document as identifiers and are not intended to signify importance or order.

With regard to the media, processes, systems, methods, etc. described herein, it should be understood that, although the steps of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. In other words, the descriptions of systems and/or processes herein are provided for the purpose of illustrating certain embodiments, and should in no way be construed so as to limit the disclosed subject matter.

The article “a” modifying a noun should be understood as meaning one or more unless stated otherwise, or context requires otherwise. The phrase “based on” encompasses being partly or entirely based on.