Automated upload from Tesla cameras

Hello,

I think this is my first post here. Most of my uploads have been using GoPro Max, recording timewarp 10x, and using Dean Zwikel’s UL2GSV software to extract frames and properly set GPS position. There is a 0.7 second offset from GoPro’s GPS to the actual frame, which if the .360 is uploaded straight to Mapillary causes offset error that I don’t like.

Anyway, life got busy, haven’t done much dedicated imagery driving recently. I’ve had a 2024 Tesla Model Y for about 2 years, and recently an update to the car now saves recent imagery for 24 hours (as opposed to 1 hour). That inspired me to see if I can use it’s cameras to upload to Mapillary.

I’ve been all in on this for the past 2 weeks or so. I want to present what I’m doing to the community, and see if there is any input that I should consider before going to far, since this is uploading lots of data.

I’m a bit un happy with with resolution, although compared to GoPro Max, I can read road signs at a further distance generally from the front camera. I’ve settled on using Front camera, Side pillar cameras (Face about 10 & 2 o’clock), and repeater cameras (face about 7 & 5 o’clock). I omitted the rear camera.

I’m using a raspberry PI zero 2 w running TeslaUSB in the car, with a GPS antenna on the GPIO pins.

At home, I have a Raspberry Pi 5 that the TeslaUSB sends videos to, then it runs a bunch of Python scripts to extract image frames, and apply GPS offset (The front camera requires a little bit different offset fromt the pillar and repeater cameras for some reason). It also maintains a database of where I’ve been. It will upload images twice for the same road, then won’t upload again for 60 days. Travelling the opposite direction is counted as a ‘different road’. It also excludes night time and footage taken while raining.

My Github Repository is here: teslamap. The Readme hasn’t been updated to reflect some of the most recent changes.

Full disclosure, All code has been created with Claude Opus 4.8. I can half read python but I sure can’t write it.

Open to any feedback from the community about this!

Edit: some links
Right Pillar
Left Pillar
Right Repeater
Left Repeater
Front

Several GoPro Max coverages of the same place, here is one of them.

1 Like

KartaView has a device called KartaLink already, might be good to take inspiration from that. Karta Link – KartaLink

Just a thought on omitting the rear camera.

I recently started using a very cheap rear facing dashcam to see the “other way - reverse side” of speed limit signs. (To eventually enter into OSM etc) Kind of important if one isn’t covering the route in the other direction as well. (which is very common for me) The sign recognition doesn’t always work, but given the front facing camera does, it is easy to eyeball the rear camera at the same location and figure it out.

I upload 10-20GBytes per day over a cellular network. Often at some distance in remote-ish areas, enough that the modem sometimes overheats at max o/p power.

I realise that the repeater cameras will probably cover these if the rate is high enough.

Like I said, just a thought, Cheers

Very cool, nice work @pmfox97 . One thing is that I noticed the videos (for example the front one) is quite heavily compressed with a lot of macroblocks visible. Is the original video like this as well? If you have control over it, it would be great to reduce the compression level so that the imagery is higher quality.

I also use Dean Zwickel’s software, but I subsequently developed a post-processing workflow for GPX tracks. This workflow involves importing the respective GPX track into an Excel worksheet, where I then edit and supplement it using Excel. I originally developed my workflow for an Insta360 X3 and later adapted it for the Osmo 360. I spontaneously wanted to buy a GoPro Max 2 myself, but the retailer didn’t have it in stock. Since it was a spur-of-the-moment decision, I didn’t want to place an order. My Excel workflow could be applied equally well to GoPro Max GPX tracks; compensating for any time lag would be very easy.

Ref: No more GPS stress thanks to navigation using video frames