CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1. Hình thành vấn đề Trong những năm gần đây chúng ta chứng kiến sự bùng nổ các thiết bị giải trí điện tử có khả năng kết hợp giữa hình ảnh thu được từ thế giới tự nhiên và hình ảnh nhân tạo sinh ra từ thiết bị điện tử. Với thiết bị PlayStation Eye hay Kinect, người chơi không những thấy được hình ảnh thật mà còn thấy được hình ảnh nhân tạo hòa trộn vào đó một cách tự nhiên và nhịp nhàng với chuyển động của ảnh thực. Đây là một xu hướng mới trong xây dựng các ứng dụng và trò chơi có thể tương tác với người dùng.
Để có thể chèn một đối tượng nhân tạo vào chuỗi ảnh thật, ta cần có công nghệ có thể xác định chính xác không những khoảng không gian (tức bản đồ) nơi muốn chèn ảnh vào mà còn quỹ đạo chuyển động của camera đã quay lại chuỗi ảnh đó. Ngoài ra đối tượng sinh ra phải tuân theo các quy luật về quang học trong chuỗi ảnh. Trong đó việc xác định bản đồ và chuyển động của camera là một phần quan trọng khi xây dựng ứng dụng. Bài toán này thường được gọi tên là xác định vị trí và lập bản đồ đồng thời (Simultaneous Localization and Mapping − SLAM) [1] hoặc theo vết và lập bản đồ song song (Parallel Tracking and Mapping − PTAM [36].
Bài toán SLAM được xem như đã được giải quyết ở cấp độ lý thuyết bằng mô hình toán học xác xuất [1][2]. Tuy nhiên, vẫn còn nhiều vấn đề ở cấp độ kỹ thuật trong từng ứng dụng SLAM cụ thể cần được nghiên cứu thêm. Một ứng dụng SLAM cụ thể thường có hai thành phần: front-end và back-end. Thành phần front-end có chức năng tính toán ước lượng vị trí (pose) tương quan giữa những lần dịch chuyển của đối tượng (camera, robot, …), và đo đạc trực tiếp hoặc gián tiếp tọa độ của các cột mốc có trong quang cảnh xung quanh so với đối tượng.
Các giá trị ước lượng và đo đạc này luôn kém chính xác do quá trình ước lượng không sát với thực tế và việc đo đạc các đại lượng vật lý luôn kèm theo sai số. Thành phần back-end sẽ tổng hợp các giá trị ước lượng và đo đạc từ front-end, và tính toán lại các vị trí tương quan sao cho các giá trị tính toán lại gần với giá trị thực nhất. Hình 1 minh họa một ứng dụng SLAM điển hình bao gồm một robot di chuyển trong mặt phẳng từ vị trí x1 đến vị trí x2 và xoay một góc. Tại mỗi vị trí, robot tiến hành đo tọa độ của hai cột mốc tĩnh P1 và P2.
Do bề mặt di chuyển gồ ghề và hiện tượng trượt trong quá trình di chuyển (trượt giữa bánh xe và bề mặt tiếp xúc, và 7 trượt giữa các cấu trúc cơ học trong động cơ điều khiển), nên có nhiều khả năng robot không hiện diện tại đúng vị trí x2 như mong đợi. Mặt khác, khi robot đo tọa độ các cột mốc, sai số nội tại của các cảm biến làm cho giá trị đo được không chính xác. Sự không chắc chắn của vị trí robot và tọa độ các cột mốc được minh họa bằng các đường nét đứt thể hiện vùng không gian mà khả năng xuất hiện của các đối tượng (robot hoặc cột mốc) là cao nhất. Điều ta mong muốn là với tập các giá trị về vị trí robot, tọa độ các cột mốc và kèm theo đó là các giá trị cho biết sự không chắc chắn của các vị trí và tọa độ đó, làm thế nào tính toán lại vị trí robot cũng như tọa độ các cột mốc một cách chính xác hơn.
Nói cách khác, các giá trị tính toán lại gần với giá trị mong đợi hơn (Hình 2). P1 P2 Tọa độ cột mốc P2 mà robot đo được. Vị trí thực tế của robot. Một ứng dụng SLAM minh họa một đoạn di chuyển của robot từ vị trí x1 đến x2.
Các hình elip minh họa cho các vùng không gian mà robot và hai cột mốc có khả năng hiện diện cao nhất. Vị trí robot sau khi tính toán lại, x '2 , gần với vị trí mong đợi hơn. Tọa độ các cột mốc sau khi tính toán lại cũng gần với tọa độ thực tế hơn. Phạm vi nghiên cứu Một ứng dụng SLAM cụ thể là một sự kết hợp một hay nhiều thiết bị cảm biến với một mô hình điều khiển (process model) và một mô hình đo đạc (measurement model).
Mô hình điều khiển có chức năng dự đoán (ước lượng) vị trí sắp tới của đối tượng chuyển động so với vị trí hiện tại. Mô hình đo đạc có chức năng đo trực tiếp hoặc gián tiếp vị trí tương quan giữa đối tượng chuyển động và các cột mốc xung quanh (giả sử cảnh quang xung quanh là tĩnh theo thời gian). Sự kết hợp này tạo nên thành phần front-end của ứng dụng. Ngoài ra, để làm tăng độ chính xác các giá trị ước lượng được, người ta thường dùng một giải thuật cập nhật lại (tính toán lại) vị trí của đối tượng chuyển động và tọa độ các cột mốc (bản đồ) sao cho gần với giá trị mong đợi nhất.
Giải thuật này tạo nên thành phần back-end của ứng dụng (Hình 3). Kết quả cập nhật lại của back-end có thể lấy để làm đầu vào của mô hình điều khiển và mô hình đo đạc. Dựa vào dữ liệu hồi quy này và dữ liệu đầu vào từ thiết bị cảm biến mà hai mô hình sinh ra dữ liệu cho bước tiếp theo. 9 Front-end Thiết bị cảm biến Thiết bị cảm biến (có thể có hoặc không) Mô hình điều khiển Mô hình đo đạc Back-end Cập nhật lại vị trí và bản đồ có thể có hoặc không Hình 3.
Kiến trúc tổng quát của một ứng dụng SLAM. Tùy thuộc vào ứng dụng cụ thể mà mô hình điều khiển có thể sử dụng nhiều loại thiết bị cảm biến để ước lượng di chuyển của đối tượng [38]. Thiết bị cảm biến có thể gắn lên trên đối tượng như là IMU (Inertial Measurement Unit) [39], có thể là một phần của bộ phận điều khiển chuyển động của đối tượng như là servo motor [40]. Thiết bị cảm biến cũng có thể nằm ngoài đối tượng như GPS (Global Positioning System) [8].
Tuy nhiên có những ứng dụng không sử dụng thiết bị cảm biến cho mô hình điều khiển, khi đó người ta thường đưa ra những giả thiết về tính chất chuyển động của đối tượng để xây dựng mô hình điều khiển [3][4][5]. Thiết bị cảm biến dùng trong mô hình đo đạc có thể là loại thiết bị đo đạc trực tiếp như laser, sonar, radar rangefinder hoặc gián tiếp như video camera. Các thiết bị đo đạc trực tiếp giúp mô hình đo đạc trở nên đơn giản, tuy nhiên đây là các thiết bị đắt tiền. Monocular camera tuy rẻ tiền nhưng không được thiết kế để thực hiện chức năng đo đạc.
Ta có thể tính toán vị trí tương đối của các cột mốc trong quang cảnh chụp được so với camera bằng cách sử dụng các quy luật hình học. Tính toán tọa độ của các cột mốc từ một hay nhiều tấm hình chụp được từ monocular camera là một công việc phức tạp [10]. Để giảm bớt độ phức tạp tính toán, người ta có thể sử 10 dụng stereo camera hay trinocular camera [8], tuy nhiên những thiết bị này lại là những thiết bị đắt tiền. Trong phần back-end, ta sử dụng một giải thuật tối ưu để tính toán lại vị trí của đối tượng chuyển động (camera, robot, …) và tọa độ các cột mốc (bản đồ) đã ước lượng được sao cho gần với giá trị mong đợi nhất.
Có hai trường phái nghiên cứu về giải thuật này: trường phái nghiên cứu các giải thuật lọc (filter) và trường phái nghiên cứu các giải thuật tối thiểu sai số. Đã có rất nhiều bài báo nghiên cứu áp dụng các giải thuật lọc, trong đó các giải thuật lọc thường được sử dụng nhất trong các ứng dụng SLAM là EKF (Extended Kalman Filter) [3][4][5][6][12], particle filter [8][41][42][43] và information filter [44][45][46]. Một hướng nghiên cứu khác tìm cách làm tối thiểu hóa sai biệt giữa các giá trị dự đoán (ước lượng) với các giá trị đo đạc được [15][16][35][47]. Ngoài việc xây dựng hai mô hình điều khiển và đo đạc cụ thể (trong front-end) cho phù hợp với các cảm biến sử dụng và chọn một giải thuật thực thi trong phần back- end, sự phong phú của các ứng dụng SLAM còn thể hiện ở chỗ ứng dụng nhắm đến khía cạnh nào của bài toán SLAM: lập bản đồ hay xác định vị trí hay cả hai.
Trong khi ứng dụng monocular SLAM của Davison và nhóm tác giả [3][4][5][9] tập trung xác định quỹ đạo của monocular camera (việc đo đạc chỉ là bước trung gian nhằm xác định vị trí camera), thì giải thuật SAM của Frank Dellaert [35] và iSAM của Kaess và nhóm tác giả [15] xác định đồng thời quỹ đạo của đối tượng và bản đồ ba chiều (3D map), hay còn gọi là full SLAM. Tùy thuộc vào môi trường ứng dụng mà ta chọn các cảm biến thích hợp và kết hợp với một giải thuật tối ưu để xây dựng chương trình. Ở môi trường ngoài trời, ta có thể sử dụng GPS kết hợp với radar rangefinder để thu thập dữ liệu đầu vào cho ứng dụng. Đối với ứng dụng trong môi trường trong nhà như robot tự hành, ta có thể sử dụng servo motor kết hợp với video camera.
Trong luận văn này, chúng tôi xây dựng một ứng dụng thuộc dạng full SLAM, nhưng chỉ sử dụng duy nhất một thiết bị cảm biến là monocular camera cho cả hai mô hình điều khiển và đo đạc, kết hợp với một giải thuật tối ưu hóa thuộc dạng tối thiểu sai số trong phần back-end. Đây là một sự kết hợp giữa monocular camera với một giải thuật tối thiểu sai số để hiện thực ứng dụng full SLAM mà chưa ai làm trước đây. Mục tiêu đề tài Davison và đồng nghiệp [3][4][5][6][9][23][27][28] đã nghiên cứu thành công việc sử dụng duy nhất một monocular camera để hiện thực ứng dụng visual SLAM. Trong đó các tác giả giả định chuyển động của camera là đều và sử dụng monocular camera để hiện thực mô hình đo đạc trong mặt phẳng ảnh 2D.
Trong phần back-end, các tác giả sử dụng EKF để xác định vị trí của camera. Đề tài của chúng tôi nghiên cứu việc sử dụng duy nhất một monocular camera để hiện thực ứng dụng visual full SLAM. Trong đó mô hình điều khiển và đo đạc đều sử dụng dữ liệu cung cấp bởi monocular camera. Mô hình đo đạc tính toán tọa độ 3D của quang cảnh xung quanh.
Trong phần back-end, chúng tôi sử dụng một thư viện tối thiểu hóa sai số để xác định đồng thời vị trí camera và tọa độ của quang cảnh xung quanh.