Hacker News new | ask | show | jobs
by tmpnam1234567 3124 days ago
Cruise Automation's software is a sloppy collection of special cases, coded by hand. We write ad-hoc rules to handle each situation we observe.

We don't really develop any neural networks ourselves. We use what we can get off GitHub: freely available research and school projects that we paste together, often without understanding them.

We use ROS (http://www.ros.org). ROS is not reliable for a timing-critical automotive system. That's why our cars drive so slowly/cautiously and stop so abruptly/frequently. It's because we're always on the verge of reacting late and hitting something.

Our technology is not "real" in the way that Waymo's technology is real. We build demos and promote them in the media. That's the truth.

Am I proud of this? No. But GM is paying for my house in San Francisco, so...

4 comments

You claim "I know a little about Waymo. They seem ok."

Then go on to explain:

"Waymo: Code written by professionals. A system using models trained on vast amounts of data. Written slowly, meticulously, exhaustively, heavily reviewed, and intended to be reliable."

Quality shitpost.

What's the status of this ROS 2 real-time proposal http://design.ros2.org/articles/realtime_proposal.html

What sort of structure would make more sense than the ad-hoc rules?

Do you have comprehensive profiling for the latency or logging so you can detect when there is a lag and then patch ROS or the TCP stack or whatever is causing it?

I can see how reliability is critical, but whether it is so important to be actually real-time is less obvious. If you can get latency variability down to within about 1 ms, is that not adequate to greatly exceed human capability?

I guess when it comes down to it there needs to be some certainty that there cant be a big hiccup that creates a big latency spike. So whatever underlying Linux or whatever needs to be real-time in that sense. And there needs to be a real-time backup system that cuts in if the other system takes too long to react (hits a hiccup which it is not supposed to be able to).

I mean, if your idea is to throw everything out and start over with a real-time OS and some bespoke NNs, is it quite certain that any team would actually be able to replicate the task integration and actual functionality of the system you have with that approach?

Assuming this isn't a shitpost, do you have any insight on the realness of other companies technologies? eg uber, drive.ai, tesla, etc or do you feel like your company is fairly uniquely shitty?
It's not a shitpost. I've been suffering in Cruise's trashy codebase for years now.

I know a little about Waymo. They seem ok. Everyone else, I have no idea.

when cruise was acquired by gm it had 40 employees, "years", they must have had even less then that at that point. Seems pretty shitposty to me.
I am one of those early employees.

When GM bought us we were given three Milestones to reach. The first Milestone was supposed to be delivered this time last year. We failed to deliver. We didn't have the basis for a real self-driving car. Just a demo (enough to make GM buy us).

So the Milestones were divided up. A year after we should have delivered that first Milestone we have hand-coded enough special cases that GM believes we're about half way through that first Milestone. We're not.

I take GM's money but I know we're lying to them. As an engineer I'm embarrassed by the system we've built.

What else do you want to know? Ask me.

This is pretty fascinating. I've been mulling a change in careers bc I believe over the next 20 years this will become a massive industry. Do you see GM Cruise hitting their 2019 goals? How close are they to producing ~1k - 10k cars with this tech in multiple cities? I find the 2019 targets incredibly aggressive. 5-10 year timelines seem more practical. Also whats the alternative to ROS, why isn't it good for time critical operations?
See the ROS2 real-time proposal link above for a discussion of ROS's shortcomings. ROS is ok for school projects and loose systems but you can't use it to pilot a passenger aircraft or car.
I'll admit I was pretty surprised at the speed that Cruise seemed to come out of nowhere and start doing pretty impressive demos. I guess it shouldn't be a surprise that corners were cut somewhere.

Can you give an example of the sort of special cases you're talking about so we can get a sense for what it's like?

Imagine predicting pedestrian behavior with if/else and numeric thresholds (distance to curb less than 1.25 meters?) instead of a principled model trained on data.

Waymo uses sophisticated predictive models trained on vast amounts of data. Cruise slaps together piles of guesses and (frankly) bullshit.

Cruise cars are driving around SF right now. That seems well beyond a "demo."
There is always an expert safety driver ready to take over.

You can operate an unreliable system (randomly reacting late 0.1% of the time because of a hiccup in C++'s standard library memory allocator, say, or encountering an unhandled scenario 0.1% of the time) as long as there's a guy to take over immediately.

But you can't ship that in the real world.

How is Waymos code different?
Waymo: Code written by professionals. A system using models trained on vast amounts of data. Written slowly, meticulously, exhaustively, heavily reviewed, and intended to be reliable.

Cruise: Amateur hour, written FAST. Better yet, let's just use this code we found on the net! Can we make it look like it works most of the time?

I see, I don’t see anything wrong with using code from the internet but maybe it’s a situation where the waymo ppl have had a longer time and more resources to get it right. They are hiring many more people at cruise so hopefully it gets better over time.

The one thing that does bother me is waymos use of captchas by users to annotate data. That’s concerning bc waymo has a data set no one else does and makes it difficult for others to compete from the get-go. Not good for consumer choice or competition. Fuck google I hope you guys do well.