Waymo vá lỗi lái vào vùng ngập. Rồi xe lái vào vùng ngập.
Ngày 21 tháng 5, một chiếc Waymo robotaxi không có người ngồi trong xe lao vào một con đường ngập lũ ở Atlanta. Nó mắc kẹt ở đó khoảng một tiếng.
Một tuần trước đó, Waymo vừa thu hồi phần mềm - chính vì cái lỗi này.
Câu chuyện trong một câu
Waymo tung bản vá tránh ngập dựa vào cảnh báo thời tiết của Cơ quan Thời tiết Quốc gia Mỹ làm tín hiệu đầu vào - và khi cơn bão Atlanta đổ trước khi NWS kịp phát cảnh báo, xe cứ thế đi vào.
--> // making it invisible to querySelectorAll. // // `data-cfasync="false"` keeps this rescue script executable even when // Rocket Loader is active. It rescues module scripts via two strategies: // 1. Query the DOM for type$="-module" + src (covers case A) // 2. Regex-parse the raw HTML for commented-out script tags (covers case B) // Dynamically-created scripts bypass Rocket Loader entirely. (function () { if (window.__markdyRescue) return; window.__markdyRescue = true; var rescued = false; function rescueModuleScripts() { if (rescued) return; rescued = true; var srcs = []; // Strategy 1: Rocket Loader kept the tag in DOM but changed the type. // type="module" → type="{uuid}-module" (still has src attribute) document.querySelectorAll('script[type$="-module"][src]').forEach(function (s) { srcs.push(s.src); }); // Strategy 2: Rocket Loader COMMENTED OUT the script tag entirely: // // These are invisible to querySelectorAll, so we parse the raw HTML. // We handle both attribute orderings (type-first or src-first). var html = document.documentElement.innerHTML; var reSrcFirst = //g; var reTypeFirst = //g; var m; while ((m = reSrcFirst.exec(html)) !== null) { srcs.push(m[1]); } while ((m = reTypeFirst.exec(html)) !== null) { srcs.push(m[1]); } // Re-inject each found src as a real module script. // Deduplicate first, then inject. Dynamically-created scripts bypass // Rocket Loader entirely. Modules with the same URL are only executed // once by the browser (cached), so re-injecting already-running scripts // is safe. var seen = {}; srcs.forEach(function (src) { if (seen[src]) return; seen[src] = true; var fix = document.createElement('script'); fix.type = 'module'; fix.src = src; fix.setAttribute('data-cfasync', 'false'); document.head.appendChild(fix); }); } // Rescue when user clicks the placeholder (fallback if autoplay failed). document.addEventListener('click', function (e) { var t = e.target; if (t && typeof t.closest === 'function' && t.closest('.markdy-placeholder')) { rescueModuleScripts(); } }); // Rescue automatically after a short delay for autoplay. // Only fires if initAll() never ran (no data-markdy-init on any root). setTimeout(function () { if (document.querySelector('.markdy-root:not([data-markdy-init])')) { rescueModuleScripts(); } }, 1500); }());Cái bản vá thực ra vá cái gì
Bản thu hồi không giúp xe nhìn thấy nước tốt hơn. Nó giúp xe đọc báo tốt hơn.
Tài liệu nộp cho NHTSA mô tả phần mềm đặt “hạn chế ở những thời điểm và địa điểm có nguy cơ cao gặp đường ngập tốc độ cao.” Cơ chế để kích hoạt những hạn chế đó bao gồm cảnh báo lũ quét của Cơ quan Thời tiết Quốc gia - flash flood warning, watch, advisory.
Khi cơn bão ngày 21 tháng 5 ập xuống Atlanta, chưa có cảnh báo nào được phát. Ngập đã xảy ra trước. Waymo nói với TechCrunch: “Cơn bão ở Atlanta tạo ra lượng mưa lớn đến mức ngập xảy ra trước khi Cơ quan Thời tiết Quốc gia kịp phát cảnh báo lũ quét.”
Xe nhận đầu vào hoàn toàn hợp lệ. Đầu vào chỉ là thông tin sai.
Cái vòng lặp này
Waymo còn thừa nhận, ngay lúc phát hành bản thu hồi, rằng “biện pháp khắc phục cuối cùng” chưa hoàn thiện. Đó là một điều kỳ lạ để thừa nhận trong hồ sơ thu hồi - thực chất là nói rằng chúng tôi đang thu hồi vì một vấn đề chúng tôi chưa giải quyết được.
Đây là lần thứ ba trong thời gian gần đây Waymo tung bản vá cho một hành vi đã biết, rồi hành vi đó vẫn tiếp tục:
Xe bus chở học sinh. Người dùng quay cảnh Waymo vượt qua xe bus đang dừng để đón trả học sinh - vi phạm luật giao thông. Waymo vá. Rồi NHTSA bắt đầu hỏi tại sao xe vẫn còn vượt ẩu quanh xe bus ở Austin. Hai cuộc điều tra liên bang đang mở.
Vụ đâm trẻ em ở Santa Monica. Ngày 23 tháng 1 năm nay, một robotaxi Waymo đâm vào một em nhỏ gần trường tiểu học. Xe đã phanh xuống còn khoảng 10 km/h trước khi va chạm. Em bé bị thương nhẹ. NHTSA và NTSB đang điều tra riêng.
Ngập lũ. Thu hồi rồi. Xe vẫn đâm vào lũ.
Ba vấn đề. Ba cuộc điều tra. Không cái nào xong.
--> // making it invisible to querySelectorAll. // // `data-cfasync="false"` keeps this rescue script executable even when // Rocket Loader is active. It rescues module scripts via two strategies: // 1. Query the DOM for type$="-module" + src (covers case A) // 2. Regex-parse the raw HTML for commented-out script tags (covers case B) // Dynamically-created scripts bypass Rocket Loader entirely. (function () { if (window.__markdyRescue) return; window.__markdyRescue = true; var rescued = false; function rescueModuleScripts() { if (rescued) return; rescued = true; var srcs = []; // Strategy 1: Rocket Loader kept the tag in DOM but changed the type. // type="module" → type="{uuid}-module" (still has src attribute) document.querySelectorAll('script[type$="-module"][src]').forEach(function (s) { srcs.push(s.src); }); // Strategy 2: Rocket Loader COMMENTED OUT the script tag entirely: // // These are invisible to querySelectorAll, so we parse the raw HTML. // We handle both attribute orderings (type-first or src-first). var html = document.documentElement.innerHTML; var reSrcFirst = //g; var reTypeFirst = //g; var m; while ((m = reSrcFirst.exec(html)) !== null) { srcs.push(m[1]); } while ((m = reTypeFirst.exec(html)) !== null) { srcs.push(m[1]); } // Re-inject each found src as a real module script. // Deduplicate first, then inject. Dynamically-created scripts bypass // Rocket Loader entirely. Modules with the same URL are only executed // once by the browser (cached), so re-injecting already-running scripts // is safe. var seen = {}; srcs.forEach(function (src) { if (seen[src]) return; seen[src] = true; var fix = document.createElement('script'); fix.type = 'module'; fix.src = src; fix.setAttribute('data-cfasync', 'false'); document.head.appendChild(fix); }); } // Rescue when user clicks the placeholder (fallback if autoplay failed). document.addEventListener('click', function (e) { var t = e.target; if (t && typeof t.closest === 'function' && t.closest('.markdy-placeholder')) { rescueModuleScripts(); } }); // Rescue automatically after a short delay for autoplay. // Only fires if initAll() never ran (no data-markdy-init on any root). setTimeout(function () { if (document.querySelector('.markdy-root:not([data-markdy-init])')) { rescueModuleScripts(); } }, 1500); }());Tại sao bài này được 312 điểm
Phần bình luận trên HN không có ai ngạc nhiên. Chỉ có mệt mỏi.
Cuộc tranh luận chính là về cùng một thứ mà mọi thread an toàn Waymo đều quay lại: khoảng cách giữa “xe là một bộ cảm biến” và xe thực sự cảm nhận được gì. Dùng cảnh báo thời tiết của chính phủ làm tín hiệu phát hiện lũ là một cách kỹ thuật hợp lý - cảnh báo đáng tin, rẻ, đến trước khi xe vào vùng nguy hiểm. Nhưng kịch bản thất bại - cảnh báo đến sau cơn bão nhanh - là kịch bản hoàn toàn có thể biết trước. Chỉ là chưa ai biết cho đến khi xe mắc kẹt ở Atlanta.
Một bình luận nói thẳng: đây là quyết định về kiến trúc nhận thức. Waymo chọn xử lý phát hiện lũ ở tầng lập lịch tuyến đường - kiểm tra feed thời tiết - thay vì tầng nhận thức - đọc trực tiếp nước đứng từ cảm biến. Hợp lý đến khi gặp Atlanta.
Nhiều người cũng chỉ ra: kỷ lục độ tin cậy của Waymo ở Phoenix và San Francisco là thật, ấn tượng. Mở rộng sang những thành phố thời tiết thất thường là một bài toán khác. Con xe đi lại trơn tru ở SF có thể không đủ training data cho xử lý cơn giông Georgia đổ trước khi NWS kịp bấm nút.
Đọc bài gốc nếu / bỏ qua nếu
| Đọc bài gốc nếu bạn… | Bỏ qua nếu bạn… |
|---|---|
| Theo dõi quy trình điều tra an toàn xe tự lái của NHTSA | Đã mất niềm tin vào robotaxi từ vụ xe bus |
| Đang ở Atlanta, San Antonio, Dallas hoặc Houston và dùng Waymo | Chỉ cần bản tóm tắt là “xe chạy vào nước, kẹt một tiếng” |
| Muốn hiểu sự khác nhau giữa phát hiện ở tầng nhận thức và tầng lập lịch | Không quan tâm đến chi tiết kỹ thuật nội bộ của xe tự lái |
Một quan sát
Waymo tạm dừng dịch vụ ở Dallas và Houston chủ động - trước khi có sự cố nào - vì dự báo thời tiết xấu. Quyết định đúng. Nhưng nó cũng tiết lộ điều gì đó: công ty biết xe của họ không thể đánh giá điều kiện bão theo thời gian thực. Cái lần chủ động dừng đó là lời thú nhận.
NHTSA đang gửi đợt yêu cầu tài liệu thứ hai. Đợt đầu chưa đủ. Câu hỏi mà đợt thứ hai cần trả lời là câu hỏi mà hồ sơ thu hồi của Waymo đã tự đặt ra: nếu biện pháp khắc phục cuối cùng chưa xong, cái bản thu hồi đó thực ra vá cái gì?
Thảo luận trên Hacker News · Nguồn: techcrunch.com · Đăng bởi mattas
Hoang Yell
Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi đọc Hacker News mỗi ngày và kể lại những câu chuyện hay nhất ở đây — bằng tiếng Việt và tiếng Anh, cho người tò mò nhưng không có thời gian.