Uber driver here. We don't have the precise location or picture of the passenger. The only information given to the driver is the location of the pickup request (the pin on the map, not your actual physical location) and your first name. That's it. Our job is to go to the pin. Even if you turn on location sharing, which only about 5% of passengers do, it's wildly inaccurate because most people wait inside for their ride and so it can show it blocks away. Plus even if you ARE blocks away, we can't start the ride until we're close to the pin (requested pickup point), so your location doesn't matter. Our job is to go to the pin, not your location. Put the pin in the right place and you'll get a driver at the right place. Don't go just based on address, actually look at the map and pin location, and drag the pin to exactly where you want to be picked up, while you're requesting the ride. If you only give it your address and let it drop the pin wherever it decides, sometimes it'll be on the wrong side of the street/intersection, or sometimes it'll be at the wrong entrance to the building.
Edit: and be as specific as possible. I HATE pickups that are like "12th and Market." It puts the pin in the middle of the intersection. That gives me a 25% chance of being on the correct corner. Actually move the pin to the corner you'll be standing on. Better yet, since intersections are an extremely dangerous location to stop, walk half a block or look for an area nearby that's easier to stop and pull over, and put the pin there. I end up cancelling at least half of intersection pickups as "dangerous pickup location," which just delays your pickup because then it reassigns you to another driver who may also cancel for that reason.