Tìm đường đi đến đích

Một phần của tài liệu Đồ án robot tự hành vận chuyển hành lí (Trang 94 - 106)

3.2.3.1. Giới thiệu thuật toán Dijkstra

Thuật toán Dijkstra [8], mang tên của một nhà khoa học máy tính người Hà Lan Edsger Dijkstra, là một thuật toán giải quyết bài toán tìm đường đi ngắn nhất nguồn đơn trong một đồ thị có hướng. Thuật toán thực hiện tìm đường đi từ một đỉnh đến tất cả các đỉnh còn lại của đồ thị có trọng số không âm. Thuật toán Dijkstra bình thường sẽ có độ phức tạp là 𝑂

(𝑛2 + 𝑚) trong đó m là số cạnh, n là số đỉnh của đồ thị đang xét. Thuật toán thường được sử dụng trong định tuyến với một chương trình con trong các thuật toán đồ thị hay trong công nghệ hệ thống định vị toàn cầu (GPS), ví dụ như hình 3.32.

GVHD: TS. Trương Công Tuấn 95

3.2.3.2. Tóm tắt giải thuật Dijkstra

Hình 3.32: Tóm tắt giải thuật Dijkstra

3.2.3.3. Tính giải thuật Dijkstra

Giả sử ta có một đồ thị (graph) gồm các node và các trọng số đường đi đến các node như sau:

Bài toán đặt ra là dùng thuật toán Dijkstra để tìm đường đi ngắn nhất từ node A đến tất cả các node còn lại:

GVHD: TS. Trương Công Tuấn 96

Hình 3.33: Graph mẫu

Bước 1: Chọn node A là source node, tính khoảng cách từ node A đến các node liền

kề.

Hình 3.34: Node A là node source

Bước 2: Khoảng cách A-C là ngắn nhất. Xét node C, tính tổng khoảng cách từ node C

đến các node liền kề.

GVHD: TS. Trương Công Tuấn 97

Bước 3: Khoảng cách từ A đến D là nhỏ nhất. Xét node D và tính khoảng cách từ node

D đến các node liền kề. Ta tính được, đường đi từ node (A–DF) = 7+14 = 21 > (A-C-

F) = 16. Nên vẫn giữ nguyên đường đi ngắn nhất từ A-F là (A-C-F).

Hình 3.36: Xét node D là source node

Bước 4: Ở node B, ta thấy khoảng cách từ A đến E có hai đường đi. Khoảng cách

đường đi từ (A-C-E) = 4 +17 = 21 > (A-B-E) = 9 + 11 = 20. Nên ta chọn đường đi ngắn nhất từ A-E là (A-B-E).

Hình 3.37: Node B là source node

GVHD: TS. Trương Công Tuấn 98

Hình 3.38: Node F là source node

Bước 6: Ở node E, quãng đường từ A-Z là (A-C-E-Z) = 4+17+5 = 26 > (A- C-F-Z) =

4+12+9 = 25. Nên ta chọn đường đi nhỏ nhất từ A-Z là (A-C-F-Z)

Hình 3.39: Node E là source node

Từ đó ta lập ra bảng sau:

Plan Source (adsbygoogle = window.adsbygoogle || []).push({});

Node Nodes

GVHD: TS. Trương Công Tuấn 99

A (0) A 9 (A-B) 4 (A-C) 7(A-D)

A-C (4) C 9 (A-B) 7(A-D) 21 (A-C-E) 16 (A-C-F) A-D (7) D 9 (A-B)   21 (A-C-E) 16 (A-C-F) A-B (9) B    20 (A-B-E) 16 (A-C-F) A-C-F (16) F    20 (A-B-E) 25 (A-C-F-Z) A-B-E (20) E      25 (A-C-F-Z)

Bảng 3.2: Kết quả thuật toán Dijkstra

3.3.2.4. Sử dụng giải thuật Dijkstra cho lập kế hoạch đường đi toàn cục (Global planner)

Với mục đích tìm đường đi ngắn nhất cho robot đến đích dựa trên bản đồ môi trường đã được lập sẵn. Thuật toán Dijkstra là một trong các thuật toán tìm đường đi chính xác và tối ưu nhất được sử dụng hiện nay. Bản đồ môi trường chính là một graph mà trong đó các node chính là các pixel trên bản đồ. Nếu pixel nào biểu thị vật cản, tường,… thì khoảng cách từ các pixel lân cận đến pixel đó là . Dựa vào giá trị của các pixel trên bản đồ, giải thuật tìm đường đi Dijkstra sẽ tính toán khoảng cách từ vị trí ban đầu đến mọi pixel trên bản đồ, từ đó tìm ra đường đi ngắn nhất từ vị trí ban đầu đến đích.

GVHD: TS. Trương Công Tuấn 100

Hình 3.40: Quá trình tìm đường trên bản đồ lưới (grid map)

Trong hình 3.41(a) ta có thể thấy từ vị trí ban đầu, thuật toán bắt đầu thực hiện tính toán và cập nhập khoảng cách ngắn nhật đến vị trí đích. Quá trình này sẽ diễn ra trên toán bộ bản đồ như hình 3.41(b), (c), do đó sẽ mất thời gian trong quá trình tính toán. Nhưng đổi lại, ta sẽ tìm được đường đi tối ưu nhất, ngắn nhất để đến được đích, như hình 3.41(d).

GVHD: TS. Trương Công Tuấn 101

Hình 3.41: Tìm đường đi trên thực tế

3.2.3.5. Thuật toán Dynamic Window Approach để tránh vật cản cho lập kế hoạc đường đi cục bộ (local planner

Thuật toán Dynamic Window Approach (DWA) [9] là dùng để tìm ra một tín hiệu điều khiển hợp lý gửi xuống robot nhằm mục đích điều khiển nó đến đích an toàn, nhanh chóng dựa trên global planner đã hoạch định từ trước. Thuật toán này gồm hai bước chính là cắt giảm không gian tìm kiếm (serarch space) của vận tốc và tìm được vận tốc tối ưu trong không gian tìm kiếm đó.

Trong lập kế hoạch đường đi cục bộ thì bên cạnh DWA người ta còn hay sử dụng thuật toán Time Elastic Band (TEB). Bảng dưới đây so sánh một vài tiêu chí của DWA và TEB:

GVHD: TS. Trương Công Tuấn 102

các tư thế của robot sắp tới. Độ phức tạp Gánh nặng tính toán nhẹ,

yêu cầu đầu vào là vận tốc để đưa ra dự đoán. Gánh nặng tính toán nặng do yêu cầu về động học, động lực học, hình dạng hình học và giới hạn an toàn của robot.

Chất lượng Đảm bảo các ràng buộc được đưa ra (đường đi toàn cục, độ vượt chướng ngại vật,…)

Các ràng buộc có thể không được đảm bảo trong mọi trường hợp (độ vượt chướng ngại vật, giới hạn vận tốc)

Phù hợp Robot đa hướng Hầu hết các loại robot

Bảng 3.3: So sánh hai thuật toán DWA và TEB

Trong đồ án này nhóm quyết định chọn thuật toán DWA áp dụng vào trong kế hoạch đường đi cục bộ bởi các ưu điểm về đồ nhỏ gọn cũng như yêu câu không quá cao từ đề tài.

a) Không gian tìm kiếm

Các vận tốc có thể điều khiển được trong không gian tìm kiếm được cắt giảm theo ba bước sau:

 Quỹ đạo tròn: thuật toán DWA chỉ xét đến quỹ đạo là hình tròn (đường cong) được xác định duy nhất bởi một cặp vận tốc thẳng và vận tốc xoay (𝑣, 𝜔).

 Vận tốc cho phép: nhằm tạo ra một quỹ đạo an toàn cho robot để tránh vật cản. Một cặp vận tốc (𝑣, 𝜔) được cho phép là khi robot có thể dừng trước vật cản gần nhất mà không có sự va chạm trên đường cong tương ứng với vận tốc đó. Vận tốc cho phép được định nghĩa như sau

𝑉𝑎 = {(𝑣, 𝜔) ∣ 𝑣 ≤ √2 ⋅ dist (𝑣, 𝜔) ⋅ 𝑣˙𝑏∧ 𝜔 ≤ √2 ⋅ dist (𝑣, 𝜔) ⋅ 𝜔𝑏} (3.48) Trong đó:

+𝑉𝑎 là chuỗi các giá trị vận tốc (𝑣, 𝜔) cho phép robot dừng trước vật cản mà không có sự va chạm.

GVHD: TS. Trương Công Tuấn 103 (adsbygoogle = window.adsbygoogle || []).push({});

 dist (𝑣, 𝜔) là khoảng cách nhỏ nhất mà robot dừng trước vật cản để không có sự va chạm.

+ 𝑣˙𝑏, 𝜔𝑏 là gia tốc của vận tốc thẳng và vận tốc xoay tối đa nếu robot di chuyển sẽ gây va chạm với vật cản.

Hình 3.42: Vận tốc cho phép Va trong DWA– [9]

 Dynamic window: nhằm hạn chế vận tốc cho phép đối với những vận tốc có thể đạt được trong khoảng chu kỳ cho trước với gia tốc tối đa của robot. Để Δ𝑡 là khoảng thời gian mà trong đó gia tốc 𝑣˙, 𝜔˙ sẽ được thực thi để (𝑣𝑎, 𝜔𝑎) là vận tốc thực được gửi xuống robot. Từ đó, vận tốc 𝑉𝑑 sẽ được định nghĩa như sau

𝑉𝑑 = {(𝑣, 𝜔) ∣ 𝑣 ∈ [𝑣𝑎 − 𝑣˙ ⋅ Δ𝑡, 𝑣𝑎 + 𝑣˙ ⋅ Δ𝑡] ∧ 𝜔 ∈ [𝜔𝑎− 𝜔˙ ⋅ Δ𝑡, 𝜔𝑎 + 𝜔˙ ⋅ Δ𝑡]}

(3.49)

Hình 3.43: Vận tốc cho phép Vd trong DWA – [9]

Các hạn chế trên đã áp đặt lên không gian tìm kiếm vận tốc, sinh ra vùng Vr trong cửa sổ động. Gọi Vs là không gian của các vận tốc khả thi (có thể đạt được), khi đó vùng Vr được coi là giao của các khu vực giới hạn (vùng màu trắng):

GVHD: TS. Trương Công Tuấn 104

mang giá trị tối đa khi robot di chuyển trực tiếp về phía đích. Giá trị của heading (𝑣, 𝜔) được tính bởi công thức 180 − 𝜃, với 𝜃 là góc giữa hướng của robot và điểm đích.

Hình 3.44: Ví dụ về góc 𝜃 tại một vị trí dự đoán của robot [9]

 Không gian trống (clearance): hàm dist (𝑣, 𝜔) thể hiện khoảng cách tính từ robot đến vật cản gần nhất nằm trên quỹ đạo cong của nó. Giá trị này sẽ rất lớn nếu không có vật cản nằm trên quỹ đạo cong di chuyển của nó. Giá trị này càng nhỏ thì việc nó đối mặt với vật cản càng cao, khi đó nó sẽ di chuyển xung quanh vật cản ấy.  Vận tốc: hàm vel (𝑣, 𝜔) là vận tốc di chuyển thẳng của robot và hỗ trợ di chuyển

nhanh hơn.

 Các hệ số 𝛼, 𝛽, 𝛾 được chọn sao cho phù hợp với đặc tính của robot và môi trường hoạt động. Khi hàm mục tiêu có giá trị lớn nhất thì quȳ đạo tối ưu sẽ được chọn với vận tốc (𝑣, 𝜔) tốt nhất và là kết quả của thuật toán.

GVHD: TS. Trương Công Tuấn 105

Hình 3.45: Lưu đồ thuật toán DWA

3.2.3.6. Kết luận

Như vậy ta đã biết để điều hướng thì ta cần lên hai kế hoạch đường đi là kế hoạch đường đi cục bộ và kế hoặc đường đi toàn cục. Bảng dưới tóm tắt về chức năng và so sanh giữa hai kế hoạch này trong vai trò điều hướng.

Lập kế hoạch đường đi toàn cục Lập kế hoạch đường đi cục bộ

GVHD: TS. Trương Công Tuấn 106

Bảng 3.4: So sánh kế hoạch lập đường đi toàn cục và cục bộ

Trong đó kế hoạch đường đi toàn cục ta sử dụng thuật toán Dijkstra. Ưu điểm lớn nhất của việc hoạch định đường đi toàn cục là tạo ra một con đường hoàn chỉnh đến điểm đích tại thời điểm ban đầu. Nhược điểm là việc tính tiêu tốn nhiều thời gian và đối với các chướng ngại vật động thì giải pháp này không thích hợp. Vấn đề này có thể được giải quyết với sự trợ giúp của quy hoạch đường đi cục bộ. Kế hoạc lập đường đi toàn cục chỉ sử dụng bản đồ tĩnh và vị trí của xe để lập kế hoạch đường đi từ điểm A đến điểm B. Nó không bận tâm đến việc xe di chuyển như thế nào để đạt được con đường này. Trong khi đó, kế hoạch đường đi cục bộ lại sử dụng mô hình chuyển động của rô bốt để tìm ra bộ lệnh tốt nhất để hoàn thành kế hoạch toàn cục. Theo một cách đơn giản, có thể nói rằng, nó sẽ “giả lập” mọi vận tốc quay và chuyển động thẳng mà xe có thể thực hiện và chọn tập hợp vận tốc tốt nhất để hoàn thành mục tiêu. Chuyển động của xe là kết quả của hành động của cả hai kế hoạch, tuy nhiên, kế hoạch cục bộ chịu trách nhiệm điều khiển lái và cách thức xe đi đến đích. Độ chính xác cũng như số lần lặp lại của nó sẽ phụ thuộc vào các phép tính được cung cấp bởi một thuật toán, cụ thể ở đây là thuật toán cửa sổ đông

Một phần của tài liệu Đồ án robot tự hành vận chuyển hành lí (Trang 94 - 106)