Segment-based processing of map data
Segmenting HD map tiles into prioritized road segments and loading them into separate buffers addresses inefficiencies in HD map data processing, enhancing computational efficiency and responsiveness in vehicles.
Patent Information
- Application Number
- PCT/CN2024/103253
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-07-03
- Publication Date
- 2026-01-08
AI Technical Summary
The inefficiency of loading entire HD map tiles into a single data buffer in vehicles leads to increased computational costs and latency, as most of the data is irrelevant to the task at hand, hindering responsive and efficient map data utilization.
Segmenting HD map tiles into prioritized road segments and loading them into separate buffers based on vehicle location and task requirements, allowing for parallel processing and prioritization of relevant data.
This approach reduces system latency and improves response times by accessing only relevant data segments, enabling faster task performance and efficient map data processing.
Smart Images

Figure CN2024103253_08012026_PF_FP_ABST
Abstract
Description
SEGMENT-BASED PROCESSING OF MAP DATATECHNICAL FIELD
[0001] The present disclosure generally relates to using map data. For example, aspects of the present disclosure include systems and techniques for segment-based processing of high-definition (HD) map data.BACKGROUND
[0002] Autonomous and semi-autonomous vehicles, according to any level of autonomy, may make use of high-definition (HD) maps of their environments. An HD map may include map points –three-dimensional coordinates of surfaces of roads at a sub-meter granularity. An HD map may also include additional features such as lane markers, road signs, traffic lights, traffic signs, poles, etc. Autonomous vehicles may use HD maps to make determinations about steering, accelerating, braking, path planning, and / or to provide information to a driver, etc.SUMMARY
[0003] The following presents a simplified summary relating to one or more aspects disclosed herein. Thus, the following summary should not be considered an extensive overview relating to all contemplated aspects, nor should the following summary be considered to identify key or critical elements relating to all contemplated aspects or to delineate the scope associated with any particular aspect. Accordingly, the following summary presents certain concepts relating to one or more aspects relating to the mechanisms disclosed herein in a simplified form to precede the detailed description presented below.
[0004] Systems and techniques are described for using map data. According to at least one example, a method is provided for using map data. The method includes: obtaining a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles; identifying a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment; loading each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; and performing a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.
[0005] In another example, an apparatus for using map data is provided that includes at least one memory and at least one processor (e.g., configured in circuitry) coupled to the at least one memory. The at least one processor configured to: obtain a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles; identify a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment; load each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; and perform a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.
[0006] In another example, a non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: obtain a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles; identify a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment; load each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; and perform a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.
[0007] In another example, an apparatus for using map data is provided. The apparatus includes: means for obtaining a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles; means for identifying a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment; means for loading each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; and means for performing a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.
[0008] In some aspects, one or more of the apparatuses described herein is, can be part of, or can include an extended reality device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device) , a vehicle (or a computing device, system, or component of a vehicle) , a mobile device (e.g., a mobile telephone or so-called “smart phone” , a tablet computer, or other type of mobile device) , a smart or connected device (e.g., an Internet- of-Things (IoT) device) , a wearable device, a personal computer, a laptop computer, a video server, a television (e.g., a network-connected television) , a robotics device or system, or other device. In some aspects, each apparatus can include an image sensor (e.g., a camera) or multiple image sensors (e.g., multiple cameras) for capturing one or more images. In some aspects, each apparatus can include one or more displays for displaying one or more images, notifications, and / or other displayable data. In some aspects, each apparatus can include one or more speakers, one or more light-emitting devices, and / or one or more microphones. In some aspects, each apparatus can include one or more sensors. In some cases, the one or more sensors can be used for determining a location of the apparatuses, a state of the apparatuses (e.g., a tracking state, an operating state, a temperature, a humidity level, and / or other state) , and / or for other purposes.
[0009] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of this patent, any or all drawings, and each claim.
[0010] The foregoing, together with other features and aspects, will become more apparent upon referring to the following specification, claims, and accompanying drawings.BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Illustrative examples of the present application are described in detail below with reference to the following figures:
[0012] FIG. 1 is a diagram illustrating an example system in which a map server may provide map data to a vehicle, according to various aspects of the present disclosure.
[0013] FIG. 2 is an illustration of a map e.g., a high-definition (HD) map) ;
[0014] FIG. 3 is a block diagram illustrating a system for using map data (e.g., high definition (HD) map data) , according to various aspects of the present disclosure;
[0015] FIG. 4 is an illustration of a number of example road segments and paths to provide context in which to describe examples according to various aspects of the present disclosure;
[0016] FIG. 5 is a block diagram of a memory 502 including multiple buffers;
[0017] FIG. 6 is a flow diagram illustrating an example process for using map data, in accordance with aspects of the present disclosure;
[0018] FIG. 7 is a flow diagram illustrating an example process 700 for using map data, in accordance with aspects of the present disclosure;
[0019] FIG. 8 is a flow diagram illustrating an example process for using map data, in accordance with aspects of the present disclosure;
[0020] FIG. 9 is a block diagram illustrating an example computing-device architecture of an example computing device which can implement the various techniques described herein.DETAILED DESCRIPTION
[0021] Certain aspects of this disclosure are provided below. Some of these aspects may be applied independently and some of them may be applied in combination as would be apparent to those of skill in the art. In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of aspects of the application. However, it will be apparent that various aspects may be practiced without these specific details. The figures and description are not intended to be restrictive.
[0022] The ensuing description provides example aspects only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the exemplary aspects will provide those skilled in the art with an enabling description for implementing an exemplary aspect. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the application as set forth in the appended claims.
[0023] The terms “exemplary” and / or “example” are used herein to mean “serving as an example, instance, or illustration. ” Any aspect described herein as “exemplary” and / or “example” is not necessarily to be construed as preferred or advantageous over other aspects. Likewise, the term “aspects of the disclosure” does not require that all aspects of the disclosure include the discussed feature, advantage, or mode of operation.
[0024] High-definition (HD) maps may be useful for driving systems (e.g., autonomous, semi-autonomous, or assisted driving systems, such as an advanced driver assistance system (ADAS) ) . An HD map may include map points –three-dimensional coordinates of surfaces of roads at a sub-meter granularity. An HD map may also include additional features such as lane markers, road signs, traffic lights, traffic signs, poles, etc. Autonomous vehicles may use HD maps to make determinations about steering, accelerating, braking, path planning, and / or to provide information to a driver, etc. These capabilities may become even more important for higher levels of autonomy, such as autonomy levels 3 and higher. For example, autonomy level 0 requires full control from the driver as the vehicle has no autonomous driving system, and autonomy level 1 involves basic assistance features, such as cruise control, in which case the driver of the vehicle is in full control of the vehicle. Autonomy level 2 refers to semi-autonomous driving, where the vehicle can perform functions, such as drive in a straight path, stay in a particular lane, control the distance from other vehicles in front of the vehicle, or other functions own. Autonomy levels 3, 4, and 5 include much more autonomy. For example, autonomy level 3 refers to an on-board autonomous driving system that can take over all driving functions in certain situations, where the driver remains ready to take over at any time if needed. Autonomy level 4 refers to a fully autonomous experience without requiring a user’s help, even in complicated driving situations (e.g., on highways and in heavy city traffic) . With autonomy level 4, a person may still remain in the driver’s seat behind the steering wheel. Vehicles operating at autonomy level 4 can communicate and inform other vehicles about upcoming maneuvers (e.g., a vehicle is changing lanes, making a turn, stopping, etc. ) . Autonomy level 5 vehicles fully autonomous, self-driving vehicles that operate autonomously in all conditions. A human operator is not needed for the vehicle to take any action. Thus, autonomous, semi-autonomous, or assisted driving systems are an example of where the systems and techniques described may be employed. Also, the systems and techniques described herein may be employed in non-autonomous (e.g., human controlled) vehicles. For example, the systems and techniques may provide information to a driver based on an HD map.
[0025] In the context of HD maps, the term “high” typically refers to the level of detail and accuracy of the map data. In some cases, an HD map may have a higher spatial resolution and / or level of detail as compared to a non-HD map. While there is no specific universally accepted quantitative threshold to define “high” in HD maps, several factors contribute to the characterization of the quality and level of detail of an HD map. Some key aspects considered in evaluating the “high” quality of an HD map include resolution, geometric accuracy, semantic information, dynamic data, and coverage. With regard to resolution, HD maps generally have a high spatial resolution, meaning they provide detailed information about the environment. The resolution can be measured in terms of meters per pixel or pixels per meter, indicating the level of detail captured in the map. With regard to geometric accuracy, an accurate representation of road geometry, lane boundaries, and other features can be important in an HD map. High-quality HD maps strive for precise alignment and positioning of objects in the real world. Geometric accuracy is often quantified using metrics such as root mean square error (RMSE) or positional accuracy. With regard to semantic information, HD maps include not only geometric data but also semantic information about the environment. This may include lane-level information, traffic signs, traffic signals, road markings, building footprints, and more. The richness and completeness of the semantic information contribute to the level of detail in the map. With regard to dynamic data, some HD maps incorporate real-time or near real-time updates to capture dynamic elements such as traffic flow, road closures, construction zones, and temporary changes. The frequency and accuracy of dynamic updates can affect the quality of the HD map. With regard to coverage, the extent of coverage provided by an HD map is another important factor. Coverage refers to the geographical area covered by the map. An HD map can cover a significant portion of a city, region, or country. In general, an HD map may exhibit a rich level of detail, accurate representation of the environment, and extensive coverage.
[0026] In some cases, map servers may share HD maps with vehicles. For example, a map server may transmit an HD map of an environment to vehicles within the environment. The vehicles may receive the HD map and use the HD map while driving in the environment.
[0027] HD maps may be large, for example, a map of a city may be terabytes in size, or larger. It may be computationally expensive (e.g., in terms of power, processing time, transmission time, etc. ) for servers and vehicles to communicate and use large maps. To allow HD maps to be manageable in size, HD maps may be divided into tiles. For example, a map of a city may be divided into 1024-meter-by-1024-meter tiles. A map server may transmit a tile to a vehicle within the geographic area related to the tile. The vehicle may use the tile while the vehicle is within the geographic area. When the vehicle enters another geographic area, the vehicle may receive another tile relating to the other geographic area and use the other tile.
[0028] Conventionally, to use a tile, an ADAS may load the tile (e.g., the map points) into a data buffer and use the map data as loaded into the data buffer. It may be inefficient to use data of a whole tile in a single buffer.
[0029] Various aspects relate generally to using map data. Some aspects more specifically relate to efficiently using high-definition (HD) map data, for example, in a vehicle. For example, systems, apparatuses, methods (also referred to as processes) , and computer-readable media (collectively referred to herein as “systems and techniques” ) are described herein for efficiently using HD map data, for example, in a vehicle.
[0030] Particular aspects of the subject matter described in this disclosure can be implemented to realize one or more of the following potential advantages. For example, rather than loading an entirety of an HD map tile into a single data buffer, the systems and techniques may obtain segments of an HD map tile and load the segments of the tile into separate data buffers. Once buffered, the systems and techniques may use the data buffers based on the segments. For example, according to the conventional technique, in order to perform a task using map data, a vehicle (e.g., an ADAS of a vehicle) may have to access a single buffer including an entirety of a tile, even though most of the data in the tile may be irrelevant to the task. In contrast, the systems and techniques may be able to determine, based on the task, which map segment relates to the task, then access the data buffers related to the task to perform the task. By accessing less irrelevant data, the systems and techniques may improve response times.
[0031] Additionally or alternatively, the systems and techniques may prioritize segments of the tile. For example, the systems and techniques may determine that whichever segment the vehicle is in is the highest-priority segment. The systems and techniques may then prioritize the segment and the data buffer of the segment –the priority buffer. For example, the systems and techniques may load the priority buffer first. The systems and techniques may prioritize associating features (e.g., lane markers, road signs, traffic lights, traffic signs, poles, etc. ) of the priority segment with the priority segment. Additionally or alternatively, the systems and techniques may prioritize tasks based on the priority segment. For example, the systems and techniques may prioritize tasks related to the priority segment over tasks related to other segments. The systems and techniques may update the priority segment and priority buffer as the vehicle moves.
[0032] By dividing a map tile into segments with different priority, map-data loading, map-data updating, and map-data retrieving may be significantly improved. Each road segment may be assigned with a corresponding task. Multi-processors can work parallelly on segments loaded in separate buffers. Parallel processing may speed up the map data processing with multiplying efficiency. A priority mechanism would avoid system latency or overrun especially in processor overloading time.
[0033] The systems and techniques may decrease system latency and / or overrun in map-data intensive areas and / or tiles. Additionally or alternatively, the systems and techniques may calculate time usage and detect parallel tasks based on road segments.
[0034] In some aspects, the systems and techniques may segment the tile based on roads. For example, each road-portion between other road-portions may define a segment.
[0035] Various aspects of the application will be described with respect to the figures below.
[0036] FIG. 1 is a diagram illustrating an example system 100 in which a map server 106 may provide map data 110 to a vehicle 102, according to various aspects of the present disclosure. For example, vehicle 102 may be in environment 112. In some aspects, vehicle 102 may transmit a request for map data, for example, upon entering environment 112. Map server 106 may provide (e.g., transmit) map data 110 to vehicle 102.
[0037] Vehicle 102 may include an advanced driver assistance system (ADAS) 104. ADAS 104 may use map data 110 to navigate in environment 112, to control vehicle 102 in environment 112, and / or to provide information relative to environment 112 to a driver of vehicle 102. In the present disclosure, references to a vehicle performing operations may refer to a computing system of the vehicle or ADAS implemented by the computing system of the vehicle performing the operations.
[0038] Map server 106 may be, or may include, any number of computing devices. Map server 106 may include, or be communicatively coupled to, wireless communication equipment 108. Wireless communication equipment 108 may be capable of receiving requests (e.g., for map data) and providing (e.g., transmitting) map data 110. Map server 106 may include or have access to any number of storage devices that may store map data 110 and other map data. For example, map server 106 may include or have access to a database including a number of maps for a number of environments.
[0039] Map data 110 may be, or may include, map data relevant to environment 112. For example, map data 110 may include a map representative of environment 112. In some aspects, map data 110 may be, or may include, a high-definition (HD) map. In some aspects, map data 110 may include a tile of a map. In some aspects, map data 110 may be, or may include, segments of a tile of a map.
[0040] FIG. 2 is an illustration of a map 200 (e.g., a high-definition (HD) map) . To decrease a communication and / or processing burden of transmitting and using map 200, map 200 is divided into a number of tiles 202. For example, map 200 may represent a geographic area that is 5 kilometers x 4 kilometers. Each of tiles 202 may cover an area that is 1024 meters x 1024 meters. There may, or may not, be overlap between map tiles 202 at edges of map tiles 202. Rather than providing map 200 all at once, (a map server e.g., map server 106 of FIG. 1) may provide one of tiles 202 at a time, for example, based on a location of a vehicle (e.g., vehicle 102) within the environment represented by map 200. As the vehicle moves within the environment, the map server may provide additional map tiles, for example, as the vehicle enters a portion of the environment represented by the additional map tiles. The vehicle may load a one tile of map data at a time into its memory for processing.
[0041] FIG. 3 is a block diagram illustrating a system 300 for using map data (e.g., high definition (HD) map data) , according to various aspects of the present disclosure. For example, a task performer 322 may perform tasks using prioritized map segments 314 stored in buffers 316.
[0042] Map 302 may be, or may include, an HD map. The map 200 of FIG. 2 is an illustrative example of map 302. Map 302 may include a number of map tiles, including tile 304. Tiles 202 of FIG. 2 are illustrative examples of the tiles of map 302.
[0043] In some aspects, tile 304 may be provided to a vehicle, for example, by a map server. For example, map server 106 of FIG. 1 may provide tile 304 to vehicle 102 of FIG. 1. A segmenter 306 may segment tile 304 into map segments 308. For example, segmenter 306 may divide tile 304 based on road segments of tile 304. In some aspects, segmenter 306 may be part the vehicle. In other aspects, segmenter 306 may be part of a map server, such as map server 106 of FIG. 1. For instance, segmenter 306 of the map server (e.g., map server 106) may segment tile 304 into map segments 308 (e.g., based on road segments of tile 304) and provide map segments 308 to the vehicle (e.g., vehicle 102) .
[0044] The vehicle may obtain map segments 308 (e.g., from segmenter 306 of the vehicle or from segmenter 306 from the map server) . Map segments 308 may be, or may include, segments of a tile (e.g., tile 304) . A prioritizer 312 of the vehicle may prioritize map segments 308 based on location information 310 (which may include an indication a location of the vehicle relative to map segments 308) . For example, the vehicle may implement a location service that may determine a location of the vehicle, (e.g., by using a global navigation satellite system (GNSS) receiver or a global positioning system (GPS) receiver) . The location service may determine the location of the vehicle and provide location information 310 (indicative of the location of the vehicle) to prioritizer 312. Prioritizer 312 may determine a location of the vehicle relative to map segments 308. In some aspects, prioritizer 312 may order map segments 308 based on distance from the current location of the vehicle. For example, prioritizer 312 may determine a priority of map segments 308 based on the location of the vehicle relative to map segments 308. For instance, prioritizer 312 may determine that a map segment representing a geographic area corresponding to the current location of the vehicle is a highest priority map segment. Additionally, prioritizer 312 may determine that map segments that represent geographic areas proximate to (e.g., within a threshold distance of) the current location of the vehicle are priority map segments. Additionally, prioritizer 312 may determine that map segments that represent geographic areas distant from (e.g., greater than a threshold distance from) the current location of the vehicle are low-priority map segments.
[0045] Additionally or alternatively, a navigation service may determine a path of the vehicle, for example, a path that the vehicle may take through an environment between the current location of the vehicle and a destination. The navigation service may provide location information 310 (including an indication of the path of the vehicle) to prioritizer 312. Prioritizer 312 may order map segments 308 based on the path of the vehicle. For example, prioritizer 312 may prioritize map segments included in a path (or likely path) of the vehicle. Further, prioritizer 312 may prioritize map segments proximate to the path. Last, prioritizer 312 may designate as low-priority map segments distant from the path.
[0046] As the vehicle travels, prioritizer 312 may update the priority of prioritized map segments 314. For example, prioritizer 312 may generate a priority order that may change over time, for example, as the vehicle moves from a geographic area represented by a first map segment to a geographic area represented by a second map segment.
[0047] Prioritizer 312 may store prioritized map segments 314 (e.g., map segments 308 associated with a priority ordering) in buffers 316. Prioritizer 312 may store each of prioritized map segments 314 in a respective one of buffers 316. For example, prioritizer 312 may allocate one of buffers 316 for each of prioritized map segments 314.
[0048] Buffers 316 may be, or may include, individual buffers (e.g., individually addressable memory locations) in a working memory of a vehicle. The working memory may be a random-access memory (RAM) of a computing system of the vehicle. Other systems may store data of an entirety of a tile in a single memory location or buffer. In contrast, prioritizer 312 may store each of map segments 308 in a respective one or buffers 316.
[0049] In some aspects, prioritizer 312 may load prioritized map segments 314 into buffers 316 according to the priority order of prioritized map segments 314. For example, prioritizer 312 may load highest-priority map segments of prioritized map segments 314 into buffers 316 first and lower priority map segments of prioritized map segments 314 into buffers 316 later. By prioritizing the order of loading prioritized map segments 314 into buffers 316 based on the priority of prioritized map segments 314, prioritizer 312 may cause highest priority map segments to be loaded sooner, thereby allowing the highest priority map segments to be accessible sooner.
[0050] A task performer 322 may obtain a task instruction 320. Task instruction 320 may indicate a task to be performed by the computing system of the vehicle. The task may use map data. In some cases, the task may relate to a current location of the vehicle. For example, the task may relate to a road on which the vehicle is traveling. For instance, the task may use map data to determine which lane to travel in and / or determining where to turn to stay on road and / or to turn onto another road. As another example, the task may display information related to the road to a driver or passenger of the vehicle.
[0051] Task performer 322 may perform tasks using prioritized map segments 314 stored in buffers 316. Task performer 322 may access prioritized map segments 314 stored in buffers 316 according to the segmentation of the map segments. For example, many tasks may relate to a subset of map segments. For example, many tasks may relate roads on which a vehicle is travelling or may soon travel. Relatively few tasks may relate to all of map segments 308 (or to an entirety of tile 304) . Because prioritized map segments 314 are stored in respective ones of buffers 316, task performer 322 may access particular buffers 316 that store particular prioritized map segments 314 that relate to a given task, for example, without accessing the data of all of tile 304. By, enabling task performer 322 to access map segments relevant to a task (in respective ones of buffers 316) , rather than accessing the data of the entirety of tile 304, system 300 may enable task performer 322 to more quickly and efficiently perform tasks.
[0052] Because prioritizer 312 may load high-priority map segments before loading low-priority map segments, task performer 322 may have access to high-priority map segments sooner than task performer 322 has access to low-priority map segments. Accordingly, task performer 322 may be able to perform tasks using the high-priority map segments sooner than task performer 322 would be able to perform tasks if task performer 322 had to wait for all of tile 304 to be loaded into memory.
[0053] Prioritizer 312 may prioritize prioritized map segments 314 based on how tasks are likely to use prioritized map segments 314. For example, many tasks may relate to map segments corresponding to current location of a vehicle and to predicted upcoming locations of the vehicle. Relatively few tasks may relate to map segments that the vehicle is unlikely to travel. Therefore, prioritizer 312 may prioritize map segments closest to the current location of the vehicle and / or map segments along a path of the vehicle over map segments distant from the current location of the vehicle. Thus, prioritizer 312 may cause map segments that are related to tasks that are most likely to be performed to be loaded into buffers 316 sooner than map segments that are related to tasks that are unlikely to be performed. By loading high-priority map segments before low-priority map segments, system 300 may enable task performer 322 to perform tasks related to high-priority map segments sooner (e.g., with less delay between receiving the task and performing the task) than would be possible if task performer 322 had to wait until the data of the entirety of tile 304 were loaded into working memory.
[0054] Additionally, because prioritized map segments 314 are stored in respective ones of buffers 316, task performer 322 may perform multiple tasks in parallel, for example, with the multiple tasks accessing different ones of buffers 316. For example, a first task may access a first map segment stored in a first buffer. At the same time, or substantially the same time, a second task may access a second map segment stored in a second buffer. Accessing the first and second buffers may not conflict. Because prioritized map segments 314 are stored in respective buffers 316, system 300 may enable parallelization of tasks.
[0055] Further, task performer 322 may prioritize tasks based on the priority of prioritized map segments 314 to which the tasks relate. For example, task performer 322 may prioritize tasks related to high-priority ones of prioritized map segments 314 over tasks that relate to low-priority ones of prioritized map segments 314. As the vehicle travels and prioritizer 312 updates a priority order of prioritized map segments 314, task performer 322 may update a priority of performing various tasks.
[0056] For example, the task may be, or may include, a query. For example, the task may involve receiving a query (e.g., for data) and using data of at least one map segment to generate a response to the query. In some cases, to respond to a query, task performer 322 may access some of buffers 316 and not others based on some of the map segments being relevant to the query and not others. In some aspects, a single data-handling request may be divided into a number of smaller data-handling requests, for example, for each of several ones of prioritized map segments 314 to which the single data-handling request relates. By storing prioritized map segments 314 in respective ones of buffers 316, system 300 may enable task performer 322 to more efficiently respond to queries by accessing relevant map segments and not accessing irrelevant map segments. By loading prioritized map segments 314 in priority order, system 300 may enable task performer 322 to respond to queries relevant to priority map segments sooner than task performer 322 would be able to if task performer 322 had to wait until all of map segments 308 were stored in a memory.
[0057] As another example, the task may be, or may include, associating map features with map segments. For example, on receiving map data, a computing system may associate map features (e.g., lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, objects, etc. ) with map segments. For example, the computing system may associate lane markings with a map segment in which the lane markings appear. For instance, a map server may transmits HD map data to a vehicle via a network. Due to the size limitation of the data packets, the transmitted map data may not be continuous. Additionally, the data organization format may vary between different map providers. For example, the first message might include a path ID (or a road ID) , the second message might include lane IDs corresponding to the path ID within the last message (e.g., one path has two lanes) , the third message may include coordinate data for the centerline of lane1, the fourth message might include coordinate data for lane2, the fifth message could contain lane marker coordinates for lane1, and the sixth message might include lane marker coordinates for lane2. In this example, all the HD data are individually included in different messages. So on the vehicle side, the received data includes discrete messages rather than the organized map data. In order to use the map data, the vehicle may need to reconstruct the map data and associate the map data within lane segments.
[0058] An associater 318 may associate features with prioritized map segments 314 based on a priority order determined by prioritizer 312. For example, associater 318 may associate features with high-priority road segments before associating features with low-priority road segments. In some aspects, associater 318 may defer associating of low-priority map segments until a processor idle time. For example, associater 318 may defer associating of low-priority map segments until the processor has no other tasks.
[0059] FIG. 4 is an illustration of a number of example road segments and paths to provide context in which to describe examples according to various aspects of the present disclosure. For example, tile 400 may be an example of a tile, such as tile 304 of FIG. 3.
[0060] Tile 400 includes a number of road segments (e.g., road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424) . The road segments of tile 400 may be defined as segments of road between intersections with other road segments. For example, rather than defining road segment 410, road segment 412, road segment 416, and road segment 418 as a road, according to the example described herein, each of road segment 410 road segment 412, road segment 416, and road segment 418 may be defined separately based on the intersections of road segment 410 road segment 412, road segment 416, and road segment 418 with other road segments.
[0061] In some aspects, tile 400 may be divided into segments based on road segments. For example, each of road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424 may be used to define a map segment of map segments 308 of FIG. 3. For example, segmenter 306 may segment tile 400 into map segments 308 based on road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424. For example, all map data of tile 400 representative of road segment 410 may be defined as a map segment.
[0062] Defining map road segments based on road segments may cause map data for each road segment to be loaded into a separate respective buffer. For example, FIG. 5 is a block diagram 500 of a memory 502 including multiple buffers. Map data representative of road segment 410 may be loaded into a buffer 510, map data representative of road segment 412 may be loaded into a buffer 512, map data representative of road segment 414 may be loaded into a buffer 514, map data representative of road segment 416 may be loaded into a buffer 516, map data representative of road segment 418 may be loaded into a buffer 518, map data representative of road segment 420 may be loaded into a buffer 520, map data representative of road segment 422 may be loaded into a buffer 522, and map data representative of road segment 424 may be loaded into a buffer 524.
[0063] Loading map data representative of each of road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424 may allow vehicle 402 to access map data representative of each of road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424 independently. Allowing vehicle 402 to access map data for each of road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424 independently may allow vehicle 402 to decrease access of irrelevant map data. For example, vehicle 402 may have a task related to a path 430 of vehicle 402. To perform the task, vehicle 402 may access map data for each road segment of path 430, such as road segment 410, road segment 412, road segment 416, and road segment 418. To perform the task, vehicle 402 may not need to access map data for road segment 414, road segment 420, road segment 422, and road segment 424. Because each of road segment 410, road segment 412, road segment 414, road segment 416, road segment 418, road segment 420, road segment 422, and road segment 424 are loaded to independent buffers, vehicle 402 can access map data of road segment 410, road segment 412, road segment 416, and road segment 418 without accessing map data of road segment 414, road segment 420, road segment 422, and / or road segment 424. Not accessing map data of road segment 414, road segment 420, road segment 422, and / or road segment 424 may allow vehicle 402 to more efficiently perform tasks related to road segment 410, road segment 412, road segment 416, and road segment 418, for example, by not wasting computing resources accessing map data related to road segment 414, road segment 420, road segment 422, and / or road segment 424.
[0064] As mentioned previously, prioritizer 312 of FIG. 3 may prioritize map segments 308 based on a current location of a vehicle and / or a path of the vehicle (e.g., path 430, path 432, path 434, path 436, or path 438) . For example, prioritizer 312 may prioritize road segment 410 (e.g., as a highest priority map segment) based on a current location of vehicle 402. In some aspects, prioritizer 312 may prioritize map segments 308 based on a proximity to the vehicle. For example, prioritizer 312 may prioritize road segment 420 and road segment 412 ahead of road segment 418, road segment 424, and road segment 422 based road segment 420 and road segment 412 being closer to vehicle 402 than road segment 418, road segment 422 and road segment 424 are to vehicle 402.
[0065] In some aspects, prioritizer 312 may prioritize map segments based on a path (or likely paths) of a vehicle. For example, for a destination 440 of vehicle 402, prioritizer 312 may prioritize road segment 410, road segment 412, road segment 416, and road segment 418 as high-priority road segments. Further, prioritizer 312 may prioritize road segment 420, and road segment 422 as priority road segments. Further still, prioritizer 312 may prioritize road segment 414 as a low-priority road segment and road segment 424 as a lowest-priority road segment.
[0066] As mentioned previously, prioritizer 312 may update a priority of map segments 308 based as the vehicle moves. For example, initially, a priority ordering of road segments may be according to the following order: road segment 410, road segment 412, road segment 416, road segment 418, road segment 420, road segment 422, road segment 414, and road segment 424. If vehicle 402 moves from road segment 410 to road segment 420, prioritizer 312 may reorder the priority according to the following order: road segment 420, road segment 422, road segment 418, road segment 416, road segment 414, road segment 424, road segment 410. As prioritizer 312 updated a priority of road segments, a priority of tasks associated with the road segments may also be updated to reflect the updates to priority of the road segments.
[0067] FIG. 6 is a flow diagram illustrating an example process 600 for using map data, in accordance with aspects of the present disclosure. One or more operations of process 600 may be performed by a computing device (or apparatus) or a component (e.g., a chipset, codec, etc. ) of the computing device. The computing device may be a vehicle or component or system of a vehicle, a mobile device (e.g., a mobile phone) , a network-connected wearable such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or augmented reality (AR) device, a desktop computing device, a tablet computing device, a server computer, a robotic device, and / or any other computing device with the resource capabilities to perform the process 600. The one or more operations of process 600 may be implemented as software components that are executed and run on one or more processors.
[0068] For example, the computing device (and / or one or more component thereof) may obtain map data. For example, the computing device (and / or one or more component thereof) may obtain a tile of an HD map.
[0069] At block 602, the computing device (and / or one or more component thereof) may load map data. For example, a vehicle may receive a series of discrete network messages including high-precision map data The messages may need to be stored in a temporary buffer. The system may pop (e.g., retrieve) the network messages from the buffer and then extract the specific map data from the messages. The process of popping the network message from the buffer and extracting specific map data is called data loading (e.g., loading the map data from the network messages from the temporary message buffer) . After the “load” process, the HD map data can be loaded into a single memory.
[0070] At block 604, the computing device (and / or one or more component thereof) may segment the map data. For example, segmenter 306 may segment tile 304 to generate map segments 308. In some aspects, prioritizer 312 may segment tile 304 based on road segments, for example, as described with regard to FIG. 4.
[0071] At block 606, the computing device (and / or one or more component thereof) may associate features with map segments. For example, the computing device (and / or one or more component thereof) may associate map points related to lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, and / or other objects with map segments (as defined at block 604) . For instance, because the map segments may be defined based on road segments, the features may be associated with road segments.
[0072] At block 608, road-based tasks may be assigned. In some examples, tasks may be prioritized based on a priority of road segments related to the tasks. Additionally or alternatively, priorities may be assigned based on buffer access. In some aspects, a divide-and-conquer approach may be applied to tasks or operations related to map data. For example, a map tile may be segmented into smaller map segments (e.g., defined by road segments) . Additionally, tasks may be divided based on map segments. In this way, area-based data processing may be converted to road-based data processing. For example, a tile may include multiple roads, the roads may be loaded several at a time. However, at any given moment, a vehicle can only travel on one road. The road on which the vehicle is travelling may be assigned the task with highest priority. Roads that the vehicle may travel on in the future may be given tasks with a lower priority, and roads that are almost never traveled on are may be given the lowest priority.
[0073] At block 610, road-based processing may be performed. For example, road-based tasks may be performed according to the priorities assigned to the road-based tasks.
[0074] FIG. 7 is a flow diagram illustrating an example process 700 for using map data, in accordance with aspects of the present disclosure. One or more operations of process 700 may be performed by a computing device (or apparatus) or a component (e.g., a chipset, codec, etc. ) of the computing device. The computing device may be a vehicle or component or system of a vehicle, a mobile device (e.g., a mobile phone) , a network-connected wearable such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or augmented reality (AR) device, a desktop computing device, a tablet computing device, a server computer, a robotic device, and / or any other computing device with the resource capabilities to perform the process 700. The one or more operations of process 700 may be implemented as software components that are executed and run on one or more processors.
[0075] At block 704, the computing device (and / or one or more component thereof) may obtain map segments. The map segments may be segments of a tile of an HD map. The tile may be segmented by a map server. The tile may be provided to the vehicle in its entirety with map segments defined.
[0076] At block 706, the computing device (and / or one or more component thereof) may associate features with map segments. For instance, the computing device (and / or one or more component thereof) may associate map points related to lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, and / or other objects with map segments. In one illustrative example, because the map segments may be defined based on road segments, the features may be associated with road segments.
[0077] At block 708, road-based tasks may be assigned. In some cases, tasks may be prioritized based on a priority of road segments related to the tasks. Additionally or alternatively, priorities may be assigned to tasks based on buffer access. In some aspects, a divide-and-conquer approach may be applied to tasks or operations related to map data. For example, as noted previously, a map tile may be segmented into smaller map segments (e.g., defined by road segments) . Additionally, tasks may be divided based on map segments. In this way, area-based data processing may be converted to road-based data processing.
[0078] At block 710, road-based processing may be performed. For example, road-based tasks may be performed according to the priorities assigned to the road-based tasks.
[0079] FIG. 8 is a flow diagram illustrating an example process 800 for using map data, in accordance with aspects of the present disclosure. One or more operations of process 800 may be performed by a computing device (or apparatus) or a component (e.g., a chipset, codec, etc. ) of the computing device. The computing device may be a vehicle or component or system of a vehicle, a mobile device (e.g., a mobile phone) , a network-connected wearable such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or augmented reality (AR) device, a desktop computing device, a tablet computing device, a server computer, a robotic device, and / or any other computing device with the resource capabilities to perform the process 800. The one or more operations of process 800 may be implemented as software components that are executed and run on one or more processors.
[0080] At block 802, a computing device (or one or more components thereof) may obtain a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles. For example, prioritizer 312 of FIG. 3 may obtain map segments 308. Map segments 308 may be segments of tile 304. Map segments 308 may be defined by road segments. Tile 304 may be a tile of map 302.
[0081] Isa the map may be, or may include, a high definition (HD) map. For example, map 302 may be, or may include, an HD map of an environment.
[0082] In some aspects, the computing device (or one or more components thereof) may obtain, at the computing system of the vehicle, the tile; and segment the tile into the plurality of map segments based on the road segments of the tile. For example, vehicle 102 of FIG. 1 may include segmenter 306 of FIG. 3. Segmenter 306 may obtain tile 304 and segment tile 304 into map segments 308.
[0083] In some aspects, the tile may be segmented into the plurality of map segments based on the road segments of the tile at a map server. The map server may be configured to provide the plurality of map segments to the computing system of the vehicle. For example, map server 106 of FIG. 1 may include segmenter 306. Segmenter 306 may obtain tile 304 and segment tile 304 into map segments 308.
[0084] At block 804, the computing device (or one or more components thereof) may identify a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment. For example, prioritizer 312 may identify a priority map segment from among map segments 308.
[0085] At block 806, the computing device (or one or more components thereof) may load each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle. For example, prioritizer 312 may load each of map segments 308 into a respective one of buffers 316.
[0086] In some aspects, the computing device (or one or more components thereof) , while loading each map segment of the plurality of map segments into the respective buffers, may prioritize loading the priority map segment into the priority buffer. For example, prioritizer 312 may prioritize loading the priority map segment into buffers 316.
[0087] In some aspects, the computing device (or one or more components thereof) may associate features of the tile with map segments of the plurality of map segments; and while associating the features with the map segments, prioritize associating features of the tile that relate to the priority map segment. For example, associater 318 may associate features with map segments 308. While associating features, associater 318 may prioritize the priority map segment.
[0088] In some aspects, the features may relate to lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, and / or objects. For example, the features associated by associater 318 may relate to lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, and / or objects.
[0089] At block 808, the computing device (or one or more components thereof) may perform a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment. For example, task performer 322 may perform a priority task using a priority buffer of buffers 316. The priority buffer of buffers 316 may be the one of buffers 316 that stores the priority map segment.
[0090] In some aspects, the computing device (or one or more components thereof) may perform a plurality of tasks in parallel using the plurality of buffers; and while performing the plurality of tasks, prioritize the priority task over the plurality of tasks. For example, task performer 322 may perform tasks in parallel. While performing the tasks, task performer 322 may prioritize the priority task.
[0091] In some aspects, the computing device (or one or more components thereof) may obtain a query; determine a subset of the plurality of map segments that relate to the query; and retrieve data from a subset of the plurality of buffers to respond to the query, wherein the subset of the plurality of buffers store the subset of the plurality of map segments that relate to the query. For example, task performer 322 may obtain a query and retrieve data from a subset of buffers 316 to respond to the query. Task performer 322 may determine the subset of buffers 316 to access based on the map segments stored by the subset of buffers 316 relating to the query.
[0092] In some aspects, the computing device (or one or more components thereof) may be, or may include, a computing device of a vehicle. For example, one or more elements of system 300 may be included in a computing device of a vehicle, such as vehicle 102 of FIG. 1.
[0093] In some aspects, the computing device (or one or more components thereof) may adjust an operating parameter of the vehicle based on the priority map segment. For example, vehicle 102 may adjust an operating parameter of vehicle 102 based on the priority map segment. The operating parameter may be associated with at least one of a path for the vehicle to travel, an automatic braking parameter for operating one or more brakes of the vehicle, a lane change parameter for causing the vehicle to navigate from a first lane to a second lane, or displaying information using a user interface of the vehicle.
[0094] In some examples, as noted previously, the methods described herein (e.g., process 600 of FIG. 6, process 700, of FIG. 7, process 800 of FIG. 8, and / or other methods described herein) can be performed, in whole or in part, by a computing device or apparatus. In one example, one or more of the methods can be performed by vehicle 102 of FIG. 1, system 300 of FIG. 3, vehicle 402 of FIG. 4, or by another system or device. In another example, one or more of the methods (e.g., process 600, process 700, process 800, and / or other methods described herein) can be performed, in whole or in part, by the computing-device architecture 900 shown in FIG. 9. For instance, a computing device with the computing-device architecture 900 shown in FIG. 9 can include, or be included in, the components of the vehicle 102, system 300, and / or vehicle 402, and can implement the operations of process 600, process 700, process 800, and / or other process described herein. In some cases, the computing device or apparatus can include various components, such as one or more input devices, one or more output devices, one or more processors, one or more microprocessors, one or more microcomputers, one or more cameras, one or more sensors, and / or other component (s) that are configured to carry out the steps of processes described herein. In some examples, the computing device can include a display, a network interface configured to communicate and / or receive the data, any combination thereof, and / or other component (s) . The network interface can be configured to communicate and / or receive Internet Protocol (IP) based data or other type of data.
[0095] The components of the computing device can be implemented in circuitry. For example, the components can include and / or can be implemented using electronic circuits or other electronic hardware, which can include one or more programmable electronic circuits (e.g., microprocessors, graphics processing units (GPUs) , digital signal processors (DSPs) , central processing units (CPUs) , and / or other suitable electronic circuits) , and / or can include and / or be implemented using computer software, firmware, or any combination thereof, to perform the various operations described herein.
[0096] Process 600, process 700, process 800, and / or other process described herein are illustrated as logical flow diagrams, the operation of which represents a sequence of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and / or in parallel to implement the processes.
[0097] Additionally, process 600, process 700, process 800, and / or other process described herein can be performed under the control of one or more computer systems configured with executable instructions and can be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) executing collectively on one or more processors, by hardware, or combinations thereof. As noted above, the code can be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The computer-readable or machine-readable storage medium can be non-transitory.
[0098] FIG. 9 illustrates an example computing-device architecture 900 of an example computing device which can implement the various techniques described herein. In some examples, the computing device can include a mobile device, a wearable device, an extended reality device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device) , a personal computer, a laptop computer, a video server, a vehicle (or computing device of a vehicle) , or other device. For example, the computing-device architecture 900 may include, implement, or be included in any or all of vehicle 102 of FIG. 1, system 300 of FIG. 3, vehicle 402 of FIG. 4, and / or other devices, modules, or systems described herein. Additionally or alternatively, computing-device architecture 900 may be configured to perform process 600, process 700, process 800, and / or other process described herein.
[0099] The components of computing-device architecture 900 are shown in electrical communication with each other using connection 912, such as a bus. The example computing-device architecture 900 includes a processing unit (CPU or processor) 902 and computing device connection 912 that couples various computing device components including computing device memory 910, such as read only memory (ROM) 908 and random-access memory (RAM) 906, to processor 902.
[0100] Computing-device architecture 900 can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of processor 902. Computing-device architecture 900 can copy data from memory 910 and / or the storage device 914 to cache 904 for quick access by processor 902. In this way, the cache can provide a performance boost that avoids processor 902 delays while waiting for data. These and other modules can control or be configured to control processor 902 to perform various actions. Other computing device memory 910 may be available for use as well. Memory 910 can include multiple different types of memory with different performance characteristics. Processor 902 can include any general-purpose processor and a hardware or software service, such as service 1 916, service 2 918, and service 3 920 stored in storage device 914, configured to control processor 902 as well as a special-purpose processor where software instructions are incorporated into the processor design. Processor 902 may be a self-contained system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.
[0101] To enable user interaction with the computing-device architecture 900, input device 922 can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. Output device 924 can also be one or more of a number of output mechanisms known to those of skill in the art, such as a display, projector, television, speaker device, etc. In some instances, multimodal computing devices can enable a user to provide multiple types of input to communicate with computing-device architecture 900. Communication interface 926 can generally govern and manage the user input and computing device output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.
[0102] Storage device 914 is a non-volatile memory and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random-access memories (RAMs) 906, read only memory (ROM) 908, and hybrids thereof. Storage device 914 can include services 916, 918, and 920 for controlling processor 902. Other hardware or software modules are contemplated. Storage device 914 can be connected to the computing device connection 912. In one aspect, a hardware module that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor 902, connection 912, output device 924, and so forth, to carry out the function.
[0103] The term “substantially, ” in reference to a given parameter, property, or condition, may refer to a degree that one of ordinary skill in the art would understand that the given parameter, property, or condition is met with a small degree of variance, such as, for example, within acceptable manufacturing tolerances. By way of example, depending on the particular parameter, property, or condition that is substantially met, the parameter, property, or condition may be at least 90%met, at least 95%met, or even at least 99%met.
[0104] Aspects of the present disclosure are applicable to any suitable electronic device (such as security systems, smartphones, tablets, laptop computers, vehicles, drones, or other devices) including or coupled to one or more active depth sensing systems. While described below with respect to a device having or coupled to one light projector, aspects of the present disclosure are applicable to devices having any number of light projectors and are therefore not limited to specific devices.
[0105] The term “device” is not limited to one or a specific number of physical objects (such as one smartphone, one controller, one processing system and so on) . As used herein, a device may be any electronic device with one or more parts that may implement at least some portions of this disclosure. While the below description and examples use the term “device” to describe various aspects of this disclosure, the term “device” is not limited to a specific configuration, type, or number of objects. Additionally, the term “system” is not limited to multiple components or specific aspects. For example, a system may be implemented on one or more printed circuit boards or other substrates and may have movable or static components. While the below description and examples use the term “system” to describe various aspects of this disclosure, the term “system” is not limited to a specific configuration, type, or number of objects.
[0106] Specific details are provided in the description above to provide a thorough understanding of the aspects and examples provided herein. However, it will be understood by one of ordinary skill in the art that the aspects may be practiced without these specific details. For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks including functional blocks including devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. Additional components may be used other than those shown in the figures and / or described herein. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order not to obscure the aspects in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the aspects.
[0107] Individual aspects may be described above as a process or method which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re- arranged. A process is terminated when its operations are completed but could have additional steps not included in a figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination can correspond to a return of the function to the calling function or the main function.
[0108] Processes and methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer-readable media. Such instructions can include, for example, instructions and data which cause or otherwise configure a general-purpose computer, special purpose computer, or a processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, source code, etc.
[0109] The term “computer-readable medium” includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other mediums capable of storing, containing, or carrying instruction (s) and / or data. A computer-readable medium may include a non-transitory medium in which data can be stored and that does not include carrier waves and / or transitory electronic signals propagating wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as compact disk (CD) or digital versatile disk (DVD) , flash memory, magnetic or optical disks, USB devices provided with non-volatile memory, networked storage devices, any suitable combination thereof, among others. A computer-readable medium may have stored thereon code and / or machine-executable instructions that may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, or the like.
[0110] In some aspects the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
[0111] Devices implementing processes and methods according to these disclosures can include hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof, and can take any of a variety of form factors. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer-program product) may be stored in a computer-readable or machine-readable medium. A processor (s) may perform the necessary tasks. Typical examples of form factors include laptops, smart phones, mobile phones, tablet devices or other small form factor personal computers, personal digital assistants, rackmount devices, standalone devices, and so on. Functionality described herein also can be embodied in peripherals or add-in cards. Such functionality can also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example.
[0112] The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are example means for providing the functions described in the disclosure.
[0113] In the foregoing description, aspects of the application are described with reference to specific aspects thereof, but those skilled in the art will recognize that the application is not limited thereto. Thus, while illustrative aspects of the application have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art. Various features and aspects of the above-described application may be used individually or jointly. Further, aspects can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive. For the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate aspects, the methods may be performed in a different order than that described.
[0114] One of ordinary skill will appreciate that the less than ( “< “) and greater than ( “> “) symbols or terminology used herein can be replaced with less than or equal to ( “≤” ) and greater than or equal to ( “≥” ) symbols, respectively, without departing from the scope of this description.
[0115] Where components are described as being “configured to” perform certain operations, such configuration can be accomplished, for example, by designing electronic circuits or other hardware to perform the operation, by programming programmable electronic circuits (e.g., microprocessors, or other suitable electronic circuits) to perform the operation, or any combination thereof.
[0116] The phrase “coupled to” refers to any component that is physically connected to another component either directly or indirectly, and / or any component that is in communication with another component (e.g., connected to the other component over a wired or wireless connection, and / or other suitable communication interface) either directly or indirectly.
[0117] Claim language or other language reciting “at least one of” a set and / or “one or more” of a set indicates that one member of the set or multiple members of the set (in any combination) satisfy the claim. For example, claim language reciting “at least one of A and B” or “at least one of A or B” means A, B, or A and B. In another example, claim language reciting “at least one of A, B, and C” or “at least one of A, B, or C” means A, B, C, or A and B, or A and C, or B and C, A and B and C, or any duplicate information or data (e.g., A and A, B and B, C and C, A and A and B, and so on) , or any other ordering, duplication, or combination of A, B, and C. The language “at least one of” a set and / or “one or more” of a set does not limit the set to the items listed in the set. For example, claim language reciting “at least one of A and B” or “at least one of A or B” may mean A, B, or A and B, and may additionally include items not listed in the set of A and B. The phrases “at least one” and “one or more” are used interchangeably herein.
[0118] Claim language or other language reciting “at least one processor configured to, ” “at least one processor being configured to, ” “one or more processors configured to, ” “one or more processors being configured to, ” or the like indicates that one processor or multiple processors (in any combination) can perform the associated operation (s) . For example, claim language reciting “at least one processor configured to: X, Y, and Z” means a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each tasked with a certain subset of operations X, Y, and Z such that together the multiple processors perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, claim language reciting “at least one processor configured to: X, Y, and Z” can mean that any single processor may only perform at least a subset of operations X, Y, and Z.
[0119] Where reference is made to one or more elements performing functions (e.g., steps of a method) , one element may perform all functions, or more than one element may collectively perform the functions. When more than one element collectively performs the functions, each function need not be performed by each of those elements (e.g., different functions may be performed by different elements) and / or each function need not be performed in whole by only one element (e.g., different elements may perform different sub-functions of a function) . Similarly, where reference is made to one or more elements configured to cause another element (e.g., an apparatus) to perform functions, one element may be configured to cause the other element to perform all functions, or more than one element may collectively be configured to cause the other element to perform the functions.
[0120] Where reference is made to an entity (e.g., any entity or device described herein) performing functions or being configured to perform functions (e.g., steps of a method) , the entity may be configured to cause one or more elements (individually or collectively) to perform the functions. The one or more components of the entity may include at least one memory, at least one processor, at least one communication interface, another component configured to perform one or more (or all) of the functions, and / or any combination thereof. Where reference to the entity performing functions, the entity may be configured to cause one component to perform all functions, or to cause more than one component to collectively perform the functions. When the entity is configured to cause more than one component to collectively perform the functions, each function need not be performed by each of those components (e.g., different functions may be performed by different components) and / or each function need not be performed in whole by only one component (e.g., different components may perform different sub-functions of a function) .
[0121] The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, firmware, or combinations thereof. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.
[0122] The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices such as general-purposes computers, wireless communication device handsets, or integrated circuit devices having multiple uses including application in wireless communication device handsets and other devices. Any features described as modules or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a computer-readable data storage medium including program code including instructions that, when executed, performs one or more of the methods described above. The computer-readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may include memory or data storage media, such as random-access memory (RAM) such as synchronous dynamic random-access memory (SDRAM) , read-only memory (ROM) , non-volatile random-access memory (NVRAM) , electrically erasable programmable read-only memory (EEPROM) , flash memory, magnetic or optical data storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and / or executed by a computer, such as propagated signals or waves.
[0123] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs) , general-purpose microprocessors, an application specific integrated circuits (ASICs) , field programmable logic arrays (FPGAs) , or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure. A general-purpose processor may be a microprocessor; but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, such as, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Accordingly, the term “processor, ” as used herein may refer to any of the foregoing structure, any combination of the foregoing structure, or any other structure or apparatus suitable for implementation of the techniques described herein.
[0124] Illustrative aspects of the disclosure include:
[0125] Aspect 1. An apparatus for using map data, the apparatus comprising: at least one memory; and at least one processor coupled to the at least one memory and configured to: obtain a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles; identify a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment; load each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; and perform a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.
[0126] Aspect 2. The apparatus of aspect 1, wherein the map comprises a high-definition (HD) map.
[0127] Aspect 3. The apparatus of any one of aspects 1 or 2, wherein the at least one processor is configured to: obtain, at the computing system of the vehicle, the tile; and segment the tile into the plurality of map segments based on the road segments of the tile.
[0128] Aspect 4. The apparatus of any one of aspects 1 to 3, wherein the tile is segmented into the plurality of map segments based on the road segments of the tile at a map server, and wherein the map server is configured to provide the plurality of map segments to the computing system of the vehicle.
[0129] Aspect 5. The apparatus of any one of aspects 1 to 4, wherein, while loading each map segment of the plurality of map segments into the respective buffers, the at least one processor is configured to prioritize loading the priority map segment into the priority buffer.
[0130] Aspect 6. The apparatus of any one of aspects 1 to 5, wherein the at least one processor is configured to: associate features of the tile with map segments of the plurality of map segments; and while associating the features with the map segments, prioritize associating features of the tile that relate to the priority map segment.
[0131] Aspect 7. The apparatus of aspect 6, wherein the features relate to at least one of: lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, or objects.
[0132] Aspect 8. The apparatus of any one of aspects 1 to 7, wherein the at least one processor is configured to: perform a plurality of tasks in parallel using the plurality of buffers; and while performing the plurality of tasks, prioritize the priority task over the plurality of tasks.
[0133] Aspect 9. The apparatus of any one of aspects 1 to 8, wherein the at least one processor is configured to: obtain a query; determine a subset of the plurality of map segments that relate to the query; and retrieve data from a subset of the plurality of buffers to respond to the query, wherein the subset of the plurality of buffers store the subset of the plurality of map segments that relate to the query.
[0134] Aspect 10. The apparatus of any one of aspects 1 to 9, wherein the apparatus is a computing device of a vehicle.
[0135] Aspect 11. The apparatus of aspect 10, wherein the at least one processor is configured to adjust an operating parameter of the vehicle based on the priority map segment.
[0136] Aspect 12. The apparatus of aspect 11, wherein the operating parameter is associated with at least one of a path for the vehicle to travel, an automatic braking parameter for operating one or more brakes of the vehicle, a lane change parameter for causing the vehicle to navigate from a first lane to a second lane, or displaying information using a user interface of the vehicle.
[0137] Aspect 13. A method for using map data, the method comprising: obtaining a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles; identifying a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment; loading each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; and performing a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.
[0138] Aspect 14. The method of aspect 13, wherein the map comprises a high-definition (HD) map.
[0139] Aspect 15. The method of any one of aspects 13 or 14, further comprising: obtaining, at the computing system of the vehicle, the tile; and segmenting the tile into the plurality of map segments based on the road segments of the tile.
[0140] Aspect 16. The method of any one of aspects 13 to 15, wherein the tile is segmented into the plurality of map segments based on the road segments of the tile at a map server, and wherein the map server is configured to provide the plurality of map segments to the computing system of the vehicle.
[0141] Aspect 17. The method of any one of aspects 13 to 16, further comprising, while loading each map segment of the plurality of map segments into the respective buffers, prioritizing loading the priority map segment into the priority buffer.
[0142] Aspect 18. The method of any one of aspects 13 to 17, further comprising: associating features of the tile with map segments of the plurality of map segments; and while associating the features with the map segments, prioritizing associating features of the tile that relate to the priority map segment.
[0143] Aspect 19. The method of aspect 18, wherein the features relate to at least one of: lane markings, lane boundaries, lane edges, classifiers of roads, traffic signs, traffic lights, buildings, trees, poles, or objects.
[0144] Aspect 20. The method of any one of aspects 13 to 19, further comprising: performing a plurality of tasks in parallel using the plurality of buffers; and while performing the plurality of tasks, prioritizing the priority task over the plurality of tasks.
[0145] Aspect 21. The method of any one of aspects 13 to 20, further comprising: obtaining a query; determining a subset of the plurality of map segments that relate to the query; and retrieving data from a subset of the plurality of buffers to respond to the query, wherein the subset of the plurality of buffers store the subset of the plurality of map segments that relate to the query.
[0146] Aspect 22. The method of any one of aspects 13 to 21, further comprising adjusting an operating parameter of the vehicle based on the priority map segment.
[0147] Aspect 23. The method of aspect 22, wherein the operating parameter is associated with at least one of a path for the vehicle to travel, an automatic braking parameter for operating one or more brakes of the vehicle, a lane change parameter for causing the vehicle to navigate from a first lane to a second lane, or displaying information using a user interface of the vehicle.
[0148] Aspect 24. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed by at least one processor, cause the at least one processor to perform operations according to any of aspects 13 to 23.
[0149] Aspect 25. An apparatus for providing virtual content for display, the apparatus comprising one or more means for perform operations according to any of aspects 13 to 23.
Claims
1.An apparatus for using map data, the apparatus comprising:at least one memory; andat least one processor coupled to the at least one memory and configured to:obtain a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles;identify a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment;load each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; andperform a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.2.The apparatus of claim 1, wherein the map comprises a high-definition (HD) map.3.The apparatus of claim 1, wherein the at least one processor is configured to:obtain, at the computing system of the vehicle, the tile; andsegment the tile into the plurality of map segments based on the road segments of the tile.4.The apparatus of claim 1, wherein the tile is segmented into the plurality of map segments based on the road segments of the tile at a map server, and wherein the map server is configured to provide the plurality of map segments to the computing system of the vehicle.5.The apparatus of claim 1, wherein, while loading each map segment of the plurality of map segments into the respective buffers, the at least one processor is configured to prioritize loading the priority map segment into the priority buffer.6.The apparatus of claim 1, wherein the at least one processor is configured to:associate features of the tile with map segments of the plurality of map segments; andwhile associating the features with the map segments, prioritize associating features of the tile that relate to the priority map segment.7.The apparatus of claim 6, wherein the features relate to at least one of:lane markings,lane boundaries,lane edges,classifiers of roads,traffic signs,traffic lights,buildings,trees,poles, orobjects.8.The apparatus of claim 1, wherein the at least one processor is configured to:perform a plurality of tasks in parallel using the plurality of buffers; andwhile performing the plurality of tasks, prioritize the priority task over the plurality of tasks.9.The apparatus of claim 1, wherein the at least one processor is configured to:obtain a query;determine a subset of the plurality of map segments that relate to the query; andretrieve data from a subset of the plurality of buffers to respond to the query, wherein the subset of the plurality of buffers store the subset of the plurality of map segments that relate to the query.10.The apparatus of claim 1, wherein the apparatus is a computing device of a vehicle.11.The apparatus of claim 10, wherein the at least one processor is configured to adjust an operating parameter of the vehicle based on the priority map segment.12.The apparatus of claim 11, wherein the operating parameter is associated with at least one of a path for the vehicle to travel, an automatic braking parameter for operating one or more brakes of the vehicle, a lane change parameter for causing the vehicle to navigate from a first lane to a second lane, or displaying information using a user interface of the vehicle.13.A method for using map data, the method comprising:obtaining a plurality of map segments of a tile of a map of an environment, the plurality of map segments being defined by road segments of the tile, the map comprising a plurality of tiles;identifying a priority map segment from among the plurality of map segments based on a location of a vehicle in the environment;loading each map segment of the plurality of map segments into a respective buffer of a plurality of buffers of a computing system of a vehicle; andperforming a priority task using a priority buffer of the plurality of buffers, the priority buffer storing the priority map segment.14.The method of claim 13, wherein the map comprises a high-definition (HD) map.15.The method of claim 13, further comprising:obtaining, at the computing system of the vehicle, the tile; andsegmenting the tile into the plurality of map segments based on the road segments of the tile.16.The method of claim 13, wherein the tile is segmented into the plurality of map segments based on the road segments of the tile at a map server, and wherein the map server is configured to provide the plurality of map segments to the computing system of the vehicle.17.The method of claim 13, further comprising, while loading each map segment of the plurality of map segments into the respective buffers, prioritizing loading the priority map segment into the priority buffer.18.The method of claim 13, further comprising:associating features of the tile with map segments of the plurality of map segments; andwhile associating the features with the map segments, prioritizing associating features of the tile that relate to the priority map segment.19.The method of claim 18, wherein the features relate to at least one of:lane markings,lane boundaries,lane edges,classifiers of roads,traffic signs,traffic lights,buildings,trees,poles, orobjects.20.The method of claim 13, further comprising:performing a plurality of tasks in parallel using the plurality of buffers; andwhile performing the plurality of tasks, prioritizing the priority task over the plurality of tasks.
Citation Information
Patent Citations
A method and apparatus for accessing map data
CN111209504A
Map task generation method and device based on road data and readable storage medium
CN116991962A
Method and System for Improving Spatial Accuracy of Map Data
US20180066946A1
Update method of map data and map information system
US20220222060A1