Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Tesla Autopilot maps

This site may earn commission on affiliate links.
So here’s what I found after comparing debug info provided by verygreen with the tiles data.

DEBUGgpsLat and DEBUGgpsLon are displayed with barely three digits after the decimal point. That’s not enough to determine the road, because it’s approximating position within like 100m range. Much more precise is geohash from DEBUGCurrentGeohash, but this also can be tricky (there is one example, where whole road is in the middle of the geohash bounds, but the relevant road is barely touching the corner).

The most interesting parameter is DEBUGtileNearestSpline. This simply shows ID of the spline. The problem is, that I decided to display this in HEX format in the viewer, while it is simply shown as decimal in the debug info. When searching for it on the map it looks consistent with the position defined by the geohash and it looks like the metadata is actually taken from this spline.

Below the spline ID entry is DEBUGtileSplineT parameter. This looks to be a value in range 0…1 showing the position of the car along the spline. This directly refers to the Begin/End ranges defining zones along the spline. Knowing the spline and this parameter it is possible to closely determine the position of the car on the map.

Trying to find which tile spline properties correlate to which debug parameters I found this:

F21 (Local road) correlates with DEBUGautoParkEnabled/autoParkEnabled.

F22 (aka "Not Divided") looks to match DEBUGautosteerRestricted/currentBranchIsAutosteerRestricted.

DEBUGpedalMisapplicationMitigationEnabled/pedalMisapplicationMitigationEnabled is active only in places where tile spline was not matched, but it happened on a parking lot, surrounded by splines with F23 (parking) active, so I’m assuming that F23 is actually related to pedalMisapplicationMitigation.

DEBUGradarBrakingEnabled/radarBrakingEnabled looks to be correlated with F25. Previously I incorrectly linked F18 with it. It is important to note, that F25 is active only in tiles from the "live" branch, so while searching for this property "live" branch must be used instead of "dev". In all tiles I checked from the "dev" branch F25 is always equal to 0, I don’t know why.

DEBUGcontrolledAccess, currentBranchIsControlledAccess, DEBUGonHighway and sideCollisionAssistEnabled are always the same and correlate with F24 (Highway) and F26 (Highway). F24 and F26 also always have the same value in all tiles I checked, so I have no way to differentiate them.

DEBUGramp/currentBranchIsRamp are of course active when Ramp Type in the tile viewer shows either On Ramp or Off Ramp.

DEBUGspeedLimit/speedLimit is consistent with Speed Limit in tiles (when converted to miles per hour), although debug info sometimes show non empty speed limit when it is missing in tiles, which proves that there is another source for speed limits.

DEBUGtileTrust correlates with F7. It is shown as a number in the debug info, but it only accepts values 1 or 0 (viewer shows F7 as Yes/No). I saw the name Trust in some photos of debug screens and associated it with F13 (that I named Trust in the viewer). Turns out It was a mistake, and F7 should be called Trust. F13 however does not match to anything in the debug info.

DEBUGtileBlacklistAvailable is active when the spline has non-empty F5 list (that I previously called Line Hints). When this flag is active, field DEBUGblacklistSource also shows Tile instead of None. At the end of the debug list there are fields like rejectLeftFreeSpace, rejestRightLane, etc. It would make perfect sense to me if those parameters were taken from Blacklist stored in F5 list, but all reject properties are always false in the debug info, even when the car position falls into an F5 zone, so it is still not clear.

DEBUGnextBranchDistanceInMeters and DEBUGnextBranchOffRampSide are most likely taken from the list in tiles that I named Next Ramps. Every entry of this list contains the distance from the end of the current spline to the beginning of the ramp spline, and a flag. Looks like the flag values are: 1:MPP, 2:Left, 3:Right. When named like that the first list entry corresponds to DEBUGnextBranchOffRampSide. I tried to calculate the distance to the branch from the current position by adding the remaining distance of the spline to the distance reported in the Next Ramps list [(1 – T) * SplineLength + DistanceToNextRamp] and it fits to the value from DEBUGnextBranchDistanceInMeters, not always perfectly, but close enough. MPP side description is used when the next spline is straight ahead, but I have no idea what it means.

F10&F11 are interesting in this case as well as they show two widths that add up to 4.4m. 4.4m is what is shown as the spline width in the VG snapshot data. Why two width on a single lane off ramp?

I previously was under impression that F10 is a distance from the center of the spline to the left edge of the road, and F11 is a distance from the center of the spline to the right edge of the road (or the other way around, it’s hard to tell from google satellite photos). So the fact that the sum of those fields end up being the width of the road would make perfect sense. I compared the sum of F10 and F11 with DEBUGtileSplineWidth and it matches perfectly.
One thing to note is that Width does not have to be a width of the road. Its name suggests a width of the spline, so it could define for example an area of effect for the spline (a maximum allowed distance from the spline, to still be affected by the spline). There’s a lot of examples in the tiles where it is significantly larger than the width of the road.

acceptBottsDots seems like something that would be related to maps, but I didn’t found any correlation with tiles.

I don’t know what F18 means. It is changing in the splines for which the debug info were gathered, but does not match to anything in the info.
 
Last edited:
I downloaded tile u15zf but am unable to open it using Damian's viewer. It just gives an error saying structure does not contain field #3.

Thanks for pointing this out.

If disclosing the location of the tiles is not a problem please notify me about this kind of errors and warnings (providing the tile name), because this can mean that there is something new, or at least something that I didn't seen yet in those tiles.
 
Thanks for pointing this out.

If disclosing the location of the tiles is not a problem please notify me about this kind of errors and warnings (providing the tile name), because this can mean that there is something new, or at least something that I didn't seen yet in those tiles.
I could recreate this error as well. via tile u15zf
https://daws.tesla.services/iiNG2d6xFR1USl/dev/u15zf.tile
J3fNujM.jpg
 
DEBUGtileBlacklistAvailable is active when the spline has non-empty F5 list (that I previously called Line Hints). When this flag is active, field DEBUGblacklistSource also shows Tile instead of None. At the end of the debug list there are fields like rejectLeftFreeSpace, rejestRightLane, etc. It would make perfect sense to me if those parameters were taken from Blacklist stored in F5 list, but all reject properties are always false in the debug info, even when the car position falls into an F5 zone, so it is still not clear.
There's a "Blackllist" tile source too, I wonder if that's what it is referencing.
 
  • Like
Reactions: daud
There's a "Blackllist" tile source too, I wonder if that's what it is referencing.

I downloaded the tile with Tesla HQ from "blacklist" branch to check and at this point current version from blacklist branch seems to be identical to current version from dev branch. Maybe at some point they were testing this feature and created a new source for it?

However, while checking this I realized that the California tiles from dev branch have been significantly updated recently. Previously their version string was "na20170502: 2017-06-30 10:05", now it is "ca20171206: 2017-12-06 12:47". At first glance it looks like there are more roads mapped on them, and in many places things looks much cleaner. Now F7 (that from now on I'm calling "Trust") take values 0, 1 and 2. Radar zones seem to be reset (there are fewer of them all with low P values).

change.gif
 
AFAIK the "pedal misapplication" notification appears when both pedals are pressed. I cannot imagine why and under which conditions they want to suppress that notification to the driver.
I think many were guessing that it meant the user could not push the accelerator pedal to the floor ... for example, they were attempting to stop in front of something (building, garage door, etc) when something happened and they panicked. Instead of pressing (stomping) hard on the brake pedal they accidentally pressed hard on the accelerator and ran into the building. Then called Tesla (or the press) to say the car has a bug/error/flaw and accelerated by *itself*. Tesla logs, however, show that the driver did it.
 
  • Like
Reactions: hiroshiy
I think many were guessing that it meant the user could not push the accelerator pedal to the floor ... for example, they were attempting to stop in front of something (building, garage door, etc) when something happened and they panicked. Instead of pressing (stomping) hard on the brake pedal they accidentally pressed hard on the accelerator and ran into the building. Then called Tesla (or the press) to say the car has a bug/error/flaw and accelerated by *itself*. Tesla logs, however, show that the driver did it.

Right. Pedal misapplication mitigation also prevents you from flooring it when the car detects an obstacle in front or the steering angle turned too far. This is meant to prevent people from launching their car into a building from the parking lot.

Originally, this "feature" caused some people to complain that they suddenly lost acceleration when making aggressive merging maneuvers onto highways. It looks like since then, Tesla has been using ADAS map tiles to make sure that the feature is only activated on certain kinds of roads.
 
@verygreen and @DamianXVI thank you for the great work so far.
I checked the tiles in my area and can confirm that F23 has something to do with parking. Most of the splines in my area marked yes for F23 are either roads accessing parking garages or are roads on a parking lot.

In one case, 2 parallel splines with a F23 marking are also (nearly) completely underground and therefor impossible to be captured by GPS data. It's the access road to the parking garage under the local football (soccer) stadium.

I'm still at work, but let me know if you'd like a picture of the splines in question and I'll post one later at home.
 
  • Helpful
Reactions: KyleDay
Below is a new version of viewer tool. Here are some more notable changes in random order:
  • Spline ID format changed from hexadecimal to decimal.
  • Added "Go To" tool for finding coordinates and geohash boundaries.
  • Widened chromatic scale for scale highlights.
  • Added basic map legend (can be hidden).
  • Renamed properties based on debug information (most notably: changed previous "Trust" to "F13 (Confidence)", previous "F7" to new "Trust", changed "Not Divided" to "Autosteer Restricted"), added Width property (F10 + F11).
  • Marking point on spline when checking spline zone properties.
  • Resolved problem with missing structure field error during tile loading.
  • Unified length display.
  • And other...
 

Attachments

  • AdasMapViewer1.1.zip
    427.1 KB · Views: 179
Below is a new version of viewer tool. Here are some more notable changes in random order:
  • Spline ID format changed from hexadecimal to decimal.
  • Added "Go To" tool for finding coordinates and geohash boundaries.
  • Widened chromatic scale for scale highlights.
  • Added basic map legend (can be hidden).
  • Renamed properties based on debug information (most notably: changed previous "Trust" to "F13 (Confidence)", previous "F7" to new "Trust", changed "Not Divided" to "Autosteer Restricted"), added Width property (F10 + F11).
  • Marking point on spline when checking spline zone properties.
  • Resolved problem with missing structure field error during tile loading.
  • Unified length display.
  • And other...
Awesome update. Just got around to fiddling with all of this this evening. I think I have noticed, since I am the only Tesla driving in some places, that they are averaging data out over 100’s of samples. Local roads with lanes that I use autopilot on going to work everyday may have confidences of 50+%. The road I go to the grocery store on with autopilot only once a week however drops down to 12-13%. Local roads I drive on every day with no lanes and people parking in random places along the street (this wildly varies my placement on the road) have single digit confidences. Laned roads with more than just me using autopilot on them have confidences as high as 95%.

Pretty much every road, even the back roads in the country, I’ve driven on only a few times are represented. Roads I’ve only driven on once or twice, and more interestingly roads that I only drove on in my previous AP 1 Model S (swapped it for my AP2 MX in August) are NOT shown. They either only recently started collecting this data or it is not being collected by AP1 cars...

Another seemingly odd note. There isn’t any info showing how many lanes there are, even in major thoroughfares like interstates. At least in my area south of Houston. I guess the cars can collect that granularity if data or they aren’t planning on using this info for anything that requires that level of accuracy...

Anyway, great work and kudos to everyone involved deciphing all this stuff. I find it hugely fascinating but seldom have any time to explore the inner workings myself.:)
 
Below is a new version of viewer tool. Here are some more notable changes in random order:
  • Spline ID format changed from hexadecimal to decimal. / Added "Go To" tool for finding coordinates and geohash boundaries. / Widened chromatic scale for scale highlights. / Added basic map legend (can be hidden).
  • Renamed properties based on debug information (most notably: changed previous "Trust" to "F13 (Confidence)", previous "F7" to new "Trust", changed "Not Divided" to "Autosteer Restricted"), added Width property (F10 + F11).
  • Marking point on spline when checking spline zone properties. / Resolved problem with missing structure field error during tile loading. / Unified length display. / And other...
Great job! I think several great things in your updates but I think you forgot one of the coolest and useful features. Background maps!!
W5Em1Ht.jpg
 
Thanks Damian for this great work.
So I downloaded many maps for my country (The Netherlands), some observations:

However, while checking this I realized that the California tiles from dev branch have been significantly updated recently. Previously their version string was "na20170502: 2017-06-30 10:05", now it is "ca20171206: 2017-12-06 12:47".
- all tiles in the live branche that I have downloaded are version eu20170306: 2017-03-10 07:10, all dev tiles are: eu20170306: 2017-06-30 10:06. So it seems we are 3 to 6 months behind the US/CA maps.
Not many differences between the live and dev maps that I notice, just that in the dev maps there are more sub-tiles and more splines.
Ah, and the speed limit numbers have been corrected - in the March version it is for example (129.6 km/h) (36 m/s), in the new ones it is corrected to (130km/h) (36.1111m/s)

- I checked the tiles and splines of a 100km/hr road where a fellow Tesla driver complained that at two locations his car would suddenly slow down to 70km/hr or even 50km/hr when driving on Autopilot. And indeed at precisely those two locations there are splines that have an incorrect 'Speed Limit' setting. So autopilot does indeed use this data to adjust the speed. So I wonder how they got this incorrect information. The 'Unknown Speed1/2/3' fields (samples collected from driving cars?) show the cars still driving around the allowed 100km/hr limit. The other question of course is: how can we get these mistakes corrected ? o_O

Pretty much every road, even the back roads in the country, I’ve driven on only a few times are represented. Roads I’ve only driven on once or twice, and more interestingly roads that I only drove on in my previous AP 1 Model S (swapped it for my AP2 MX in August) are NOT shown. They either only recently started collecting this data or it is not being collected by AP1 cars...

Not sure about that. Here is an image of a road just across my workplace. It's an industrial area with a 50km/hr speed limit.
You can see the spline with the strange twist. Thanks to Damian's update you can now also see what I already knew: that path is going over a parkinglot of a company, an entry/exit for loading and unloading trucks. You would normally not drive like this ofcourse - unless you have to divert because the road is blocked - e.g. by parked trucks. And no way that this has been plotted because hunderds of Tesla's have done this, this road is only occasionally blocked. So there are some splines in the maps from data gathered from just of a single Tesla that has driven that particular route - it has a Trust factor 0 and confidence of 0% though.
And we have two AP1 cars and one AP2 car but I doubt if that last car takes this road on his daily commute
hfd.png
 
Last edited:
However, while checking this I realized that the California tiles from dev branch have been significantly updated recently. Previously their version string was "na20170502: 2017-06-30 10:05", now it is "ca20171206: 2017-12-06 12:47". At first glance it looks like there are more roads mapped on them, and in many places things looks much cleaner. Now F7 (that from now on I'm calling "Trust") take values 0, 1 and 2. Radar zones seem to be reset (there are fewer of them all with low P values).

Have you also noticed that the "Radar Breaking Enabled" flag in splines of California tiles is now always false?