I should add a disclaimer: I'm waaaaay out of date. The last time I worked on this stuff was back in 2005 during the DARPA Grand Challenge. And while I'm fairly confident that the basics are still the same (the fact that we're still discussing monocular vs. stereo vs. LIDAR is testament to that...), I'm going to defer to someone more up-to-date to provide more recent research/documentation.
These vision systems do OK on things that look like typical road obstacles - cars and people. Other stuff, not so much. Only Urmson from Google talks about that much. The videos from the vision systems don't seem to be doing much with road edge clutter. They're not marking every post, fireplug, and low-hanging branch. Train a deep learning system on cars, trucks, pedestrians, and bicycles, and your system sees only cars, trucks, pedestrians, and bicycles.
These vision systems do a lot less than many people think they do. Watch the videos.
[1] https://www.youtube.com/watch?v=GZa9SlMHhQc [2] https://www.youtube.com/watch?v=2NGnvGS0AtQ [3] https://www.youtube.com/watch?v=Uj-rK8V-rik
As it turned out, our mechanical engineering was great. What got us was software: we failed to free memory for passed obstacles, ran into memory exhaustion issues as a result and crashed out at mile 9. When we fixed the leak and reran the course, the truck finished in just over 7 hours.
It was an object lesson that garbage collection won't save you from memory-related issues. In retrospect, it was the also first time I ever encountered a million dollar bug. D'oh.