WO2011019706A1 - Systèmes et procédés pour le traitement d'événement complexe d'informations de véhicule et d'informations d'image relatives à des véhicules - Google Patents

Systèmes et procédés pour le traitement d'événement complexe d'informations de véhicule et d'informations d'image relatives à des véhicules Download PDF

Info

Publication number
WO2011019706A1
WO2011019706A1 PCT/US2010/045000 US2010045000W WO2011019706A1 WO 2011019706 A1 WO2011019706 A1 WO 2011019706A1 US 2010045000 W US2010045000 W US 2010045000W WO 2011019706 A1 WO2011019706 A1 WO 2011019706A1
Authority
WO
WIPO (PCT)
Prior art keywords
vehicle
information
event
input stream
input
Prior art date
Application number
PCT/US2010/045000
Other languages
English (en)
Inventor
Steven Nielsen
Curtis Chambers
Jeffrey Farr
Original Assignee
Certusview Technologies, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CA2712576A external-priority patent/CA2712576C/fr
Application filed by Certusview Technologies, Llc filed Critical Certusview Technologies, Llc
Priority to AU2010282634A priority Critical patent/AU2010282634B2/en
Publication of WO2011019706A1 publication Critical patent/WO2011019706A1/fr

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C5/00Registering or indicating the working of vehicles
    • G07C5/08Registering or indicating performance data other than driving, working, idle, or waiting time, with or without registering driving, working, idle or waiting time
    • G07C5/0808Diagnosing performance data
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C5/00Registering or indicating the working of vehicles
    • G07C5/08Registering or indicating performance data other than driving, working, idle, or waiting time, with or without registering driving, working, idle or waiting time
    • G07C5/0841Registering performance data
    • G07C5/085Registering performance data using electronic data carriers

Definitions

  • CEP Complex event processing
  • a CEP "engine” e.g., one or more processors, memory, software and/or other associated devices to perform CEP
  • data may be published onto input streams having a variety of formats for inputting to the CEP engine; for example, data may include text strings, integer values, floating point digital values (or other types of digital values), and/or Boolean (e.g., true/false) values.
  • data published onto output streams may have a variety of formats (e.g., Boolean values may be employed particularly to indicate an occurrence or non-occurrence of an event based on monitoring of the input stream(s)).
  • a set of queries may be defined (e.g., by a user, developer, or administrator of the CEP engine) that the CEP engine uses to process/analyze the input stream(s) so as to determine if one or more events have occurred. That is, a CEP engine may receive incoming data (e.g., from external sensors or other data sources) on one or more input streams and apply the queries to the incoming data to determine if events have occurred.
  • some queries may be thought of as IF-THEN conditional statements or SQL-type pattern-match queries that define if/when one or both of simple events (sometimes called primitive events) and complex events have occurred. The distinction between simple and complex events in some instances may be defined by the creator of the queries.
  • a simple event may be considered as the existence of a particular condition or state at a particular instant of time or for some duration of time
  • a complex event may be considered as relating to the combined occurrence of two or more simple events with a particular timing relationship between/among the simple events.
  • events are defined by the creator of the queries, and likewise the queries may define complex events, which typically are events that are composed of or derived from other events.
  • a CEP engine may receive input data from a thermometer and a hygrometer.
  • One query in a query set may define a simple event, called a "temperature event” to have occurred if the temperature data from the thermometer indicates that the temperature is above ninety degrees Fahrenheit.
  • Another query in the query set may define a simple event, called a "humidity event” to have occurred if the relative humidity data from the hygrometer is above ninety percent.
  • a third query in the query set may define a complex event, called a "sweltering event" to have occurred if a "temperature event” occurs within thirty minutes of a "humidity event.”
  • a CEP engine may receive respective input streams including data indicating the appearance of a man in a tuxedo, a woman in a white dress, and rice flying through the air, each of which may be defined as a simple event. Based on a particular query set, the CEP engine may infer from these simple events occurring within a certain amount of time of each other that a wedding has occurred and may output an indication that a wedding has occurred. The wedding can be thought of as a complex event that was inferred by the CEP engine from a pattern of simple events (e.g., the man in the tuxedo, the woman in the white dress, and rice flying through the air).
  • FIG. 1 is an example of a conventional CEP engine 101.
  • CEP engine 101 includes a set or network of queries 103 that may be used to determine whether an event has occurred.
  • Stream analysis logic 105 may receive a plurality of incoming data streams (also referred to as "input streams") 109a, 109b, ..., 109n generated from a plurality of data sources 107a, 107b, ..., 107n, and may apply queries 103 to the incoming data streams 109 to determine whether one or more events have occurred.
  • Stream analysis logic 105 may output one or more indications of event occurrences via output streams I lia, 111b, ..., 111m.
  • One or more of the data sources may be a sensor (e.g., as discussed above in the temperature/hygrometer example).
  • the input and output streams may be formatted in any of a variety of manners; for example, in one implementation, a given input stream may include a succession of data fields including various types of data (e.g., string/text, numerical, Boolean), and the data fields may be particularly organized is some order and include some type of identification field to identify the
  • 2058617 4 stream e.g., a stream name, header, or other identifier
  • stream name e.g., a stream name, header, or other identifier
  • payload e.g., a payload
  • CEP engines differ from conventional rules-based processing systems in various respects.
  • conventional rules-based processing systems typically employ a batch processing approach in which incoming data is processed by the system
  • CEP engines are event driven, such that data streams input to the engine are continuously monitored and analyzed, and processing is driven by the occurrence of events. This allows a CEP engine to detect an event as soon as the data indicating the occurrence of that event is received by the CEP engine. By contrast, in a batch rules-based processing system, the detection of an event would not occur until the next periodic batch processing is executed.
  • a window is a segment of memory that stores a value (e.g., an input value, from an incoming data stream, for example, or a computed result) for a configurable period of time.
  • a value e.g., an input value, from an incoming data stream, for example, or a computed result
  • windows There are a number of different types of windows, including sliding windows, jumping windows, multi-policy windows, and other types of windows.
  • sliding windows the designer of a network of queries to be applied or executed by a CEP engine may specify how long a value remains in one or more of the windows.
  • a query set may specify that only n values can be stored in a particular window at any given time, such that if there are n values stored in the window and a new value is received, the oldest value stored in the window is removed from the window to make room for the new value.
  • a query set may specify a time period (e.g., in seconds, minutes, hours, days, months, years, and/or any other time period accepted by the CEP engine) for which a value is retained in the window.
  • a query set may specify that when a new value is received, it is stored in the window for four seconds, after which it is removed from the window.
  • a CEP query may specify that a complex event of "wedding" is determined (and indicated in one or more output data streams) if a first event indicating the appearance of a man in a
  • tuxedo event occurs within ten minutes of a second event indicating the appearance of a woman in a white dress ("white dress event”) and within fifteen minutes of an event indicating rice flying through the air ("flying rice event”).
  • white dress event indicating the appearance of a woman in a white dress
  • an event indicating rice flying through the air indicating rice flying through the air.
  • the use of windows allows any "white dress event” to be stored in a first window for ten minutes before it is discarded, and any "flying rice event” to be stored in a second window for fifteen minutes before it is discarded.
  • the CEP engine may, upon detecting a "tuxedo event,” monitor the first and second windows to determine whether they store respective indications of a "white dress event” and a “flying rice event,” and if both are present in their respective windows, detect a complex "wedding event.”
  • window enables the system to preserve data that is pertinent to the defined events and discard data that is not pertinent to the defined events. This allows the system to efficiently use its storage/memory resources. For example, if a particular query indicates that a event is determined to have occurred if a value of "5" appears on a first input stream three times in a ten minute period, data that was received more than ten minutes since the last value of "5" was received is no longer pertinent and may be discarded.
  • Examples of commercially available CEP engines that operate in this way include the StreamBase Server, available from StreamBase Systems, Inc. of Lexington, MA, Sybase CEP and the Sybase Aleri Streaming Platform, available from Sybase, Inc. of Dublin, CA, and BusinessEvents 3.0 available from TIBCO Software Inc. of Palo Alto, CA.
  • one CEP engine may perform event processing using information from sensors that are not local to it, but wherein the information is passed to it and/or preliminarily processed by another
  • a first CEP engine to receive information from a local sensor, process that information to determine if a first event has occurred, take some "local action" triggered by the occurrence of the event (e.g., provide some perceivable indication of the first event, such as an audible or visible alert), and send an indication of the occurrence of the first event to a second CEP engine (which may be in a geographically remote location).
  • the second CEP engine may process the indication of the occurrence of the first event with other information that it receives to determine if any other events have occurred, based on the first event, and in some cases may send an indication of the occurrence of such events back to the first CEP engine.
  • This arrangement enables the first CEP engine to take a "reflexive" (i.e., essentially real-time or instantaneous) action in response to the occurrence of the first event without having to wait for any additional processing or response from the second CEP engine, but still allows for the second CEP engine to perform event processing based on the occurrence of the first event and send indications of other events detected by the second CEP engine back to the first CEP engine.
  • the inventors also have appreciated that allowing multiple CEP engines to communicate amongst each other may be useful in fields such as field service operations (e.g., scheduled installation, repair and/or maintenance; excavation and construction activities; activities relating to deployment and location of above-ground and underground utilities; etc.) and fleet management (e.g., where an organization is responsible for managing and/or operating a fleet of vehicles for various purposes).
  • field service operations e.g., scheduled installation, repair and/or maintenance; excavation and construction activities; activities relating to deployment and location of above-ground and underground utilities; etc.
  • fleet management e.g., where an organization is responsible for managing and/or operating a fleet of vehicles for various purposes.
  • the term "fleet management operations” refers to any activity relating to the maintenance, dispatch (e.g., scheduling), operation, monitoring (e.g., tracking) and oversight of multiple vehicles and/or vehicle operators employed to conduct business.
  • a CEP engine may be situated in multiple vehicles in a fleet, and respective vehicle -based CEP engines may in some instances communicate with each other.
  • a given vehicle-based CEP engine may communicate with one or more mobile devices carried by a supervisor or dispatcher (e.g., a smart phone, tablet computer, or laptop computer, which itself may be executing a CEP engine), and/or may communicate with one or more office-based CEP engines (e.g., a main office or "central" CEP engine) to provide indications of "vehicle-related events" detected at the vehicle.
  • a vehicle-based CEP engine also may receive indications of events from other vehicles, from a CEP engine executing on a mobile device of a supervisor and/or dispatcher CEP, and/or a central CEP engine.
  • a CEP engine in such a system may apply queries to the multiple input streams to determine various "fleet-related events" (e.g., relating to two or more of the vehicles of the fleet).
  • vehicle information information generally relating to a particular vehicle and/or its operating environment
  • vehicle information may be published onto one or more input streams of a CEP engine, and one or more queries may be applied by the CEP engine to the input stream(s) to assess if a vehicle-related simple or complex event has occurred.
  • vehicle information includes information provided by an Electronic Control Unit (ECU) of a vehicle (e.g., which may provide values corresponding to parameter identifiers defined by the On Board Diagnostic OBD-II standard SAE J1979, or other custom protocols, for various vehicle sensor readings or
  • vehicle information include, but are not limited to, information provided by a variety of environmental and/or operational sensors associated with the vehicle (e.g., one or more GPS receivers, temperature sensors, humidity sensors, accelerometers, light sensors, cellular or WiFi transceivers and associated diagnostics, etc.).
  • environmental and/or operational sensors associated with the vehicle e.g., one or more GPS receivers, temperature sensors, humidity sensors, accelerometers, light sensors, cellular or WiFi transceivers and associated diagnostics, etc.
  • Vehicle information also may include resource or scheduling information relating the a driver of the vehicle at any given time and a pattern of usage of the vehicle over some period of time (e.g., to what driver is a vehicle assigned, when and/or by whom the vehicle was taken out or returned to a company lot, when the vehicle was started-up at the beginning of a day/shift and shut-down/parked at the end of a day/shift, vehicle maintenance schedules and/or maintenance history, etc.).
  • resource and scheduling information may be made available to/accessed by one or more CEP engines via one or more electronic records in a database maintained by a company overseeing fleet management operations.
  • image information relating to a given vehicle and/or its operating environment may be published onto one or more dedicated input streams and/or may be provided as part of the vehicle information to which a CEP engine applies one or more queries.
  • image information include, but are not limited to, "raw” or unprocessed information obtained from an output of one or more on-board vehicle cameras, status information regarding operation of one or more on-board vehicle cameras, and processed information (e.g., color detection information, luminance information, edge detection information, motion detection information, pattern/object recognition information, etc.) derived from data provided by one or more on-board vehicle cameras.
  • one or more on-board vehicle cameras may be placed inside and/or outside of a vehicle in various locations, and may monitor an internal view (including a driver) and/or an external view.
  • on-board vehicle cameras from which various image information may be obtained include, but are not limited to, a 360 degree camera system, one or more in-cab cameras (e.g., mounted on or near a rear view mirror) facing the rear and/or front of the vehicle, and a video event recorder configured to record video events based at least in part on one or more exceptional forces acting on the vehicle (e.g., hard braking, swerving, collision, etc.).
  • image information may be helpful in determining complex events relating to the state of the driver and/or the presence of particular objects, colors and/or
  • 2058617 4 patterns in the driver's field of view; examples of such complex events include, but are not limited to, a "driver distracted event,” a “driver sleeping event,” a “disobeyed stop traffic signal event,” an "excessive speed event,” a “lane change event,” a “proximate forward collision event,” and/or a “reckless driving event,” for example.
  • non-vehicle specific information that may be helpful in determining vehicle-related events and/or fleet-related events may be published onto one or more input streams to which a CEP engine applies one or more queries.
  • Examples of such information include, but are not limited to, weather information, traffic information, street map information, and credit card or fuel card transaction information.
  • One or more of these exemplary information types may be obtained from a variety of sources in any of a variety of manners (e.g., issuing a web service call to retrieve weather, traffic and/or street map information from the Internet, in some instances based on a vehicle's current location).
  • Non- vehicle specific information may be assessed by a CEP engine alone or together with vehicle information, image information, and/or one or more other complex events to determine a variety of vehicle-related and/or fleet-related events (e.g., fuel card transaction information may be queried together with vehicle fuel gauge readings information from an ECU of the vehicle within a certain time period of the transaction to assess if an amount of purchased fuel sufficiently matches the fuel gauge reading; weather and/or traffic information queried together with vehicle speed readings information from an ECU of the vehicle may be used to determine a traffic jam event, an excessive speed event or reckless driving event; GPS readings from multiple vehicles queried together with street map information may be used to determine a "driver congregation event").
  • fuel card transaction information may be queried together with vehicle fuel gauge readings information from an ECU of the vehicle within a certain time period of the transaction to assess if an amount of purchased fuel sufficiently matches the fuel gauge reading
  • weather and/or traffic information queried together with vehicle speed readings information from an ECU of the vehicle may be used to determine a traffic jam
  • one or more simple or complex events themselves may be published onto one or more input streams to which a CEP engine applies one or more queries.
  • multiple input streams of vehicle-related events from respective vehicles of a fleet may be processed by a CEP engine, alone or together with other vehicle information and/or non- vehicle specific information, to determine a variety of fleet-related events.
  • fleet-related events were already noted above and may include, but are not limited to, a "traffic jam event," a "driver congregation event," a "frequent
  • a CEP engine may publish an indication of occurrence of an event on one or more output streams (which may in turn serve as one or more input streams to one or more other CEP engines).
  • the detection of a simple or complex event may trigger one or more local alerts; for example, in connection with a vehicle-based CEP engine, detection of a vehicle-related event may cause generation of an audible or visual alert in the vehicle, and/or may cause some altered operation of the vehicle (e.g., ignition disabled, throttle disabled, application of brakes, etc.).
  • An indication of event occurrence (e.g., either as a discrete signal or as part of an output stream) also may be transmitted (e.g., to another vehicle, to a supervisor/dispatcher in the field or at a central office) so as to generate a remote alert.
  • one embodiment of the invention is directed to a method of complex event processing in a system comprising a first complex event processing engine that receives at least one first input stream as input and generates at least one first output stream by applying at least one first query set to the at least one first input stream and a second complex event processing engine that receives at least one second input stream as input and generates at least one second output stream by applying at least one second query set to the at least one second input stream.
  • the method comprises acts of:
  • Another embodiment is directed to a method for complex event processing in a vehicle having a plurality of hardware sensors that provide information about at least one aspect of the vehicle.
  • the method comprises acts of: (A) receiving, at a first complex event processing engine in the vehicle, information from at least one of the hardware sensors; (B) determining, in response to receiving the information, whether an event has occurred; and (C) when it is determined that an event has occurred: (Cl) triggering a
  • Another embodiment is directed to a method for use in a system comprising a plurality of complex event processing engines including first complex event processing engine that is configured to send data to and receive data from a second complex event processing engine in the plurality of complex event processing engines and is configured to not send data to or receive data from a third complex event processing engine in the plurality of event processing engines.
  • the method comprises: configuring the first complex event processing engine to not send data to or receive data from the second complex event processing engine; and configuring the first complex event processing engine to send data to and receive data from the third complex event processing engine.
  • Another embodiment is directed to a method performed by a complex event processing (CEP) engine that executes on at least one hardware computer processor in a vehicle.
  • the method comprises: A) receiving at least two input streams comprising: at least one first input stream onto which vehicle information related to the vehicle is published; and at least one second input stream onto which image information is published, wherein the image information is based at least in part on data provided by at least one on-board vehicle camera; B) applying at least one query to the at least one first input stream and the at least one second input stream; C) assessing, based on B), if a vehicle-related complex event has occurred; and D) if it is determined in C) that the vehicle-related complex event has occurred, publishing an indication of occurrence of the vehicle-related complex event on at least one output stream of the CEP engine.
  • CEP complex event processing
  • Another embodiment is directed to at least one computer-readable medium encoded with a processor-executable instructions that, when executed by at least one hardware computer processor, implement a complex event processing (CEP) engine that performs a method comprising: A) receiving at least two input streams comprising: at least one first input stream onto which vehicle information related to a vehicle is published; and at least one second input stream onto which image information is published, wherein the image information is based at least in part on data provided by at least one on-board vehicle camera; B) applying at least one query to the at least one first input stream and the at least one second input stream; C) assessing, based on B), if a vehicle-related complex event has occurred; and D) if it is determined in C) that the
  • Another embodiment is directed to a complex event processing (CEP) engine to assess occurrences of vehicle-related complex events, the CEP engine comprising: at least one hardware computer processor; at least one input/output (I/O) interface; and at least one tangible memory to store processor-executable instructions, wherein, upon execution of the processor-executable instructions by the at least one hardware computer processor, the CEP engine: A) receives, via the at least one I/O interface, at least two input streams comprising: at least one first input stream onto which vehicle information related to a vehicle is published; and at least one second input stream onto which image information is published, wherein the image information is based at least in part on data provided by at least one on-board vehicle camera; B) applies at least one query to the at least one first input stream and the at least one second input stream; C) assesses, based on B), if a vehicle -related complex event has occurred; and D) if it is determined in C) that the vehicle -related complex event has occurred, publishes,
  • Another embodiment is directed to a method performed by a first vehicle- based complex event processing (CEP) engine that executes on at least one hardware computer processor in a first vehicle, the method comprising: A) receiving at least one first input stream onto which vehicle information related to the first vehicle is published; B) applying at least one query to the at least one first input stream; C) assessing, based on B), if a vehicle -related event has occurred; D) if it is determined in C) that the vehicle-related event has occurred, publishing an indication of occurrence of the vehicle- related event on at least one output stream of the first vehicle-based CEP engine; and E) transmitting the indication of occurrence of the vehicle-related event from the first vehicle.
  • CEP complex event processing
  • Another embodiment is directed to at least one computer-readable medium encoded with a processor-executable instructions that, when executed by at least one hardware computer processor, implement a complex event processing (CEP) engine that
  • 2058617 4 performs a method comprising: A) receiving at least one first input stream onto which vehicle information related to a first vehicle is published; B) applying at least one query to the at least one first input stream; C) assessing, based on B), if a vehicle -related event has occurred; and D) if it is determined in C) that the vehicle -related event has occurred, publishing an indication of occurrence of the vehicle-related event on at least one output stream of the CEP engine.
  • Another embodiment is directed to a complex event processing (CEP) engine to assess occurrences of vehicle-related events, the CEP engine comprising: at least one hardware computer processor; at least one input/output (I/O) interface; and at least one tangible memory to store processor-executable instructions, wherein, upon execution of the processor-executable instructions by the at least one hardware computer processor, the CEP engine: A) receives at least one first input stream onto which vehicle information related to a first vehicle is published; B) applies at least one query to the at least one first input stream; C) assesses, based on B), if a vehicle -related event has occurred; and D) if it is determined in C) that the vehicle-related event has occurred, publishes an indication of occurrence of the vehicle-related event on at least one output stream of the CEP engine.
  • CEP complex event processing
  • Another embodiment is directed to a system, comprising the foregoing CEP engine and the first vehicle, wherein the CEP engine is disposed on the first vehicle, and wherein the CEP engine further E) transmits the indication of occurrence of the vehicle-related event from the first vehicle.
  • Another embodiment is directed to a method performed by a fleet management complex event processing (CEP) engine that executes on at least one hardware computer processor, the method comprising: A) receiving at least two input streams comprising: at least one first input stream onto which first vehicle information related to a first vehicle is published; and at least one second input stream onto which second vehicle information related to a second vehicle is published; B) applying at least one query to the at least one first input stream and the at least one second input stream; C) assessing, based on B), if a fleet-related complex event has occurred; and D) if it is determined in C) that the fleet-related complex event has occurred, publishing an indication of occurrence of the fleet-related complex event on at least one output stream of the fleet management CEP engine.
  • CEP complex event processing
  • Another embodiment is directed to at least one computer-readable medium encoded with a processor-executable instructions that, when executed by at least one hardware computer processor, implement a fleet-management complex event processing (CEP) engine that performs a method comprising: A) receiving at least two input streams comprising: at least one first input stream onto which first vehicle information related to a first vehicle is published; and at least one second input stream onto which second vehicle information related to a second vehicle is published; B) applying at least one query to the at least one first input stream and the at least one second input stream; C) assessing, based on B), if a fleet-related complex event has occurred; and D) if it is determined in C) that the fleet-related complex event has occurred, publishing an indication of occurrence of the fleet-related complex event on at least one output stream of the fleet management CEP engine.
  • CEP complex event processing
  • Another embodiment is directed to a fleet management complex event processing (CEP) engine to assess occurrences of fleet-related complex events
  • the fleet management CEP engine comprising: at least one hardware computer processor; at least one input/output (I/O) interface; and at least one tangible memory to store processor- executable instructions, wherein, upon execution of the processor-executable instructions by the at least one hardware computer processor, the fleet management CEP engine: A) receives at least two input streams comprising: at least one first input stream onto which first vehicle information related to a first vehicle is published; and at least one second input stream onto which second vehicle information related to a second vehicle is published; B) applies at least one query to the at least one first input stream and the at least one second input stream; C) assesses, based on B), if a fleet-related complex event has occurred; and D) if it is determined in C) that the fleet-related complex event has occurred, publishes an indication of occurrence of the fleet-related complex event on at least one output stream of the fleet management CEP engine
  • a system comprises the foregoing fleet management CEP engine, in combination with a first vehicle -based CEP engine executing on at least one first vehicle-based hardware computer processor in the first vehicle; and a second vehicle-based CEP engine executing on at least one second vehicle -based hardware computer processor in the second vehicle, wherein the first vehicle information includes at least one first vehicle- related event, the first vehicle-based CEP engine transmits the at least one first vehicle-
  • the second vehicle information includes at least one second vehicle-related event
  • the second vehicle -based CEP engine transmits the at least one second vehicle -related event to the fleet management CEP engine.
  • Another embodiment is directed to a method performed by a complex event processing (CEP) engine that executes on at least one hardware computer processor, the method comprising: A) receiving at least two input streams comprising: at least one first input stream onto which first vehicle information related to a first vehicle is published; and at least one second input stream onto which non vehicle-specific information is published; B) applying at least one query to the at least one first input stream and the at least one second input stream; C) assessing, based on B), if a vehicle-related event and/or a fleet-related complex event has occurred; and D) if it is determined in C) that the vehicle -related event and/or the fleet-related complex event has occurred, publishing at least one indication of occurrence of the vehicle -related event and/or the fleet-related complex event on at least one output stream of the CEP engine.
  • CEP complex event processing
  • Another embodiment is directed to at least one computer-readable medium encoded with a processor-executable instructions that, when executed by at least one hardware computer processor, implement a complex event processing (CEP) engine that performs a method comprising: A) receiving at least two input streams comprising: at least one first input stream onto which first vehicle information related to a first vehicle is published; and at least one second input stream onto which non vehicle-specific information is published; B) applying at least one query to the at least one first input stream and the at least one second input stream; C) assessing, based on B), if a vehicle- related event and/or a fleet-related complex event has occurred; and D) if it is determined in C) that the vehicle-related event and/or the fleet-related complex event has occurred, publishing at least one indication of occurrence of the vehicle -related event and/or the fleet-related complex event on at least one output stream of the CEP engine.
  • CEP complex event processing
  • CEP complex event processing
  • I/O input/output
  • tangible memory to store processor-executable instructions, wherein, upon execution of the processor-executable instructions by the at least one hardware computer processor,
  • the CEP engine A) receives at least two input streams comprising: at least one first input stream onto which first vehicle information related to a first vehicle is published; and at least one second input stream onto which non vehicle- specific information is published; B) applies at least one query to the at least one first input stream and the at least one second input stream; C) assesses, based on B), if a vehicle-related event and/or a fleet- related complex event has occurred; and D) if it is determined in C) that the vehicle- related event and/or the fleet-related complex event has occurred, publishes at least one indication of occurrence of the vehicle -related event and/or the fleet-related complex event on at least one output stream of the CEP engine.
  • Another embodiment is directed to a method performed in a system comprising a plurality of complex event processing engines including a first complex event processing engine set at a first tier and a second complex event processing engine set at a second tier, wherein each of the plurality of complex event processing engines executes on at least one hardware computer processor.
  • the method comprises: A) configuring the plurality of complex event processing engines such that each complex event process engine in the second set communicates with only some of the other complex event processing engines in the second set; and B) configuring the plurality of complex event processing engines such that each complex event processing engine in the first set is capable of communicating with each complex event processing engine in the second set.
  • Another embodiment is directed to at least one computer-readable medium encoded with processor-executable instructions that, when executed by a processor, perform a method of configuring a plurality of complex event processing engines including a first complex event processing engine set at a first tier and a second complex event processing engine set at a second tier, wherein each of the plurality of complex event processing engines executes on at least one hardware computer processor, and wherein the method comprises: A) configuring the plurality of complex event processing engines such that each complex event process engine in the second set communicates with only some of the other complex event processing engines in the second set; and B) configuring the plurality of complex event processing engines such that each complex event processing engine in the first set is capable of communicating with each complex event processing engine in the second set.
  • Another embodiment is directed to a computer comprising: at least one tangible memory that stores processor-executable instructions for configuring a plurality of complex event processing engines including a first complex event processing engine set at a first tier and a second complex event processing engine set at a second tier, and at least one hardware computer-processor that executes the processor-executable instructions to: A) configure the plurality of complex event processing engines such that each complex event process engine in the second set communicates with only some of the other complex event processing engines in the second set; and B)configure the plurality of complex event processing engines such that each complex event processing engine in the first set is capable of communicating with each complex event processing engine in the second set.
  • complex event processing refers to a software and/or hardware-implemented technique (e.g., facilitated by a computer system, distributed computer system, computational analysis coded in software, and/or a combination thereof) relating to recognizing one or more events, patterns of events, or the absence of an event or pattern of events, within one or more input streams of information and performing one or more actions and/or computations in response to such recognition, in accordance with specified queries, criteria, algorithms, or logic.
  • CEP generally involves detection of relationships between information contained in input streams (which input streams may include indications of previously recognized events), such as causality, membership, timing, event-driven processes, detection of complex patterns of one or more events, event streams processing, event correlation and abstraction, and/or event hierarchies.
  • CEP may complement and contribute to technologies such as, but not limited to, service oriented architecture (SOA), event driven architecture (EDA), and/or business process management (BPM).
  • SOA service oriented architecture
  • EDA event driven architecture
  • BPM business process management
  • Figure 1 is a block diagram of a conventional complex event processing engine
  • FIG. 2 is a block diagram of a complex event processing architecture including multiple CEP engines, in accordance with some embodiments of the invention.
  • Figure 3 is a block diagram of a complex event processing architecture having four peer complex event processing engines, in accordance with some embodiments of the invention.
  • Figure 4A is a block diagram of a first exemplary configuration of a reconfigurable hierarchical complex event processing architecture, in accordance with some embodiments of the invention.
  • Figure 4B is a block diagram of a second exemplary configuration of the reconfigurable hierarchical complex event processing architecture shown in Figure 4A, in accordance with some embodiments of the invention.
  • Figure 5 is a block diagram of a complex event processing system comprising a plurality of complex event processing engines in vehicles and a complex event processing engine at a central location, in accordance with some embodiments of the invention
  • Figure 6 is a block diagram of an illustrative architecture for a complex event processing engine that may be employed in some embodiments of the invention.
  • Figure 7 is a flow chart of an illustrative process for processing received input data in a complex event processing engine that may be employed in some embodiments of the invention.
  • Figure 8 is a flow chart of a process for detecting a "disobeyed stop traffic signal event" using a complex event processing engine, in accordance with some embodiments of the invention.
  • Figure 9 is a flow chart of a process for detecting an "excessive speed event" using a complex event processing engine, in accordance with some embodiments of the invention.
  • Figure 10 is a flow chart of a process for detecting a "reckless driving event" using a complex event processing engine, in accordance with some embodiments of the invention.
  • Figure 11 is a flow chart of a process for adjusting a GPS acquisition rate using a complex event processing engine, in accordance with some embodiments of the invention.
  • Figure 12 is a flow chart of a process for modifying the data on a stream generated from a GPS device to adjust to a desired GPS acquisition rate, in accordance with some embodiments of the invention.
  • a CEP engine may receive data published onto one or more input streams from a plurality of local sensors in the environment of the CEP engine.
  • the inventors have appreciated that, in some situations, it may be desirable for a CEP engine to have access to data streams from non-local sources, as this enables a CEP engine to generate
  • One possible technique for providing one or more incoming data streams from non-local sources to a CEP engine is to directly transmit (e.g., via a wired or wireless communication link) one or more data streams from the non-local source(s) to the CEP engine.
  • a CEP engine in one or more offices of a company that is responsible for various field service operations (e.g., a package delivery company), and thus in some manner responsible for vehicle dispatch and/or fleet management.
  • Such a CEP engine at a "central office” or “home office” of the company may receive local input streams (e.g., information about scheduled deliveries, information about which vehicles are out on deliveries, information about which drivers took out which vehicles, and any other locally generated information), as well as information generated from non-local sensors in one or more vehicles.
  • local input streams e.g., information about scheduled deliveries, information about which vehicles are out on deliveries, information about which drivers took out which vehicles, and any other locally generated information
  • the information collected from the vehicle sensors may be wirelessly transmitted (e.g., via the Internet, via a cellular telephone network, or in any other way) from the vehicle so that it is ultimately received by the CEP engine in the office of the field service company.
  • the CEP engine may process the data streams from these non-local sources to determine if any events have occurred and, if so, wirelessly transmit an indication of the occurrence of any such events to the vehicle so that that the appropriate response may be taken.
  • the inventors have recognized a number of drawbacks to this approach.
  • the inventors have appreciated that some events may warrant an essentially immediate response at the source of the information from which the event was detected.
  • the response is delayed by the time taken to transmit information that is not local to the CEP engine from the information source to the CEP engine and to transmit an indication of the event from the CEP engine back to the source.
  • an illustrative event that may warrant an immediate response is the vehicle exceeding a certain speed.
  • one sensor in the vehicle may indicate the speed of the vehicle. If the speed of the vehicle reaches or exceeds a certain threshold it may be desired to detect a speeding event and notify the driver of the vehicle that he or she is speeding (e.g., by playing an audio notification in
  • the vehicle by displaying such a notification on the dashboard, instrument panel, or display screen in the vehicle, or in some other way). It may also be desirable to automatically take some additional action to reduce the driver's speed, such as disabling the throttle or applying the brakes.
  • sensor information from the vehicle may be transmitted to the CEP engine at the company's office, the CEP engine may determine that a speeding event has occurred and may transmit an indication of the occurrence of such an event back to the vehicle.
  • the vehicle may then take the appropriate action in response to occurrence of the event (e.g., notifying the driver, disabling the throttle, applying the brakes, or some other action).
  • the time between the actual occurrence of the event and the action taken in response to the event is delayed by the time needed to transmit the sensor information to the CEP engine and receive the indication of the speeding event back from the CEP engine in response.
  • the inventors have recognized that using the technique above may not provide adequate security for information transferred to and from the CEP engine. That is, by transmitting the information from the non-local sources to the CEP engine, the information becomes more susceptible to unwanted interception, particularly if the information is transmitted wirelessly. Moreover, the inventors have recognized that transmitting this information may increase traffic on the channel over which the information is sent, resulting in an increase in network latency. In the example discussed above, the vehicle may transmit all speed information to the CEP engine, even though much of this information does not result in the detection of an event. As a result, this information may clog the channel over which it is being transmitted even though most of it is not relevant to any event.
  • Figure 2 shows an example of a CEP architecture including multiple communicatively coupled CEP engines, according to some embodiments of the present invention.
  • a first CEP engine 201 receives one or more input streams 205a and 205b from one or more sources 203a and 203b respectively, and publishes data onto one or more output streams 207a, 207b, and 207c.
  • sources 203a and 203b provide input streams directly to CEP engine 201
  • sources 209a and 209b provide input streams directly to CEP engine 211.
  • raw data from an input source may be reformatted into a format suitable for processing as an input stream by the event processing logic of a CEP engine. That is, for example, a software component of the CEP engine 201 or some other intermediary component may receive the raw data from an input source, reformat it, and provide it to event processing logic of the CEP engine (e.g., publish the raw data and/or information relating to same to one or more input streams), as discussed further below.
  • each output stream 207 may correspond to a particular type of event.
  • an indication of the occurrence of an event of type A may be output via output stream 207a
  • an indication of the occurrence of an event of type B may be output via output stream 207b
  • an indication of the occurrence of an event of type C may be output via output stream 207c.
  • Some events detected by CEP engine 201 may be simple events that trigger an immediate local response, some may be informational events that do not trigger any response but rather are temporarily stored locally (and, in some cases, subsequently transmitted to another CEP engine, as discussed further below) and some may be complex events that are detected from a particular pattern of other events indicated in one or more input streams over a period of time and may trigger a local response, may be temporarily stored, and/or may be subsequently transmitted to another CEP engine.
  • one or more of the output streams from the first CEP engine 201 may be transmitted to a second CEP engine 211, such that these output streams are treated as input streams by the second CEP engine 211. More specifically, second CEP engine 211 may receive data via one or more input streams 215a and 215b provided from one or more local sources 209a and 209b, respectively, and may also receive, via one or more input streams, one or more events published onto
  • output streams 207 a and 207b provided by the first CEP engine 201 may be applied as input streams to the second CEP engine 211.
  • one or more of the events published onto output streams 207a and 207b may be stored in the first CEP engine locally and/or may trigger a local response in the environment of the first CEP engine.
  • Second CEP engine 211 may in turn publish data to one or more output streams 213a, 213b, and 213c, each of which may correspond to an event or multiple events.
  • one or more of the output streams from the second CEP engine 211 may be provided as input streams to the first CEP engine 201.
  • output stream 213c is provided from the second CEP engine 211 as an input stream to the first CEP engine 201.
  • the illustrative architecture shown in Figure 2 enables the first CEP engine 201 to detect events based on information from information sources that are not local to it and similarly enables the second CEP engine 211 to detect events from sources that are not local to it.
  • the first CEP engine 201 may be a CEP engine that is in a fleet vehicle (e.g., delivery truck) and sources 203a and 203b may be sensors in the vehicle that provide information about aspects of the vehicle to CEP engine 201 via input stream 205a (e.g., source 203a may be am Electronic Control Unit (ECU) of the vehicle that provides information about various components of the vehicle, including the speed of the vehicle as measured by the vehicle's speedometer).
  • the second CEP engine 211 may be a CEP engine at an office of the company overseeing the fleet of vehicles, and/or a CEP engine executing on a mobile computing device carried by a field supervisor or dispatcher.
  • CEP engine 201 may be configured such that if the speed of the vehicle (as indicated in input stream 205a) exceeds 75 miles per hour, a speeding event is generated and an indication of the occurrence of this event is published onto output stream 207a. Additionally, upon detection of the speeding event, the indication of the event may be
  • the indication of the speeding event published onto the output stream 207a may be applied as an input to CEP engine 211.
  • source 209a may be a computer system that logs when a driver takes out a particular vehicle and when the driver returns that vehicle. Each time a vehicle is taken out or returned, an indication of which vehicle is being taken out or returned and which driver is taking or returning the vehicle may be provided to CEP engine 211 via input stream 215a.
  • CEP engine 211 may additionally be configured to, upon receipt of a speeding event generated by CEP engine 201 on output stream 207a, determine which driver is driving the vehicle using the information received via input stream 215a, and generate an event (e.g., via output stream 213a) indicating that that particular driver is speeding.
  • CEP engine 211 may store the occurrence of this event so that, for example, the number of speeding events for that particular driver may be tracked.
  • CEP engine 211 may be configured to detect an event if the number of speeding events for a given vehicle driver over a certain period of time exceeds a certain threshold. The occurrence of such an event may trigger an action such as, for example, sending an e- mail to the driver's supervisor notifying him or her of the speeding events.
  • the event when a speeding event occurs, the event may trigger a response in the vehicle (e.g., the audio playback or visual display of a warning and/or an action to automatically reduce the speed of the vehicle) irrespective of sending an indication of the event to another (e.g., external) CEP engine and sending sensor data (e.g., speedometer data from the vehicle) to another CEP engine.
  • a response in the vehicle e.g., the audio playback or visual display of a warning and/or an action to automatically reduce the speed of the vehicle
  • sensor data e.g., speedometer data from the vehicle
  • CEP engine 211 in some cases may receive information from non-local sensors (e.g., the speedometer in the vehicle), via the first CEP engine 201, and may combine this information with information from local sources (e.g., sources 209a and 209b) to detect events.
  • non-local sensors e.g., the speedometer in the vehicle
  • sources 209a and 209b e.g., sources 209a and 209b
  • the speeding event that is output by CEP engine 201 via stream 207a to CEP engine 211 is a simple event, in that data from a sensor is used by CEP engine 201 to detect the occurrence of the event independent of the occurrence or non-occurrence of any other events.
  • CEP engine 201 may also output indications of the occurrence of complex events to CEP engine 211.
  • an indication of the complex event may be sent to CEP engine 211 and/or the occurrence of the complex event may trigger some local action.
  • a complex event is an event based on some pattern of, or relationship between, other events.
  • CEP engine 201 may detect a complex event if the vehicle's speed exceeds 75 miles per hour and the driver's seat belt is not fastened.
  • CEP engine 211 may provide indications of simple and/or complex events that it detects to CEP engine 201.
  • CEP engine 201 is in a vehicle of a fleet and CEP engine 211 is in an office of the company overseeing the fleet or on a mobile computing device of a supervisor/dispatcher is merely one example of an environment in which the CEP architecture involving multiple CEP engines as shown in Figure 2 may be used.
  • the architecture shown in Figure 2 is applicable to many different environments, and the invention is not limited to use in a vehicle fleet environment or any other particular environment.
  • CEP engine 211 may be a CEP engine executing on a computer in the vehicle of a field-service technician and CEP engine 201 may be a CEP engine executing in a handheld device (e.g., a tablet PC, mobile phone, or other handheld computing device) that the field-service technician carries at a work site. Because CEP engine 201 is embedded in a mobile device (that may have less processing
  • CEP engine 201 may publish data on output streams to CEP engine 211 to handle processing that is better suited for a computer with greater processing resources, and may receive feedback indicative of the results of this processing via one or more output streams of CEP engine 211.
  • CEP engine 201 is depicted as receiving two input streams from two local sources and one input stream that is an output stream of CEP engine 211. It should be appreciated, however, that the number of input streams received by CEP engine 201 and CEP engine 211 are merely illustrative, as each of these engines may receive any number of input streams. In addition, any number of these streams may be generated from local sources and any number may be input streams generated from output streams of another CEP engine. Similarly, although in the example of Figure 2 CEP engine 201 and CEP engine 211 are depicted as each generating three output streams, the invention is not limited in this respect, as each of these engines may generate any number of output streams.
  • the number and type of input streams that a given CEP engine receives may be configured by a user, developer, or administrator of the CEP engine itself and/or another system in any of a variety of manners.
  • the output stream of a CEP engine may be fed back as an input stream to the same CEP engine.
  • events detected by a given CEP engine may be used by the same CEP engine to subsequently detect other events predicated upon previous events, in some cases together with other information provided on other input stream.
  • events detected by a given CEP engine may be used by the same CEP engine to subsequently detect other events predicated upon previous events, in some cases together with other information provided on other input stream.
  • a CEP engine may feedback to itself as an input stream one of its own output streams to facilitate diagnosis of its own "operating health” and detect events based on this self-diagnosis (e.g., indicate events based at least in part on memory usage, processing rate, etc.).
  • This self-diagnosis e.g., indicate events based at least in part on memory usage, processing rate, etc.
  • the foregoing concept of CEP engine "self-feedback" may be employed in any of the exemplary embodiments discussed herein.
  • a CEP engine may access or obtain information on an input stream in any suitable way, as the invention is not limited in this respect. For example, for some
  • the source of the stream may "push” information to the CEP engine, such that the CEP engine receives information sent to it or broadcasted by the information source.
  • the CEP engine may "pull” information from the source, such that the CEP engine requests information from the source (e.g., "polls” the source) and receives the information in response to a request.
  • CEP engines 201 and 211 may communicate with each other in a variety of manners over a variety of communication media (e.g., via one or more wired or wireless communication interfaces).
  • the CEP engines may communicate using one or more wireless connections (e.g., cellular connections, WiFi connections, etc.).
  • the invention is not limited in this respect as, in some embodiments (e.g., embodiments in which both CEP engines are stationary), the CEP engines may communicate without using any wireless connections.
  • data published onto one or more input streams received by a given CEP engine may come from either a local source or another non-local CEP engine.
  • a CEP engine may receive data on one or more input streams from a non-local source other than another CEP engine.
  • Any suitable non-local source may provide data on an input stream.
  • an external database that is accessible via the Internet (or in some other way) may serve as a non-local information source.
  • non-local sources include, but are not limited to, a non-local database that provides map information (e.g., street information), a non-local database that provides traffic information, a non-local database that provides weather information, a non-local database that stores publicly available financial information about companies (e.g., the SEC EDGAR database), a non-local database that provides credit card or fuel card transaction information, an RSS feed, and/or any of a variety of sources of data on the Internet.
  • map information e.g., street information
  • non-local database that provides traffic information
  • a non-local database that stores publicly available financial information about companies e.g., the SEC EDGAR database
  • a non-local database that provides credit card or fuel card transaction information e.g., an RSS feed, and/or any of a variety of sources of data on the Internet.
  • CEP engines 201 and 211 may be implemented in any suitable way, as the invention is not limited in this respect. In some embodiments, a
  • a software CEP engine may execute on any suitable hardware system.
  • the CEP engine may be executed by one or more hardware processors of a general purpose computer that includes at least one physical storage device (e.g., a non- volatile memory device and/or a volatile memory device) for storing processor-executable instructions representing the CEP engine software and at least one input/output (I/O) interface for receiving data published on input streams from input sources or devices and for sending data published on output streams to output recipients or devices.
  • the hardware processor(s) on which a software CEP engine executes may be in a mobile or portable device, such as a mobile telephone, personal digital assistant, portable laptop computer, or any other type of mobile or portable device.
  • FIG. 2 shows an embodiment having four peer CEP engines 301, 303, 305, and 307. For the sake of clarity, all of the input streams and output streams of each CEP engine are not depicted.
  • each CEP engine may send indications of the occurrence events (e.g., simple event, complex events, or other types of events) and/or other information on which to perform one or more queries to each of the other peer CEP engines and may receive, from each of the other CEP engines, indications of the occurrence events detected by those CEP engines and/or other information.
  • indications of the occurrence events e.g., simple event, complex events, or other types of events
  • each CEP engine may be a "peer" with every other CEP engine in the system (i.e., can send information, such as indications of events or pass on data from input streams, to and receive information from these engines).
  • CEP engine 301 may be a peer to some of the CEP engines in the system, but not to others.
  • CEP engine 301 may be a peer to some of the CEP engines in the system, but not to others.
  • CEP engine 301 may be a peer to some of the CEP engines in the system, but not to others.
  • 2058617 4 may send information (e.g., indications of events) to and receive information from CEP engines 303 and 305, but may not communicate with CEP engine 307.
  • information e.g., indications of events
  • FIG. 4A depicts another CEP architecture according to one embodiment of the present invention in which there is a network of CEP engines arranged in a hierarchy.
  • CEP engine 401 is in tier 1 of the hierarchy and each of CEP engines 403a, 403b, and 403c is in tier 2 of the hierarchy.
  • each CEP engine 403 a in tier 2 of the hierarchy communicates with CEP engine 401.
  • CEP engine 403 a communicates directly with CEP engine 403b (i.e., without needing to traverse CEP engine 401 as a "relay"), but not CEP engine 403c, and CEP engine 403b communicates directly with CEP engine 403a, but not CEP engine 403c.
  • a CEP engine in a higher tier e.g., tier 1
  • a given CEP engine in the lower tier cannot necessarily communicate with all of the other CEP engines in its same tier.
  • CEP engine 403b may be physically capable of communicating with CEP engine 403c, but does not communicate with CEP engine 403c because it is not configured (e.g., by a network administrator or programmer/developer) to communicate with this CEP engine.
  • the query set that is applied by CEP engine 403b may configure the CEP engine such that it communicates with CEP engine 401 and 403a, but not CEP engine 403c.
  • the hierarchical architecture of CEP engines depicted in Figure 4A may be imposed as a result of the configuration of (e.g., the query set applied by) each CEP engine, rather than the physical ability of CEP engines to communicate with certain other CEP engines in the network.
  • the CEP engines in a hierarchical network may be viewed as a reconfigurable web of CEP engines that may be configured into any of a number of different architectures (e.g., including any number of tiers and any number of peers in a given tier) virtually at any time, in response to any of a variety of circumstances or conditions.
  • the computer executing CEP engine 401 experiences a hardware failure rendering CEP engine 401 inoperable, it may be desirable to move one of the CEP engines 403a, 403b or 403c from tier 2 to tier 1. This may be accomplished by reconfiguring which CEP engine(s) in the network communicate with each other.
  • CEP Engine 403b may be moved from tier 2 to tier 1 to replace inoperable CEP engine 401 by configuring CEP engines 403b and 403c to communicate with each other, and by configuring CEP engines 403 a and 403c to no longer communicate with CEP engine 401, but to treat CEP engine 403b as the tier 1 replacement for CEP engine 401.
  • each CEP engine at tier 2 in the hierarchy receives input from a different set of sensors, and a CEP engine at tier 1 performs event processing based on input streams for one or more of the CEP engines in tier 2 of the hierarchy.
  • each CEP engine 403 a, 403b, and 403c may be either a vehicle-based CEP engine in a vehicle of a fleet or a CEP engine in the handheld computing device (e.g., table PC, mobile phone, or other handheld computing device) used by the vehicle driver, while CEP engine 401 may be a CEP engine, at an office overseeing fleet management operations, that is capable of receiving indications of the occurrences of events from each CEP engine 403a, 403b, and 403c and is in turn capable of sending information (e.g., event information) to each of the tier 2 CEP engines.
  • CEP engine 401 may use event information received from one or more of the tier 2 CEP engines to detect complex events that are based on information from multiple different tier 2 CEP engines.
  • each CEP engine 403a, 403b, and 403c may provide an output stream that outputs an event indicating the current location of the vehicle or the driver in which the CEP engine is situated and the vehicle's current state of motion (e.g., moving, speeding, idling).
  • CEP engine 401 may receive this output
  • CEP engine 401 may detect a traffic jam event that indicates that there is a traffic jam on that road.
  • CEP engine 401 can determine whether there are multiple vehicles on the same road at the same time that are idling (or that the drivers of these vehicles are respectively hanging out at a coffee shop on the same congested road rather than performing their respective tasks).
  • CEP engine 401 may send an indication of the occurrence of this event to the CEP engine of one or more vehicles of the fleet that are not on that road (e.g. one or more other CEP engines in tier 2 that are not stuck in traffic) to apprise the drivers of these vehicles that there is a traffic jam on the noted road so that they may take an alternate route to avoid the traffic jam if necessary.
  • CEP engine 401 may detect another event that indicates that the traffic jam on that road has cleared and may send an indication of the occurrence of this event to some or all of tier 2 CEP engines.
  • the hierarchical architectures shown in Figures 4A and 4B are not limited to use with vehicles or the operators of these vehicles, as the architecture shown in Figures 4A and 4B may be used in a variety of different applications and environments.
  • the CEP engines shown in Figures 4A and 4B may be implemented in any suitable way, including any of the ways discussed above in connection with the CEP engines 201 and 211 shown in Figure 2.
  • any other CEP engine with which the first CEP engine communicates may depend on the proximity of the other CEP engine(s) to the first CEP engine.
  • a CEP engine may operate in an "ad-hoc
  • CEP engines may dynamically interconnect with one another and communicate directly with each other without requiring the use of a central access point or additional network infrastructure.
  • fleet management operations refers to any activity relating to the maintenance, dispatch (e.g., scheduling), operation, monitoring (e.g., tracking) and oversight of multiple vehicles and/or vehicle operators employed to conduct business.
  • the inventors have recognized that operating a large fleet of vehicles presents a number of challenges.
  • One challenge is assuring that the drivers of the vehicles in the fleet are operating the vehicles in a safe manner.
  • the costs of maintaining and insuring the vehicles in a fleet can be burdensome.
  • drivers operate vehicles in a safe and appropriate manner, they are less likely to be involved in accidents that necessitate repair to the vehicle, payment of fine for traffic violations, and/or payment of insurance deductibles.
  • lowering the accident rate for a fleet of vehicles may lower the insurance premiums for the fleet and the cost of operating and maintaining the fleet.
  • driver inefficiency Another challenge of operating a large fleet of vehicles relates to driver inefficiency. Inefficiencies may arise when drivers of vehicles use the vehicles for personal reasons when the business expects the driver to be using the vehicle for business purposes. For example, if a technician for a telephone company uses his or her vehicle to run personal errands in between visits to job sites, the technician may not visit as many job sites as otherwise possible in a given time frame, resulting in reduced efficiency.
  • the inventors have recognized that yet another challenge that frequently arises when operating a fleet of vehicles is scheduling drivers to particular job sites. That is, it is generally desirable to assign drivers to job sites in an efficient manner, taking into account travel time between jobs, traffic conditions, and other factors.
  • Figure 5 is a block diagram of a system in which various complex event processing techniques discussed above may be used more specifically in the context of a vehicle fleet environment to facilitate fleet management operations. It should be appreciated however that these CEP techniques and additional CEP techniques discussed below are not limited to use in the field of vehicle fleet operation and management, as these techniques have wide and general applicability to numerous other fields.
  • a CEP engine 507 may execute in a central location 501 (e.g., a main office of the company overseeing fleet management operations), and/or in a mobile computing device of a supervisor or dispatcher, for example.
  • a central location 501 e.g., a main office of the company overseeing fleet management operations
  • multiple vehicle-based CEP engines i.e., CEP engines 505a, 505b,... ,505 «
  • 2058617 4 engines 505a, b, ...n may send information to and receive information from CEP engine 507 (e.g., in a manner similar to that described above in connection with Figure 4A).
  • FIG. 6 is a block diagram of an illustrative internal architecture for a CEP engine that may be used in the system shown in Figure 5 (i.e., CEP engine 507 and each of CEP engines 505 may be implemented in the manner shown in Figure 6).
  • CEP engine 507 and each of CEP engines 505 may be implemented in the manner shown in Figure 6.
  • the CEP engines shown in Figure 5 are not required to be implemented in this way, as many other implementations are possible according to different embodiments of the present invention.
  • CEP engine 601 comprises an input stream service 607, event processing logic 609, data store 611 that stores configuration parameters and event detection queries, output stream receipt service 613, local alert service 615, local alert queries 617, and external message service 619.
  • the input stream service 607 may be considered an input interface for the CEP engine
  • the local alert service 615 and the external message service 619 may be considered output interfaces for the CEP engine.
  • the event processing logic 609 constitutes a hardware processor on which executable instructions (e.g., the configuration parameters and event detection queries stored in data store 611) execute to implement the CEP engine.
  • the input stream service 607, the local alert service 615 and the external message service 619 respectively are shown as internal components of the CEP engine 601, it should be appreciated that one or more of these components, generally serving as an input/output (I/O) interface, may be implemented externally and communicatively coupled to the CEP engine in alternative implementations.
  • I/O input/output
  • Input stream service 607 may receive input data from any of a variety of information sources, such as one or more sensors 603, one or more external messages 605, and/or one or more external data sources 600. Input stream service 607 formats the input data as one or more input streams suitable for processing by event processing logic 609 and provides the input streams to event processing logic 609. In embodiments in which CEP engine 601 is in a vehicle, sensors 603 may include sensors local to the vehicle, which may detect various parameters related to the vehicle (as discussed in greater detail below).
  • a given CEP engine in a network implementation according to the present invention may not receive any input data from sensors (e.g., if
  • CEP engine 507 located in central location 501 may not receive any sensor inputs.
  • the input stream service 607 of the CEP engine may not receive any input data from sensors.
  • External messages 605 include messages from other CEP engines that may, for example, indicate the occurrence of an event (e.g., a simple event or a complex event).
  • External data sources 600 include, for example, external databases from which CEP engine 601 may retrieve data, as well as Internet information sources to which web service calls can be made to retrieve information. Examples of external data sources include, but are not limited to, databases that store and/or website that provide street map information, traffic information, weather information or credit/fuel card transaction information, as well as resource and scheduling information (e.g., relating to vehicle driver shifts and schedules, vehicle use schedules, vehicle maintenance schedules or maintenance history, etc.).
  • a CEP engine may not obtain data from any external data sources and, in such embodiments, input stream service 607 need not interface with or obtain data from such external data sources. In yet other instances, the lack of available information from one or more particular external data sources may itself constitute one or more events.
  • Event processing logic 609 may receive one or more input streams from input stream service 607 and determine from the data in the one or more input streams if an event has occurred.
  • the queries that event processing logic 609 applies to determine if an event has occurred may be user-specified and may be stored, along with other configuration parameters for event processing logic 609, in data store 611, and/or the queries may be stored as a compiled program or script used by event processing logic 609.
  • Event processing logic may publish indications of detected events on one or more output streams to output stream receipt service 613.
  • Event processing logic 609 may be implemented in any suitable way, including using a commercially available event processing server (some examples of which were discussed above).
  • Output stream receipt service 613 may receive output streams from event processing logic 609 and perform any formatting of the event indications in the output streams that is warranted, and may provide the event indications in the output streams to local alert service 615 and/or external message service 619.
  • Local alert service 615 receives event indications from output stream receipt service 613, applies the local alert queries stored in data store 617 to these event indications to determine whether these events trigger any local actions and, if it is determined that an event triggers a local action, sends a message to the system responsible for taking that action.
  • a speeding event may trigger a local action, such as playing an audible message notifying the driver that he or she is speeding and should slow down.
  • External message service 613 receives event indications from output stream receipt service 613 and may send messages indicating the occurrence of these events to external systems (e.g., one or more other CEP engines). For example, external message service 613 may send a message indicating the occurrence of event detected by event processing logic 609 to another CEP engine.
  • external systems e.g., one or more other CEP engines.
  • external message service 613 may send a message indicating the occurrence of event detected by event processing logic 609 to another CEP engine.
  • FIG. 7 is a flow chart of an illustrative process that event processing logic 609 may use to process received input data (e.g., from input stream service 607).
  • the process begins at block 701, where input data is received.
  • the process next continues to block 703, where CEP logic 609 determines whether the received input data warrants looking up data from an external data source (e.g., an external database). If it is determined at block 703 that a data lookup is warranted, the process continues to block 705 where the information from the appropriate data source is obtained. If, at block 703, it is determined that no data lookup is warranted, the process continues to block 707, where it is determined if the received input indicates that an event has occurred. If, at block 707, it is determined that an event has occurred, the process continues to block 709, where the event is output via an output stream.
  • an external data source e.g., an external database
  • the process next continues to block 711, where it is determined if the received input data is used in the detection of any complex events. If so, the process continues to block 713, where the input data is applied to the complex detection routines (as discussed in greater detail below). The process next continues to block 717, where it is determined if a complex event has occurred. If a complex event has occurred, the process continues to block 719, where the complex event is output via an output stream. If, at block 717, it is determined that no complex event has occurred the process continues to block 715.
  • event processing logic 609 may cache received input data that may be subsequently used in the detection of complex events so that this data may be quickly accessed. If at, block 715, it is determined that the input data warrants caching, the process may continue to block 721, where the input data is stored in the cache. If at, block 715, it is determine that the received input data does not warrant caching, the process ends.
  • one or more of the CEP engines 505 in a vehicle 503 may receive a variety of information from different sources, examples of which information include, but are not limited to, vehicle information, image information, event-based information (e.g., from one or more other vehicles, a central office, and/or a mobile supervisor/dispatcher), and/or non- vehicle specific information (e.g., weather information, traffic information, street map information, credit/fuel card transaction information, etc.).
  • the input stream service of a given CEP engine publishes the various information received onto one or more input streams, to which queries are applied by event processing logic to determine one or more events based on the received information.
  • vehicle information may originate from one or more sensors associated with a vehicle (e.g., a vehicle in which the CEP engine itself may be situated).
  • vehicle information may include environmental and/or operational information regarding a vehicle and/or the environment in which a vehicle is operated.
  • vehicle information may include a variety of resource and/or scheduling information relating to a vehicle and/or its driver (e.g., to what driver is a vehicle assigned, when and/or by whom the vehicle was taken out or returned to a company lot, when the vehicle was started-up at the beginning of a day/shift and shut-down/parked at the end of a day/shift, vehicle maintenance schedules and/or maintenance history, etc.).
  • resource and/or scheduling information may be accessed via electronic records maintained by a company overseeing fleet management operations. Specific examples of the foregoing vehicle information types are provided in turn below.
  • Image information relating to a given vehicle and/or its operating environment also may be received from various sources and published onto one or more input streams.
  • image information may be provided as part of the vehicle information to which a CEP engine applies one or more queries, while in other cases image information may be provided apart from vehicle information.
  • image information examples include, but are not limited to, "raw” or unprocessed information obtained from an output of one or more on-board vehicle cameras (in which pixel information, such as luminance and/or color values for a particular pixel, is represented as a series of digital values constituting one or more frames of image data), status information regarding operation of one or more on-board vehicle cameras (which may be provided as digital values, text strings, or Boolean values), and processed image information (e.g., color detection information, luminance information, edge detection information, motion detection information, pattern/object recognition information, etc.) derived from data provided by one or more on-board vehicle cameras (processed image information similarly may be provided as digital values, text strings, or Boolean values).
  • pixel information such as luminance and/or color values for a particular pixel
  • processed image information e.g., color detection information, luminance information, edge detection information, motion detection information, pattern/object recognition information, etc.
  • image information may itself include image- related event information, for example, in which processed image information is further analyzed or itself provides one or more indications of a particular image attribute or particular image content (e.g., the presence of a red traffic light or a stop sign in one or more image frames).
  • image information may be used in conjunction with vehicle information and/or other non-vehicle specific information to determine complex events such as a "disobeyed stop traffic signal event," an "excessive speed event,” and/or a "reckless driving event,” for example.
  • an input stream of a CEP engine onto which processed image information is published may be generated based at least in part on data provided by one or more dedicated image processors communicatively coupled to the CEP engine (which may constitute one or more external data sources 600 as shown in Figure 6).
  • the image processor(s) may be configured to execute any of a variety of image analysis algorithms on data representing one or more acquired images so as to provided the processed image information.
  • a CEP engine may be configured to execute any of a variety of image analysis algorithms on data representing one or more acquired images so as to provided the processed image information.
  • 2058617 4 itself may be configured, via an appropriate query set, to monitor "raw" image information (e.g., luminance/color pixel values) and/or partially/pre-processed image information published to one or more input streams so as to perform further image analysis, which may in turn be used for vehicle -related and/or fleet-related event detection (e.g., an image processor itself may be implemented as a CEP engine, in which one or more output streams of the image processor CEP engine may provide image- related event information to another CEP engine for purposes of detecting vehicle-related and/or fleet-related events).
  • "raw" image information e.g., luminance/color pixel values
  • partially/pre-processed image information published to one or more input streams so as to perform further image analysis, which may in turn be used for vehicle -related and/or fleet-related event detection
  • an image processor itself may be implemented as a CEP engine, in which one or more output streams of the image processor CEP engine may provide image- related event information to another CEP engine for purposes
  • image analysis algorithms that may be implemented by one or more image processors (whether or not they are CEP-based) include, but are not limited to, a motion detection algorithm, a pixel value analysis algorithm, a color analysis algorithm, a pixel entropy algorithm, an edge detection algorithm, a line detection algorithm, and a compression analysis algorithm. Any one or more of such exemplary algorithms may be applied to image pixel data representing one or more image frames so as to provide luminance information, color detection information, edge or line detection information, motion detection information, pattern/object recognition information, and compression information.
  • a motion detection algorithm may perform an optical flow calculation for determining a pattern of apparent motion of an on-board vehicle camera based on changes of image content represented by data in multiple image frames.
  • the optical flow algorithm may be based on the Pyramidal Lucas-Kanade method for performing an optical flow calculation (see Lucas B D and Kanade T, "An iterative image registration technique with an application to stereo vision," Proceedings of Imaging understanding workshop, pp 121-130, 1981, which publication is hereby incorporated herein by reference).
  • a pixel value analysis algorithm may be used to generate a grayscale luminance distribution histogram of image content.
  • a color analysis algorithm may be used to analyze the RGB color data or HSV color coordinate system hue and saturation values in one or more frames of image data.
  • the color analysis algorithm may determine a most prevalent color present in some portion of one or more image frames (e.g., yellow for a yellow traffic light, red for a red traffic light or stop sign, etc.).
  • a pixel entropy algorithm may measure a degree of randomness of image
  • Randomness of an image may be a measure of, for example, the presence or absence of predictable patterns in the image.
  • the pixel entropy algorithm may compute an entropy value for an image based on grayscale luminance distribution and/or color distribution of the image data. Thus, an image that is more varied in color and/or intensity may have a higher entropy value compared to an image that is less varied in color and/or intensity.
  • Edge detection is a process of identifying points in a digital image at which image brightness changes sharply (e.g., a process of detecting extreme pixel differences).
  • An edge detection algorithm may be used to perform edge detection on one or more frames of the image data.
  • an edge detection algorithm may use the Sobel operator, which calculates a gradient of image intensity at each point/pixel, giving a direction of largest increase from light to dark and/or from one color to another and a rate of change in that direction. The result therefore shows how "abruptly" or
  • a line detection algorithm may be based on one or more edge detection processes that use, for example, the Sobel operator.
  • a line detection algorithm may group together edges output by the edge detection processes based on the edges' locations, lengths, and/or orientations. For example, in one implementation, the line detection algorithm may output a detected line when the total length of a group of adjacent edges exceed a certain threshold (e.g., 10 pixels).
  • a compression analysis algorithm may be any suitable software algorithm for performing a compression operation on image data.
  • a discrete cosine transform may be applied to blocks of pixels to transform the data into a frequency domain, thereby facilitating removal of fine details in the image (e.g., high frequency components) that are less perceptible to humans.
  • processed image information published to one or more input streams of a CEP engine (or published to one or more output streams of a CEP-based
  • image processor 2058617 4 image processor also may include indications of detected image-related events based on application of one or more image analysis algorithms to one or more frames of image data.
  • image-related events that may be detected as a result of image processing include, but are not limited to, detecting the presence of a particular object or feature in an on-board vehicle camera's field of view, as well as detecting a pattern of motion of particular objects or features in the camera's field of view from multiple frames of image data.
  • image-related events generally relating to forward field of view include a "lane change event” (e.g., when a vehicle changes lanes) and a “proximate forward collision event” (e.g., when a vehicle is tailgating another vehicle) ⁇ see Su YF, Chen CT, Liao HL, “Study of Integrated Vehicle Image System Including LDW, FCW, and AFS," World Academy of Science, Engineering and Technology, Vol. 60, pages 216-222, 2009, which publication is incorporated herein by reference).
  • lane change event e.g., when a vehicle changes lanes
  • proximate forward collision event e.g., when a vehicle is tailgating another vehicle
  • image-related events generally relating to forward field of view include detection of a particular color traffic light in one or more images, detecting the presence of a traffic sign such as a speed limit sign, stop sign, or yield sign in one or more images, and detecting activation of the windshield wipers in one or more images.
  • image-related events generally relating to rear or driver-facing field of view include, but are not limited to a "driver distracted event” (e.g., in which the orientation of a driver's face may be determined, pursuant to image analysis, as not forward- facing) and a "driver sleeping event” (e.g., in which a driver's eyes may be determined, pursuant to image analysis, to be drooping or closed).
  • One or more on-board vehicle cameras may be placed inside and/or outside of a vehicle in various locations, and may monitor an internal view (including a driver) and/or an external view (e.g., one or more in-cab camera may be mounted on or near a rear view mirror and oriented to acquire images from a forward field of view and/or rear/driver field of view).
  • an external view e.g., one or more in-cab camera may be mounted on or near a rear view mirror and oriented to acquire images from a forward field of view and/or rear/driver field of view.
  • a 360 degree camera system may be used to obtain a wide range of image views.
  • an on-board vehicle camera may include a video event recorder configured to record video events based at least in part on one or more exceptional forces acting on the vehicle (e.g., hard braking, swerving, collision, etc.).
  • video event recorders may provide both real-time or "raw" image data from monitored views, as well as one or more specific images relating to particular events or time periods preceding/following specific events relating to exceptional forces. Examples of such video event recorders are given by the Vision Drive 3000 available from Catalk, Inc. dba VisionDriveCam.com, 11501 Dublin Boulevard. Suite 200, Dublin, California 94568 (see http://visiondrivecam.com), and the DriveCamTM brand imaging system available from DriveCam Inc., 8911 Balboa Ave., San Diego, California 92123 (see http://
  • non-vehicle specific information that may be helpful in determining vehicle-related events and/or fleet-related events may be published onto one or more input streams to which a CEP engine applies one or more queries.
  • Examples of such information include, but are not limited to, weather information, traffic information, street map information, and credit card or fuel card transaction information.
  • One or more of these exemplary information types may be obtained from a variety of sources in any of a variety of manners (e.g., issuing a web service call to retrieve weather, traffic and/or street map information based on a vehicle's current location).
  • Non- vehicle specific information may be assessed by a CEP engine alone or together with vehicle information, image information, and/or one or more other complex events to determine a variety of vehicle -related and/or fleet-related events.
  • Table 1 lists an illustrative set of input streams to which various information may be published and processed by a vehicle-based CEP engine 505 in a vehicle 503, and Table 2 lists an illustrative set of output streams to which the vehicle- based CEP engine may publish indications of event occurrences as a result of the application to one or more input streams of one or more queries. It should be appreciated that these tables are intended to be exemplary and not exhaustive with respect to the types of information and/or events that may be published to one or more input streams
  • the Vehicle_Readings_Input stream may provide data from an Electronic Control Unit (ECU) of the vehicle in which a CEP engine 505 is located.
  • the ECU may be on On-Board Diagnostic system (OBD) that provides access to various information relating to vehicle health for various vehicle sub-systems, which in many instances is provided by various sensors on/in the vehicle.
  • ODB On-Board Diagnostic system
  • the amount of information available from an ECU/OBD may vary widely amongst different vehicle makes/models.
  • Table 3 lists exemplary vehicle readings information that may be included in the Vehicle_Readings_Input stream.
  • the GPS_Input stream may provide data from an on-board GPS receiver in the vehicle in which a CEP engine 505 is located. Table 4 below lists exemplary information that may be included in the GPS_Input stream.
  • the Accelerometer_Input stream may provide data from an on-board accelerometer in the vehicle in which a CEP engine 505 is located. Table 5 below lists exemplary information that may be included in the Accelerometer_Input stream.
  • the Humidity_Input stream may provide data from an on-board humidity sensor in the vehicle in which a CEP engine 505 is located. Table 6 below lists exemplary information that may be included in the Humidity_Input stream.
  • the In-Cab_Temperature_Input stream may provide data from an on-board temperature sensor that measures air temperature inside the vehicle in which a CEP engine 505 is located.
  • the Outside_Temperature_Input stream may provide data from an on-board temperature sensor that measures air temperature outside the vehicle in which a CEP engine 505 is located.
  • the Light_Input stream may provide data from an on-board temperature light- sensor in the vehicle in which a CEP engine 505 is located. Table 9 below lists exemplary information that may be included in the Light_Input stream.
  • the Ign_Voltage_Input stream may provide data from an on-board ignition voltage sensor in the vehicle in which a CEP engine 505 is located. Table 10 below lists exemplary information that may be included in the Ign_Voltage_Input stream.
  • the Cam_Voltage_Input stream may provide data from an on-board camera voltage sensor in the vehicle in which a CEP engine 505 is located. Table 11 below lists exemplary information that may be included in the Cam_Voltage_Input stream.
  • the Driver_Camera_Input stream may provide data from an on-board camera and sensor monitoring the state of the driver of the vehicle in which a CEP engine 505 is located. As noted above, un-processed image information, processed image information, image-related event information, and/or camera status information may be published to this input stream. Table 12 below lists exemplary information that may be included in the Driver_Camera_Input stream.
  • the Vehicle_Camera_Input stream may provide data from and/or derived from an on-board vehicle camera that monitors the front field of view from the vehicle in which a CEP engine 505 is located. As noted above, un-processed image information, processed image information, image -related event information, and/or camera status information may be published to this input stream. Table 13 below lists exemplary information that may be included in the Vehicle_Camera_Input stream.
  • the Cellular_Diagnostic_Input stream may provide data from an on-board component that measures cellular telephone network connectivity from the vehicle in which a CEP engine 505 is located. Table 14 below lists exemplary information that may be included in the Cellular_Diagnostic_Input stream.
  • the Wireless_Diagnostic_Input stream may provide data from an on-board component that measures WiFi network connectivity from the vehicle in which a CEP engine 505 is located.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the GPS_Input, the Accelerometer_Input, Humidity_Input, In-Cab_Temperature_Input, Outside_Temperature_Input, Light_Input, Ign_Voltage_Input, Cam_Voltage_Input, Driver_Camera_Input, Vehicle_Camera_Input, Cellular_Diagnostic_Input, and
  • Wireless_Diagnostic_Input to detect events that indicate a diagnostic error condition for a specific component. Such events may be output via the Component_Error_Output stream.
  • the Component_Error_Output stream may include the exemplary information listed in Table 16 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the GPS_Input, the Accelerometer_Input, Humidity_Input, In-Cab_Temperature_Input, Outside_Temperature_Input, Light_Input, Ign_Voltage_Input, Cam_Voltage_Input, Driver_Camera_Input, Vehicle_Camera_Input, Cellular_Daignostic_Input, and
  • Wireless_Diagnostic_Input to detect events that suggest that a specific component is not operating as intended. Such events may be output via the Component_Warning_Output stream.
  • the Component_Warning_Output stream may include the exemplary information listed in Table 17 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the GPS_Input, the Accelerometer_Input, Humidity_Input, In-Cab_Temperature_Input, Outside_Temperature_Input, Light_Input, Ign_Voltage_Input, Cam_Voltage_Input, Driver_Camera_Input, Vehicle_Camera_Input, Cellular_Daignostic_Input, and
  • Wireless_Diagnostic_Input to detect events that indicate a heartbeat message transmitted from a specific component. Such events may be output via the
  • the Component_Heartbeat_Output stream may include the exemplary information listed in Table 18 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the GPS_Input, the Accelerometer_Input, Humidity_Input, In-Cab_Temperature_Input, Outside_Temperature_Input, Light_Input, Ign_Voltage_Input, Cam_Voltage_Input, Driver_Camera_Input, Vehicle_Camera_Input, Cellular_Diagnostic_Input, and
  • Wireless_Diagnostic_Input to detect events that indicate an error condition for the entire vehicle system. Such events may be output via the System_Error_Output stream.
  • a System_Error_Ouput event may be detected if, for period of at least one minute, the WiFi Client Count indicated in the Wireless_Diagnostic_Input is less than or equal to a predefined threshold of the minimum number of network clients. This threshold may be specified by a user or administrator and stored, for example, in data store 611.
  • the System_Error_Output stream may include the exemplary information listed in Table 19 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the GPS_Input, the Accelerometer_Input, Humidity_Input, In-Cab_Temperature_Input, Outside_Temperature_Input, Light_Input, Ign_Voltage_Input, Cam_Voltage_Input, Driver_Camera_Input, Vehicle_Camera_Input, Cellular_Daignostic_Input, and
  • Wireless_Diagnostic_Input to detect events that suggest that the an entire vehicle system or a portion thereof is not operating as intended. Such events may be output via the System_Warning _Output stream.
  • a System_Warning_Ouput event may be detected if the Cellular Signal Level in the Cellular_Diagnostic Input Stream indicates is less than a predefined minimum signal level threshold.
  • This threshold may be specified by a user or administrator and stored, for example, in data store 611.
  • the System_Warning_Output stream may include the exemplary information listed in Table 20 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the GPS_Input, and/or the Vehicle_Camera_Input to detect events that indicate the current geographic position of the vehicle and the vehicle's current state of motion. Such events may be output via the Vehicle_Movement_Ouput stream.
  • a vehicle movement event may be detected, for example, if the vehicle speed as indicated in the Vehicle_Readings_Input stream exceeds a predefined maximum speed threshold (e.g., stored in data store 611). That is, an event may be detected if the vehicle is speeding. Another example of a type of vehicle movement event that may be detected is if the vehicle is idling.
  • Such an event may be detected and output if, for example, the vehicle speed is less than or equal to a minimum speed threshold (e.g., 0 mph), the engine RPM level is greater than or equal to a minimum RPM threshold (e.g., 100 rpm), the vehicle key position is in the "Run” position, and the engine oil pressure is greater than a minimum oil pressure threshold (e.g. 15 psi).
  • a minimum speed threshold e.g., 0 mph
  • a minimum RPM threshold e.g., 100 rpm
  • the vehicle key position is in the "Run” position
  • the engine oil pressure is greater than a minimum oil pressure threshold (e.g. 15 psi).
  • a minimum oil pressure threshold e.g. 15 psi
  • a vehicle moving event indicates that the vehicle is moving and may be detected, for example, if the vehicle speed is greater than a minimum speed threshold (e.g., 0 mph) and the vehicle gear position is not in park.
  • Another type of vehicle movement event that may be detected is a U-turn event, which may be detected if, within 15 seconds, the current vehicle direction as indicated by the GPS receiver does not equal the previous vehicle direction.
  • Another type of vehicle movement event that may be detected is a long braking event which may be detected using the Brake_Ind parameter of the Vehicle_Readings_Input stream. For example, if it is determined that the brakes are being continuously applied for longer than a predefined maximum brake duration threshold (e.g, 45 seconds), then a long braking event may be detected.
  • a predefined maximum brake duration threshold e.g, 45 seconds
  • Another type of vehicle movement event that may be detected is a hard braking event. Such an event may be detected if, over a period of five seconds, the speed level of the vehicle decreases by an amount that is greater than a predefined maximum
  • 2058617 4 speed change threshold (e.g, 30 mph).
  • Another type of vehicle movement event that may be detected is a long reverse event. Such an event may be detected, for example, if the gear position of the vehicle is in reverse and the speed of the vehicle exceeds a minimum speed threshold (e.g., 0 mph or 1 mph) for period of time equal to or longer than a predefined maximum reverse time threshold (e.g., 120 seconds).
  • Another type of vehicle movement event that may be detected is a fast reverse event, which may be detected if, for example, the vehicle gear position is in reverse and the vehicle speed exceeds a predefined maximum reverse speed threshold (e.g., 25 mph).
  • a predefined maximum reverse speed threshold e.g. 25 mph.
  • a near miss event which may be detected if, for example, Drvr_Distract_Ind indicates a driver distraction event within five seconds of any detected hard braking event.
  • Another type of vehicle movement event that may be detected is a moving while not in gear event. Such an event may be detected if the gear position of the vehicle is in neutral or park and the speed of the vehicle (as specified either in the
  • Vehicle_Readings_Input or GPS_Input exceeds a minimum speed threshold (e.g. 0 mph).
  • a minimum speed threshold e.g. 0 mph
  • Another type of vehicle movement event that may be detected is a heavy traffic event. Such an event may be detected if the vehicle speed is greater than or equal to a predefined normal speed threshold (e.g., 35 mph), followed by the vehicle speed being less than the normal speed threshold for a period of time that is greater than or equal to minimum traffic jam time threshold (e.g, 300 seconds).
  • the Vehicle_Camera_Input stream also may be queried in connection with the various vehicle movement indicators included in Table 13 above.
  • the Vehicle_Movement_Output stream may include the exemplary information listed in Table 21 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input and the GPS_Input to detect events that indicate a vehicle engine condition that exceeds set tolerances. Such events may be output via the Vehicle_Engine_Ouput stream.
  • One example of type of vehicle engine output event that may be detected is a high throttle event. Such an event may be detected if the throttle percentage specified in the Vehicle_Readings_Input exceeds a predefined maximum throttle percentage threshold (e.g, 100 percent). Another type of vehicle engine output event that may be
  • the Vehicle_Engine_Output stream may include the exemplary information listed in Table 22 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input and the GPS_Input to detect events that indicate a vehicle fluid reading that exceeds set tolerances. Such events may be output via the Vehicle_Fluid_Ouput stream.
  • One example of a type of vehicle fluid event that may be detected is a fueled event. Such an event may be detected if current fuel level indicated in the
  • Vehicle_Readings_Input is greater than the previous fuel level, the current fuel level is less than or equal to a predefined maximum fuel level threshold (e.g., 100 percent) and the current fuel level is greater than a predefined minimum fuel level threshold (e.g, 0 percent)
  • a predefined maximum fuel level threshold e.g. 100 percent
  • a predefined minimum fuel level threshold e.g. 0 percent
  • Another example of a type of vehicle fluid event that may be detected is a low fuel event. Such an event may be detected, for example, if the current fuel level indicated in the Vehicle_Readings_Input is less than or equal to the predefined minimum fuel level threshold.
  • the Vehicle_Fluid_Output stream may include the exemplary information listed in Table 23 below.
  • a CEP engine 505 may use information from the Vehicle_Readings_Input, the Ign_Voltage_Input, and the GPS_Input to detect events that indicate a change in vehicle state. Such events may be output via the Vehicle_State_Ouput stream.
  • An example of a type of vehicle state event that may be detected is an ignition event, which may be detected if the input voltage level specified in the
  • Ign_Voltage_Input stream exceeds a predefined maximum voltage threshold (e.g., 20 volts).
  • a predefined maximum voltage threshold e.g. 20 volts.
  • Another type of vehicle state event is that may be detected is an ignition off event. Such an event may be detected, for example, if vehicle key position is not in the start position and is not in the run position, and the ignition voltage level is less than or equal to a minimum voltage threshold (e.g., 0 volts).
  • a check engine event which may be detected if the
  • Eng_Light_Ind in the Vehicle_Readings_Input indicates that the check engine light is lit.
  • the Vehicle_State_Output stream may include the exemplary information listed in Table 24 below.
  • a CEP engine 505 may use information from the Vehicle_Camera_Input, the Cam_Voltage_Input, and the GPS_Input to detect events that indicate that the vehicle camera is capturing or has captured images of the cab and the front of the vehicle. Such events may be output via the Vehicle_Camera_Output stream.
  • An example of a type of vehicle camera event that may be detected is a camera capture event, which may be detected if the camera voltage level specified in the Vehicle_Camera_Input stream exceeds a predefined threshold (e.g., 0 volts).
  • the Vehicle_Camera_Output stream may include the exemplary information listed in Table 25 below. It should be appreciated that this output stream is status-oriented in nature, in that it provides information about operation of an on-board vehicle camera. As discussed elsewhere herein, other output streams are possible in which the occurrence of complex events may be indicated based on one or more image-related events present in the Vehicle_Camera_Input stream or Driver_Camera_Input stream.
  • a CEP engine 505 may use information from the Vehicle_Camera_Input, the Cam_Voltage_Input, the Vehicle_Readings_Input, the Accelerometer_Input, and the GPS_Input to detect events that indicate that the vehicle has experienced significant impact one one or more axes. Such events may be output via the Vehicle_Impact_Ouput stream.
  • One example of a type of vehicle impact event that may be detected is an x- axis impact, which may be detected if the x-axis reading from the Accelerometer_Input exceeds a predefined x-axis impact threshold (e.g., .8 g).
  • a predefined x-axis impact threshold e.g., .8 g
  • a y-axis impact which may be detected if the y-axis reading from the Accelerometer_Input exceeds a predefined y-axis impact threshold (e.g., .5 g).
  • a type of vehicle impact event that may be detected is a z-axis impact, which may be detected if the z-axis reading from the Accelerometer_Input exceeds a predefined z-axis impact threshold (e.g., 1.0 g).
  • the Vehicle_Impact_Output stream may include the exemplary information listed in Table 26 below.
  • a CEP engine 505 may use information from the GPS_Input, the In- Cab_Temperature_Input, the Humidity_Input, and the Light_Input to detect events that indicate the current environmental conditions inside the vehicle. Such events may be output via the Vehicle_Environment_Ouput stream.
  • the Vehicle_Environment_Output stream may include the exemplary information listed in Table 27 below.
  • a CEP engine 505 may use information from the GPS_Input, the
  • Vehicle_Readings_Input and the Driver_Camera_Input to detect events that indicate a change in the state of the driver. Such events may be output via the
  • An example of a type of occupant state event that may be detected is a driver drowsy event. Such an event may be detected if number of driver sleep events received from the Driver_Camera_Input stream in a one minute period exceeds a predefined threshold (e.g., 5).
  • a predefined threshold e.g. 5
  • a driver distracted event which may be detected, for example, if the number of driver distracted events received via the Driver_Camera_Input stream in a one minute period exceeds a predefined threshold (e.g, 4).
  • Another type of occupant state event that may be detected is a passenger present event.
  • Such an event may be detected if, for example, the Psgr_Abag_Ind parameter of the Vehicle_Readings_Input stream indicates that the passenger airbag light is lit or if the Psgr_Sbelt_Ind indicates that the passenger seatbelt is fastened.
  • the Occupant_State_Output stream may include the exemplary information listed in Table 28 below.
  • a CEP engine 505 may use information from the GPS_Input, the
  • An example of an external environment event that may be detected is a low light event. Such an event may be detected if the light level specified in the Light_Input stream is less than or equal to a predefined minimum light threshold (e.g., 15 percent).
  • the External_Environment_Output stream may include the exemplary information listed in Table 29 below.
  • an output stream may be defined onto which data is published relating to detection of a disobeyed stop traffic signal (e.g., a vehicle entering an intersection when the traffic signal has indicated that the driver must stop, such as a red traffic light or a stop sign).
  • Vehicle_Readings_Input (described above in Table 3), GPS_Input (described above in Table 4), Vehicle_Camera_Input (described above in Table 13) and/or Street_Map_Input (see Table 1) may be used by CEP engine 505 as input streams, and various information derived therefrom may be used to detect such an event.
  • a Disobeyed_Stop_Traffic_Signal_Output stream may include the exemplary information listed in Table 30 below.
  • any one or more of a vehicle speed, a vehicle throttle depression reading, and a brake pedal application indicator may be used from the Vehicle_Readings_Input stream to assess a current speed as well as acceleration and/or deceleration of the vehicle (change of speed over some time interval).
  • Speed information also or alternatively may be obtained from the GPS_Input stream.
  • Speed, acceleration and/or deceleration may be compared to one or more pieces of traffic signal information derived from the Vehicle_Camera_Input stream, such as an indication of a presence of a yellow traffic light in one or more images, an indication of a red traffic light in one or more images, and/or an indication of a stop sign in one or more images (as discussed earlier, it is presumed that appropriate image analysis algorithms are applied to acquired images to make the necessary determination of traffic signal presence in one or more images). Changes in speed, acceleration and/or deceleration proximate in time to the detection of a traffic signal in one or more images provides instructive information with respect to a potentially disobeyed traffic signal.
  • a disobeyed stop traffic signal event is determined if a red traffic light is detected within a predetermined time interval of a detected yellow traffic light, and if the vehicle speed and/or throttle depression is approximately the same or increased during the
  • an absence of the brake pedal application indicator during the predetermined time interval between a detected yellow traffic light and a detected red traffic light also or alternatively may be indicative of a disobeyed stop traffic signal.
  • the CEP engine also may consult the GPS_Input stream to assess the current geographic location of a vehicle and, based on same, issue a web service call for information to be published to the Street_Map_Input stream. Based on information contained in the Street_Map_Input stream, a query may assess if the vehicle is approaching an intersection and, if so, the CEP engine may begin specifically monitoring the Vehicle_Camera_Input stream, and/or triggering one or more specific
  • FIG. 8 shows a high-level generalized flow chart diagram of a specific example of a query set 800 for detecting when a vehicle runs a red traffic light (minor modifications to this query set would be applicable to detecting when a vehicle runs a stop sign).
  • CEP query 800 monitors one or more first input streams 810 onto which vehicle information is published (e.g., the Vehicle_Readings_Input stream, the
  • GPS_Input stream monitors one or more second input streams 820 onto which image information is published (e.g., the Vehicle_Camera_Input stream).
  • the event is joined by Join Query 821 with the most recent VIS information provided on the Vehicle_Readings_Input stream, which is stored in Most Recent Vehicle History Window 811.
  • Red Light Detection Pattern Query 831 monitors the output of the Join Query 821. When Red Light Detection Pattern Query 831 detects a yellow light event (i.e., Yellow_Traffic_Signal_Ind) followed by a red light event (i.e.,
  • Red_Traffic_Signal_Ind within a predetermined time interval (e.g., a 5 second window), it compares the VIS information joined to those two events. If the result of that comparison is that the speed of the vehicle or throttle percentage of the vehicle is approximately the same or greater at the time of the red light event than that at the time of the yellow light event, CEP query 800 publishes the Disobeyed_Stop_Traffic_Output to output stream 830, and may also issue a local "run red light alert.”
  • a predetermined time interval e.g., a 5 second window
  • an output stream may be defined onto which data is published relating to detection of an excessive speed event (e.g., a vehicle traveling at a speed in excess of a posted speed limit, and/or traveling at a speed in excess of a determined safe speed, wherein the determined safe speed may rely on existing weather and/or traffic conditions, for example).
  • an excessive speed event e.g., a vehicle traveling at a speed in excess of a posted speed limit, and/or traveling at a speed in excess of a determined safe speed, wherein the determined safe speed may rely on existing weather and/or traffic conditions, for example).
  • Vehicle_Readings_Input (described above in Table 3), GPS_Input (described above in Table 4), Vehicle_Camera_Input (described above in Table 13), Weather_Input (see Table 1), Traffic_Input (see Table 1), and/or Street_Map_Input (Table 1) may be used by CEP engine 505 as input streams, and various information derived therefrom may be used to detect such an event.
  • Excessive_Speed_Output stream may include the exemplary information listed in Table 31 below.
  • any one or more of a vehicle speed, a vehicle throttle depression reading, and a brake pedal application indicator may be used from the Vehicle_Readings_Input
  • Speed information also may be obtained from the GPS_Input stream. Speed, acceleration and/or deceleration may be compared to one or more pieces of traffic speed information derived from the Vehicle_Camera_Input stream, such as an indication of a presence of a speed limit sign in one or more images, as well as the posted speed limit on the speed limit sign (as discussed earlier, it is presumed that appropriate image analysis algorithms are applied to acquired images to make the necessary determination of a posted speed limit in one or more images).
  • information about the speed limit for the road on which the vehicle is traveling may be obtained using geographic information from the GPS_Input stream to issue a web service call to a website providing street map information to be published to the Street_Map_Input stream, and this information may be used alternatively to, or in conjunction with, the image information relating to a detected speed limit sign to ascertain the appropriate speed limit.
  • a safe speed for the vehicle may be determined as a predetermined percentage of the relevant speed limit (e.g., the posted speed limit as detected in one or more images, speed limit as indicated in street map information, etc.,). For example, absent any extenuating weather and/or traffic conditions, a safe speed may be set at equal to or slightly greater than the posted speed (e.g., 105% of the posted speed limit, providing some allowance for "reasonable" speeding). In other implementations, the safe speed may be determined based not only on the posted speed limit, but also on weather and/or traffic conditions in the vicinity of the vehicle that may in some manner affect safe travel (and perhaps warrant a safe speed that is less than 100% of the posted speed limit). To this end, a Wind_Wiper_Ind present in the Vehicle_Readings_Input stream (see Table 3), and/or a Wiper_Activation_Output present in the
  • Vehicle_Camera_Input stream may be used as an indicator of inclement weather conditions (e.g., rain, sleet, snow, etc.), upon which a safe speed of less than 100% of the posted speed limit may be determined.
  • the CEP engine may issue a web service call to a weather- oriented website for weather information to be published to the Weather_Input stream, and the safe speed may be determined based at least in part on the retrieved weather
  • the CEP engine also or alternatively may issue a web service call, based on information in the GPS_Input stream, to a traffic-oriented website for traffic information to be published to the Traffic_Input stream, and the safe speed may be determined based at least in part on the retrieved traffic information (alone or together with weather information).
  • FIG. 9 shows a high-level generalized flow chart diagram of a specific example of a CEP query 900 for detecting when a vehicle exceeds a safe speed.
  • CEP query 900 monitors vehicle information published to one or more first input streams 910 (e.g., the Vehicle_Readings_Input stream, the GPS_Input stream), and monitors image information published to one or more second input streams 920 (e.g., the Vehicle_Camera_Input stream).
  • first input streams 910 e.g., the Vehicle_Readings_Input stream, the GPS_Input stream
  • image information published to one or more second input streams 920 e.g., the Vehicle_Camera_Input stream.
  • the safe speed may be calculated as less than 100% (e.g., 75%) of the detected posted speed limit. If the weather information indicates that it is snowing or that the outside temperature is such that any reported precipitation might be snow or ice, then the safe speed may be calculated as an even lower percentage (e.g., 50%) of the detected posted speed limit. After the safe speed is calculated, it is compared at act 941 with the vehicle speed as stored in Most Recent Vehicle History Window 911. If the result of that comparison is that the speed of the vehicle exceeds the safe speed, or exceeds the safe space by more than some predetermined value (e.g., 105%), CEP query 900 publishes an Exceed Safe Speed event to output stream 940.
  • some predetermined value e.g. 105%
  • weather information is obtained by issuing a web service call to a weather information service.
  • a variety of other techniques may be used to determine inclement weather conditions. For example,
  • information may be obtained from the vehicle electronic control unit (ECU) to determine whether the windshield wipers are turned on and, if so, the speed of the windshield wipers.
  • image analysis may be performed on images obtained from the on-board vehicle camera to determine if wiper blades are moving across the windshield, as well as the speed with which the wiper blades are moving across the windshield.
  • traffic information may be consulted for determination of an appropriate safe speed.
  • Vehicle_Canera_Input join this information with the most recent vehicle information (VIN, ImageldType, ImageldValue, Speed,
  • FLOAT result ImageAnalysisSpeedLimit
  • an output stream may be defined onto which data is published relating to detection of a reckless driving event.
  • Excessive_Speed_Output (described above in Table 31) may be used by CEP engine 505 as input streams, and various information derived therefrom may be used to detect such an event.
  • a Reckless_Driving_Output stream may include the exemplary information listed in Table 32 below.
  • a reckless driving event may be determined if an excessive speed event has occurred for a predetermined time period (e.g., excessive speed event is transmitted on an input stream for more than five minutes). Similarly, a reckless driving event may be determined based on a number of times an excessive speed event has occurred (discretely) during a predetermined time period, the number of times that a disobeyed stop traffic signal event has occurred during a predetermined time period, and/or a proximate occurrence in time of an excessive speed event and a disobeyed stop traffic signal event. In some implementations, a priority level may be associated with the reckless driving event.
  • FIG. 10 shows a high-level generalized flow chart of a specific example of a CEP query 1000 for detecting when a vehicle is driving recklessly.
  • CEP query 1000 monitors event input stream 1030 (onto which disobeyed stop traffic signal events are published) and input stream 1040 (onto which excessive speed events are published).
  • event input stream 1030 onto which disobeyed stop traffic signal events are published
  • input stream 1040 onto which excessive speed events are published.
  • Combined Data Store window 1031 e.g., 5 minutes
  • Calculate Alert Priority query 1032 determines an event priority for the initial event.
  • Calculate Alert Priority query 1032 may determine that a priority 1 Reckless Driving Event has occurred. If a vehicle is determined to have either disobeyed a stop traffic signal or exceeded the safe speed by more than 40% within a five minute window, Calculate Alert Priority query 1032 may determine that a priority 2 Reckless Driving Event has occurred. If no disobeyed stop traffic signal event has been detected but the vehicle is determined to have exceeded the safe speed by more than 20%, then Calculate Alert Priority query 1032 may determine that a priority 3 Reckless Driving Event has occurred.
  • Calculate Alert Priority query 1032 may determine that a priority 4 Reckless Driving Event has occurred. Query 1032 may publish any detected Reckless Driving event and its priority to output stream 1040. It should be appreciated that the determination of priority levels
  • priority levels for a reckless driving event may be assessed in any of a variety of manners based on the number and order of excessive speed event and/or disobeyed stop traffic signal event occurrences, and/or a time interval between any two such event occurrences.
  • a CEP engine 507 executing in a central location 501 (e.g., a main office of the company overseeing fleet management operations), and/or in a mobile computing device
  • a given CEP engine in the system architecture may be configured to receive and/or transmit a wide variety of input and output streams from/to one or more others of the CEP engines in the system.
  • the exemplary CEP engine 507 in some embodiments serves as a "fleet management CEP engine," in that it receives one or more input streams that are provided as output streams from one or more vehicle-based CEP engines (some of which output streams include vehicle -related events), and also may monitor one or more input streams relating to weather information, traffic information, street map
  • Table 33 below lists an illustrative set of input streams that CEP engine 507 may receive in some embodiments.
  • many of the input streams listed in Table 33 correspond to output streams generated by one or more vehicle-based CEP engines 505 (as listed in Table 2 above).
  • a vehicle identification number typically is included in the noted input stream so that respective vehicles of the fleet may be identified.
  • the information content in the exemplary input streams indicated in Table 33 may not exactly match the information content included in the corresponding output streams from vehicle-based CEP engines as listed in Table 2 above.
  • Table 33 also includes exemplary input streams from external data sources, such as weather information, traffic information, street map information, credit/fuel card information and/or resource/scheduling information.
  • Table 34 lists an illustrative set of output streams that CEP engine 507 may generate based on queries applied to one or more input streams (e.g., such as those listed in Table 33) received from one or more of CEP engines 505.
  • Each of the indicated output streams generally represents a fleet-related event, and may include a variety of information content in a variety of formats, in a manner similar to that illustrated in the various tables above pertaining to vehicle-related events.
  • the output stream may include multiple vehicle identification numbers corresponding to the vehicles on which the fleet-related event is based or to which the fleet-related event pertains.
  • the output streams in Table 34 below may represent events relating to multiple vehicles of a fleet, some types of events may relate only to a specific vehicle of the fleet.
  • CEP Engine 507 may detect an event based on input streams from multiple CEP engines 505 and output the event via one of the output streams listed in Table 34. For example, a traffic jam event may be detected and output via the Traffic_Jam_Output stream if it is determined via the Vehicle_Movement_Input streams received from multiple CEP engines 505 that a certain number of vehicles on the same road are traveling below a threshold speed.
  • a technician congregation event may be detected, for example, if it is determined from the Vehicle_Movement_Input streams received by CEP engine 507 that a certain number of vehicles are within a predefined distance of each other within a certain time period.
  • a stolen fuel event may be detected and output via the Stolen_Fuel_Output stream if it is determined for any one or more vehicles that they have stopped at a gas station (e.g., determined using information from the GPS_Input stream and/or the Street_Map_Input stream), used a credit/fuel card to pay for gas (e.g., as determined via the Credit/Fuel_Card_Transaction_Input), and yet within a predetermined time period following the credit/fuel card transaction, the Vehicle_Readings_Input from the vehicle includes a Fuel_Level reading that is not commensurate in scope with the amount of fuel purchased (e.g., the credit/fuel card transaction is for $125, and yet the Fuel_Level reading retrieved from the vehicle indicates 10% full scale).
  • a rough road event may be detected if a certain
  • the CEP engine may be used to determine an environment-appropriate acquisition rate for GPS readings.
  • the acquisition rate for GPS readings is the frequency with which the GPS receiver calculates or logs the current position.
  • the inventors have appreciated that it may be desirable to adjust the frequency with which the GPS receiver calculates position based on any of a variety of factors. For example, the inventors have recognized that it may be desirable to decrease the acquisition rate at higher vehicle speeds, or to increase the acquisition rate as the vehicle nears its destination. The inventors have also realized that it may be desirable to use a lower acquisition rate in rural environments than in urban environments.
  • FIG 11 is a flow chart of an illustrative CEP query 1100 for determining an environment appropriate acquisition rate for GPS readings. This may be achieved either by changing the rate at which the GPS readings are taken, or by using the maximum rate at which GPS readings can be taken but reducing the rate at which the GPS readings are logged (described with below in connection with Figure 12).
  • Query 1100 may use information from the GPS_Input stream (described above in connection with table 4), an input stream that provides information from a database of rural and urban environments, information from the Vehicle_Readings_Input stream (described above in connection with table 3), and information about the destination of the vehicle (e.g., derived from the GPS unit or from the dispatch schedule for a given VIN or Technician ID).
  • CEP query 1100 monitors GPSJnput stream 1110
  • Destinations_Input stream 1120, and Environments_Input stream 1130 which comprises the response from the web service call to the environments database discussed above.
  • Speeds window 1180 stores the current speed from the GPS_Input stream.
  • Destination Window 1190 stores the vehicle's current distance from the destination, calculated at step 1140.
  • Environments Window 1195 stores the type of environment (e.g., urban or rural) through which the vehicle is currently traveling.
  • Query 1150 may additionally calculate the environment appropriate acquisition rate for GPS readings, and publish this rate to the
  • CEP query 1100 may additionally publish a copy of the GPS_Input stream data as GPS_Output stream 1170.
  • the environment-appropriate acquisition rate may be calculated in any of a variety of possible ways.
  • the acquisition rate may be calculated based on the vehicle's speed, the distance from the final destination, and the type of environment (e.g., urban or rural) through which the vehicle is traveling.
  • Table 35 shows one example of how the acquisition rate may be calculated based on these variables.
  • GPS_Update_Rates output stream 1160 may be used to change the polling frequency of the GPS device.
  • the GPS device may use its pre- configured acquisition rate, and the data output by the GPS device may be altered to effectively decrease the acquisition rate.
  • the GPS_Update_Rates stream 1160 and GPS_Output stream 1170 may be consumed by CEP query 1200 as GPS_Update_Rates stream 1210 and GPS_Info stream 1220, respectively.
  • CEP query 1200 joins and "gates" the GPS readings consumed on GPS_Info stream 1220 at the rate defined by GPS_Update_Rates stream 1210 and publishes the result to
  • a reference to "A and/or B", when used in conjunction with open-ended language such as “comprising” can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements); etc.
  • the phrase "at least one,” in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements.
  • This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase "at least one" refers, whether related or unrelated to those elements specifically identified.
  • At least one of A and B can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements); etc.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Traffic Control Systems (AREA)

Abstract

L'invention concerne un moteur de traitement d'événement complexe (CEP) installé dans un véhicule, lequel moteur s'exécute sur un processeur d'ordinateur matériel dans un véhicule. Le moteur CEP reçoit un premier flux d'entrée sur lequel des informations de véhicule relatives au véhicule sont publiées, et applique au moins une demande au premier flux d'entrée. Le moteur CEP évalue ensuite, à partir de l'application de la demande/des demandes, si un événement relatif à un véhicule a eu lieu, et, si tel est le cas, le moteur CEP publie une indication de survenue de l'événement relatif au véhicule sur au moins un flux de sortie du moteur CEP. Dans un exemple, le moteur CEP peut recevoir un second flux d'entrée sur lequel des informations d'image sont publiées, les informations d'image étant fondées au moins en partie sur des données fournies par au moins une caméra installée à bord du véhicule.
PCT/US2010/045000 2009-08-11 2010-08-10 Systèmes et procédés pour le traitement d'événement complexe d'informations de véhicule et d'informations d'image relatives à des véhicules WO2011019706A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2010282634A AU2010282634B2 (en) 2009-08-11 2010-08-10 Systems and methods for complex event processing of vehicle information and image information relating to a vehicles

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US23290209P 2009-08-11 2009-08-11
US61/232,902 2009-08-11
US23853009P 2009-08-31 2009-08-31
US61/238,530 2009-08-31
CA2712576A CA2712576C (fr) 2009-08-11 2010-08-09 Systemes et methodes applicables au traitement d'evenements complexes d'information relative a des vehicules
CA2,712,576 2010-08-09

Publications (1)

Publication Number Publication Date
WO2011019706A1 true WO2011019706A1 (fr) 2011-02-17

Family

ID=43586425

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2010/045000 WO2011019706A1 (fr) 2009-08-11 2010-08-10 Systèmes et procédés pour le traitement d'événement complexe d'informations de véhicule et d'informations d'image relatives à des véhicules

Country Status (1)

Country Link
WO (1) WO2011019706A1 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013078682A1 (fr) * 2011-12-02 2013-06-06 华为技术有限公司 Procédé et dispositif permettant de traiter un flux de données
WO2021154095A1 (fr) * 2020-01-31 2021-08-05 Abax As Dispositif capteur destiné à analyser et à déterminer un mode de fonctionnement de véhicule, procédé d'analyse et de détermination d'un mode de fonctionnement de véhicule à l'aide d'un dispositif capteur et système d'analyse et de détermination d'un mode de fonctionnement de véhicule
US11762858B2 (en) 2020-03-19 2023-09-19 The Mitre Corporation Systems and methods for analyzing distributed system data streams using declarative specification, detection, and evaluation of happened-before relationships

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020016653A1 (en) * 2000-08-02 2002-02-07 Levine Alfred B. Vehicle drive override subsystem
US20040153225A1 (en) * 2001-10-04 2004-08-05 Stam Joseph S. Windshield fog detector
US20050107927A1 (en) * 2001-11-15 2005-05-19 Michael Mavreas Remote monitoring and control of a motorized vehicle
US20060052909A1 (en) * 2001-06-19 2006-03-09 Cherouny Peter H Electronic programmable speed limiter
US20070027583A1 (en) * 2003-07-07 2007-02-01 Sensomatix Ltd. Traffic information system
US20070257781A1 (en) * 2006-05-08 2007-11-08 Drivecam, Inc. System and Method for Identifying Non-Event Profiles
US20080033609A1 (en) * 2006-08-04 2008-02-07 Ramin Razavi Automotive diagnostic and tuning system
US20080091309A1 (en) * 1998-01-15 2008-04-17 Walker Richard C Electrically controlled automated devices to operate, slow, guide, stop and secure, equipment and machinery for the purpose of controlling their unsafe, unattended, unauthorized, unlawful hazardous and/or legal use, with remote control and accountability worldwide
US20080147267A1 (en) * 2006-12-13 2008-06-19 Smartdrive Systems Inc. Methods of Discretizing data captured at event data recorders
US20080281485A1 (en) * 2007-05-08 2008-11-13 James Plante Distributed vehicle event recorder systems having a portable memory data transfer system
US20090187307A1 (en) * 2008-01-18 2009-07-23 Denso Corporation Display control device

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091309A1 (en) * 1998-01-15 2008-04-17 Walker Richard C Electrically controlled automated devices to operate, slow, guide, stop and secure, equipment and machinery for the purpose of controlling their unsafe, unattended, unauthorized, unlawful hazardous and/or legal use, with remote control and accountability worldwide
US20020016653A1 (en) * 2000-08-02 2002-02-07 Levine Alfred B. Vehicle drive override subsystem
US20060052909A1 (en) * 2001-06-19 2006-03-09 Cherouny Peter H Electronic programmable speed limiter
US20040153225A1 (en) * 2001-10-04 2004-08-05 Stam Joseph S. Windshield fog detector
US20050107927A1 (en) * 2001-11-15 2005-05-19 Michael Mavreas Remote monitoring and control of a motorized vehicle
US20070027583A1 (en) * 2003-07-07 2007-02-01 Sensomatix Ltd. Traffic information system
US20070257781A1 (en) * 2006-05-08 2007-11-08 Drivecam, Inc. System and Method for Identifying Non-Event Profiles
US20080033609A1 (en) * 2006-08-04 2008-02-07 Ramin Razavi Automotive diagnostic and tuning system
US20080147267A1 (en) * 2006-12-13 2008-06-19 Smartdrive Systems Inc. Methods of Discretizing data captured at event data recorders
US20080281485A1 (en) * 2007-05-08 2008-11-13 James Plante Distributed vehicle event recorder systems having a portable memory data transfer system
US20090187307A1 (en) * 2008-01-18 2009-07-23 Denso Corporation Display control device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013078682A1 (fr) * 2011-12-02 2013-06-06 华为技术有限公司 Procédé et dispositif permettant de traiter un flux de données
CN103262072A (zh) * 2011-12-02 2013-08-21 华为技术有限公司 处理数据流的方法及装置
WO2021154095A1 (fr) * 2020-01-31 2021-08-05 Abax As Dispositif capteur destiné à analyser et à déterminer un mode de fonctionnement de véhicule, procédé d'analyse et de détermination d'un mode de fonctionnement de véhicule à l'aide d'un dispositif capteur et système d'analyse et de détermination d'un mode de fonctionnement de véhicule
US11762858B2 (en) 2020-03-19 2023-09-19 The Mitre Corporation Systems and methods for analyzing distributed system data streams using declarative specification, detection, and evaluation of happened-before relationships

Similar Documents

Publication Publication Date Title
CA2754159C (fr) Systemes et methodes applicables au traitement d'evenements complexes d'information relative a des vehicules
US12002308B1 (en) Driving event data analysis
US11027742B1 (en) Traffic based driving analysis
US9947217B1 (en) Driving event data analysis
JP6849705B2 (ja) 自動化されたリスク制御システムを含む自律的又は部分的に自律的な自動車及びそれに対応する方法
US10777024B1 (en) Traffic based driving analysis
US10235655B2 (en) System and method for reducing driving risk with hindsight
US20170103101A1 (en) System for database data quality processing
US11328622B2 (en) System and method of facilitating driving behavior modification through driving challenges
US20070268158A1 (en) System and Method for Reducing Driving Risk With Insight
US11468533B1 (en) Vehicle rating system
US11202030B2 (en) System and method for providing complete event data from cross-referenced data memories
US20220343782A1 (en) Systems and methods for delivering vehicle-specific educational content for a critical event
WO2011019706A1 (fr) Systèmes et procédés pour le traitement d'événement complexe d'informations de véhicule et d'informations d'image relatives à des véhicules
US10528989B1 (en) Vehicle rating system
AU2010282634B2 (en) Systems and methods for complex event processing of vehicle information and image information relating to a vehicles
WO2017114892A1 (fr) Système et procédé permettant de calculer au moins un indice de risque lié à l'activité de conduite future d'un utilisateur

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10808621

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010282634

Country of ref document: AU

ENP Entry into the national phase

Ref document number: 2010282634

Country of ref document: AU

Date of ref document: 20100810

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 10808621

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE