Robot không gian và trong môi trường khắc nghiệt¶
Robot không gian và trong môi trường khắc nghiệt đẩy tự động hóa đến giới hạn của nó, nơi độ trễ liên lạc, bức xạ và địa hình không có cấu trúc đòi hỏi robot phải tự suy nghĩ. File này bao quát các robot di động hành tinh, dịch vụ quỹ đạo, tự động hóa với giới hạn liên lạc, máy tính chống bức xạ, robot dưới nước, tìm kiếm và cứu hộ, robot bầy đàn và tương tác người-robot.
-
Suốt chương này, ta đã nghiên cứu các hệ thống tự động vận hành trong các môi trường tương đối ôn hòa: đường có vạch kẻ làn, nhà kho có nền phẳng, nhà bếp với các lớp vật thể quen thuộc. Nhưng một số ứng dụng robot có tác động mạnh mẽ nhất lại nằm trong các môi trường con người không thể đến, hoặc nơi chi phí có mặt của con người rất cao: bề mặt Sao Hỏa, đáy đại dương sâu, các địa điểm thảm họa hạt nhân và các tòa nhà đang cháy.
-
Các môi trường khắc nghiệt này chia sẻ những thách thức chung: liên lạc bị giới hạn hoặc có độ trễ, địa hình không có cấu trúc và khó đoán, phần cứng phải sống sót trong điều kiện khắc nghiệt, và không có con người ở gần để sửa chữa khi mọi thứ hỏng hóc. Robot phải thực sự tự động, không chỉ "tự động với một con người theo dõi trên màn hình."
Robot không gian¶
-
Không gian là môi trường khắc nghiệt tột cùng. Không có không khí, nhiệt độ dao động từ -170°C đến +120°C, bức xạ bắn phá các linh kiện điện tử, và sự trợ giúp ở cách xa hàng triệu kilomet. Các robot không gian phải cực kỳ đáng tin cậy, tiết kiệm năng lượng và tự động.
-
Xe tự hành hành tinh là các robot di động khám phá bề mặt của các thế giới khác. Các xe tự hành Sao Hỏa của NASA (Spirit, Opportunity, Curiosity, Perseverance) là những ví dụ nổi tiếng nhất. Mỗi thế hệ đều tự động hơn thế hệ trước.
-
Ràng buộc cơ bản là độ trễ liên lạc. Sao Hỏa ở xa 4-24 phút qua sóng vô tuyến (tùy vào vị trí quỹ đạo), nên liên lạc khứ hồi mất 8-48 phút. Một xe tự hành không thể được điều khiển bằng cần điều khiển trong thời gian thực. Nếu nó gặp một tảng đá, nó không thể hỏi Trái Đất và chờ trả lời. Nó phải tự quyết định.
-
Các xe tự hành thời kỳ đầu (Spirit, Opportunity) phụ thuộc nhiều vào lập kế hoạch với con người trong vòng lặp: con người nghiên cứu ảnh, lập kế hoạch đường đi, tải lên các lệnh, và xe tự hành thực thi chúng. Một chu trình lái duy nhất mất cả một ngày Sao Hỏa (sol). Xe có thể di chuyển khoảng 50-100 mét mỗi sol.
-
AutoNav (Định vị tự động) trên Curiosity và Perseverance đã tăng cường đáng kể khả năng tự động. Xe tự hành dùng camera stereo để xây dựng một bản đồ 3D cục bộ (nhắc lại độ sâu stereo từ chương 8), đánh giá khả năng vượt địa hình (độ dốc, độ gồ ghề, kích thước đá), và lập kế hoạch một đường đi an toàn dùng bộ lập kế hoạch dựa trên lưới với bản đồ chi phí vượt địa hình. Xe tự hành lái tự động trong khi nhóm con người ngủ, tăng khoảng cách vượt hàng ngày lên 100+ mét.
-
Quy trình cảm biến trên các xe tự hành Sao Hỏa bị ràng buộc bởi các bộ xử lý chống bức xạ chậm hơn phần cứng tiêu dùng nhiều bậc (sẽ bàn bên dưới). Các thuật toán phải tiết kiệm tính toán: khớp stereo cổ điển thay vì mạng nơ-ron sâu, các bộ lập kế hoạch bản đồ chi phí đơn giản thay vì các chính sách học được.
-
Dịch vụ quỹ đạo liên quan đến các robot kiểm tra, sửa chữa, tiếp nhiên liệu hoặc vệ sinh vệ tinh trên quỹ đạo. Đây là lĩnh vực đang phát triển khi không gian trở nên chật chội hơn. Các sứ mệnh như OSAM-1 (NASA) và các dự án thương mại (Astroscale, Northrop Grumman MEV) dùng các cánh tay robot và cơ chế ghép nối để bảo trì vệ tinh.
-
Thách thức là các hoạt động trong phạm vi gần: một tàu vũ trụ dịch vụ phải tiếp cận một vệ tinh mục tiêu (có thể đang quay tròn, không hợp tác, và thiếu giao diện ghép nối) và thực hiện thao tác chính xác trong môi trường vi trọng lực. Ước lượng tư thế dựa trên thị giác (xác định vị trí và hướng 3D của mục tiêu từ ảnh camera) là rất quan trọng. Kỹ thuật này dùng các phương pháp từ chương 8: phát hiện đặc trưng, giải PnP (Perspective-n-Point), và gần đây hơn là các bộ ước lượng tư thế dựa trên học sâu.
-
Kiểm tra vệ tinh dùng các tàu vũ trụ nhỏ để kiểm tra bằng mắt các vệ tinh khác nhằm phát hiện hư hỏng hoặc bất thường. Robot kiểm tra phải tự động di chuyển quanh mục tiêu, tránh va chạm, và chụp ảnh độ phân giải cao từ các góc nhìn tối ưu. Đây là một bài toán lập kế hoạch: tìm quỹ đạo bao phủ mọi điểm kiểm tra đồng thời tôn trọng các ràng buộc về nhiên liệu, điều kiện ánh sáng và tránh va chạm.
Các ràng buộc liên lạc¶
-
Trong không gian, liên lạc bị giới hạn bởi tốc độ ánh sáng, băng thông sẵn có và hình học quỹ đạo (một xe tự hành ở phía xa của Sao Hỏa không thể liên lạc với Trái Đất nếu không có vệ tinh chuyển tiếp).
-
Những ràng buộc này thay đổi căn bản kiến trúc tự động hóa. Trên Trái Đất, robot có thể truyền video HD tới máy chủ đám mây, chạy suy luận trên một cụm GPU và nhận lệnh trong mili giây. Trong không gian, robot phải tự làm mọi thứ trên bo mạch.
-
Độ trễ cao nghĩa là robot phải lập kế hoạch và hành động mà không cần hướng dẫn thời gian thực của con người. Phần mềm tự động phải xử lý các hoạt động bình thường, phát hiện bất thường và đáp ứng với các mối nguy mà không chờ đầu vào từ con người. Điều này đòi hỏi ước lượng trạng thái trên bo mạch bền vững, phát hiện lỗi và lập kế hoạch dự phòng.
-
Băng thông hạn chế nghĩa là robot không thể truyền dữ liệu cảm biến thô. Một ảnh độ phân giải đơn lẻ có thể vài megabyte, nhưng tốc độ dữ liệu từ Sao Hỏa đến Trái Đất chỉ vài kilobit mỗi giây qua các kết nối trực tiếp (cao hơn qua chuyển tiếp quỹ đạo, nhưng vẫn hạn chế). Robot phải nén dữ liệu mạnh, ưu tiên dữ liệu nào cần gửi, và đưa ra hầu hết các quyết định tại chỗ.
-
Các cửa sổ liên lạc là gián đoạn. Một xe tự hành Sao Hỏa chỉ có thể liên lạc với Trái Đất trong các hình học quỹ đạo cụ thể, thường là vài giờ mỗi sol qua vệ tinh chuyển tiếp. Ngoài các cửa sổ này, xe tự hành hoàn toàn đơn độc.
-
Hệ lụy cho AI là tự động hóa trên bo mạch phải cực kỳ đáng tin cậy. Hệ thống cần phát hiện nếu có điều gì không ổn (một bánh xe bị kẹt, một cảm biến đã hỏng, địa hình phía trước không thể vượt qua), quyết định phản ứng an toàn, và tiếp tục hoạt động cho đến khi có cửa sổ liên lạc tiếp theo để báo cáo và nhận các chỉ thị cập nhật.
Máy tính chống bức xạ¶
-
Không gian ngập tràn bức xạ ion hóa: tia vũ trụ, các sự kiện hạt mặt trời, và bức xạ bị giữ lại trong các từ trường hành tinh. Các hạt năng lượng cao có thể lật bit trong bộ nhớ (sự cố đơn lẻ, SEU), làm hỏng vĩnh viễn các bóng bán dẫn (liều ion hóa tổng, TID), hoặc gay ra hiệu ứng kẹt (latch-up) phá hủy trong các mạch.
-
Các bộ xử lý chống bức xạ (rad-hard) được thiết kế để chịu đựng môi trường này. Chúng dùng các kích thước bóng bán dẫn lớn hơn, logic dự phòng (dự phòng mô-đun ba lần: ba bản sao của mỗi mạch, biểu quyết trên đầu ra), và các quy trình chế tạo chuyên dụng. Cái giá là hiệu năng: một bộ xử lý rad-hard hiện đại có thể chỉ đạt 200 MIPS, so với hàng tỷ phép tính mỗi giây trên một GPU tiêu dùng.
-
RAD750 (BAE Systems) cung cấp năng lượng cho Curiosity và nhiều tàu vũ trụ khác. Nó chạy ở 200 MHz với khoảng 400 MIPS, tương đương một máy tính để bàn giữa thập niên 1990. Perseverance dùng một lớp xử lý tương tự. Chạy một mạng nơ-ron hiện đại (hàng triệu tham số, hàng tỷ phép nhân-cộng) là bất khả thi trên phần cứng như vậy.
-
Nén mô hình trở thành thiết yếu. Các kỹ thuật từ chương 6 (lượng tử hóa, tỉa, chưng cất kiến thức) được dùng để thu nhỏ mạng nơ-ron cho vừa với ngân sách tính toán cực kỳ hạn chế. Một mô hình chạy trong mili giây trên một GPU laptop có thể mất vài phút trên một bộ xử lý rad-hard, hoặc thậm chí không vừa trong bộ nhớ.
-
Một cách tiếp cận khác dùng các bộ xử lý thương mại sẵn có (COTS) với các biện pháp giảm nhẹ bức xạ trong phần mềm: mã sửa lỗi, bộ định thời watchdog, làm sạch bộ nhớ định kỳ và các chiến lược suy giảm nhẹ nhàng. Một số sứ mệnh hiện đại dùng cách này để truy cập vào sức mạnh tính toán cao hơn với cái giá là độ phức tạp và rủi ro phần mềm tăng lên.
-
Các sứ mệnh hành tinh tương lai đang khám phá FPGA và các tăng tốc AI chuyên dụng có thể chịu bức xạ trong khi cung cấp sức mạnh tính toán đáng kể hơn các CPU rad-hard truyền thống, có khả năng mở ra cánh cửa cho học sâu trên bo mạch lần đầu tiên.
Định vị tự động trong địa hình không có cấu trúc¶
-
Trên Trái Đất, đường phẳng, được đánh dấu rõ ràng và có bản đồ. Trên Sao Hỏa, Mặt Trăng, hoặc một hiện trường thảm họa, không có đường. Địa hình là không có cấu trúc: đá, dốc, cát, khe nứt và các bề mặt có thể không chịu nổi trọng lượng của robot.
-
Phân loại địa hình đánh giá mỗi mảnh mặt đất có an toàn để vượt qua không. Các đặc trưng bao gồm độ dốc (từ tái tạo 3D), độ gồ ghề (phương sai của pháp tuyến bề mặt), mật độ đá và loại đất. Các cách tiếp cận cổ điển tính các đặc trưng này từ bản đồ độ sâu stereo; các cách tiếp cận hiện đại dùng các bộ phân loại học được trên các đặc trưng thị giác và hình học.
-
Phép đo quán tính-thị giác (VIO) ước lượng chuyển động của robot bằng cách theo dõi các đặc trưng thị giác qua các khung hình camera và hợp nhất với các phép đo IMU. Đây là một thành phần SLAM cốt lõi (chương 8) thích nghi cho các điều kiện khắc nghiệt. Trên Sao Hỏa, VIO phải xử lý: địa hình cát không có đặc trưng (ít đặc trưng thị giác để theo dõi), ánh sáng gay gắt (bóng cực mạnh) và sức mạnh tính toán hạn chế.
-
Việc ước lượng hợp nhất dữ liệu thị giác và quán tính dùng Bộ lọc Kalman mở rộng (EKF) hoặc tối ưu hóa đồ thị thừa số. Vector trạng thái bao gồm vị trí, vận tốc, hướng và các độ lệch IMU. Bước dự đoán dùng tích phân IMU:
-
với \(\\mathbf{u}_t\) là phép đo IMU (gia tốc và vận tốc góc). Bước cập nhật hiệu chỉnh dự đoán bằng các quan sát đặc trưng thị giác. Đây là ước lượng Bayes (chương 5): IMU cung cấp tiên nghiệm, và các quan sát thị giác cập nhật niềm tin.
-
Tránh nguy hiểm là rất quan trọng trong hạ cánh hành tinh. Khi một tàu vũ trụ lao xuống bề mặt, nó phải xác định các khu vực hạ cánh an toàn trong thời gian thực dùng camera hoặc LiDAR trên bo mạch. Hệ thống Dẫn đường Tương đối Địa hình (TRN) của NASA trên Perseverance so sánh ảnh camera trên bo mạch với bản đồ quỹ đạo đã tải trước để xác định vị trí trong khi hạ cánh, sau đó lái tránh địa hình nguy hiểm. Điều này cho phép hạ cánh ở Miệng núi lửa Jezero, một địa điểm giàu khoa học nhưng nguy hiểm về địa hình, nơi sẽ quá rủi ro cho các sứ mệnh trước.
Robot dưới nước¶
-
Đại dương sâu cũng xa lạ như không gian: áp suất nghiền nát (1000+ atm ở độ sâu toàn phần), tầm nhìn gần như bằng không, không có GPS, và liên lạc hạn chế. Robot dưới nước là thiết yếu cho khoa học đại dương, kiểm tra hạ tầng ngoài khơi, khai thác biển sâu và các chiến dịch tìm kiếm.
-
AUV (Autonomous Underwater Vehicles — Phương tiện dưới nước tự động) hoạt động không dây buộc, mang năng lượng và máy tính riêng. Chúng tuân theo các mẫu khảo sát được lập trình sẵn hoặc dùng trí thông minh trên bo mạch để thích nghi với các khám phá. AUV được dùng để lập bản đồ đáy biển, kiểm tra đường ống và giám sát môi trường.
-
ROV (Remotely Operated Vehicles — Phương tiện vận hành từ xa) được nối với một tàu mặt nước bằng cáp cung cấp năng lượng và liên lạc. Chúng được dùng cho các tác vụ đòi hỏi điều khiển thời gian thực của con người: thao tác, xây dựng và sửa chữa dưới biển sâu. Sợi cáp loại bỏ ràng buộc liên lạc nhưng giới hạn phạm vi và thêm độ phức tạp vận hành.
-
Liên lạc âm học là phương pháp liên lạc dưới nước chính (sóng vô tuyến suy giảm nhanh trong nước). Các modem âm học đạt tốc độ dữ liệu 1-10 kbps ở tầm vài kilomet, so với gigabits mỗi giây cho vô tuyến trên cạn. Điều này còn hạn chế hơn cả liên lạc Sao Hỏa, buộc các AUV phải có tính tự động hóa cao.
-
SLAM dưới nước đặc biệt thách thức. Sonar cung cấp các phép đo tầm nhưng với độ phân giải góc kém và nhiễu đáng kể (phản xạ đa đường từ đáy biển và mặt nước). Camera chỉ hoạt động ở phạm vi rất ngắn (vài mét trong nước sạch, ít hơn trong nước đục). SLAM thị giác dựa trên đặc trưng (chương 8) phải được thích nghi cho các đặc điểm thị giác độc đáo của cảnh dưới nước: suy giảm màu (ánh sáng đỏ bị hấp thụ trước), tán xạ ngược và ánh sáng nhân tạo tạo ra các điểm sáng và bóng sâu.
-
Dẫn đường không GPS dùng phép tắc chết (dead reckoning, tích phân vận tốc từ Doppler Velocity Log, DVL, đo tốc độ tương đối với đáy biển dùng các dịch tần âm học Doppler), được hỗ trợ bởi việc nổi lên định kỳ để lấy GPS hoặc định vị âm học từ các transponder mặt nước. Đây là cùng vấn đề trôi dạt như dẫn đường chỉ dùng IMU: các lỗi vận tốc nhỏ tích lũy qua các sứ mệnh dài.
Robot tìm kiếm và cứu hộ¶
-
Sau động đất, sập tòa nhà, hoặc tai nạn công nghiệp, robot có thể vào các không gian quá nguy hiểm cho người cứu hộ: các tòa nhà không cấu trúc ổn định, môi trường độc hại, lửa, hoặc không gian chật hẹp.
-
Các yêu cầu là: triển khai nhanh (vài phút, không phải vài giờ), hoạt động trong môi trường không GPS (trong nhà, dưới lòng đất), liên lạc bền vững xuyên tường và gạch vụn, và khả năng di chuyển trong các không gian lộn xộn, sụp đổ một phần với nhiều mảnh vụn, bụi và ánh sáng kém.
-
Phối hợp nhiều robot có giá trị trong tìm kiếm cứu hộ vì một đội robot có thể bao phủ một khu vực rộng nhanh hơn một robot đơn. Thách thức là sự phối hợp: các robot phải phân chia khu vực tìm kiếm, tránh trùng lặp nỗ lực, và chia sẻ các khám phá.
-
Khám phá dựa trên biên giới (frontier-based exploration) gán các robot đến các ranh giới giữa không gian đã khám phá và chưa khám phá ("biên giới"). Mỗi robot di chuyển đến biên giới chưa khám phá gần nhất, lập bản đồ nó, và tiếp tục di chuyển. Một bộ lập kế hoạch trung tâm hoặc phân tán phân bổ các biên giới cho các robot để tối thiểu hóa tổng thời gian khám phá. Đây là một bài toán tối ưu hóa bao phủ.
-
Liên lạc xuyên qua gạch vụn không đáng tin cậy. Robot có thể mất liên lạc với người vận hành và với nhau. Hệ thống phải bền vững với liên lạc gián đoạn: mỗi robot phải có khả năng hoạt động độc lập, xây dựng bản đồ cục bộ riêng và đưa ra các quyết định riêng, sau đó hợp nhất thông tin khi liên lạc được phục hồi.
Robot bầy đàn¶
-
Robot bầy đàn (swarm robotics) dùng một số lượng lớn robot đơn giản, giá rẻ đạt được các hành vi tập thể phức tạp qua các tương tác cục bộ. Không một robot đơn lẻ nào có khả năng riêng lẻ, nhưng bầy đàn nói chung có thể thực hiện các tác vụ mà không cá nhân nào có thể.
-
Nguồn cảm hứng đến từ các bầy đàn sinh học: kiến xây cầu bằng thân của chúng, ong ra quyết định tập thể về địa điểm xây tổ, đàn cá lẩn tránh kẻ săn mồi qua chuyển động phối hợp. Trong mỗi trường hợp, các quy tắc cục bộ đơn giản (đi theo hàng xóm của bạn, tránh va chạm, di chuyển về phía thức ăn) tạo ra các hành vi toàn cục tinh tế.
-
Điều khiển phi tập trung nghĩa là không có người chỉ huy trung tâm. Mỗi robot tuân theo cùng các quy tắc địa phương, chỉ phản ứng với các hàng xóm và môi trường tức thời của nó. Hành vi toàn cục nổi lên từ các tương tác cục bộ này. Điều này làm bầy đàn trở nên bền vững về bản chất: nếu một robot hỏng, bầy đàn tiếp tục. Không có một điểm hỏng đơn lẻ.
-
Các thuật toán đồng thuận cho phép một bầy đàn đồng ý về một quyết định tập thể (ví dụ đi theo hướng nào, tác vụ nào được ưu tiên) chỉ qua liên lạc cục bộ. Một giao thức đồng thuận đơn giản có mỗi robot lấy trung bình giá trị của nó với các hàng xóm:
- với \(N_i\) là tập hàng xóm của robot \(i\). Điều này được lặp cho đến khi tất cả robot hội tụ về cùng một giá trị (trung bình toàn cục). Tốc độ hội tụ phụ thuộc vào tô-pô của đồ thị liên lạc, cụ thể là tính kết nối đại số của nó (trị riêng nhỏ thứ hai của Laplacian đồ thị, kết nối với các trị riêng từ chương 2).
-
Các thuật toán bầy đàn (quy tắc Reynolds) tạo ra chuyển động nhóm phối hợp với ba quy tắc đơn giản cho mỗi robot:
- Separation (tách): lái tránh các hàng xóm quá gần (tránh va chạm).
- Alignment (căn chỉnh): lái về phía hướng trung bình của các hàng xóm (di chuyển cùng hướng).
- Cohesion (kết dính): lái về phía vị trí trung bình của các hàng xóm (ở cùng nhóm).
-
Mỗi quy tắc là một đóng góp vector vào vận tốc của robot. Tổng có trọng số của các vector này tạo ra hành vi bầy đàn tự nhiên. Đây là một tổ hợp tuyến tính của các vector (chương 1), trong đó các trọng số điều khiển tầm quan trọng tương đối của mỗi hành vi.
-
Các ứng dụng của robot bầy đàn gồm giám sát môi trường (phân tán các cảm biến trên một khu vực rộng), nông nghiệp chính xác (phối hợp drone để phun thuốc), xây dựng (robot cùng nhau lắp ráp cấu trúc), và các chiến dịch tìm kiếm (bao phủ một khu vực rộng một cách hiệu quả).
Tương tác người-robot¶
- Hầu hết các hệ thống tự động trong thế giới thực vận hành cùng với con người, không phải trong sự cô lập. Sự tương tác giữa người và robot — cách chúng liên lạc, chia sẻ điều khiển và xây dựng lòng tin — cũng quan trọng như các khả năng kỹ thuật của robot.
-
Tự động chung (shared autonomy) pha trộn điều khiển của con người và robot. Thay vì điều khiển từ xa hoàn toàn (con người điều khiển mọi thứ) hoặc tự động hoàn toàn (robot điều khiển mọi thứ), tự động chung cho phép con người cung cấp ý định bậc cao trong khi robot xử lý thi hành bậc thấp. Ví dụ, một người có thể chỉ vào một vật thể và nói "nhặt cái đó lên", và robot tự động lập kế hoạch cầm nắm và di chuyển cánh tay.
-
Về mặt toán học, tự động chung có thể được mô hình hóa như một sự pha trộn của đầu vào con người \(\\mathbf{u}_h\) và hành động tự động của robot \(\\mathbf{u}_r\):
-
với \(\\alpha \\in [0, 1]\) là tham số pha trộn. Khi \(\\alpha = 1\), con người có toàn quyền điều khiển (teleoperation). Khi \(\\alpha = 0\), robot hoàn toàn tự động. Tự động chung thích ứng điều chỉnh \(\\alpha\) dựa trên tình huống: robot nắm nhiều quyền điều khiển hơn khi nó tự tin và nhường điều khiển khi nó không chắc chắn hoặc tình huống mới lạ.
-
Điều khiển từ xa (teleoperation) vẫn quan trọng cho các tác vụ vượt quá khả năng tự động hiện tại. Một người vận hành điều khiển robot từ xa, nhìn cảnh qua camera của robot. Thách thức là độ trễ: thậm chí 100ms trễ cũng làm điều khiển từ xa khó khăn, và độ trễ nhiều giây trong không gian khiến nó gần như bất khả thi cho thao tác tinh tế. Màn hình dự đoán (hiển thị trạng thái tương lai dự đoán của robot) và các thiết bị ảo (các hướng dẫn phần mềm ngăn người vận hành ra lệnh các chuyển động nguy hiểm) giúp bù đắp.
-
Hiệu chuẩn lòng tin (trust calibration) là bài toán đảm bảo con người có lòng tin phù hợp với robot: không quá nhiều (tin tưởng quá dẫn đến tự mãn và không can thiệp khi cần), không quá ít (thiếu tin tưởng dẫn đến can thiệp không cần thiết và không tận dụng). Lòng tin nên được hiệu chuẩn theo khả năng thực của robot: tin tưởng nó trong các tình huống nó xử lý tốt, và hoài nghi trong các tình huống gần ranh giới năng lực của nó.
-
Nghiên cứu cho thấy lòng tin bị ảnh hưởng bởi: tính minh bạch của robot (nó có giải thích các quyết định của nó không?), độ tin cậy (nó hỏng có thể dự đoán được hay ngẫu nhiên?), và giao tiếp (nó có biểu lộ sự bất định không?). Một robot nói "Tôi tin 40% đây là đường an toàn, tôi có nên đi tiếp không?" cho phép con người ra quyết định tốt hơn một robot lặng lẽ lái về phía trước.
-
Tính dễ đọc (legibility) trong chuyển động robot nghĩa là robot di chuyển theo cách truyền đạt ý định của nó cho những người gần đó. Nếu một robot với tay lấy một vật thể, đường đi của nó nên làm rõ nó đang nhắm vào vật nào, ngay cả trước khi nó tới nơi. Điều này liên quan đến việc lập kế hoạch các quỹ đạo tối đa hóa khả năng suy ra mục tiêu đúng của người quan sát sớm, có thể được hình thức hóa như tối đa hóa xác suất hậu nghiệm của mục tiêu đúng cho trước quỹ đạo bộ phận đã quan sát:
- với \(G\) là mục tiêu và \(\\xi_{0:t}\) là quỹ đạo đã quan sát được cho đến thời điểm này. Điều này dùng suy luận Bayes (chương 5): người quan sát có một tiên nghiệm trên các mục tiêu có thể, và quỹ đạo của robot cung cấp bằng chứng cập nhật niềm tin này.
Bài tập lập trình (dùng CoLab hoặc notebook)¶
-
Mô phỏng một thuật toán đồng thuận cho một bầy robot đồng ý trên một vị trí mục tiêu. Bắt đầu với các vị trí ngẫu nhiên và xem sự hội tụ.
import jax import jax.numpy as jnp import matplotlib.pyplot as plt n_robots = 10 rng = jax.random.PRNGKey(0) positions = jax.random.uniform(rng, (n_robots, 2), minval=-5, maxval=5) # Communication graph: each robot talks to its 3 nearest neighbours def get_neighbours(positions, k=3): dists = jnp.linalg.norm(positions[:, None] - positions[None, :], axis=-1) # For each robot, find k nearest (excluding self) neighbours = jnp.argsort(dists, axis=1)[:, 1:k+1] return neighbours history = [positions.copy()] for step in range(30): neighbours = get_neighbours(positions) new_positions = jnp.zeros_like(positions) for i in range(n_robots): nbr_pos = positions[neighbours[i]] new_positions = new_positions.at[i].set( (positions[i] + nbr_pos.sum(axis=0)) / (len(neighbours[i]) + 1) ) positions = new_positions history.append(positions.copy()) # Plot convergence fig, axes = plt.subplots(1, 3, figsize=(15, 4)) for ax, step_idx, title in zip(axes, [0, 10, 29], ["Initial", "Step 10", "Final"]): h = history[step_idx] ax.scatter(h[:, 0], h[:, 1], s=50) ax.set_xlim(-6, 6); ax.set_ylim(-6, 6) ax.set_aspect("equal"); ax.grid(True); ax.set_title(title) plt.suptitle("Swarm Consensus: Robots Converge to Agreement") plt.tight_layout() plt.show() -
Triển khai các quy tắc bầy đàn của Reynolds (separation, alignment, cohesion) và mô phỏng một bầy di chuyển cùng nhau.
import jax import jax.numpy as jnp import matplotlib.pyplot as plt n = 30 rng = jax.random.PRNGKey(1) k1, k2 = jax.random.split(rng) pos = jax.random.uniform(k1, (n, 2), minval=-5, maxval=5) vel = jax.random.uniform(k2, (n, 2), minval=-0.5, maxval=0.5) dt = 0.1 separation_radius = 1.0 neighbour_radius = 3.0 trajectories = [pos.copy()] for _ in range(200): new_vel = jnp.zeros_like(vel) for i in range(n): diffs = pos - pos[i] dists = jnp.linalg.norm(diffs, axis=1) # Neighbours within radius (exclude self) nbr_mask = (dists < neighbour_radius) & (dists > 0) sep_mask = (dists < separation_radius) & (dists > 0) # Separation: steer away from very close neighbours if sep_mask.any(): sep = -diffs[sep_mask].sum(axis=0) else: sep = jnp.zeros(2) # Alignment: match average velocity of neighbours if nbr_mask.any(): align = vel[nbr_mask].mean(axis=0) - vel[i] else: align = jnp.zeros(2) # Cohesion: steer toward average position of neighbours if nbr_mask.any(): cohesion = pos[nbr_mask].mean(axis=0) - pos[i] else: cohesion = jnp.zeros(2) new_vel = new_vel.at[i].set(vel[i] + 1.5 * sep + 0.5 * align + 0.3 * cohesion) # Limit speed speeds = jnp.linalg.norm(new_vel, axis=1, keepdims=True) vel = jnp.where(speeds > 2.0, new_vel / speeds * 2.0, new_vel) pos = pos + vel * dt trajectories.append(pos.copy()) # Plot snapshots fig, axes = plt.subplots(1, 3, figsize=(15, 4)) for ax, idx, title in zip(axes, [0, 50, 199], ["Start", "Step 50", "Step 200"]): p = trajectories[idx] v = vel if idx == 199 else jnp.zeros_like(vel) ax.scatter(p[:, 0], p[:, 1], s=20, c="blue") ax.set_aspect("equal"); ax.grid(True); ax.set_title(title) lim = max(abs(p).max() + 1, 6) ax.set_xlim(-lim, lim); ax.set_ylim(-lim, lim) plt.suptitle("Reynolds' Flocking: Separation + Alignment + Cohesion") plt.tight_layout() plt.show() -
Mô phỏng sự pha trộn tự động chung: một người cung cấp đầu vào hướng có nhiễu, và hệ thống tự động của robot cung cấp một đường mượt đến mục tiêu. Pha trộn chúng với các giá trị alpha khác nhau.
import jax import jax.numpy as jnp import matplotlib.pyplot as plt goal = jnp.array([10.0, 5.0]) pos = jnp.array([0.0, 0.0]) dt = 0.1 rng = jax.random.PRNGKey(3) fig, axes = plt.subplots(1, 3, figsize=(15, 4)) for ax, alpha in zip(axes, [1.0, 0.5, 0.0]): pos = jnp.array([0.0, 0.0]) path = [pos.copy()] for step in range(150): # Robot autonomy: smooth path to goal direction = goal - pos u_robot = direction / (jnp.linalg.norm(direction) + 1e-6) * 1.0 # Human input: roughly correct direction but noisy noise = jax.random.normal(jax.random.fold_in(rng, step), (2,)) * 0.5 u_human = u_robot + noise # Blend u = alpha * u_human + (1 - alpha) * u_robot pos = pos + u * dt path.append(pos.copy()) if jnp.linalg.norm(pos - goal) < 0.3: break path = jnp.stack(path) ax.plot(path[:, 0], path[:, 1], "b-", alpha=0.7) ax.plot(*goal, "r*", markersize=15) ax.plot(0, 0, "go", markersize=10) ax.set_title(f"α={alpha:.1f} ({'human' if alpha==1 else 'robot' if alpha==0 else 'shared'})") ax.set_xlim(-1, 12); ax.set_ylim(-3, 8) ax.set_aspect("equal"); ax.grid(True) plt.suptitle("Shared Autonomy: Blending Human and Robot Control") plt.tight_layout() plt.show()