Patent Description:
Vehicles typically include sensors, such as inertial measurement units (IMUs) to detect collisions. A vehicle may deploy an airbag and/or execute post-impact control algorithms to control steering, braking, or other functions of the vehicle after a detecting a collision. Typically, the vehicle deploys the airbags and executes post-impact control algorithms in response to detecting a relatively high-impact collision (e.g., collisions occurring at high speeds). Vehicle sensors may have difficulty detecting relatively low-impact (e.g., low-speed) collisions reliably. <CIT> discloses a method for recognising critical driving situations of a vehicle.

In general, the disclosed subject matter relates to techniques for enabling an electronic control unit (ECU) to detect low-impact collisions. The ECU detects a low-impact collision based on data from different sets of motion sensors, such as a first set of motion sensors disposed proximate to the vehicle suspension and a second set of motion sensors disposed at approximately the vehicle's center of gravity. In normal driving circumstances, the sensor data from the first set of motion sensors corresponds to the sensor data from the second set of motion sensors. Said another way, the value of a motion parameter (e.g., a roll rate, a pitch rate, an acceleration rate, etc.) calculated based on data generated by the first set of motion sensors is typically very similar to the value of a motion parameter calculated based on data generated by the second set of motion sensors. The ECU may determine that a collision occurred when the sensor data from the first set of motion sensors does not correspond to the sensor data from the second set of motion sensors. That is, when the value of the motion parameter calculated based on the data generated by the first set of motion sensors and the value of the motion parameter calculated based on the data generated by the second set of motion sensors is sufficiently different (e.g., the difference in the values of the motion parameter is greater than a threshold difference), the ECU may infer that a collision has occurred.

Comparing the data from different sets of motion sensors may increase the sensitivity and/or accuracy of the ECU collision detection algorithms. Increasing the sensitivity of collision detection algorithms may enable the ECU to detect low-impact collisions more accurately. Detecting low-impact collisions more accurately may enable the ECU to execute post-impact control algorithms for low-impact collisions (e.g., by controlling the speed and/or steering of the vehicle), which may increase the safety of occupants within the vehicle.

In one example, a computing system is described. The computing system includes at least one processor and a memory. The memory includes instructions that, when executed, cause the at least one processor to: determine whether an object collided with a vehicle based on a comparison of data received from at least one motion sensor configured to measure at least an acceleration of the vehicle and data received from a plurality of level sensors, wherein each level sensor is configured to measure a relative position between a body of the vehicle and a respective wheel of a plurality of wheels of the vehicle; and perform one or more actions in response to determining the object collided with the vehicle.

In another example, a device configured to detect low-impact collisions is described. They device includes means for determining whether an object collided with a vehicle based on a comparison of data received from at least one motion sensor configured to measure at least an acceleration of the vehicle and data received from a plurality of level sensors, wherein each level sensor is configured to measure a relative position between a body of the vehicle and a respective wheel of a plurality of wheels of the vehicle; and means for performing one or more actions in response to determining the object collided with the vehicle.

In another example, a method includes determining whether an object collided with a vehicle based on a comparison of data received from at least one motion sensor configured to measure at least an acceleration of the vehicle and data received from a plurality of level sensors, wherein each level sensor is configured to measure a relative position between a body of the vehicle and a respective wheel of a plurality of wheels of the vehicle; and performing one or more actions in response to determining the object collided with the vehicle.

In another example, a computer-readable storage medium includes instructions that, when executed by at least one processor of a computing system of a vehicle, cause the at least one processor to determine whether an object collided with a vehicle based on a comparison of data received from at least one motion sensor configured to measure at least an acceleration of the vehicle and data received from a plurality of level sensors, wherein each level sensor is configured to measure a relative position between a body of the vehicle and a respective wheel of a plurality of wheels of the vehicle; and perform one or more actions in response to determining the object collided with the vehicle.

The details of one or more aspects of the techniques are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of these techniques will be apparent from the description and drawings, and from the claims.

<FIG> is a conceptual block diagram illustrating an example system configured to detect low-impact collisions, in accordance with one or more techniques of this disclosure. As shown in the example of <FIG>, system <NUM> includes a vehicle <NUM>, a network <NUM>, and a remote system <NUM>.

Vehicle <NUM> may include any type of autonomous, semi-autonomous, or non-autonomous vehicle. Although shown as an automobile in the example of <FIG>, vehicle <NUM> may represent any type of vehicle, including a car, a truck, a bus, a recreational vehicles (RVs), a tractor, an all-terrain vehicles, or any other type of vehicle.

Network <NUM> may represent any type of network by which communication between vehicle <NUM> and remote system <NUM> may be accomplished. Network <NUM> may represent a public network (e.g., the Internet), a private network, a cellular network (including various cellular data network, such as a <NUM>, <NUM> and/or <NUM> network), a personal area network, or combinations thereof.

Remote system <NUM> may represent one or more devices configured to communicate via network <NUM> with vehicle <NUM>. Remote system <NUM> may communicate via network <NUM> with vehicle <NUM> to monitor or otherwise retrieve data from one or more components of vehicle <NUM>, such as an engine, an anti-lock braking system (ABS), a traction control (TC) system, an electronic stability control (ESC) system, brake system, heads-up display system, coolant system, navigation system, infotainment system, or any other component or system integrated into vehicle <NUM> or in communication with vehicle <NUM>. Remote system <NUM> may, in addition or as an alternative to monitoring vehicle <NUM>, communicate with vehicle <NUM> to update one or more of the above noted components of vehicle <NUM>.

As further shown in the example of <FIG>, vehicle <NUM> includes a computing system <NUM>, a plurality of sensors 104A-104E (collectively, sensors <NUM>), and one or more components <NUM>. Computing system <NUM>, some of sensors <NUM>, and component <NUM> are shown in the example of <FIG> using dashed lines to denote that computing system <NUM>, sensors <NUM>, and component <NUM> may not be visible or are otherwise integrated within vehicle <NUM>. As one example, sensors 104A, 104B, 104C, and 104D may be located within wheel wells 108A, 108B, 108C, and 108D, respectively, that house the wheels (although the wheels are not shown so as to illustrate an approximate location of sensors 104A-104D).

Component <NUM> may include a vehicle suspension component, a steering component, a propulsion component, or an imaging component. Examples of suspension components include wheels, a shock absorber, a strut, or a spring, among other components. In some examples, steering components may include a steering wheel, a steering column, a pinion, one or more tie rods, etc. Examples of propulsion components include a motor (e.g., an electric motor or internal combustion engine), and/or brakes. Imaging components <NUM> may include a camera (e.g., visible light and/or infrared light), radar, ultrasound, or other device configured to image the environment surrounding or nearby vehicle <NUM>.

Computing system <NUM> may include one or more electronic control unit (ECUs). For example, computing system <NUM> may include an ECU configured to control one or more components <NUM>, an ECU configured to control the ABS, TC, and/or ECS, and a main ECU acting as the computing system to direct operation of all of the systems (including those not listed in this example). Generally, an ECU includes a microcontroller, and memory (such as one or more of static random access memory - SRAM, electrically erasable programmable read-only memory - EEPROM, and Flash memory), digital and/or analog inputs, digital and/or analog outputs (such as relay drivers, H bridge drivers, injector drivers, and logic outputs).

In some examples, rather than utilize an ECU as a computing system, computing system <NUM> may include one or more processors that are relatively more powerful, compared to the microcontroller, and are configured to execute instructions or other forms of software to perform various aspects of the techniques described in this disclosure. The processors may represent one or more of fixed function, programmable, or combinations thereof, such as microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, computing system <NUM> may store instructions for the software in a suitable, non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. A device including computing system <NUM> may comprise an integrated circuit, and/or a microprocessor.

Sensors <NUM> may be communicatively coupled to computing system <NUM> and may be configured to measure various motion parameters of vehicle <NUM> and/or component <NUM>. In some instances, sensors <NUM> may be configured to generate sensor data indicative of motion of vehicle <NUM> or component <NUM>. Examples of sensors <NUM> include an inertial measurement unit (IMU), an accelerometer, a gyroscope, a position sensor, a level sensor, among others. In the example of <FIG>, sensors 104A-104D include level sensors coupled to component <NUM> proximate a respective wheel (e.g., within wheel well 108A or 108B). As described herein, a level sensor is a sensor configured to measure the relative position between a wheel and the body of vehicle <NUM>. In one example, sensor 104E includes an IMU, which may be positioned at approximately the center of gravity of vehicle <NUM>. The IMU may include one or more accelerometers and one or more gyroscopes. In another example, sensors <NUM> include one or more accelerometers and/or gyroscopes proximate the respective corners of vehicle <NUM>. For example, sensors <NUM> may include two or more accelerometers within the respective wheel wells of a particular axel or coupled to a particular fender of vehicle <NUM>. In such examples, the accelerometers within the respective wheel wells may measure the vertical acceleration.

In accordance with various aspects of the techniques described in this disclosure, computing system <NUM> determines whether a collision occurred based on data from two different sets of sensors. Computing system <NUM> receives data from a first set of one or more sensors and from a second set of one or more sensors. In some examples, the first set of sensors includes a plurality of level sensors, such as sensors 104A and 104B. In one example, the second set of sensors includes at least one accelerometer. For example, the second set of sensors may include an IMU (e.g., sensor 104E) proximate the center of gravity of vehicle <NUM> or a plurality of accelerometers proximate the corners (e.g., within wheel wells <NUM> or coupled to a fender).

Computing system <NUM> compares measurements generated by the first set of motion sensors and the second set of motion sensors. For example, computing system <NUM> may determine a first value of a motion parameter based on the data from the first set of motion sensors. Example motion parameters include an acceleration rate (e.g., vertical and/or translational acceleration), a roll rate, a pitch rate, a pitch angle, or a heave position. For example, computing system <NUM> may determine a first value of the roll rate based on data from a plurality of level sensors, such as sensors 104A-104B. Computing system <NUM> determines a second value of the motion parameter based on data from the second motion sensor set. For instance, computing system <NUM> may determine a second value of the roll rate based on data from an IMU, such as sensor 104E. In another example, computing system <NUM> may determine a value of a pitch rate and/or pitch angle based on data from level sensors on a front axel and a rear axel (e.g., sensors 104A and 104C) and a value of a pitch rate and/or pitch angle based on data from the IMU (e.g., sensor 104E).

In some examples, computing system <NUM> determines whether an object collided with vehicle <NUM> based at least in part on the first value of the motion parameter and the second value of the motion parameter. Computing system <NUM> may apply one or more rules to the first value of the motion parameter and the second value of the motion parameter. The rules may be hard-coded or machine generated (e.g., via machine learning). In one example, the rule indicates a threshold difference between the first value of the motion parameter and the second value of the motion parameter to indicate whether the object collided with the vehicle. That is, computing system <NUM> determines a difference between the first value of the motion parameter and the second value of the motion parameter. Computing system <NUM> may determine whether the difference satisfies (e.g., is greater than or equal to) a threshold difference. In one example, computing system <NUM> determines a value of the roll rate based on data from level sensors 104A and 104B, a value of the roll rate based on data from IMU 104E, and determines a difference in the roll rate. While described as determining a difference in the roll rate of vehicle <NUM>, computing system <NUM> may determine a difference in the values of any of the motion parameters.

Computing system <NUM> dynamically determines, in some examples, the threshold difference. For example, computing system <NUM> may determine the threshold difference based on a speed of vehicle <NUM>. As one example, computing system <NUM> may increase the threshold difference from a baseline as the speed of the vehicle increases. In some instances, the threshold difference is pre-programmed.

In some scenarios, computing system <NUM> determines whether an object collided with vehicle <NUM> based on the difference between the first value of the motion parameter and the second value of the motion parameter and a threshold difference. For example, during normal driving (e.g., when vehicle <NUM> is not experiencing a collision with another vehicle or other object) or when vehicle <NUM> is not moving, the first value of the motion parameter and the second value of the motion parameter should be similar as the parts of the vehicle move relatively in unison. However, as one example, if an object collides with vehicle <NUM> near a wheel well (e.g., wheel well 108A) at a low speed, the rear passenger side of vehicle <NUM> may move more than vehicle <NUM> as a whole, such that the difference between the first value of the motion parameter calculated based on sensor data from a plurality of level sensors (e.g., sensors 104A-104B) and the second value of the motion parameter calculated based on sensor data from an IMU (e.g., 104E) may satisfy the threshold difference. For example, the value of the roll rate calculated using data from sensors 104A-104B may be more than a threshold difference from the value of the roll rate calculated using data from sensor 104E when an object strikes or collides with vehicle <NUM>. Thus, computing system <NUM> may determine that an object collided with vehicle <NUM> in response to determining that the difference between the first value of the motion parameter and the second value of the motion parameter satisfies the threshold difference.

Responsive to determining that the object collided with vehicle <NUM>, computing system <NUM> performs one or more actions. For example, computing system <NUM> may execute a post-impact control by outputting a command to one or more components <NUM> to adjust operation of vehicle <NUM>. For example, the command may include a command to adjust a speed of vehicle <NUM> or adjust a steering component of vehicle <NUM>. For example, computing system <NUM> may output a command to one or more components <NUM> to adjust an electric motor speed (e.g., increasing the speed, for example, to avoid a secondary collision, or decrease the speed), apply the brakes, turn the wheels left or right, or a combination thereof.

As another example, computing system <NUM> may activate one or more imaging components <NUM> in response to detecting a collision. For example, computing system <NUM> may output a command to activate one or more of imaging components in response to detecting a collision when the imaging components are inactive (e.g., when vehicle <NUM> is turned off). As another example, computing system <NUM> may output a command to store image data generated by the imaging components in response to detecting a collision (e.g., whether vehicle <NUM> is on or off). For example, one or more imaging components may output a command causing a storage device to store the image data generated by the imaging components.

As yet another example, computing system <NUM> may output a notification in response to detecting a collision. For example, computing system <NUM> may send a notification (e.g., email, text, or other message) to the owner of vehicle <NUM> in response to detecting a collision (e.g., when vehicle <NUM> is off, such as when vehicle <NUM> is parked). In some instances, computing system <NUM> may send a notification to a police authority in response to detecting a collision. In some instances, computing system <NUM> may determine whether vehicle <NUM> is currently unoccupied or whether the object that collided with vehicle <NUM> (e.g., another vehicle) left the scene. In such instances, computing system <NUM> may output a notification to a police authority or to the owner of vehicle <NUM> in response to detecting a collision and that vehicle <NUM> is unoccupied or that the object which collided with vehicle <NUM> left the scene. In some scenarios computing system <NUM> may output a notification to an insurance company or a vehicle manufacturer in response to detecting the collision.

Although computing system <NUM> is described as applying the techniques described in this disclosure, computing system <NUM> may, in addition or alternatively, interface with remote system <NUM> via network <NUM> to provide the sensor data itself. Remote system <NUM> may, in this example, determine whether an object collided with vehicle <NUM>. Remote system <NUM> may also, in this example, perform one or more actions, such as outputting notifications, activating one or more imaging components, storing image data, or possibly activating post-impact controls.

By utilizing sensor data from different sets of motion sensors, computing system <NUM> may detect low-impact collisions and/or detect low-impact collisions more accurately. Detecting low-impact collisions more accurately may enable the computing system <NUM> to perform post-impact control for low-impact collisions, for example by controlling a speed of vehicle <NUM> and/or controlling the steering of vehicle <NUM>. Performing post-impact control after an initial collision may assist the driver to move vehicle <NUM> or may autonomously move vehicle <NUM>, which may increase the safety of the vehicle occupants (e.g., by reducing the risk of vehicle <NUM> experiencing a secondary collision, for instance, such as being rear-ended by a second vehicle after colliding with a first vehicle).

<FIG> is a block diagram illustrating an example computing system configured to detect low-impact collisions, in accordance with one or more techniques of this disclosure. Computing system <NUM> represents an example of computing system <NUM> described above with reference to <FIG>. As illustrated in <FIG>, computing system <NUM> includes at least one processing unit <NUM>, at least one communication unit <NUM>, at least one storage device <NUM>, at least one user interface device (UID) <NUM>, at least one communication channel <NUM>, and one or more ECUs <NUM>. <FIG> illustrates only one particular example of computing system <NUM>, and many other examples of computing system <NUM> may be used in other instances and may include a subset of the components included in example computing system <NUM> or may include additional components not shown in <FIG>.

Processing units <NUM> may represent a unit implemented as fixed-function processing circuits, programmable processing circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide particular functionality and are pre-set on the operations that can be performed. Programmable circuits refer to circuits that can programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For instance, programmable circuits may execute software or firmware that cause the programmable circuits to operate in the manner defined by instructions of the software or firmware. Fixed-function circuits may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed-function processing circuits perform are generally immutable. In some examples, the one or more of the units may be distinct circuit blocks (fixed-function or programmable), and in some examples, the one or more units may be integrated circuits.

Communication units <NUM> may represent a unit configured to communicate with one or more other computing systems by transmitting and/or receiving data. Communications units <NUM> may include wired and/or wireless communication units. Examples of wired communication units <NUM> include Universal Serial Bus (USB) transceivers. Examples of wireless communication units <NUM> include GPS radios, cellular (e.g., LTE) radios, Bluetooth™ radios, WiFi™ radios, or any other wireless radios.

In some examples, storage device <NUM> may represent a unit configure to store one or more modules, such as data collection module <NUM>, collision detection module <NUM>, and post-impact control module <NUM> shown in <FIG>. Storage device <NUM> may be a temporary memory, meaning that a primary purpose of storage device <NUM> is not long-term storage. Storage device <NUM> may be configured for short-term storage of information as volatile memory and therefore not retain stored contents if powered off. Examples of volatile memories include random access memories (RAM), dynamic random-access memories (DRAM), static random-access memories (SRAM), and other forms of volatile memories known in the art.

Storage device <NUM> may include one or more non-transitory computer-readable storage devices. Storage device <NUM> may be configured to store larger amounts of information than typically stored by volatile memory. Storage device <NUM> may further be configured for long-term storage of information as non-volatile memory space and retain information after power on/off cycles. Examples of non-volatile memories include magnetic hard discs, optical discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories. Storage device <NUM> may store program instructions and/or information (e.g., data) that, when executed, cause processing unit <NUM> to perform the techniques of this disclosure. For example, storage device <NUM> may include data or information associated with one or more modules <NUM>, <NUM>, and <NUM>.

User interface devices (UID) <NUM> may represent a unit configured to enable a user to interact with computing system <NUM>. UIDs <NUM> may include one or more input devices <NUM> and/or more output devices <NUM>. Examples of input devices <NUM> include display devices, keyboards, pointing devices (such as a mouse or digital pen), microphones, physical buttons or knobs, among others. Examples of output devices <NUM> include display devices and speakers, among others. Display devices may include touchscreens (e.g., capacitive or resistive). Example display devices include liquid crystal displays (LCD), light emitting diode (LED) displays, organic light-emitting diode (OLED) displays, e-ink, or other device configured to display information to a user.

ECUs <NUM> may represent one or more electronic control units configured to control electronics and various subsystems of vehicle <NUM>, such as the above noted ABS and ESC system. ECUs <NUM> may each be implemented as an embedded system, which may include a microcontroller or other type of processor, memory, inputs, and outputs as noted above. ECUs <NUM> may interface with one or more of sensors <NUM> (<FIG>) in the manner described above in support of the electronics and/or subsystems.

Communication channels <NUM> may represent a unit configured to interconnect each of components <NUM>, <NUM>, <NUM>, <NUM>, and/or <NUM> for inter-component communications (physically, communicatively, and/or operatively). In some examples, communication channels <NUM> may include a system bus, a network connection, one or more inter-process communication data structures, or any other components for communicating data.

As further shown in the example of <FIG>, storage device <NUM> stores data collection module <NUM>, collision detection module <NUM>, post-impact control module <NUM>, and sensor data <NUM>. Processing units <NUM> may interface with storage device <NUM> to retrieve one or more instructions of data collection module <NUM> that, when executed, cause processing units <NUM> to perform operations directed to collection of sensor data <NUM> from ECUs <NUM> via communication channels <NUM>. Similarly, processing units <NUM> may interface with storage device <NUM> to retrieve one or more instructions of collision detection module <NUM> that, when executed, cause processing units <NUM> to perform operations directed to detecting low impact collisions based on sensor data <NUM>, as discussed above. Similarly, processing units <NUM> may interface with storage device <NUM> to retrieve one or more instructions of post-impact control module <NUM> that, when executed, cause processing units <NUM> to perform operations directed to outputting one or more commands to components <NUM> to adjust operation of vehicle <NUM>. Reference to modules <NUM>, <NUM>, and <NUM> performing various operations should be understood to refer to processing units <NUM> performing the various operations discussed with respect to each of modules <NUM>, <NUM>, and <NUM>.

In any event, data collection module <NUM> may execute one or more communication protocols, such as the above noted controller area network (CAN) communication protocol, the FlexRay communication protocol or any other communication protocol, to interface with ECUs <NUM> and thereby indirectly interface with the associated ones of sensors <NUM>. In some examples, data collection module <NUM> may interface directly with sensors <NUM> to collect sensor data <NUM>. Sensor data <NUM> may represent data indicative of sensor signals output by sensors <NUM>. Data collection module <NUM> may store sensor data <NUM> to storage device <NUM>. While data collection module <NUM> may store sensor data <NUM> to storage device <NUM>, in some examples, collection detection module <NUM> analyzes sensor data <NUM> in real-time or substantially real-time to detect collisions between vehicle <NUM> and another object.

Collision detection module <NUM> determines whether a collision occurred based on sensor data from two different sets of sensors <NUM> of <FIG>. In one example, the first set of sensors <NUM> includes a plurality of level sensors (e.g., sensors 104A and 104B of <FIG>). In some examples, the second set of sensors <NUM> includes at least one accelerometer (e.g., sensor 104E of <FIG>). The at least one accelerometer may include an accelerometer (e.g., part of an IMU) proximate the center of gravity of vehicle <NUM> or a plurality of accelerometers proximate the corners (e.g., within wheel wells <NUM> or coupled to a fender) of vehicle <NUM>.

In some examples, collision detection module <NUM> determines a value of a motion parameter based on the sensor data from each of the first set of sensors <NUM> and the second set of sensors <NUM>. Example motion parameters include an acceleration rate, a roll rate, a pitch rate, a pitch angle, or a heave position. Collision detection module <NUM> may determine a first value of a motion parameter based on the sensor data <NUM> received from the first set of sensors and a second value of a motion parameter based on sensor data <NUM> received from the second set of sensors. In some examples, collision detection module <NUM> determines a value for a single motion parameter for each set of sensors. In some instances, collision detection module <NUM> determines a respective value for two or more motion parameters for each set of sensors. For instance, collision detection module <NUM> may determine a value of a roll rate for each set of sensors and a value of a pitch rate for each set of sensors.

Collision detection module <NUM> determines whether an object collided with vehicle <NUM> based at least in part on the first value of the motion parameter and the second value of the motion parameter. In other words, collision detection module <NUM> determines whether vehicle <NUM> experienced a collision based on the values of the motion parameter. Collision detection module <NUM> may apply one or more rules to the first value of the motion parameter and the second value of the motion parameter. The rules may be hard-coded or machine generated (e.g., via machine learning).

In one example, the rules indicates a threshold difference between the first value of motion parameter and the second value of the motion parameter to indicate whether the object collided with the vehicle. That is, collision detection module <NUM> determines a difference between the first value of the motion parameter and the second value of the motion parameter. Collision detection module <NUM> may determine whether the difference satisfies (e.g., is greater than or equal to) a threshold difference. In one example, collision detection module <NUM> determines a value of the roll rate based on data from level sensors 104A and 104B, a value of the roll rate based on data from IMU 104E, and determines a difference in the roll rate. While described as determining a difference in the roll rate of vehicle <NUM>, computing system <NUM> may determine a difference in the values of any of the motion parameters.

In some scenarios, collision detection module <NUM> determines whether an object collided with vehicle <NUM> based on the difference between the first value of the motion parameter and the second value of the motion parameter and a threshold difference. In one scenario, collision detection module <NUM> determines that vehicle <NUM> has not collided with an object in response to determining that the difference between the first value of the motion parameter and the second value of the motion parameter does not satisfy (e.g., is less than) the threshold difference. In another scenario, collision detection module <NUM> determines that an object collided with vehicle <NUM> in response to determining that the difference between the first value of the motion parameter and the second value of the motion parameter satisfies the threshold difference.

In another example, the rules are machine-generated. That is, collision detection module <NUM> may apply a first set of sensor data and a second set of sensor data to a model trained using machine learning to detect collisions between vehicle <NUM> and another object. That is, collision detection module <NUM> may train a machine-learning model based on historical sensor data <NUM> and classifications (e.g., collisions and non-collisions) associated with the historical sensor data. Examples of machine learning models include nearest neighbor, naive Bayes, decision trees, linear regression, support vector machines, neural networks, k-Means clustering, Q-learning, temporal difference, deep adversarial networks, evolutionary algorithms, or other models trained using supervised, unsupervised, semi-supervised, or reinforcement learning algorithms, or combinations of any of the foregoing. Collision detection module <NUM> may determine whether vehicle <NUM> experienced a collision in real-time or approximately real-time by applying the first and second sets of sensor data to the machine-learned model.

Additionally or alternatively to using the values of the motion parameters to detect a collision, in some examples, collision detection module <NUM> determines whether an object collided with vehicle <NUM> based on a based on a time at which the sensor data was received from the first set of sensors and a time at which the data was received from the second set of sensors. For example, during normal driving (e.g., when vehicle <NUM> is not experiencing a collision with another vehicle or other object), a plurality of level sensors may measure the road profile earlier than a set of one or more accelerometers. That is, the plurality of level sensors may detect an event (e.g., driving over a bump or pothole, etc.) prior to the set of one or more accelerometers. In such examples, collision detection module <NUM> may determine that vehicle <NUM> collided with an object in response to determining that the sensor data from the set of level sensors corresponding to a particular event was generated prior to the sensor data from the set of accelerometers corresponding to the event. In instances where the event includes a collision (e.g., an object collides with vehicle <NUM> near a wheel well at a low speed), the set of accelerometers may generate sensor data indicative of the event prior to the set of level sensors generating sensor data indicative of the event. In such instances, collision detection module <NUM> may determine that an object collided with vehicle <NUM> in response to determining that the sensor data from the set of accelerometers corresponding to the event was generated prior to the sensor data from the set of level sensors corresponding to the event.

Responsive to determining that the object collided with vehicle <NUM>, computing system <NUM> performs one or more actions. For example, computing system <NUM> may execute post-impact control module <NUM>, which may output a command to one or more components <NUM> of <FIG> to adjust operation of vehicle <NUM>. For example, the command may include a command to adjust a speed of vehicle <NUM> or adjust a steering component of vehicle <NUM>. For example, post-impact control module <NUM> may output a command to one or more components <NUM> to adjust an electric motor speed (e.g., increasing the speed, for example, to avoid a secondary collision, or decrease the speed), apply the brakes, turn the wheels left or right, or a combination thereof.

As another example, computing system <NUM> may activate one or more imaging components <NUM> in response to detecting a collision. For example, computing system <NUM> may activate one or more of imaging components in response to detecting a collision when the imaging components are inactive (e.g., when vehicle <NUM> is turned off). As another example, computing system <NUM> may store the image data generated by the imaging components to sensor data <NUM> in response to detecting a collision.

As yet another example, computing system <NUM> may output a notification in response to detecting a collision. In one example, collision detection module <NUM> of computing system <NUM> may output a notification via output device <NUM> of UID <NUM>, such as a visual notification and/or audible notification. In another example, collision detection module <NUM> may send a notification (e.g., email, text, or other message) to the owner of vehicle <NUM> via communication units <NUM> in response to detecting a collision (e.g., when vehicle <NUM> is unoccupied). In some instances, collision detection module <NUM> may send a notification to a police authority, an insurance company, and/or a vehicle manufacturer in response to detecting a collision.

<FIG> are conceptual diagrams illustrating an example technique for detecting low-impact collisions, in accordance with one or more techniques of this disclosure. For purposes of illustration only, <FIG> are described below within the context of system <NUM> of <FIG>.

<FIG> is a conceptual diagram illustrating a rear view of a collision between vehicle <NUM> and an object <NUM>. Motion sensors 104A and 104B (e.g., level sensors) measure a relative position between body <NUM> of vehicle <NUM> and wheels 112A and 112B, respectively. For example, body <NUM> of vehicle <NUM> may move vertically a distance of ZS and wheels <NUM> of vehicle <NUM> may move vertically a distance of ZU. Motion sensors 104A and 104B may generate sensor data indicative of the distance ZTOTAL (ZS-ZU) between body <NUM> and wheels 112A and 112B. Computing system <NUM> may calculate a first value of a motion parameter, (e.g., a roll rate, a pitch rate, etc.) based on the sensor data generated by sensors 104A and 104B. For example, computing system <NUM> may determine the second value of the roll rate θ̇ based on ZTOTAL measured by each of sensors <NUM>.

<FIG> is a conceptual diagram illustrating a top view of the collision between vehicle <NUM> and object <NUM>. At least one accelerometer generates sensor data. In the example of <FIG>, sensor 104E (e.g., an IMU) is located at approximately the center of mass of the body <NUM> of vehicle <NUM>. In one example, sensor 104E generates sensor data indicative of the acceleration of vehicle <NUM> (e.g., in three dimensions). Computing system <NUM> may generate a value of the motion parameter based on the sensor data from sensor 104E. For example, computing system <NUM> may calculate a second value of the roll rate θ̇.

Computing system <NUM> determines whether vehicle <NUM> experienced a collision based on the first and second values of the motion parameter (e.g., the first and second values of the roll rate θ). In other words, computing system <NUM> determines whether an object collided with vehicle <NUM> based on the first value of the motion parameter and the second value of the motion parameter. In some scenarios, computing system <NUM> determine whether the object collided with the vehicle by determining a difference between the first value of the motion parameter and the second value of the motion parameter. For instance, computing system <NUM> may determine that the object collided with the vehicle in response to determining that the difference in the values of the motion parameter satisfies (e.g., is greater than or equal to) a threshold difference. In another instance, computing system <NUM> determines that the object collided with the vehicle in response to determining that the difference in the values of the motion parameter does not satisfy (e.g., is less than) the threshold difference.

In one scenario, computing system <NUM> determines whether the object collided with vehicle <NUM> by applying the first and second values of the motion parameter to a machine-trained model. The model may be trained using historical sensor data and associated classifications (e.g., "collision" or "not a collision"). Computing system <NUM> may input the first and second values into the machine-trained model and output data indicating whether vehicle <NUM> experienced a collision with another object. In other words, computing system <NUM> may determine whether an object collided with vehicle <NUM> based on the output of the machine-trained model.

<FIG> is a flowchart illustrating an example technique for detecting low-impact collisions, in accordance with one or more techniques of this disclosure. For purposes of illustration only, <FIG> is described below within the context of system <NUM> of <FIG>.

In the example of <FIG>, computing system <NUM> of vehicle <NUM> receives sensor data from a plurality of level sensors (e.g., sensors 104A and 104B) and at least one accelerometer (e.g., sensor 104E) of vehicle <NUM> (<NUM>). Each level sensor is configured to measure a relative position between a body of vehicle <NUM> and a respective wheel of vehicle <NUM>. In one example, the at least one accelerometer includes the accelerometer of an IMU located proximate to the center of mass of vehicle <NUM>. In another example, the at least one accelerometer includes a plurality of accelerometers located proximate to respective corners of vehicle <NUM> (e.g., within wheel wells <NUM> or coupled to a fender).

Computing system <NUM> determines a first value of a motion parameter and a second value of the motion parameter based on the sensor data (<NUM>). Example motion parameters include an acceleration rate, a roll rate, a pitch rate, a pitch angle, or a heave position. For example, computing system <NUM> may determine a first value of the pitch rate based on sensor data from the plurality of level sensors and a second value of the pitch rate of vehicle <NUM> based on the sensor data from the IMU.

Computing system <NUM> determines whether an object collided with vehicle <NUM> based on the first value of the motion parameter and the second value of the motion parameter (<NUM>). Computing system <NUM> determines whether the object collided with the vehicle by determining a difference between the first value of the motion parameter and the second value of the motion parameter. In one instance, computing system <NUM> may determine that the object collided with the vehicle in response to determining that the difference in the values of the motion parameter satisfies (e.g., is greater than or equal to) a threshold difference. In another instance, computing system <NUM> determines that the object collided with the vehicle in response to determining that the difference in the values of the motion parameter does not satisfy (e.g., is less than) the threshold difference.

Computing system <NUM> continues to receive sensor data (<NUM>) in response to determining that vehicle <NUM> has not experienced a collision ("NO" branch of <NUM>). For example, computing system <NUM> may continuously analyze the sensor data to determine whether an object has collided with vehicle <NUM>.

Responsive to determining that the object collided with the vehicle ("YES" branch of <NUM>), computing system <NUM> performs one or more actions (<NUM>). In one example, computing system <NUM> outputs a command to activate one or more imaging components and/or store image data generated by the imaging components. In another example, computing system <NUM> may perform an action by outputting a notification. For example, computing system <NUM> may output a notification to the owner of vehicle <NUM>, a policy authority or other law enforcement agency, an insurance company, among others.

<FIG> is a chart illustrating example values of motion parameters during two different driving events, in accordance with one or more techniques of this disclosure. <FIG> is described in the context of vehicle <NUM> of <FIG>. Chart <NUM> illustrates the front left suspension deflection <NUM>, front right suspension deflection <NUM>, and roll velocity <NUM> of vehicle <NUM> during a first time period <NUM> and a second time period <NUM>. During time period <NUM>, vehicle <NUM> passes over a bump in the road. During time period <NUM>, vehicle <NUM> experiences an impact (e.g., an object colliding with vehicle <NUM>).

Computing system <NUM> may receive data from a plurality of level sensors and one or more accelerometers. As illustrated in <FIG>, computing system <NUM> determines, based on the data from sensors <NUM> during time period <NUM>, that the suspension deflection velocities <NUM> and <NUM> are in the same direction as roll velocity <NUM>. In one example, computing system <NUM> determines that vehicle <NUM> experienced normal driving conditions, for example, driving over a bump or making a left-hand turn based on the sensor data indicative of the suspension deflection velocities <NUM> and <NUM> and roll velocity <NUM>.

In one example, computing system <NUM> may determine that vehicle <NUM> experienced a collision during time period <NUM>. For example, computing system <NUM> may receive sensor data during time period <NUM> and receive a roll velocity signal earlier than receiving the suspension deflection velocity signal. For example, computing system <NUM> may determine the time difference between the roll velocity signal and the suspension deflection velocity signal (e.g., <NUM> milliseconds). Computing system <NUM> may determine that vehicle <NUM> experienced a collision during time period <NUM> in response to determining that the time difference satisfies a threshold time difference.

For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fibre optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fibre optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers.

Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), or other equivalent integrated or discrete logic circuitry. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules.

Claim 1:
A computing system (<NUM>, <NUM>) comprising:
at least one processor;
a memory comprising instructions that, when executed, cause the at least one processor to:
determine whether an object (<NUM>) collided with a vehicle (<NUM>) based on a determination of a first value of a motion parameter based on data received from at least one motion sensor configured to measure at least an acceleration of the vehicle (<NUM>), a determination of a second value of the motion parameter based on data received from a plurality of level sensors (104A, 104B), wherein each level sensor is configured to measure a relative position between a body (<NUM>) of the vehicle (<NUM>) and a respective wheel of a plurality of wheels (<NUM>, 112B) of the vehicle (<NUM>), and an application of a machine-trained model to the first value of the motion parameter and the second value of the motion parameter, wherein the motion parameter includes one or more of: a roll rate of the vehicle (<NUM>), or an acceleration rate of the vehicle (<NUM>);
determining whether an object (<NUM>) collided with a vehicle (<NUM>) also based on a time difference between a first time at which the data from the at least one motion sensor was generated and a second time at which the data from the plurality of level sensors (104A, 104B) was generated; and
perform one or more actions in response to determining that the object collided with the vehicle (<NUM>).