Dựng Static Map

Một phần của tài liệu Luận văn tốt nghiệp triển khai thuật toán định hướng trên ROS cho robot tự hành trong nhà (Trang 76 - 89)

14- Tổng quát về bản thuyết minh:

4.3. Dựng Static Map

Navigation Stack không nhất thiết phải sử dụng một bản đồ tĩnh. Nhƣ đã trình bày trong các chƣơng đầu tiên tuy nhiên bản đồ tĩnh cho phép Navigation hoạt động tốt nhất. Có nhiều cách để tạo static map cho Navigation Stack.

Nhƣ đã giới thiệu trong chƣơng đầu tiên, quá trình dựng bản đồ còn gọi là định vị và lập

bản đồ đồng thời – SLAM. Ta có thể sử dụng package slam_gmapping cho ứng dụng SLAM 2D. Để sử dụng slam_gmapping, ta cần cung cấp dữ liệu cảm biến dạng laser scan. Có thể xem laserscan là một lát cắt song song mặt đất của point cloud. Với camera Kinect ta có thể sử dụng package depthimage_to_laserscan để lấy dữ liệu kiểu laser scan. Xem phụ lục 2 để sử dụng package depthimage_to_laserscan.

Hình 4.5:(a b) Một số bản đồ 2D đƣợc dựng bằng slam_gmapping 2D, a.1cm/pixel b.5cm/1pixel

Một cách khác có thể đơn giản và hiệu quả hơn slam_gmapping đó là, ta có thể cung cấp cho Navigation Stack một bản đồ đƣợc vẽ sẵn, miễn sao bản đồ cung cấp thông tin chinh xác nhất về môi trƣờng mà robot hoạt động. Trong hình dƣới các khu vực màu trắng báo hiệu không gian trống, các khu vực màu xám là không có thông tin và màu đen là vật cản. Bản đồ đƣợc vẽ trong một khu vực của tòa nhà với kích thƣớc 2860x1416 pixel. Với mỗi pixel tƣơng ứng 1cm, kích thƣớc thực tế của khu vực là hàng trăm m2

, Navigation Stack vẫn có thể hoạt động tốt.

- Với sự đóng góp từ cộng đồng, một số package cung cấp ứng dụng quét 3D trên ROS nhƣ ccny_rgbd hay rgbd_slam có thể tìm ảnh 3 chiều của môi trƣởng sau đó chiếu xuống mặt đất tạo ảnh 2D cho robot di chuyển. Phƣơng pháp tạo ảnh 3D của môi trƣờng là bằng cách xử lý ảnh màu point cloud RGBXYZ để tìm các điểm đặc trƣng tƣơng ứng trong các khung ảnh và ƣớc lƣợng độ dịch chuyển của robot dựa vào thông số không gian của các điểm đó. Phƣơng pháp này hiệu quả ở các khu vực trong phòng có bối cảnh phức tạp giúp cho chƣơng trình tìm đƣợc nhiều điểm đặc trƣng ổn định. Phƣơng pháp này không hiệu quả hơn hơn phƣơng pháp trên cho lắm vì phụ thuộc nhiều vào khu vực cụ thể, có khối lƣợng tính toán lớn và các đối tƣợng trên 2D map có đồ dày không cần thiết.

CHƢƠNG V – THỰC NGHIỆM VÀ ĐÁNH GIÁ

5.1. Bố trí và quan sát:

Dƣới đây là hình ảnh thực tế khả năng tránh vật cản của robot trong chƣơng trình. Bản đồ tĩnh đƣợc quét từ một khu vực có diện tích 4.6x3.5 m2

. Ta thiết đặt tọa độ ban đầu và tọa độ đích của robot qua interface của ROS. Trong quá trình di chuyển, ta bố trí các vật cản chƣa biết trƣớc trên lộ trình cục bộ của robot. Sau khi robot tới vị trí mong muốn, ta cho robot trở về vị trí ban đầu, trong quá trình trở về, ta chắn mất lối đi của robot và nhƣ vậy bắt buộc robot phải thay đổi lộ trình hoàn toàn.

Hình 5.2:(a b) Khu vực khảo sát khả năng lập lộ trình và tránh vật cản của robot.

Khu vực màu cam là hình chiếu của vật cản trên mặt phẳng 2D của bản đồ, các đƣờng màu đỏ là lát cắt laser trích từ point cloud có một độ cao cách mặt đất. Ảnh tử camera RGB của Kinect ở bên trái là tầm nhìn thực tế của robot

Hình 5.3: Chọn tọa độ đích cho robot

Ở trạng thái thiết đặt, kích thƣớc particle filter của robot còn lớn, độ không chắc chắn của tọa độ lớn. Trong quá trình di chuyển, robot sẽ nhận đƣợc các giá trị đo đạc từ cảm biến làm tăng độ chắc chắn về tọa độ xung quanh vị trí thực tế. Ta có thể thấy hình dạng của particle filter đã dày hơn ở tâm robot. Path-plan màu xanh mà navigation stack tính ra đƣợc là lộ trình tối ƣu theo global costmap từ bản đồ tĩnh mà ta cung cấp. Trong quá trình di chuyển, sự xuất hiện của một số vật cản chƣa biết trƣớc làm xuất hiện các cụm giá trị xác suất cá biệt ở xung quanh robot. Ta có thể quan sát đƣợc robot chƣa phát hiện đƣợc vật cản có độ cao thấp hơn độ cao của Kinect tại thời điểm này. Để phát hiện đƣợc vật thể trên, ta phải sử dụng dữ liệu cảm biến point cloud. Đây chính là lý do trong phần lập trình cho Navigation Stack ở chƣơng 4, ta thiết đặt thông số sensor source gồm cả point cloud và laser scan dù cả hai đều đƣợc cung cấp bởi Kinect.

Hình 5.5:(a d) Quá trình mapping và path -planning của robot

Khi đã cập nhật các vật cản mới, robot đã thay đổi path-plan, đồng thời particle filter đã có mật độ dày hơn quanh vị trí thực tế.

Hình 5.7:(a h) Quá trình di chuyển của robot

Trong hình 5.7 a, ta có path-plan để trở về vị trí đầu của robot đƣợc tính toán tối ƣu trong local costmap mà robot còn lƣu lại trong hành trình trƣớc đó. Tuy nhiên khi quay lại theo lộ trình này, robot phát hiện vật cản mới và path-plan hiện tại sẽ dẫn tới ngõ cụt. Robot phải thay đổi triệt để lộ trình khác để về đúng vị trí đặt.

Hình 5.8:(a b) Đƣờng màu đỏ: Lộ trình ƣớc lƣợng của robot khi đi đến một điểm và trở về

Hình 5.8 b minh họa một thực nghiệm khác khi robot di chuyển từ hành lang ra đến thang máy và quay về cửa phòng xuất phát, quãng đƣờng đã di chuyển của robot đƣợc vẽ lại bằng đƣờng màu đỏ.

5.2. Đánh giá khả năng định hƣớng di động

Navigation Stack đã đƣợc triển khai thành công trên robot tự hành trong nhà. Robot thể hiện đầy đủ ba đặc tính của định hƣớng là localization, path-planning và mapping. Với thông số sai số cho phép trên mỗi phƣơng là 10cm, và sai số của góc định hƣớng là 0.05 radiance, robot có thể tới đích mà không dao động. Bản đồ robot di chuyển có thể đƣợc cung cấp đo đạc bằng chính cảm biến Kinect gắn trên robot hoặc bằng một phƣơng pháp hiệu quả hơn bất kỳ.

Với sự đo đạc từ cảm biển Kinect, bản đồ tƣơng đối chính xác thu đƣợc từ nhiều lần thực nghiệm điều khiển bằng tay cho robot di chuyển quanh phạm vi cần khảo sát, sau đó phải chỉnh sửa lại các sai lệch trong quá trình khảo sát nhƣ quay bản đồ, bỏ qua một số một số phạm vi không cần thiết.

Khi di chuyển, robot chỉ có thể phát hiện ra vật cản có độ cao trên 0.4m xuất hiện trƣớc cảm biến trong khoảng cách 0.6m và vật cản trên 0.1m cách cảm biến 1 mét và xử lý điều chỉnh hƣớng đi.

Trong một bản đồ khép kín, khi yêu cầu robot đi đến 1 địa điểm nào đó, robot sẽ tính toán và chọn hƣớng đi ngắn nhất, tuy nhiên, nếu trên đƣờng đi gặp phải chƣớng ngại vật xuất hiện và chặn mất lối đi này, robot có thể dừng lại và tính toán một hƣớng đi khác.

Bên cạnh đó, với kích thƣớc hình chiếu 0.4x0.4m2

, do cấu trúc không đối xứng bán kính ngoại tiếp của robot là 0.45m lớn hơn cả cạnh hình chiếu. Khi sử dụng kích thƣớc thực tế nhƣ vậy, robot có thể đi xuyên qua những lối rộng hơn 0.9m. Thực tế ta có thể cho robot di chuyển qua những lối rộng 0.6-0.8m khi mật độ vật cản không quá dày.

Một phần của tài liệu Luận văn tốt nghiệp triển khai thuật toán định hướng trên ROS cho robot tự hành trong nhà (Trang 76 - 89)