A vehicle such as an automobile may be configured for autonomous driving operations. For example, the vehicle may include a central control unit or the like, i.e., the computing device having a processor and a memory, that receives data from various vehicle data collection devices such as sensors. The central control unit may then provide instructions to various vehicle components, e.g., actuators and the like that control steering, braking, acceleration, etc., to control vehicle operations without action by a human operator. Therefore, it is possible for an autonomous vehicle to operate irrespective of a state or condition of a human operator. Accordingly, there is a need for autonomous vehicles to take into account a human driver's state or condition in executing vehicle operations.
A vehicle 101 includes a vehicle computer 105 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, including as disclosed herein. Further, the computer 105 may include more than one computing device, e.g., controllers or the like included in the vehicle 101 for monitoring and/or controlling various vehicle components, e.g., an engine control unit (ECU), transmission control unit (TCU), etc. The computer 105 is generally configured for communications on a controller area network (CAN) bus or the like. The computer 105 may also have a connection to an onboard diagnostics connector (OBD-II). Via the CAN bus, OBD-II, and/or other wired or wireless mechanisms, the computer 105 may transmit messages to various devices in a vehicle and/or receive messages from the various devices, e.g., controllers, actuators, sensors, etc., including data collectors 110. Alternatively or additionally, in cases where the computer 105 actually comprises multiple devices, the CAN bus or the like may be used for communications between devices represented as the computer 105 in this disclosure. In addition, the computer 105 may be configured for communicating with the network 120, which, as described below, may include various wired and/or wireless networking technologies, e.g., cellular, Bluetooth, wired and/or wireless packet networks, etc.
Generally included in instructions stored in and executed by the computer 105 is an autonomous driving module 106. Using data received in the computer 105, e.g., from data collectors 110, the server 125, etc., the module 106 may control various vehicle 101 components and/or operations without a driver to operate the vehicle 101. For example, the module 106 may be used to regulate vehicle 101 speed, acceleration, deceleration, steering, operation of components such as lights, windshield wipers, etc.
Data collectors 110 may include a variety of devices. For example, various controllers in a vehicle may operate as data collectors 110 to provide data 115 via the CAN bus, e.g., data 115 relating to vehicle speed, acceleration, system and/or component functionality, etc. Further, sensors or the like, global positioning system (GPS) equipment, etc., could be included in a vehicle and configured as data collectors 110 to provide data directly to the computer 105, e.g., via a wired or wireless connection. Sensor data collectors 110 could include mechanisms such as RADAR, LADAR, sonar, etc. sensors that could be deployed to measure a distance between the vehicle 101 and other vehicles or objects. Yet other sensor data collectors 110 could include cameras, breathalyzers, motion detectors, etc., i.e., data collectors 110 to provide data for evaluating a condition or state of a vehicle 101 operator.
A memory of the computer 105 generally stores collected data 115. Collected data 115 may include a variety of data collected in a vehicle 101. Examples of collected data 115 are provided above, and moreover, data 115 is generally collected using one or more data collectors 110, and may additionally include data calculated therefrom in the computer 105, and/or at the server 125. In general, collected data 115 may include any data that may be gathered by a collection device 110 and/or computed from such data.
The network 120 represents one or more mechanisms by which a vehicle computer 105 may communicate with a remote server 125. Accordingly, the network 120 may be one or more of various 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 server 125 may be one or more computer servers, each generally including at least one processor and at least one memory, the memory storing instructions executable by the processor, including instructions for carrying out various steps and processes described herein. The server 125 may include or be communicatively coupled to a data store 130 for storing collected data 115, records relating to potential incidents generated as described herein, etc. Further, the server 125 may store information related to particular vehicle 101 and additionally one or more other vehicles 101 operating in a geographic area, traffic conditions, weather conditions, etc., within a geographic area, with respect to a particular road, city, etc. The server 125 could be configured to provide drive-by-wire instructions to a particular vehicle 101 and/or other vehicles 101 in an autonomous driving area, e.g., a road, etc., such as an “all stop” instruction for all vehicles 101 in an area, or for a specific vehicle 101 to stop, a speed restriction, a lane restriction, etc.
A user device 150 may be any one of a variety of computing devices including a processor and a memory, as well as communication capabilities. For example, the user device 150 may be a portable computer, tablet computer, a smart phone, etc. that includes capabilities for wireless communications using IEEE 802.11, Bluetooth, and/or cellular communications protocols. Further, the user device 155 may use such communications capabilities to communicate via the network 120 and also directly with a vehicle computer 105, e.g., using Bluetooth.
The process 200 begins in a block 205, in which a vehicle 101 conducts driving operations. In general, driving operations could be conducted according to manual input by a vehicle 101 operator, e.g., by input via a steering wheel, a brake, and accelerator, etc. Additionally or alternatively, as mentioned above, the computer 105 could be configured to control operation of the vehicle 101 based on collected data 115 and/or instructions from the server 125. That is, the vehicle 101 could be driven completely autonomously according to instructions to various vehicle 101 components by the computer 105, and/or the vehicle 101 could be driven partially autonomously, e.g., according to instructions to various vehicle components by the computer 105 in combination with driver inputs to one or more vehicle components, e.g., steering, braking, etc.
Next, in a block 210, the computer 105 determines whether to send a message concerning vehicle 101 status and/or vehicle 101 operator status to the server 125 and/or other vehicles 101. In general, when driving operations are commenced, i.e., in a first iteration of the block 210, the computer 105, e.g., according to instructions in the module 106, could be configured to send a message to the server 125 identifying the vehicle 101, e.g., according to a unique or substantially unique identifier. Such message could also include a location of the vehicle 101, and other information, such as whether the vehicle 101 is being driven manually, autonomously, or in some combination of manual and autonomous operations and/or the functionality of its systems. A message from the vehicle 101 to the server 125 could also include information about a vehicle 101 operator, including whether an operator is present, and identifying information from which the server 125 could determine whether the vehicle 101 operator was competent to operate the vehicle 101, e.g., whether the operator was licensed, of sufficient age and experience for driving conditions, whether the operator was impaired in any way, etc. A message from the vehicle 101 to the server 125 could also include information about sensing systems on vehicle 101 and their respective capabilities and limitations. Further, a message could include the capabilities of components such as steering, powertrain and braking systems.
Further, concerning a second and subsequent iterations of the process 200, the computer 105 may be configured to periodically evaluate vehicle 101 and/or operator status, and to provide a message concerning the same to the server 125. Alternatively or additionally, the computer 105 could be configured to receive a request from the server 125 for such status(es). The server 125, in turn, could be configured to periodically request status information from a particular vehicle 101 and one or more other vehicles 101 for which the server 125 serves as, or as part of, an autonomous driving infrastructure.
Yet further, the computer 105 could determine to send a message concerning vehicle 101 and/or operator status according to a determination of such status. For example, if the computer 105 determined that an operator was not present, e.g., no one was sitting in a driver's seat, or that a driver had suffered some sudden impairment, e.g., fallen asleep or lost consciousness, the computer 105, e.g., according to instructions in the module 106, could determine to send a message to the server 125.
In any event, if the computer 105 determines to send a message concerning vehicle 101 and/or operator status, such status may be determined according to a variety of mechanisms. For example, as just mentioned, the computer 105 could be configured to periodically evaluate vehicle 101 and/or operator status, and to send a message to the server 125 concerning the same when warranted by the status. Additionally or alternatively, the computer 105 could determine, e.g., according to a periodic schedule as mentioned above, that a status message to the server 125 is due, and accordingly could determine and transmit to the server 125 information concerning vehicle 101 and/or operator status.
A block 215 is executed if the computer 105 determines in the block 210 to send a message concerning vehicle 101 and/or operator status. If the computer 105 determines not to send a such a message, then a block 220 is executed next.
In the block 215, the computer 105 sends a message concerning vehicle 101 and/or operator status to the server 125. For example, such message may be sent in one or more Internet protocol (IP) packets via the network 120. Fields in the message could include a unique or substantially unique identifier for the vehicle 101, one or more status codes, descriptions, etc., and/or other information relating to the vehicle 101, such as geo-coordinates concerning a vehicle 101 location, information concerning vehicle 101 operating parameters, including, just to name a few examples, a vehicle speed, direction, fuel level, tire pressure, system and component functionality, etc.
In the block 220, which may follow the block 210 or the block 215, as described above, the computer 105, e.g., according to instructions in the module 106, determines whether a message has been received from the server 125. For example, the server 125 may send a message, e.g., in one or more IP packets via the network 120, that includes an instruction concerning vehicle 101 operation based on a status message sent as described above concerning the block's 210 in 215, and/or according to an evaluation by the server 125 of statuses of one or more other vehicles 101 and/or conditions in a driving area, e.g., a region defined by geographic coordinates, that is controlled and/or monitored by the server 125. An instruction concerning vehicle 101 operation included in a message from the server 125 could include an instruction for a vehicle 101 to stop, to not exceed a certain speed, to avoid a certain geographic area, a certain road, etc. Further, the server 125 could send an instruction to more than one vehicle, e.g., a “global stop” message to all vehicles in a particular geographic area due to an unsafe condition such as an unresponsive vehicle or a vehicle that has a determined defect/limitation that is likely to cause harm to itself and/or other vehicles in the geographic area.
A block 225 is executed following the block 220 if a message has been received from the server 125. Otherwise, a block 230 is executed following the block 220.
In the block 225, the computer 105, e.g., according to instructions in the module 106, implements an instruction or instructions received from the server 125. For example, the module 106 may execute instructions to various vehicle 101 components to effect a stop of the vehicle 101.
In the block 230, the computer 105 determines whether the process 200 should continue. For example, the process 200 generally stops when vehicle 101 operation stops, e.g., when a vehicle 101 reaches its desired location or the engine is powered off. Likewise, a vehicle 101 could leave a geographic area controlled and/or monitored by a server 125, whereupon continuation of the process 200 is not possible. In any event, if the process 200 is to be continued, control returns to the block 205. Otherwise, the process 200 ends.
The process 300 begins in a block 305, in which the server 125 establishes monitoring and/or control of one or more vehicles 101. For example, as mentioned above, the server 125, which as disclosed herein may represent an infrastructure for monitoring and/or controlling autonomous or potentially autonomous vehicles such as a vehicle 101, may send and receive messages with one or more vehicles 101 via the network 120.
Next, in a block 310, the server 125 receives at least one message from at least one vehicle 101 concerning a status of the vehicle 101. A message from a vehicle 101 may further include general information concerning an autonomous driving area monitored and/or controlled by the server 125, such as environmental conditions, e.g., outside temperature, presence or absence of precipitation, road conditions, lighting conditions, lane operation restrictions, etc. Further, such environmental information could be conveyed via other mechanisms, e.g., wired and/or wireless sensors in communication with the server 125 via the network 120.
As noted above, the server 125 may receive a message from a vehicle 101 in response to a query, e.g., sent periodically, from the server 125 to the vehicle 101. Alternatively or additionally, a vehicle 101 may periodically send one or more messages to the server 125.
In any event, following the block 310, in a block 315, the server 125 evaluates one or more messages received from vehicles 101 and/or other gathered information such as described above. Further, the server 125 may evaluate an absence of a message from a vehicle 101, e.g., a message is not received when due or in response to a query. Based on information obtained in the block 315, the server 125 determines whether a safety issue or the like is presented by a vehicle 101. For example, a safety issue could be presented if a vehicle 101 does not have a human operator present in a driver's seat and environmental conditions pose dangers that require driver monitoring, if a human operator present in a driver's seat lacks driving experience or a license to deal with present driving conditions, if a human operator is asleep, under the influence of drugs and/or alcohol, unconscious, etc. Similarly, a safety issue could be presented if a vehicle 101 was operating in a semi-autonomous or manual mode in a highway lane that was restricted for fully autonomous driving with very close following distances. In another case, a safety issue could be presented if a brush fire caused thick smoke to cover a roadway and a certain vehicle 101 operating in an autonomous mode had known sensing limitations for this type of environmental condition.
If a safety condition or potential safety issues determined in the block 315, then a block 320 is executed next. Otherwise, a block 330 is executed next.
In the block 320, the server 125 determines an action to be taken with respect to the vehicle 101 presenting the safety issue and/or other vehicles 101 in an autonomous driving area. For example, as mentioned above, the server 125 could determine that a “global stop” is appropriate for all vehicles 101 in a particular geographic driving area, on a particular portion of a road, etc. Similarly, the server 125 could determine that, based on a driver condition, e.g., unconsciousness, a particular vehicle 101 should be stopped until assistance can be provided.
Following the block 320, in a block 325, the server 125 sends a message to one or more vehicles 101 based on a determined course of action for the one or more vehicles 101 as described above concerning the blocks 315 and 320.
The block 330 may follow either the block 315 are the block 325. In the block 330, the server 125 determines whether to continue the process 300, e.g., the server 125 could receive instruction to shut down, could cease receiving messages from vehicles 101 for a period of time, etc. If so, the process 300 ends. Otherwise, the process 300 returns to the block 310.
Computing devices such as those discussed herein generally each include instructions executable by one or more computing devices such as those identified above, and for carrying out blocks or steps of processes described above. For example, process blocks discussed above may be embodied as computer-executable instructions.
Computer-executable instructions may be compiled or interpreted from computer programs created using a variety of programming languages and/or technologies, including, without limitation, and either alone or in combination, Java™, C, C++, Visual Basic, Java Script, Perl, HTML, etc. In general, a processor (e.g., a microprocessor) receives instructions, e.g., from a memory, a computer-readable medium, etc., and executes these instructions, thereby performing one or more processes, including one or more of the processes described herein. Such instructions and other data may be stored and transmitted using a variety of computer-readable media. A file in a computing device is generally a collection of data stored on a computer readable medium, such as a storage medium, a random access memory, etc.
A computer-readable medium includes any medium that participates in providing data (e.g., instructions), which may be read by a computer. Such a medium may take many forms, including, but not limited to, non-volatile media, volatile media, etc. Non-volatile media include, for example, optical or magnetic disks and other persistent memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes a main memory. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
In the drawings, the same reference numbers indicate the same elements. Further, some or all of these elements could be changed. 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 processes herein are provided for the purpose of illustrating certain embodiments, and should in no way be construed so as to limit the claimed invention.
Accordingly, it is to be understood that the above description is intended to be illustrative and not restrictive. Many embodiments and applications other than the examples provided would be apparent to those of skill in the art upon reading the above description. The scope of the invention should be determined, not with reference to the above description, but should instead be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. It is anticipated and intended that future developments will occur in the arts discussed herein, and that the disclosed systems and methods will be incorporated into such future embodiments. In sum, it should be understood that the invention is capable of modification and variation and is limited only by the following claims.
All terms used in the claims are intended to be given their broadest reasonable constructions and their ordinary meanings as understood by those skilled in the art unless an explicit indication to the contrary in made herein. In particular, use of the singular articles such as “a,” “the,” “said,” etc. should be read to recite one or more of the indicated elements unless a claim recites an explicit limitation to the contrary.