Patent ID: 12202511

DETAILED DESCRIPTION

A description of example embodiments follows.

It should be understood that while an autonomous vehicle may be shown and described herein as a self-driving car, example embodiments of an autonomous vehicle or autonomous driving disclosed herein are not limited to a self-driving car or autonomous driving thereof. For example, an autonomous vehicle may be an autonomous aircraft, autonomous ship, autonomous underwater vehicle, autonomous spacecraft, autonomous device, etc.

A challenge of autonomous driving is for the autonomous vehicle to detect and classify objects in its surrounding environment as well as or better than a human. Humans are adept at recognizing and perceiving the world around them with an extremely complex human visual and audio system that includes the following functional parts: the eye, ear, and brain. In autonomous driving technologies, the eye and ear may include a combination of multiple sensors, such as camera, radar, and lidar sensors, the ear may include microphones, while the brain may involve multiple artificial intelligence, machine learning, and deep learning systems. A goal for autonomous driving is to have full understanding of a dynamic, fast-moving environment in real-time and human-like intelligence to act in response to changes in the environment, such as the environment90of the autonomous vehicle95ofFIG.1A, disclosed below.

FIG.1Ais a block diagram of an example embodiment of an environment90within which an autonomous vehicle95is driving. In the example embodiment, the autonomous vehicle95is a self-driving car. It should be understood, however, that an example embodiment of an autonomous vehicle is not limited to a self-driving car. The autonomous vehicle95is being driven by a system100for autonomous driving. The system100employs sensors (not shown) to collect sensor data. The sensors may be co-located or geographically dispersed. A portion of the sensors may be at a remote location relative to the autonomous vehicle95or mounted to the autonomous vehicle95, or integrated as part of a structure of the autonomous vehicle95.

In general, the sensors are employed to collect sensor data with respect to the environment90of the autonomous vehicle95as well as status of the autonomous vehicle95itself. It should be understood that sensor data may be collected off-vehicle and received by the autonomous vehicle95via a wireless connection. Such off-vehicle sensor data may be collected by another vehicle (not shown) or provided by a server (not shown). The system100provides for control of various actions of the autonomous vehicle95(e.g., steering, acceleration, deceleration, etc.) based on the sensor data. The system100may employ the sensor data to detect objects in the environment90and may base control of various actions of the autonomous vehicle95on same.

Such objects may include but are not limited to structural elements in the environment, such as roads, walls, buildings, road center medians, road defects, bridges, tunnels, etc., and other objects, such as vehicles, pedestrians, bystanders, cyclists, plants, trees, animals, etc. Control of the various actions may be based on perception of a characteristic(s) of such objects, such as shape, dimension(s), orientation, proximity, texture (e.g., smooth, rough, wet, dry, icy, etc.), eye-gaze, speed, acceleration/deceleration, etc. and/or characteristic(s) of the environment90itself, such as a visibility level, weather condition, etc.

For example, the system100may employ such sensor data to detect the pothole103ain the road98causing the system100to maneuver the autonomous vehicle95in a manner that avoids contact with same. The system100may employ such sensor data to detect the bicyclist103band predict that the bicyclist103bwill cross a path of the autonomous vehicle95by further detecting the left-hand turn signal105made by the bicyclist103b. In response to such detection, the system100may make a decision to slow down the autonomous vehicle95to avoid contact with same. The system100may further employ such sensor data to detect the bridge103cand may reduce a speed of the autonomous vehicle95as the autonomous vehicle95approaches the bridge103c. Such reduction in speed may be due to a prediction made by the system100that a terrain of the bridge103cis likely to be rough.

Detection of such objects may be performed by at least one neural network (NN), such as the at least one NN102ofFIG.1B, disclosed further below, that receives the sensor data collected. According to an example embodiment, performance of the at least one NN is improved by employing a low-latency data path for limited sensor data to the at least one NN and a main data path for bulk sensor data to the at least one NN. The limited sensor data arrives at the at least one NN ahead of the bulk sensor data to improve response of the system100overall, such as disclosed below with regard toFIG.1B.

FIG.1Bis a block diagram of an example embodiment of the system100ofFIG.1A. The system100comprises at least one neural network (NN)102configured to generate at least one output104used to control the autonomous driving. The at least one NN102may be a convolutional neural network (CNN), recurrent neural network (RNN), or combination thereof It should be understood that the at least one NN102is not limited to a CNN, RNN, or combination thereof, and may be any suitable artificial neural network (ANN) or combination of neural networks.

According to the example embodiment, the system100further comprises a main data path106configured to route bulk sensor data108to the at least one NN102and a low-latency data path110with reduced latency relative to the main data path106. The low-latency data path110is configured to route limited sensor data112to the at least one NN102which is configured to, in turn, employ the limited sensor data112to improve performance of the at least one NN's processing of the bulk sensor data108for generating the at least one output104, thereby improving a response of the system100to events in its environment90. According to an example embodiment, the at least one output104may represent a decision for controlling the autonomous driving. Alternatively, the at least one output104may be transmitted to another learning system (not shown) that may make the decision for controlling the autonomous driving.

The limited sensor data112is provided to the at least one NN102ahead of the bulk sensor data108to improve the response and decision making of the at least one NN102. The limited sensor data112may be used to refine a direction of image capture in order to focus on an object with greater detail, that is, with increased resolution, and may accelerate the processing of such higher resolution image data. It should be understood, however, that the limited sensor data112is not limited to image data. For a non-limiting example and with reference toFIG.1A, the higher resolution data may enable the system100to discern if a person (not shown) near the road98or driving another vehicle (not shown) is paying attention or making eye contact with the autonomous vehicle95to assess a risk of collision and may adjust, for example, a speed of the autonomous vehicle95based on the risk assessed.

The limited sensor data112may be considered limited relative to the bulk sensor data108because the limited sensor data112may be restricted to be of a lesser amount relative to the bulk sensor data108or may be of a courser granularity relative to a finer granularity of the bulk sensor data108. According to an example embodiment, the limited sensor data112may be sensor data that has been identified as higher priority (e.g., more important) sensor data relative to other sensor data that is included in the bulk sensor data108. According to an example embodiment, the limited sensor data112may be sourced by a subset of sensors that source the bulk sensor data108. It should be understood, however, that the limited sensor data112may be sourced by sensors that do not source sensor data of the bulk sensor data108. According to an example embodiment, the limited sensor data112may be considered limited because a number of sensor readings (e.g., measurements) included in same is less over a given time period relative to a number of sensor readings of the bulk sensor data108over the given time period. It should be understood, however, that the limited sensor data112and bulk sensor data108are not limited to any of the characteristics noted above.

Referring back toFIG.1B, the limited sensor data112may be a reduced set of sensor data relative to the bulk sensor data108. Processing of the bulk sensor data108may be computationally intensive and time consuming whereas processing of the limited sensor data112may require less computational cycles and processing time relative to same. Such rapid processing of the limited sensor data112may enable the at least one NN102to prioritize a first portion of sensor data of the bulk sensor data108for processing ahead of a second portion of the bulk sensor data108to reduce an amount of time taken to generate the at least one output104that may be used by the system100to, for example, ultimately avoid an obstacle in a path of the autonomous vehicle, such as the autonomous vehicle95ofFIG.1A, disclosed above.

According to an example embodiment, the limited sensor data112that is processed by the at least one NN102ahead of the bulk sensor data108may enable the at least one NN102to make a decision, represented by the at least one output104, that causes the system to adjust a parameter of a sensor that generates sensor data of the bulk sensor data108. For a non-limiting example with reference toFIGS.1A and1B, the limited sensor data112may include image data whereas the bulk sensor data108may include the image data as well as radar data. By receiving the limited sensor data112ahead of the bulk sensor data108, the at least one NN102may detect the bicyclist103bsooner and make a decision to increase resolution of a camera capturing the image data such that the at least one NN102is able to determine that the bicyclist103bis providing the left-hand turn signal105, ultimately causing the system100to react sooner in response to same.

For another non-limiting example, the limited sensor data112may be radar data and the bulk sensor data108may include the radar data as well as other sensor data. The limited sensor data112arrives at the at least one NN102ahead of the bulk sensor data108and may cause the at least one NN102to make a decision to adjust, for example, a radio frequency (RF) beam transmitted to detect objects. Such adjusting may enable the system to detect the bicyclist103bsooner and avoid contact with same.

Referring back toFIG.1B, according to an example embodiment, the at least one NN102includes at least one deep NN, that is, an artificial neural network with multiple layers between the input and output layers. The at least one NN102may be trained using at least one training dataset (not shown). The at least one training dataset may include a known training dataset for autonomous driving, such as the Astyx Dataset HiRes2019 automotive radar dataset, Berkeley DeepDrive dataset, Level5dataset, other known training dataset for autonomous driving, custom training dataset, or a combination thereof.

With reference toFIGS.1A and1B, the system100may be operated in a training mode or an operational mode. In the training mode, the at least one NN102may be trained. For example, the system100may be deployed in the autonomous vehicle95which, while autonomous, may be operated by a human driver while in the training mode. Once the at least one NN102is trained, the autonomous vehicle95may be operated in an autonomous manner (without a human driver). The at least one NN102may be trained to generate a digital map of an environment of an autonomous vehicle, such as the environment90of the autonomous vehicle95, and to classify and label objects in the environment90. The at least one output104may represent an object classified and labelled, a characteristic of an object classified and labelled, or a recommended action for controlling the autonomous vehicle based on the object classified and labelled.

One of the problems that occur during neural network training is overfitting. With overfitting, the error on the training set is driven to a very small value, but when new data is presented to the neural network the error is large. The neural network has memorized the training examples, but it has not learned to generalize to new situations. According to an example embodiment, providing the limited sensor data112ahead of the bulk sensor data108may prevent such overfitting of the at least one NN102.

The limited sensor data112may be of a lesser amount relative to the bulk sensor data108, coarser relative to the bulk sensor data108, or a combination thereof. The limited sensor data112may enable the at least one NN102to generate the at least one output104sooner or with improved accuracy relative to generating the at least one output104based on processing the bulk sensor data108without processing the limited sensor data112received via the low-latency data path110ahead of the bulk sensor data108.

The limited sensor data112may include radar data, lidar data, image data, audio data, tactile data, or a combination thereof, sourced by at least one sensor (not shown) and related to the environment90of the autonomous vehicle95that is controlled by the autonomous driving. It should be understood, however, that the limited sensor data112is not limited to including radar data, lidar data, image data, audio data, tactile data sourced by at least one tactile sensor, or a combination thereof. For example, the limited sensor data112may include wheel slip of the autonomous vehicle95, speed thereof, wind speed of the environment90, temperature thereof, etc. The system100may further comprise an inference engine and a decision-making engine, such as the inference engine228and decision-making engine224ofFIG.2, disclosed below.

FIG.2is a block diagram of an example embodiment of a system200for autonomous driving that may be employed as the system100ofFIGS.1A and1B, disclosed above. The system200comprises at least one NN202that is configured to generate at least one output204used to control the autonomous driving. The system200further comprises a main data path206configured to route bulk sensor data208to the at least one NN202and a low-latency data path210with reduced latency relative to the main data path206. The low-latency data path210is configured to route limited sensor data212to the at least one NN202which is configured to, in turn, employ the limited sensor data212to improve performance of the at least one NN's processing of the bulk sensor data208for generating the at least one output204.

The system200receives sensor readings222from at least one sensor224via a sensor interface226that, in turn, provides the bulk sensor data208and limited sensor data212therefrom. It should be understood that the sensor interface226may include multiple sensor interfaces and that the bulk sensor data208and limited sensor data212need not be produced from a single sensor interface or the same sensor interface. The sensor interface226may include at least one sensor interface chip (not shown) that is configured to interface with the at least one sensor224to collect the sensor readings222from the at least one sensor224and output the bulk sensor data208and limited sensor data212therefrom.

It should be understood, however, that the sensor interface226is not limited to including at least one sensor interface chip and may be any suitable interface implemented in hardware, firmware, software, or any combination thereof, that is capable of communicating with the at least one sensor224, another sensor system (not shown), or a combination thereof, to collect the sensor readings222, select the bulk sensor data208and limited sensor data212therefrom, and transmit the bulk sensor data208and limited sensor data212to the at least one NN202via the main data path206and low-latency data path210, respectively. Such selection may be performed by a hardware filter(s) by way of a non-limiting example.

The at least one sensor224may include a radio detection and ranging (radar) sensor, light detection and ranging (lidar) sensor, sound navigation and ranging (sonar) sensor, ultrasonic transducer, camera, infrared sensor, pitch sensor, roll sensor, yaw sensor, altitude sensor, heading sensor, positioning system, such as a global positioning system (GPS) but not limited thereto, accelerometer, velocity sensor, microphone, or a combination thereof. It should be understood, however, that the at least one sensor224is not limited thereto.

At least a portion of the bulk sensor data208, limited sensor data212, or a combination thereof, may be sourced by the radar sensor, lidar sensor, sonar sensor, ultrasonic transducer, camera, infrared sensor, pitch sensor, roll sensor, yaw sensor, altitude sensor, heading sensor, roll sensor, positioning system, such as a GPS but not limited thereto, accelerometer, velocity sensor, microphone, or a combination thereof. It should be understood, however, that the at least a portion of the bulk sensor data208, limited sensor data212, or a combination thereof is not limited to being sourced by any one of the above-noted sensors or combination thereof.

The system200further comprises an inference engine228and a decision-making engine232. The inference engine228includes the at least one NN202. The at least one NN202may be an artificial intelligence system that reasons about a set of rules in a rule base (not shown) and implements rules based on information stored in a fact base (not shown). The fact base is a list of known facts that the at least one NN202stores. The at least one NN202can perform such reasoning with a forward-chaining or back-chaining approach. The at least one NN202can implement the rules that it reasons about to create the at least one output204transmitted from the inference engine228.

The at least one output204is output from the at least one NN202of the inference engine228to the decision-making engine232. The decision-making engine232may be configured to make at least one decision233for controlling the autonomous driving based on the at least one output204that is generated. Alternatively, the at least one decision-making engine232may be configured to adjust a parameter of the system100based on the at least one output204. For example, the at least one decision-making engine may adjust a parameter that controls an infrared light to highlight an area in a field of view of a camera or to change the field of view.

As disclosed above, the low-latency data path210has reduced latency relative to the main data path206. According to an example embodiment, the main data path206may include at least one dynamic random-access memory (DRAM), such as disclosed below with regard toFIG.3.

FIG.3is a block diagram of an example embodiment of a main data path306and low-latency data path310that may be employed as the main data path106,206and low-latency data path110,210, respectively, disclosed above with regard toFIGS.1A-Band2. The main data path306may be considered to be a “main” data path as it may be configured to transport a majority of sensor data (e.g., the bulk sensor data308) of all sensor data provided to the at least one NN302for processing. According to the example embodiment ofFIG.3, the main data path306includes at least one DRAM334configured to store the bulk sensor data308before the bulk sensor data308is routed to the at least one NN302. The at least one NN302may be employed as the at least one NN102,202, disclosed above with regard toFIGS.1A-Band2.

The main data path306may further include, optionally, at least one first processing circuit336a. The at least one first processing circuit336ais configured to process the bulk sensor data308before the bulk sensor data308is stored in the at least one DRAM334.

The main data path306may further include, optionally, at least one second processing circuit336b. The at least one second processing circuit336bis disposed between the at least one DRAM334and the at least one NN302. The at least one second processing circuit336bmay be configured to process the bulk sensor data308, filter the bulk sensor data308, or a combination thereof, before the bulk sensor data308(that may have already been processed by the at least one first processing circuit336a) is routed from the at least one DRAM334to the at least one NN302.

According to an example embodiment, the limited sensor data312may be employed by the at least one NN302to adjust at least one filter of the at least one second processing circuit336bto adjust priority of the bulk sensor data308. The at least one filter may include any filter known in the art, such as a comb filter or other filter.

The low-latency data path310may include, optionally, at least one static random-access memory (SRAM)338configured to store the limited sensor data312before the limited sensor data312is routed to the at least one NN302. It should be understood that the at least one SRAM338is not limited to being an SRAM chip(s) and may be implemented in a variety of ways. For example, according to a non-limiting example embodiment, the at least one SRAM338may be implemented via multiple flip-flops (FFs) or other SRAM logic/circuit(s) integrated together with the at least one NN302on an application-specific integrated circuit (ASIC), whereas the at least one DRAM334may be separate from and external to the ASIC.

According to an example embodiment, the at least one NN302may include at least one first NN302-1and at least one second NN302-2. The at least one second NN302-2may be smaller and may execute faster relative to the at least one first NN302-1. For example, the at least one second NN302-2may include less nodes, connections, layers, weights, etc. relative to the at least one first NN302-1.

According to an example embodiment, the low-latency data path310may be configured to route the limited sensor data312to the at least one NN302by routing the limited sensor data312to the at least one first NN302-1, directly, that is, via route A. Alternatively, the low-latency data path310may be configured to route the limited sensor data312to the at least one NN302via route B that is configured to store the limited sensor data312in the at least one SRAM338before the limited sensor data312is routed to the at least one first NN302-1of the at least one NN302.

According to an example embodiment, the low-latency data path310may be configured to route the limited sensor data312to the at least one NN302by routing the limited sensor data312to the at least one second NN302-2, directly, that is, via route “C.” Alternatively, the low-latency data path310may be configured to route the limited sensor data312to the at least one NN302via route D that is configured to store the limited sensor data312in the at least one SRAM338before the limited sensor data312is routed to the at least one second NN302-2of the at least one NN302.

According to an example embodiment, an output layer (not shown) of the at least one second NN302-2may be coupled to an input layer (not shown) of the at least one first NN302-1to provide processing feedback342from the output layer of the at least one second NN302-2to the input layer of the at least one first NN302-1.

Regardless of which route, A, B, C, or D, or combination thereof, the low-latency data path310employs, the low-latency data path310routes the limited sensor data312to the at least one NN302which is configured to, in turn, employ the limited sensor data312to improve performance of the at least one NN's processing of the bulk sensor data308for generating the at least one output304. The at least one output304may include the at least one first output304athat is generated by the at least one first NN302-1. The at least one output304may further include the at least one second output304bthat is generated by the at least one second NN302-2.

According to an example embodiment, the at least one second NN302-2may be configured to generate the at least one second output304bthat may be used for controlling the autonomous driving or to effect a change to at least one parameter (not shown) that controls at least one sensor that sources at least a portion of the bulk sensor data308, such as the at least one sensor224ofFIG.2, disclosed above.

As disclosed further above, the at least one NN302may comprise a plurality of neural networks (NNs). The fast input data, that is, the limited sensor data312, may be provided to the plurality of NNs, to a given NN of the plurality of NNs, or to another system (not shown) of NNs that are working in a unified manner.

FIG.4is a flow diagram400of an example embodiment of a method for autonomous driving. The method begins (402) and generates, by at least one neural network (NN), at least one output used for controlling the autonomous driving (404). The method employs limited sensor data received via a low-latency data path to improve performance of the at least one NN's processing of bulk sensor data for generating the at least one output, the bulk sensor data routed to the at least one NN via a main data path, the limited sensor data routed to the at least one NN via the low-latency data path with reduced latency relative to the main data path (406). The method thereafter ends (408) in the example embodiment.

Employing the limited sensor data, such as the limited sensor data112,212,312, disclosed above, enables the at least one NN, such as the at least one NN102,202,302, disclosed above, to generate the at least one output, such as the at least one output104,204,304, sooner or with improved accuracy relative to generating the at least one output based on processing the bulk sensor data, such as the bulk sensor data108,208,308, disclosed above, without processing the limited sensor data received via the low-latency data path, such as the low-latency data path110,210,310, disclosed above, ahead of the bulk sensor data.

The method may further comprise sourcing, by at least one sensor, such as the at least one sensor224ofFIG.2, disclosed above, radar data, lidar data, image data, audio data, tactile data, or a combination thereof, related to an environment of a vehicle, such as the environment90of the autonomous vehicle95of FIB.1A, disclosed above, the vehicle controlled by the autonomous driving, the limited sensor data including the radar data, lidar data, image data, audio data, tactile data, or a combination thereof.

The method may further comprise sourcing at least a portion of the bulk sensor data, limited sensor data, or a combination thereof, by a radar sensor, lidar sensor, sonar sensor, ultrasonic transducer, camera, infrared sensor, pitch sensor, roll sensor, yaw sensor, altitude sensor, heading sensor, positioning system, such as a GPS but not limited thereto, accelerometer, velocity sensor, microphone, or a combination thereof.

The at least one NN may be included in an inference engine coupled to a decision-making engine, such as the inference engine228coupled to the decision-making engine232ofFIG.2, disclosed above, and the method may further comprise outputting the at least one output from the at least one NN of the inference engine to the decision-making engine. The method may further comprise, at the decision-making engine, making at least one decision for controlling the autonomous driving based on the at least one output generated.

The main data path may include at least one dynamic random-access memory (DRAM), such as the at least one DRAM334ofFIG.3, disclosed above, and the method may further comprise storing the bulk sensor data in the at least one DRAM before routing the bulk sensor data to the at least one NN. The main data path may further include at least one processing circuit, such as the first processing circuit336a, and the method may further comprise processing the bulk sensor data by the at least one processing circuit before storing the bulk sensor data in the at least one DRAM.

The at least one processing circuit may be the at least one first processing circuit, the main data path may further include at least one second processing circuit disposed between the at least one DRAM and at least one NN, such as the at least one second processing circuit336bofFIG.3, disclosed above, and the method may further comprise processing the bulk sensor data, filtering the bulk sensor data, or a combination thereof, at the least one second processing circuit, before routing the bulk sensor data from the at least one DRAM to the at least one NN.

The low-latency data path may include at least one static random-access memory (SRAM), such as the at least one SRAM338ofFIG.3, disclosed above, and the method may further comprise storing the limited sensor data in the SRAM before routing the limited sensor data to the at least one NN.

The at least one NN may include at least one first NN and at least one second NN, such as the at least one first NN302-1and at least one second NN302-2ofFIG.3, disclosed above, and the method may further comprise routing the bulk sensor data to the at least one first NN via the main data path and routing the limited sensor data to the at least one second NN via the low-latency data path. The low-latency data path may include the at least one SRAM and the method may further comprises storing the limited sensor data in the at least one SRAM before routing the limited sensor data to the at least one second NN. An output layer of the at least one second NN may be coupled to an input layer of the at least one first NN and the method may further comprise providing processing feedback from the output layer of the at least one second NN to the input layer of the at least one first NN.

The at least one output may include at least one first output and at least one second output, such as the at least one first output304aand at least one second output304bofFIG.3, disclosed above. The method may further comprise generating the at least one first output by the at least one first NN and generating the at least one second output by the at least one second NN. The at least one second NN may be used for controlling the autonomous driving or to effect a change to at least one parameter that controls at least one sensor sourcing at least a portion of the bulk sensor data.

FIG.5is a block diagram of an example of the internal structure of a computer500in which various embodiments of the present disclosure may be implemented. The computer500contains a system bus552, where a bus is a set of hardware lines used for data transfer among the components of a computer or digital processing system. The system bus552is essentially a shared conduit that connects different elements of a computer system (e.g., processor, disk storage, memory, input/output ports, network ports, etc.) that enables the transfer of information between the elements. Coupled to the system bus552is an I/O device interface554for connecting various input and output devices (e.g., keyboard, mouse, displays, printers, speakers, etc.) to the computer500. A network interface556allows the computer500to connect to various other devices attached to a network (e.g., global computer network, wide area network, local area network, etc.). Memory558provides volatile or non-volatile storage for computer software instructions560and data562that may be used to implement embodiments of the present disclosure, where the volatile and non-volatile memories are examples of non-transitory media. Disk storage564provides non-volatile storage for computer software instructions560and data562that may be used to implement embodiments of the present disclosure. A central processor unit566is also coupled to the system bus552and provides for the execution of computer instructions.

As used herein, the term “engine” may refer to any hardware, software, firmware, electronic control component, processing logic, and/or processor device, individually or in any combination, including without limitation: an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), an electronic circuit, a processor and memory that executes one or more software or firmware programs, and/or other suitable components that provide the described functionality.

Example embodiments disclosed herein may be configured using a computer program product; for example, controls may be programmed in software for implementing example embodiments. Further example embodiments may include a non-transitory computer-readable medium containing instructions that may be executed by a processor, and, when loaded and executed, cause the processor to complete methods described herein. It should be understood that elements of the block and flow diagrams may be implemented in software or hardware, such as via one or more arrangements of circuitry ofFIG.5, disclosed above, or equivalents thereof, firmware, a combination thereof, or other similar implementation determined in the future.

In addition, the elements of the block and flow diagrams described herein may be combined or divided in any manner in software, hardware, or firmware. If implemented in software, the software may be written in any language that can support the example embodiments disclosed herein. The software may be stored in any form of computer readable medium, such as random-access memory (RAM), read only memory (ROM), compact disk read-only memory (CD-ROM), and so forth. In operation, a general purpose or application-specific processor or processing core loads and executes software in a manner well understood in the art. It should be understood further that the block and flow diagrams may include more or fewer elements, be arranged or oriented differently, or be represented differently. It should be understood that implementation may dictate the block, flow, and/or network diagrams and the number of block and flow diagrams illustrating the execution of embodiments disclosed herein.

While example embodiments have been particularly shown and described, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the embodiments encompassed by the appended claims.