As I see it, self-driving is a cursed[0][1] problem. If you could choose a different problem space, or to ignore some complications, self-driving would merely be very hard. But the requirement to handle ANY external behavior with ANY external conditions and navigate to ANY destination, while also maintaining safety is impossible* satisfy.
One cursed corner of the problem space is ML itself: ML is amazing in that it enables emergent behavior [3], but ML is terrible in that it gives rise to emergent behavior. The traditional engineering mindset wants a map of inputs to outputs, but you don't get to choose your inputs in the SDC world, and you can't specify all of your outputs.
Another cursed corner is the Always/Never[2] problem. You want safety features like Automated Emergency Braking to Always kick in when there is a problem, and you Never want them to kick in when there isn't a problem.
I really don't know how any of this gets fixed. I do think that sensor fusion and advances in AI can reduce the size of some of the cursed area of the problem, but the problem is also meta-cursed in the definition of Self-Driving: the solution to normal cursed problems is to reduce or change the solution scope, but if you reduce or change the Self-Driving solution scope, then "it's not real self driving".
0. https://twvideo01.ubm-us.net/o1/vault/gdc2019/presentations/...
1. https://en.wikipedia.org/wiki/Curse_of_dimensionality#Machin...
2. https://www.newyorker.com/news/news-desk/always-never
---
3. edit: [pdf] https://core.ac.uk/download/pdf/81580604.pdf Especially see section 4.3