Patent Publication Number: US-10762776-B2

Title: Method, apparatus, and computer program product for determining vehicle lane speed patterns based on received probe data

Description:
TECHNOLOGICAL FIELD 
     An example embodiment of the present invention relates to determining vehicle lane speed patterns, and more particularly, to analyzing probe data from a plurality of probes to establish a multi-modal distribution of probe data along a road segment, and to use the multi-modal distribution to establish vehicle lane speed patterns. 
     BACKGROUND 
     Maps have been used for centuries for providing route geometry and geographical information. Conventional paper maps including static images of roadways and geographic features from a snapshot in history have given way to digital maps presented on computers and mobile devices. These digital maps can be updated and revised such that users have the most-current maps available to them each time they view a map hosted by a mapping service server. Digital maps can further be enhanced with dynamic information, such as traffic information in real time along roads and through intersections. 
     Traffic data that is provided on digital maps is generally based on crowd-sourced data from mobile devices or probe data. The traffic data is typically reflective of a collective group of mobile devices traveling along a road segment, with each road segment having a traffic speed that is established based on an average travel speed along that segment. However, the generalization of traffic on a road segment based on an average of all traffic on that road segment may not accurately represent or provide sufficient detail to understand traffic along that road segment. 
     BRIEF SUMMARY 
     A method, apparatus, and computer program product are provided in accordance with an example embodiment for gathering probe data and using the gathered data to establish vehicle lane speed patterns for a plurality of lanes along a road segment. According to an example embodiment described herein, a map services provider system may be provided. The system may include a memory configured to receive probe data points from a plurality of probes, wherein the probe data includes at least one of heading information and location information for each probe data point. The system may also include a processor configured to: match the probe data to a road segment to generate map-matched probe data; analyze the probe data relative to the road segment to establish a multi-modal distribution of probe data representing a distance of the probe data from a predefined reference position of the road segment; match the analyzed probe data to individual lanes of the road segment, where peaks in the established multi-modal distribution are associated with individual lanes; and generate a vehicle lane speed pattern for each lane of the road segment based on a speed associated with probe data that is map matched to the individual lanes. 
     According to an example embodiment, the processing circuitry configured to match the probe data to a road segment may include processing circuitry to: divide the road segment into sub-segments, where each sub-segment is defined between two consecutive shape points; determine distances between each probe data point map-matched to the road segment and each of the sub-segments of the road segment; for each probe data point, select the shortest distance from among the distances between that probe data point and the sub-segments of the road segment; and determine a value for the shortest distance for each probe data point, where the shortest distance is positive in response to being disposed on a first side of the sub-segment, and negative in response to being disposed on the opposite side of the sub-segment. The processing circuitry to analyze the probe data relative to the road segment may include processing circuitry to generate a distribution of probe data points from the road segment, where the shortest distance from the road segment for each probe data point is a lane distance from the centerline of the road segment, and establish multi-modal trends in the distribution of the probe data points. The processing circuitry may further match the probe data points to a lane of the road segment based on the lane distance from the centerline of the road segment. 
     According to certain embodiments, the probe data points may further include a timestamp representative of a day and time when the respective probe data point was gathered. The processing circuitry may optionally be configured to generate vehicle lane speed patterns on a per-lane basis of the road segment for at least one of: different times of day or different days of the week. The processing circuitry may optionally be configured to determine at least two different weather conditions from historical weather data associated with a geographic region containing the road segment; and generate vehicle lane speed patterns on a per-lane basis of the road segment for the at least two different weather conditions. The processing circuitry may be configured to provide the vehicle lane speed pattern to an autonomous vehicle and cause the autonomous vehicle course to be altered in response to the vehicle lane speed pattern. 
     An example embodiment may provide an apparatus including at least one processor and at least one memory including computer program code with the at least one memory and computer program code being configured to, with the processor, cause the apparatus to: receive probe data from a plurality of probes, where the probe data includes a location and heading; match the probe data to a road segment to generate map-matched probe data including a plurality of map-matched probe data points; divide the road segment into a plurality of sub-segments, where each sub-segment includes a predefined reference; determine, for each probe data point, a lane distance from the predefined reference of each of the plurality of sub-segments; establish for each probe data point the shortest lane distance as the probe data point lane distance for the respective probe data point relative to the road segment; generate a multi-modal distribution of the probe data points based on the probe data point lane distance for each probe data point; match each probe data point to a lane of the road segment based on the probe data point lane distance from the predefined reference and the multi-modal distribution; and generate a vehicle lane speed pattern for each lane of the road segment based on a speed associated with probe data that is map matched to the individual lanes. 
     According to an example embodiment, causing the apparatus to match each probe data point to an individual lane of the road segment based on the lane distance from the predefined reference and the multi-modal distribution may include establishing individual lanes of the road segment based on the peaks of the multi-modal distribution. Causing the apparatus to divide the road segment into a plurality of sub-segments may include dividing the road segment into a plurality of sub-segments where each sub-segment is defined between two consecutive shape points along the road segment. The predefined reference of each sub-segment may include a centerline of the road segment represented by the sub-segment. The probe data points may further include a timestamp representative of the day and time when the respective probe data point was gathered. The apparatus may be optionally configured to: generate vehicle lane speed patterns on a per-lane basis of the road segment for at least one of: different times of day or different days of the week. The apparatus may optionally be configured to: determine at least two different weather conditions from historical weather data associated with a geographic region containing the road segment; and generate vehicle lane speed patterns on a per-lane basis of the road segment for the at least two different weather conditions. 
     Another example embodiment described herein may provide a method including: receiving probe data from a plurality of probes, where the probe data includes probe data points location and heading; matching probe data points to a road segment to generate map-matched probe data points; analyzing the probe data relative to the road segment to establish a multi-modal distribution of probe data representing a distance of the probe data points from a pre-defined reference position of the road segment; matching the analyzed probe data points to individual lanes of the road segment, where peaks in the established multi-modal distribution are associated with individual lanes; and generating a vehicle lane speed pattern for each lane of the road segment based on a speed associated with probe data that is map-matched to the individual lanes. Matching the probe data points to a road segment may include: dividing the road segment into sub-segments, where each sub-segment is defined between two consecutive shape points; determining distances between each probe data point map-matched to the road segment and each of the sub-segments of the road segment; for each probe data point, selecting the shortest distance from among the distances between that probe data point and the sub-segments of the road segment; and determining a value for the shortest distance for each probe data point, where the shortest distance is positive in response to being disposed on a first side of the sub-segment, and negative in response to being disposed on the opposite side of the sub-segment. 
     According to certain embodiments, analyzing the probe data relative to the road segment may include: generating a distribution of probe data points from the road segment, where the shortest distance from the road segment for each probe data point is a lane distance from the centerline of the road segment; and establishing multi-modal trends in the distribution of the probe data points. Methods may include matching the probe data points to a lane of the road segment based on the lane distance from the centerline of the road segment. The probe data points may include a timestamp representative of a day and time when the respective probe data point was gathered. The method may include generating vehicle lane speed patterns on a per-lane basis of the road segment for at least one of: different times of day or different days of the week. Methods may include determining at least two different weather conditions from historical weather data associated with the geographic region containing the road segment; and generating vehicle lane speed patterns on a per-lane basis of the road segment for the at least two different weather conditions. Methods may include providing the vehicle lane speed pattern to a navigation system and causing the navigation system to alter a planned route responsive to the vehicle lane speed pattern. 
     A further example embodiment may provide a computer program product having at least one non-transitory computer-readable storage medium having computer-executable program code portions stored therein with the computer-executable program code portions including program code instructions to: receive probe data from a plurality of probes, where the probe data comprises probe data points having location and heading; match the probe data to a road segment to generate map-matched probe data having a plurality of map-matched probe data points; determine, for each probe data point, a lane distance from a predefined reference of the road segment; generate a multi-modal distribution of the probe data points based on the lane distance for each probe data point; match each probe data point to an individual lane of the road segment based on the lane distance from the predefined reference and the multi-modal distribution; and generate a vehicle lane speed pattern for each lane of the road segment based on a speed associated with probe data that is map-matched to the individual lanes. 
     The program code instructions to match each probe data point to an individual lane of the road segment based on the lane distance from the predefined reference and the multi-modal distribution may include program code instructions to establish lanes of the road segment based on the peaks of the multi-modal distribution. The predefined reference of the road segment may include a centerline of the road segment. The probe data points may optionally include a timestamp representative of a day and time when the respective probe data point was gathered. The computer program product may include program code instructions to generate vehicle lane speed patterns on a per-lane basis of the road segment for at least one of different times of day or different days of the week. The computer program product may include program code instructions to: determine at least two different weather conditions from historical weather data associated with a geographic region containing the road segment; and generate vehicle lane speed patterns on a per-lane basis of the road segment for the at least two different weather conditions. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Having thus described example embodiments of the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein: 
         FIG. 1  illustrates a communications diagram in accordance with an example embodiment of the present invention; 
         FIG. 2  is a block diagram of an apparatus that may be specifically configured for generating vehicle lane speed patterns based on a received probe data in accordance with an example embodiment of the present invention; 
         FIG. 3  illustrates a depiction of a road segment including a plurality of probe data points and a multimodal distribution of the volume of probe data points relative to a predefined position on the road segment according to an example embodiment of the present invention; 
         FIG. 4  illustrates a probe data point disposed a lane distance from a road segment according to an example embodiment of the present invention; 
         FIG. 5  illustrates the probe data point of  FIG. 4  and the associated distance from each sub-segment of the road segment according to an example embodiment of the present invention; 
         FIG. 6  depicts a multi-modal distribution of probe data points along a road segment according to an example embodiment of the present invention; and 
         FIG. 7  is a flowchart of a method for generating a vehicle lane speed pattern according to an example embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Some embodiments of the present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all, embodiments of the invention are shown. Indeed, various embodiments of the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like reference numerals refer to like elements throughout. As used herein, the terms “data,” “content,” “information,” and similar terms may be used interchangeably to refer to data capable of being transmitted, received and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention. 
     As defined herein, a “non-transitory computer readable medium,” which refers to a physical medium (e.g., volatile or non-volatile memory device), can be differentiated from a “transitory computer-readable medium,” which refers to an electromagnetic signal. In at least one example embodiment, a non-transitory computer readable medium is a tangible non-transitory computer readable medium. 
     A method, apparatus, and computer program product are provided herein in accordance with an example embodiment for generating vehicle lane speed patterns (VLSP) for a plurality of lanes along a road segment.  FIG. 1  illustrates a communication diagram of an example embodiment of a system for implementing example embodiments described herein. The illustrated embodiment of  FIG. 1  includes a map services provider system  116 , a processing server  102  in data communication with a user equipment (UE)  104  and/or a geographic map database, e.g., map database  108  through a network  112 , and one or more mobile devices  114 . The mobile device  114  may be associated, coupled, or otherwise integrated with a vehicle, such as an advanced driver assistance system (ADAS), for example. Additional, different, or fewer components may be provided. For example, many mobile devices  114  may connect with the network  112 . The map services provider  116  may include computer systems and a network of a system operator. The processing server  102  may include the map database  108 , such as a remote map server. The network may be wired, wireless, or any combination of wired and wireless communication networks, such as cellular, Wi-Fi, internet, local area networks, or the like. 
     The user equipment  104  may include a mobile computing device such as a laptop computer, tablet computer, mobile phone, smart phone, navigation unit, personal data assistant, watch, camera, or the like. Additionally or alternatively, the user equipment  104  may be a fixed computing device, such as a personal computer, computer workstation, kiosk, office terminal computer or system, or the like. Processing server  102  may be one or more fixed or mobile computing devices. The user equipment  104  may be configured to access the map database  108  via the processing server  102  through, for example, a mapping application, such that the user equipment may provide navigational assistance to a user among other services provided through access to the map services provider  116 . 
     The map database  108  may include node data, road segment data or link data, point of interest (POI) data, or the like. The map database  108  may also include cartographic data, routing data, and/or maneuvering data. According to some example embodiments, the road segment data records may be links or segments representing roads, streets, or paths, as may be used in calculating a route or recorded route information for determination of one or more personalized routes. The node data may be end points corresponding to the respective links or segments of road segment data. The road link data and the node data may represent a road network, such as used by vehicles, cars, trucks, buses, motorcycles, and/or other entities. Optionally, the map database  108  may contain path segment and node data records or other data that may represent pedestrian paths or areas in addition to or instead of the vehicle road record data, for example. The road/link segments and nodes can be associated with attributes, such as geographic coordinates, street names, address ranges, speed limits, turn restrictions at intersections, and other navigation related attributes, as well as POIs, such as fueling stations, hotels, restaurants, museums, stadiums, offices, auto repair shops, buildings, stores, parks, etc. The map database  108  can include data about the POIs and their respective locations in the POI records. The map database  108  may include data about places, such as cities, towns, or other communities, and other geographic features such as bodies of water, mountain ranges, etc. Such place or feature data can be part of the POI data or can be associated with POIs or POI data records (such as a data point used for displaying or representing a position of a city). In addition, the map database  108  can include event data (e.g., traffic incidents, construction activities, scheduled events, unscheduled events, etc.) associated with the POI data records or other records of the map database  108 . 
     The map database  108  may be maintained by a content provider e.g., a map services provider in association with a services platform. By way of example, the map services provider can collect geographic data to generate and enhance the map database  108 . There can be different ways used by the map services provider to collect data. These ways can include obtaining data from other sources, such as municipalities or respective geographic authorities. In addition, the map services provider can employ field personnel to travel by vehicle along roads throughout the geographic region to observe features and/or record information about them, for example. Also, remote sensing, such as aerial or satellite photography, can be used to generate map geometries directly or through machine learning as described herein. 
     The map database  108  may be a master map database stored in a format that facilitates updating, maintenance, and development. For example, the master map database or data in the master map database can be in an Oracle spatial format or other spatial format, such as for development or production purposes. The Oracle spatial format or development/production database can be compiled into a delivery format, such as a geographic data files (GDF) format. The data in the production and/or delivery formats can be compiled or further compiled to form geographic database products or databases, which can be used in end user navigation devices or systems. 
     For example, geographic data may be compiled (such as into a platform specification format (PSF) format) to organize and/or configure the data for performing navigation-related functions and/or services, such as route calculation, route guidance, map display, speed calculation, distance and travel time functions, and other functions, by a navigation device, such as by user equipment  104 , for example. The navigation-related functions can correspond to vehicle navigation, pedestrian navigation, or other types of navigation. While example embodiments described herein generally relate to vehicular travel along roads, example embodiments may be implemented for pedestrian travel along walkways, bicycle travel along bike paths, boat travel along maritime navigational routes, etc. The compilation to produce the end user databases can be performed by a party or entity separate from the map services provider. For example, a customer of the map services provider, such as a navigation device developer or other end user device developer, can perform compilation on a received map database in a delivery format to produce one or more compiled navigation databases. 
     As mentioned above, the server side map database  108  may be a master geographic database, but in alternate embodiments, a client side map database  108  may represent a compiled navigation database that may be used in or with end user devices (e.g., user equipment  104 ) to provide navigation and/or map-related functions. For example, the map database  108  may be used with the end user device  104  to provide an end user with navigation features. In such a case, the map database  108  can be downloaded or stored on the end user device (user equipment  104 ) which can access the map database  108  through a wireless or wired connection, such as via a processing server  102  and/or the network  112 , for example. 
     In one embodiment, the end user device or user equipment  104  can be an in-vehicle navigation system, such as an ADAS, a personal navigation device (PND), a portable navigation device, a cellular telephone, a smart phone, a personal digital assistant (PDA), a watch, a camera, a computer, and/or other device that can perform navigation-related functions, such as digital routing and map display. An end user can use the user equipment  104  for navigation and map functions such as guidance and map display, for example, and for determination of one or more personalized routes or route segments based on one or more calculated and recorded routes, according to some example embodiments. 
     The processing server  102  may receive probe data from a mobile device  114 . The mobile device  114  may include one or more detectors or sensors as a positioning system built or embedded into or within the interior of the mobile device  114 . Alternatively, the mobile device  114  uses communications signals for position determination. The mobile device  114  may receive location data from a positioning system, such as a global positioning system (GPS), cellular tower location methods, access point communication fingerprinting, or the like. The server  102  may receive sensor data configured to describe a position of a mobile device, or a controller of the mobile device  114  may receive the sensor data from the positioning system of the mobile device  114 . The mobile device  114  may also include a system for tracking mobile device movement, such as rotation, velocity, or acceleration. Movement information may also be determined using the positioning system. The mobile device  114  may use the detectors and sensors to provide data indicating a location of a vehicle. This vehicle data, also referred to herein as “probe data”, may be collected by any device capable of determining the necessary information, and providing the necessary information to a remote entity. The mobile device  114  is one example of a device that can function as a probe to collect probe data of a vehicle. 
     More specifically, probe data (e.g., collected by mobile device  114 ) is representative of the location of a vehicle at a respective point in time and may be collected while a vehicle is traveling along a route. While probe data is described herein as being vehicle probe data, example embodiments may be implemented with pedestrian probe data, marine vehicle probe data, or non-motorized vehicle probe data (e.g., from bicycles, skate boards, horseback, etc.). According to the example embodiment described below with the probe data being from motorized vehicles traveling along roadways, the probe data may include, without limitation, location data, (e.g. a latitudinal, longitudinal position, and/or height, GPS coordinates, proximity readings associated with a radio frequency identification (RFID) tag, or the like), rate of travel, (e.g. speed), direction of travel, (e.g. heading, cardinal direction, or the like), device identifier, (e.g. vehicle identifier, user identifier, or the like), a time stamp associated with the data collection, or the like. The mobile device  114 , may be any device capable of collecting the aforementioned probe data. Some examples of the mobile device  114  may include specialized vehicle mapping equipment, navigational systems, mobile devices, such as phones or personal data assistants, or the like. 
     An example embodiment of a processing server  102  may be embodied in an apparatus as illustrated in  FIG. 2 . The apparatus, such as that shown in  FIG. 2 , may be specifically configured in accordance with an example embodiment of the present invention for revising map geometry based on probe data received over two different periods of time. The apparatus may include or otherwise be in communication with a processor  202 , a memory device  204 , a communication interface  206 , and a user interface  208 . In some embodiments, the processor (and/or co-processors or any other processing circuitry assisting or otherwise associated with the processor) may be in communication with the memory device via a bus for passing information among components of the apparatus. The memory device may be non-transitory and may include, for example, one or more volatile and/or non-volatile memories. In other words, for example, the memory device may be an electronic storage device (for example, a computer readable storage medium) comprising gates configured to store data (for example, bits) that may be retrievable by a machine (for example, a computing device like the processor  202 ). The memory device may be configured to store information, data, content, applications, instructions, or the like, for enabling the apparatus to carry out various functions in accordance with an example embodiment of the present invention. For example, the memory device could be configured to buffer input data for processing by the processor. Additionally or alternatively, the memory device could be configured to store instructions for execution by the processor. 
     As noted above, the apparatus  200  may be embodied by processing server  102 . However, in some embodiments, the apparatus may be embodied as a chip or chip set. In other words, the apparatus may comprise one or more physical packages (for example, chips) including materials, components and/or wires on a structural assembly (for example, a baseboard). The structural assembly may provide physical strength, conservation of size, and/or limitation of electrical interaction for component circuitry included thereon. The apparatus may therefore, in some cases, be configured to implement an example embodiment of the present invention on a single “system on a chip.” As such, in some cases, a chip or chipset may constitute a means for performing one or more operations for providing the functionalities described herein. 
     The processor  202  may be embodied in a number of different ways. For example, the processor may be embodied as one or more of various hardware processing means such as a coprocessor, a microprocessor, a controller, a digital signal processor (DSP), a processing element with or without an accompanying DSP, or various other processing circuitry including integrated circuits such as, for example, an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), a microcontroller unit (MCU), a hardware accelerator, a special-purpose computer chip, or the like. As such, in some embodiments, the processor may include one or more processing cores configured to perform independently. A multi-core processor may enable multiprocessing within a single physical package. Additionally or alternatively, the processor may include one or more processors configured in tandem via the bus to enable independent execution of instructions, pipelining and/or multithreading. 
     In an example embodiment, the processor  202  may be configured to execute instructions stored in the memory device  204  or otherwise accessible to the processor. Alternatively or additionally, the processor may be configured to execute hard coded functionality. As such, whether configured by hardware or software methods, or by a combination thereof, the processor may represent an entity (for example, physically embodied in circuitry) capable of performing operations according to an embodiment of the present invention while configured accordingly. Thus, for example, when the processor is embodied as an ASIC, FPGA or the like, the processor may be specifically configured hardware for conducting the operations described herein. Alternatively, as another example, when the processor is embodied as an executor of software instructions, the instructions may specifically configure the processor to perform the algorithms and/or operations described herein when the instructions are executed. However, in some cases, the processor may be a processor specific device (for example, a mobile terminal or a fixed computing device) configured to employ an embodiment of the present invention by further configuration of the processor by instructions for performing the algorithms and/or operations described herein. The processor may include, among other things, a clock, an arithmetic logic unit (ALU) and logic gates configured to support operation of the processor. 
     The apparatus  200  of an example embodiment may also include a communication interface  206  that may be any means such as a device or circuitry embodied in either hardware or a combination of hardware and software that is configured to receive and/or transmit data to/from a communications device in communication with the apparatus, such as to facilitate communications with one or more user equipment  104  or the like. In this regard, the communication interface may include, for example, an antenna (or multiple antennae) and supporting hardware and/or software for enabling communications with a wireless communication network. Additionally or alternatively, the communication interface may include the circuitry for interacting with the antenna(s) to cause transmission of signals via the antenna(s) or to handle receipt of signals received via the antenna(s). In some environments, the communication interface may alternatively or also support wired communication. As such, for example, the communication interface may include a communication modem and/or other hardware and/or software for supporting communication via cable, digital subscriber line (DSL), universal serial bus (USB) or other mechanisms. 
     The apparatus  200  may also include a user interface  208  that may, in turn be in communication with the processor  202  to provide output to the user and, in some embodiments, to receive an indication of a user input. As such, the user interface may include a display and, in some embodiments, may also include a keyboard, a mouse, a joystick, a touch screen, touch areas, soft keys, one or more microphones, a plurality of speakers, or other input/output mechanisms. In one embodiment, the processor may comprise user interface circuitry configured to control at least some functions of one or more user interface elements such as a display and, in some embodiments, a plurality of speakers, a ringer, one or more microphones and/or the like. The processor and/or user interface circuitry comprising the processor may be configured to control one or more functions of one or more user interface elements through computer program instructions (for example, software and/or firmware) stored on a memory accessible to the processor (for example, memory device  204 , and/or the like). 
     Example embodiments of the present invention may provide a mechanism for generating vehicle lane speed patterns from probe data (e.g., from mobile device  114 ) from a plurality of vehicles traveling along one or more roadways in a particular geographic region. While traffic speeds and traffic congestion is typically based on all vehicles traveling along a particular road or road segment, different lanes of the road or road segment may be traveling at different speeds, and averaging the vehicles speeds from all vehicles on the road or road segment may not be indicative of the actual traffic speeds along every lane of that road or road segment. 
     The term “roads” or “road segments” as used herein, may refer to any path a vehicle may take in moving from one place to another. Roadways may be paved, improved roadways, gravel roadways, dirt trails, or the like, such that roadways does not imply that the mapped roads are necessarily recognized as county, state, or federally maintained roads, and may include private roadways such as access roads, neighborhood streets, and the like. 
     Example embodiments described herein provide a mechanism to determine vehicle speed along different lanes of a road segment based on probe data generated from vehicles traveling along that road segment. One or more algorithms may be applied to the probe data relative to the map-matched road segments to determine a lane associated with each probe, such that the probe data for each lane may be used to establish vehicle lane speed patterns. 
     For purposes of determining vehicle lane speed patterns, it may be desirable to identify a position of a particular apparatus or probe. Such a position may also be used to determine a specific lane along a road segment a vehicle is traveling, and to support various navigation operations, routing functionality, assisted-driving technology, and/or the like. In such circumstances, an apparatus may use the Global Positioning System (GPS), the Global Navigation Satellite System (GLONASS), the Galileo satellite system, any satellite-based positioning system, and/or the like. GPS is a space-based satellite navigation system that provides location and time information in all weather conditions, anywhere on or near the earth, and where there is an unobstructed line of sight to four or more GPS satellites. Each GPS satellite continually broadcasts a signal that includes various GPS data. Such GPS data may include, for example, a pseudorandom code that is known to the receiver. By time-aligning a receiver-generated version and the receiver-measured version of the code, the time of arrival (TOA) of a defined point in the code sequence, called an epoch, can be found in the receiver clock time scale. Additionally, the GPS data may include the time of transmission (TOT) of the code epoch and the satellite position at that time. An apparatus, such as a GPS receiver, measures the TOAs, according to its own clock, of four satellite signals. Based on the TOAs and the TOTs, the apparatus calculates four or more time of flight (TOF) values. The apparatus may then compute its three-dimensional position and clock deviation from the four or more TOFs. The three-dimensional position is often a set of three-dimensional Cartesian coordinates with origin at the earth&#39;s center. To facilitate use of this three-dimensional position, the earth-centered solution location may be converted to latitude, longitude, and altitude. 
     Even though the aforementioned example embodiments relate to GPS, GPS data, GPS satellites, and/or the like, it should be understood that any satellite-based positioning system may be used. For example, any data from any satellite-based positioning system and any satellites associated with any satellite-based positioning system may be used. For example, the apparatus may receive GLONASS data from at least one GLONASS satellite, may receive Galileo data from at least one Galileo satellite, and/or the like. In such examples, the apparatus may determine a measured satellite pseudo-range for each GLONASS satellite of a plurality of GLONASS satellites, for each Galileo satellite of the plurality of Galileo satellites, and/or the like. 
     Traffic speeds along roads with multiple lanes may be inconsistent across those lanes. For example, when traveling up a steep incline, traffic in a right-most lane may include heavy trucks that are slowly climbing the incline well below the speed limit, while cars in a left-most lane may be traveling at or near the posted speed limits. Similarly, when approaching a popular exit from a highway, the right-most lane may slow with traffic congestion trying to exit the highway while the left-most lane may be traveling at normal speeds. Similar issues may arise with commercial truck weigh stations, accidents partially blocking a roadway, debris in a road, disabled vehicles, merging lanes, etc. When viewed in aggregate, the speed of all vehicles along such a road segment may appear to be very slow, suggesting heavy traffic congestion, while there may still be one or more traffic lanes that are progressing smoothly with little to no traffic congestion. Certain embodiments described herein can discern vehicle speeds along different lanes of a road segment to more accurately depict traffic congestion along a road segment with lane-specific accuracy. 
     Real time data of vehicular traffic is increasingly being collected, aggregated, processed, analyzed, stored, and/or the like. Such real time data may include information indicative of the speed of a vehicle, the location of a vehicle, the time the data was collected, and/or the like. For example, a particular data point within a set of real time data may indicate the speed of a vehicle at a particular location during a particular time period. Data points within a set of real time data may be referred to as probe data. Such probe data may, for example, be collected to create speed-vs-time curves, to create historical traffic models, to perform real time traffic analysis, to create forward-looking traffic predictions, and/or the like. Probe data may be collected from vehicle-mounted sensors, GPS-enabled devices (e.g. smart phones), road sensors, traffic cameras, traffic reports, witnesses, and/or the like. Probe data may be centrally collected and distributed, broadcast, and/or the like to various receivers, subscribers, and/or the like (e.g. via a wireless network), such as to mobile navigation systems, portable navigation systems, news organizations, electronic road signs, and/or the like. Alternatively or additionally, probe data may be collected by an apparatus, such as a mobile navigation system, a portable navigation system, a traffic reporting system, and/or the like for use by the apparatus. For example, a GPS system installed in a vehicle may record the position and speed of the vehicle at particular intervals (e.g. once every second) for use by the vehicle, the GPS system, and/or the like, and/or road sensors may record the speed and time of vehicles as they pass a particular position, and transmit the data over a cellular data connection for reporting to a subscription service, and/or the like. It will be appreciated that probe data collected by vehicle mounted sensors, road sensors, GPS-enabled devices, and/or the like may be distributed via wireless peer-to-peer or mesh-based networks, e.g. the data is passed from a source and then from vehicle to vehicle, with each navigation system within a vehicle being both a consumer of the data and a repeater thereof. For example, probe data collected from vehicle-mounted sensors may be shared between vehicles by way of a vehicular ad hoc network, similar as described in the Institute of Electrical and Electronics Engineers (IEEE) 802.11 and 802.16 standards. 
     When probe data is received (e.g. from a service provider, from a sensor, and/or the like), the probe data may not be associated with a particular road segment or link segment. In circumstances where received probe data is not associated with a road segment, it may be desirable to match probe data to road segments on a map. For instance, the probe data may not identify a reference to a particular road segment, but use of the probe data for analysis, traffic reporting, and/or the like may be facilitated by associating the probe data with a particular road segment. For example, creation of a historical traffic model may be facilitated by associating probe data with a particular road segment. A historical traffic model may refer to a model of traffic behavior over time based, at least in part, on historical traffic data. For example, a historical traffic model may model the speed of a particular road segment at various times of the day based, at least in part, on data collected at similar times of day over an extended period of time, may model the location of a particular vehicle as the vehicle travels along a route based, at least in part, on data collected while the vehicle travels along the route, and/or the like. 
     Probe data may be matched to a road segment on a map using a number of known methods. For example, a computer program may be used that associates location information comprised by particular probe data with particular road segments. For instance, probe data may include a position received from a GPS receiver, and the GPS coordinates may be utilized by the computer program to determine a corresponding road segment. In another example, probe data may be manually associated with road segments, though a manual approach may be labor intensive, insufficiently fast, and/or the like. It should be understood that a road segment may be unidirectional (e.g. traffic flows in one direction), bi-directional (e.g. traffic flows in two directions), comprise multiple lanes, and/or the like. In circumstances where the road segment is bi-directional and/or comprises multiple lanes, it may be desirable to match probe data to a road segment according to the direction of traffic flow, the lane associated with the probe data, and/or the like. For example, if the road segment is bi-directional, it may be desirable to only match probe data to the road segment associated with traffic flow in one direction, to divide the road segment into multiple road segments (e.g. each flow direction is a different road segment, each lane of a road is a single road segment, etc.), and/or the like. In this manner, probe data matched to the road segment may be limited to probe data that is indicative of the same direction of travel, indicative of probe data associated with a single lane of a road, and/or the like. 
     While vehicle probe data may typically be map-matched only to a particular road segment, an example embodiment described herein may facilitate map-matching vehicle probe data to a particular road segment and to a specific lane of that road segment to provide enhanced granularity of the data received to enable greater analysis of the probe data on a per-lane level. This analysis may include vehicle speed or traffic speed along individual lanes of a road segment. Vehicle lane speed pattern information (VLSP) may be useful in a wide variety of applications. For example, navigation routing and estimated time of arrival may benefit from VLSP and may be able to direct lane-level guidance for drivers to be able to efficiently navigate roads. Transportation planning, incident management, and traffic simulations may similarly benefit from VLSP. Autonomous vehicle operation may significantly benefit from VLSP in being able to navigate roadways in the most efficient manner possible by understanding differing speed patterns on different lanes. 
     Vehicle lane speed patterns may be generated for real-time vehicle navigation and for historical purposes to provide lane-level insight for any road segment for different times of the day, different days of the week, different weather conditions, etc. Methods described herein include probe position pattern (spatial multi-modality) and the corresponding speed pattern (speed multi-modality). Some applications of the VLSP described herein include automatic detection of the number of lanes on a road segment, historical speed divergence, quality of probes per-provider, changes in VLSP in different weather conditions, and VLSP as a representation of historical average traffic speed per-lane per-time on a road segment. 
     Certain embodiments described herein build a historical lane level speed pattern for roads on a network of roads. This vehicle lane speed pattern is generated by analyzing the multi-modal distribution embedded in probes on a road segment, both in the spatial and temporal (or speed) dimension. Probes can be categorized into different lane and speed clusters for different times of day, days of the week, weather conditions, etc. Certain embodiments can facilitate the automatic detection of the number of lanes on a road segment where lanes may not be known to the map services provider  116 . 
     Algorithms described herein may use historical probe data retrieved from a database, where the probes are map-matched but retain their raw position that was used for the map-matching in order to calculate the spatial distances from a centerline of the road for lane-level granularity. According to the methods described herein, probe data that is collected may be map-matched as described above. Once map-matched to a road segment, the probe data, using the raw position data, may be assigned to a specific lane on the road segment. In order to map probe data to a specific lane, the probe data must be analyzed for a spatial distribution around the road segment to elicit the lane location using a multi-modality approach. Once each probe data point is assigned to a lane, the vehicle lane speed pattern may be created by querying the probe data points for a specific timeframe and grouping them by lane. Once the data is grouped by lane, the vehicle lane speed pattern can be established for certain periods of time, weather conditions, or the like. 
       FIG. 3  illustrates an example embodiment of how a spatial pattern for vehicle lane patterns are obtained. The vehicle lane pattern is the multi-modal pattern obtained from the spatial distribution of probes on the cross section of the road segment. Although GPS probes inherently include locationing errors that could place the probes anywhere within a fifteen to twenty meter radius, the specific lane a vehicle is traversing still has an indirect influence on the final GPS position despite error. The spatial distribution of a large population of probes on the road segment produces a histogram with multiple peaks (multi-modality) that is an indirect indication of the road lanes as depicted in  FIG. 3 . As shown, the probe data points  302  collected along road segment  300  form a multi-modal distribution based on the volume of probe data points relative to a pre-defined reference position on the road segment (e.g., a centerline) depicted at  304 . This multi-modal distribution presents an approximation of the road lanes of the road segment  300 . 
     According to the embodiment of  FIG. 3 , the multi-modal distribution may be used to associate each probe data point  302  with a lane of the road segment  300 . Using the probe data associated with each lane based on the modal clustering, the average speed of the probes may be determined to obtain an average speed for the lane of the road segment. 
     Probe data that is map-matched to a road segment may be analyzed to determine a lane to which that probe data is assigned. The lane distance is defined as the closest perpendicular distance from the probe data point raw position to a sub-segment of the road segment. The lane distance represents the distance of the probe data point from a predefined reference of the road segment, such as the centerline of the road segment.  FIG. 4  depicts a graphical illustration of the determination of the lane distance of a probe data point. The lane distance may be computed through a series of geometrical formulas, where the coordinates are treated as if the points were in a two-dimensional space since the road segments and road sub-segments are generally short enough that elevation changes along the segment are generally minimal and inconsequential to the lane distance. 
     The lane distance may be calculated by first sub-dividing the road segment into a plurality of sub-segments, where each sub-segment is defined by a pair of consecutive shape points. Shape points may be, for example, distinct turns or bends in the road segment. Optionally, in the event a road segment or portion thereof is substantially straight, the sub-segments may be established based on a maximum length of a sub-segment. For each sub-segment, an algorithm may be used to calculate the lane distance for the probe. An example algorithm for determining the lane distance is shown below, where the probe data point and the sub-segment are defined as vectors, and the closest point to the probe data point on the line defined by the sub-segment is found through the use of the dot product. The output of the algorithm is the distance to the closest shape point of the sub-segment. 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 function distancePointFromSegment(p, seg1, seg2) { 
               
               
                   
                    let aX = seg2.lng − seg1.lng; 
               
               
                   
                    let aY = seg2.lat − seg1.lat; 
               
               
                   
                    let bX = p.lng − seg1.lng; 
               
               
                   
                    let bY = p.lat − seg1.lat; 
               
               
                   
                    let dotProd = aX * bX + aY * bY; 
               
               
                   
                    let sqDist = aX * aX + aY * aY; 
               
               
                   
                    if (sqDist === 0) { 
               
               
                   
                       return haversineDist (p, seg1); 
               
               
                   
                    } 
               
               
                   
                    let component = dotProd/sqDist; 
               
               
                   
                    let closest = {lat: 0, lng:0}; 
               
               
                   
                    if (component &lt;= 0) { 
               
               
                   
                       closest = seg1; 
               
               
                   
                    } else if (component &gt;= 1) { 
               
               
                   
                       closest = seg2; 
               
               
                   
                    } else { 
               
               
                   
                       closest.lng = seg1.lng + aX * component; 
               
               
                   
                       closest.lat = seg1.lat + aY * component; 
               
               
                   
                    } 
               
               
                   
                    return haversineDist(p, closest); 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
       FIG. 4  illustrates a road segment that is divided into three sub-segments  330 ,  340 , and  350 . The algorithm above is used to identify the lane distance  320  for probe data point  310 .  FIG. 5  illustrates a graphical representation of the algorithm process of breaking apart the sub-segments of the road segment and establishing the shortest distance between each sub-segment  330 ,  340 ,  350  and the probe data point  310 . Based on the distances  320 ,  322 , and  324 , the shortest is 320 such that distance  320  becomes the lane distance for probe data point  310  from the road segment consisting of sub-segments  330 ,  340 , and  350 . 
     After computing the lane distance described above, the distance needs to be assigned a sign, positive or negative, based on a side of the road segment. According to certain embodiments, the distance may be assigned a positive value if disposed on a right side of the road segment, and a negative value if disposed on the left side of the road segment. The orientation of the road segment may be established based on the cardinal directions relative to the Earth, or based on a direction of travel of the probe data points, for example. Once each probe data point map-matched to the road segment has a signed lane distance, certain example embodiments described herein may analyze the spatial distribution of the probe data points relative to the road segment. 
     The spatial distribution of probe data points on a road having multiple lanes may produce a multi-modal distribution, such as the multi-modal distribution of  FIG. 6  with peaks  410  and  420  each representing a probable lane of the road segment. An algorithm of certain example embodiments may analyze the distribution to establish the multi-modal trends. The algorithm may be used to find multiple and consistent “peaks” in the distribution of the probe data points based on their lane distances. A peak in the distribution correlates to a higher number of probes with a similar lane distance, such that a lane may be determined as present at that lane distance from the predetermined reference point of the road segment. The multimodality detection and clustering (MDC) algorithm may be described as follows: 
     
       
         
           
               
             
               
                   
               
             
            
               
                 V ← {avector or alist of values} 
               
               
                  function MDC(V): 
               
               
                   s ← STD(V) 
               
               
                   m ← mean(V) 
               
            
           
           
               
               
            
               
                   V ← V ∀ V &lt; m + 2s &amp; v &gt; m − 2s 
                  // first outlier filtering 
               
            
           
           
               
            
               
                   R ← Range(V) 
               
               
                   d ← R/16 
               
            
           
           
               
               
            
               
                    for i ← 1 to 16 
                 // bucketizing 
               
            
           
           
               
            
               
                    b i  ← {V ∀ V &lt; max(V) &amp; V &gt; (max(V) − d)} 
               
            
           
           
               
               
               
            
               
                    V ← V − b i   
                   
                   
               
               
                    end for 
                   
                   
               
               
                   V ← b 1  + b 2  + ... + b 16   
                   
                 // restore V 
               
               
                   C ← 1 
                   
                   
               
            
           
           
               
               
            
               
                    for i ← 2 to 16 
                  //cluster search 
               
               
                   
               
            
           
           
               
            
               
                     
       MG   ←         mean   ⁡     (     b   1     )       -     mean   ⁡     (     b   i     )         R         
 
               
               
                   
               
            
           
           
               
               
            
               
                    if |b 1 | &gt; 8 and MG &gt; 0.3 and |V −b 1  | &gt; 8 
                   //8 &amp; 0.3 are tuning paramters 
               
            
           
           
               
            
               
                    then { 
               
               
                      MD ← {C,mean(b 1 ),size(b 1 ),STD(b 1 ),MG} 
               
               
                      C ← C + 1 
               
               
                     V ← V − b 1   
               
               
                      b 1  ← b i   
               
               
                     } 
               
               
                    else b 1  ← b 1  + b i   
               
               
                    end if 
               
               
                   end for 
               
               
                   MD ← {C,mean(b 1 ),size(b 1 ),STD(b 1 )} 
               
               
                   return MD 
               
               
                   end MDC 
               
               
                   
               
            
           
         
       
     
     The MDC algorithm returns ordered clusters of probes representing lane-level spatial differences which is a representation of the number of lanes on the road segment. This established vehicle lane pattern may be used to create the vehicle lane speed pattern by attributing each probe data point to a lane and calculating speed statistics for each lane based on a time period of interest. 
     Alternatively, in some instances, the number of lanes approaching an intersection may be known for a road segment. In such a case, a clustering algorithm may be used to compute the speed clusters associated with each lane. Clustering algorithms such as k-means, density-based spatial clustering of applications with noise (DBSCAN), etc. may be applied to the spatial distribution of data points to associate those points with their respective lanes in order to associate the speeds of those clusters with their respective lanes. 
     Another embodiment may not deduce the number of lanes based exclusively on the multi-modality of the distribution, but may instead estimate the number of lanes in a road segment approaching an intersection by equating the number of output directions (directions exiting the intersection) with the number of lanes approaching the intersection along the road segment. This “logical lane” assignment may preclude the need to estimate the number of lanes approaching an intersection and may instead associate the peaks of a multimodal distribution of probe data approaching the intersection with a logical lane based on their output direction exiting the intersection. 
     The vehicle lane speed patterns for the different lanes of a road segment may be stored with attributes related to their time period of collection, such as weather conditions at the time the probe data was collected, time of day, day of the week, season of the year, etc. In this manner, a user may be able to establish the lane speed conditions for a road segment for a time period in the future, or during certain conditions such as specific weather events. 
       FIG. 7  illustrates a flowchart depicting a method according to example embodiments of the present invention. It will be understood that each block of the flowcharts and combination of blocks in the flowcharts may be implemented by various means, such as hardware, firmware, processor, circuitry, and/or other communication devices associated with execution of software including one or more computer program instructions. For example, one or more of the procedures described above may be embodied by computer program instructions. In this regard, the computer program instructions which embody the procedures described above may be stored by a memory device  204  of an apparatus employing an embodiment of the present invention and executed by a processor  202  of the apparatus. As will be appreciated, any such computer program instructions may be loaded onto a computer or other programmable apparatus (for example, hardware) to produce a machine, such that the resulting computer or other programmable apparatus implements the functions specified in the flowchart blocks. These computer program instructions may also be stored in a computer-readable memory that may direct a computer or other programmable apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture the execution of which implements the function specified in the flowchart blocks. The computer program instructions may also be loaded onto a computer or other programmable apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide operations for implementing the functions specified in the flowchart blocks. 
     Accordingly, blocks of the flowcharts support combinations of means for performing the specified functions and combinations of operations for performing the specified functions for performing the specified functions. It will also be understood that one or more blocks of the flowcharts, and combinations of blocks in the flowcharts, can be implemented by special purpose hardware-based computer systems that perform the specified functions, or combinations of special purpose hardware and computer instructions. 
       FIG. 7  illustrates a flowchart of a method according to an example embodiment of the present invention for generating a vehicle lane speed pattern for a road segment. Probe data may be received from a plurality of probes, and a subset of that probe data may be map-matched to a road segment at  610 . The map-matched probe data may be analyzed relative to the road segment to establish a multi-modal distribution of the probe data representing a distance of the probe data from a predefined reference position of a road segment as shown at  620 . The analyzed probe data may be matched to individual lanes of the road segment based on the distance of the probe data from the predefined reference position of the road segment as shown at  630 . A vehicle lane speed pattern may be generated at  650  for each lane of the road segment. 
     In an example embodiment, an apparatus for performing the method of  FIG. 7  above may comprise a processor (e.g., the processor  202 ) configured to perform some or each of the operations ( 610 - 640 ) described above. The processor may, for example, be configured to perform the operations ( 610 - 640 ) by performing hardware implemented logical functions, executing stored instructions, or executing algorithms for performing each of the operations. Alternatively, the apparatus may comprise means for performing each of the operations described above. In this regard, according to an example embodiment, examples of means for performing operations  610 - 640  may comprise, for example, the processor  202  and/or a device or circuit for executing instructions or executing an algorithm for processing information as described above. 
     Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Moreover, although the foregoing descriptions and the associated drawings describe example embodiments in the context of certain example combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions may be provided by alternative embodiments without departing from the scope of the appended claims. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated as may be set forth in some of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.