1. Trang chủ
  2. » Luận Văn - Báo Cáo

tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d

80 639 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 80
Dung lượng 1,78 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong luận văn này, xe tự hành di chuyển với mục tiêu là xuất phát từ điểm đầu đến điểm đích nào đó cho trước với khoảng cách ngắn nhất và không va chạm vào các vật cản trên đường đi.. T

Trang 1

TRONG KHÔNG GIAN 2D

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Trang 2

TRONG KHÔNG GIAN 2D

Chuyên ngành: CÔNG NGHỆ THÔNG TIN

Trang 3

Tôi xin gởi lời cảm ơn chân thành và sâu sắc nhất đến TS Vũ Đức Lung, người Thầy đã tận tình hướng dẫn tôi trong suốt quá trình thực hiện luận văn cao học và tạo mọi điều kiện để tôi có thể hoàn thành luận văn này

Tôi xin gởi lời cảm ơn đến khoa Khoa Công Nghệ Thông Tin, Đại Học Lạc Hồng; cùng Khoa Kỹ Thuật Máy Tính của Đại học Công Nghệ Thông Tin thuộc Đại học Quốc Gia TP.HCM và Thầy cô trong khoa trong thời gian qua đã góp ý, hỗ trợ cũng như tạo điều kiện thuận lợi cho tôi trong suốt thời gian làm luận văn

Tôi xin cảm ơn gia đình đã động viên và tạo điều kiện tốt nhất để tôi có thể theo đuổi việc học tập và nghiên cứu Tôi gởi lòng tri ân đến tất cả bạn bè, những người

đã động viên, thăm hỏi cũng như đã giúp đỡ thiết thực giúp tôi hoàn tất luận văn này

Trang 4

Tôi cam đoan: Quyển luận văn tốt nghiệp này ngoại trừ các kết quả tham khảo

từ các công trình như đã ghi rõ trong luận văn, các công việc trình bày trong luận văn này là công trình nghiên cứu thực sự của cá nhân, được thực hiện trên cơ sở nghiên cứu lý thuyết, kiến thức kinh điển, nghiên cứu khảo sát tình hình thực tiễn và dưới sự hướng dẫn khoa học của Tiến sĩ Vũ Đức Lung

Một lần nữa, tôi khẳng định về sự trung thực của lời cam kết trên

Đồng Nai, ngày 25 tháng 10 năm 2013

Người cam đoan

Thái Quốc Thắng

Trang 5

Trong những năm gần đây, robot tự hành (hoạt động không cần sự trợ giúp của con người, có thể được điều khiển hoặc theo dõi từ xa thông qua máy tính) đã

và đang rất phát triển từ quân sự tới dân sự, giúp giảm thiểu đáng kể nguy hại và công sức cho con người Một trong những vấn đề chính của robot tự hành là làm như thế nào để xử lý thông tin về môi trường xung quanh và đưa ra hành vi đúng đắn nhất Một robot có thể có rất nhiều hành vi khi hoạt động tự hành, và hành vi cụ thể mà luận văn này hướng đến là hoạch định đường đi ngắn nhất cho robot trong môi trường có nhiều vật cản từ một điểm đầu đến một điểm đích mong muốn nào

đó Sau khi đường đi tốt nhất đã được hoạch định, trong quá trình di chuyển robot

có thể gặp một số tác động ngoại gây cho việc bám đường di chuyển thiếu chính xác Vì vậy, luận văn cũng trình bày một phương pháp giúp robot di chuyển một cách chính xác theo một đường đi đã định trước

Về mặt lý thyết, luận văn tìm hiểu tổng quan các phương pháp tìm đường đi ngắn nhất cho robot, trong đó phương pháp tìm đường đi ngắn nhất cho robot dựa

việc xây dựng một đồ thị tầm nhìn (visibility graph) với độ phức tạp O(n2logn) kết

hợp với thuật toán Dijkstra được mô tả chi tiết Thêm vào đó việc điều khiển robot

di chuyển chính xác theo đường đi này được hiện thực dựa vào lý thuyết bộ điều khiển vi tích phân tỷ lệ (Proportional Integral Derivative - PID), một trong những lý thuyết được sử dụng rộng rãi trong lĩnh vực điều khiển tự động

Về mặt hiện thực, một môi trường kiểm thử được xây dựng để kiểm tra tính khả thi của lý thuyết bao gồm những vật cản giả lập và một robot Lego Mindstorm NXT được điều khiển thông qua máy tính Kết quả thực nghiệm cho thấy robot có thể di chuyển từ một điểm đầu đến một điểm đích mong muốn theo đường đi ngắn nhất mà không va chạm vào các vật cản một cách chính xác Đồng thời trong mô hình kiểm thử một camera quan sát cũng được lắp đặt trên robot, ghi nhận lại những hình ảnh quan sát trên đường đi và gởi về cho máy tính điều khiển nhằm mục đích phục vụ cho việc xử lý thông tin và phát triển luận sau này

Trang 6

Trang Trang phụ bìa

Lời cảm ơn

Lời cam đoan

Tóm tắt luận văn

Mục lục

Danh mục các chữ cái viết tắt

Danh mục bảng

Danh mục hình

Lời mở đầu 1

Chương 1: GIỚI THIỆU ĐỀ TÀI 2

1.1 Lý do thực hiện đề tài 2

1.2 Nội dung đề tài 4

1.3 Tóm lược những kết quả đạt được 4

1.4 Cấu trúc luận văn 5

Chương 2: CÁC CƠ SỞ LÝ THUYẾT LIÊN QUAN 7

2.1 Tổng quát bài toán hoạch định đường đi (path planning) 7

2.1.1 Giới thiệu bài toán hoạch định đường đi 7

2.1.2 Các vấn đề liên quan khi giải quyết bài toán path planning 8

2.1.2.1 Không gian làm việc (Work space): 8

2.1.2.2 Không gian cấu hình (Configuration space): 8

2.1.2.3 Không gian tự do (Free space): 9

2.1.2.4 Vật di chuyển: 9

2.1.2.5 Vật cản (Obstacle): 10

2.1.2.6 Đường cong được rút ngắn nhất: 10

2.2 Tổng quan các giải pháp cho bài toán path planning theo visibility graph 12

2.3 Tìm hiểu giải thuật tìm đường đi ngắn nhất với độ phức tạp O(n2logn) 14

2.4 Tìm đường đi ngắn nhất trong visibility graph với giải thuật Dijkstra 18

Trang 7

3.1 Tìm hiểu Lego Mindstorm NXT 22

3.1.1 Giới thiệu 22

3.1.2 Lego Mindstorm NXT 23

3.1.3 Intelligent Brick NXT 25

3.1.4 Bluetooth trên Brick NXT 26

3.1.5 Lập trình với Brick NXT 27

3.1.5.1 NXT-G 27

3.1.5.2 C# và Microsoft Robotics Developer Studio 28

3.1.5.3 Các ngôn ngữ khác 28

3.2 Microsoft robotics develop studio 29

3.2.1 Giới thiệu 29

3.2.2 Lập trình 31

3.2.3.1 Các ngôn ngữ lập trình dạng viết code 31

3.2.3.2 Visual Programming Language (VPL) 31

3.2.3 Các robot được hỗ trợ 31

Chương 4: TÌM HIỂU BỘ ĐIỀU KHIỂN PID CHO ROBOT LEGO MINDSTORMS 32

4.1 Giới thiệu tổng quan về Bộ điều khiển PID 32

4.2 Các khâu chức năng trong bộ điều khiển PID 35

4.2.1 Khâu tỷ lệ “P” trong PID 35

4.2.1.1 Các mức công suất từ P đến mô tơ thực tế 39

4.2.1.2 Code mã giải cho bộ điều khiển P 39

4.2.1.3 Tóm tắt bộ điều khiển tỷ lệ “P” 42

4.2.2 Khâu tích phân “I” trong bộ điều khiển PID 42

4.2.2.1 Tổng thời gian chạy của error 43

4.2.2.2 Code mã giải cho bộ điều khiển PI 44

4.2.3 Khâu vi phân “D” của bộ điều khiển PID 45

4.2.3.1 Code mã giải cho bộ điều khiển PID 47

4.2.3.2 Điều chỉnh bộ điều khiển PID 48

4.3 Kết luận: 49

Trang 8

5.2 Tổng quan thiết kế 51

5.3 Hiện thực các hoạt động của xe tự hành trên mô hình thật 53

5.3.1 Chương trình tính đường đi ngắn nhất của xe tự hành: 53

5.3.2 Chương trình điều khiển, giao tiếp với xe tự hành 55

5.3.3 Xây dựng chức năng bám đường đi chính xác cho robot Lego Mindstorm NXT dựa trên PID: 59

5.3.4 Xây dựng chức năng xác định vị trí hiện tại của xe tự hành 61

5.3.5 Xây dựng chức năng ghi hình ảnh trên đường đi của xe tự hành 63

5.4 Kết luận 64

Chương 6: KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN 65

6.1 Kết quả đạt được 65

6.2 Hướng phát triển đề tài 66 TÀI LIỆU THAM KHẢO

Trang 9

AI Artificial Intelligent

CCR Concurrency and Coordination Runtime

DSS Decentralized Software Services

MRDS Microsoft Robotics Develop Studio

PID Proportional Integral Derivative

SOA Service Oriented Architecture

VLSI Very Large Scale Integrated

VPL Visual Programming Language

VSE Visual Simulation Environment

Trang 10

Bảng 3.1 Một số ngôn ngữ có thể lập trình với Lego Mindstorm NXT 28

Bảng 4.1 Code mã giải cho bộ điều khiển P 40

Bảng 4.2 Code mã giải cho bộ điều khiển PI 44

Bảng 4.3 Code mã giải cho bộ điều khiển PID 47

Bảng 4.4 Giá trị K’ của phương pháp Ziegler-Nichols 49

Bảng 5.1 Chương trình điều khiển Lego Mindstorm NXT bằng C# 57

Bảng 5.2 PID theo phương pháp điều chỉnh Ziegler–Nichols 60

Trang 11

Hình 2.1 Vật cản dạng đa giác lõm 10

Hình 2.2 Đường cong được rút ngắn 10

Hình 2.3 Một đường cong được rút ngắn bằng đường cắt 11

Hình 2.4 G là tập hợp các đoạn đường đơn giản G v là tập các đường kết nối giữa mỗi đỉnh (visibility graph) 12

Hình 2.5 Visibility graph được tạo từ một tập các đa giác 13

Hình 2.6 Ví dụ một đường đi ngắn nhất trong visibility graph 14

Hình 2.7 Ví dụ về các cạnh giao nhau và cây tìm kiếm tương ứng 15

Hình 2.8 Điểm quét được bắt đầu với một nửa đường thẳng p 15

Hình 2.9 Một số ví dụ trong đó r chứa nhiều đỉnh 16

Hình 3.1 RCX 23

Hình 3.2 NXT 23

Hình 3.3 Các dạng robot thông dụng của họ Lego Mindstorm NXT 24

Hình 3.4 Các cảm biến trong bộ Lego Mindstorm NXT 25

Hình 3.5 Khả năng kết nôi với Bluetooth của Lego Mindstorm NXT 26

Hình 3.6 Môi trường lập trình trên NXT-G 27

Hình 4.1 Minh họa điểm đơn giản của robot với tất cả các chi tiết cần thiết 32

Hình 4.2 Cho thấy giá trị của ánh sáng màu trắng và màu đen 34

Hình 4.3 Phân chia ánh sáng thành ba phần 34

Hình 4.4 Minh họa ba mức độ của đường đi 35

Hình 4.5 Minh họa cách biến đổi trục để cân bằng giá trị error 36

Hình 5.1 Tổng quan về mô hình kiểm thử với xe tự hành 52

Hình 5.2 Giao diện mô phỏng 2D môi trường chưa vật cản 54

Hình 5.3 Ví dụ một tập tin gw trong thư viện LEDA hỗ trợ tạo đồ thị 54

Hình 5.4 Hình ảnh tìm đường di ngắn nhất trong chương trình demo 55

Hình 5.5 Kết quả kiểm tra thực tế 59

Hình 5.6 Quỹ đạo mong muốn và tập các đường đi của robot 60

Hình 5.7 Giao diện màn hình chính của chương trình CSTracker6 62

Hình 5.8 Ảnh thí nghiệm với robot Mindstorm NXT được chụp từ camera 62

Hình 5.9 Giao diện chương trình camera 64

Trang 12

LỜI MỞ ĐẦU

Con người thường có thói quen dự định một việc gì đó trước khi làm và hầu như con người biết cần những hành động nào để đạt được những dự định đó Để giúp máy tính làm việc như con người, nghĩa là biết những hành động nào có thể đi đến mục tiêu, máy tính cần được cung cấp một lượng tri thức Tri thức ở đây rất đa dạng, máy tính “hiểu” được môi trường xung quanh nó như thế nào và các thao tác cần làm là việc rất khó khăn Một máy tính có những trang thiết bị hiện đại nhất hiện nay vẫn chưa thể cảm nhận hết những thay đổi của môi trường Tuy nhiên, với

sự phát triển mạnh mẽ của công nghệ thông tin những năm gần đây, máy tính đã có thể ghi nhận những tri thức liên quan và xử lý nó trong một số bài toán cụ thể đơn giản

Cùng với xu hướng này, vấn đề cụ thể mà luận văn hướng đến là xe tự hành và máy tính; cung cấp cho những hệ thống này một lượng tri thức cần thiết về môi trường mà nó sẽ hoạt động trong đó cũng như sinh ra một tập các hành vi cần cho một mục tiêu cụ thể nào đó Trong luận văn này, xe tự hành di chuyển với mục tiêu

là xuất phát từ điểm đầu đến điểm đích nào đó cho trước với khoảng cách ngắn nhất

và không va chạm vào các vật cản trên đường đi Một chương trình máy tính sẽ nhận lượng tri thức biết trước về môi trường, xử lý và sinh ra một tập các đường đi

dự đoán trước cho xe tự hành Thêm vào đó, xe tự hành luôn được điều khiển để đảm bảo di chuyển theo đúng tập đường đã quy hoạch Đề tài thực hiện trong luận văn là những bước đi đầu tiên trong việc hướng đến một hệ thống xe tự hành có đủ khả năng tự vận động và di chuyển trong không gian phức tạp với khả năng thu nhận tri thức cũng như xử lý nó

Phẩn việc cụ thể trong luận văn này là tổng quan lại cơ sở lý thuyết của bài toán quy hoạch đường đi (path planning), cụ thể là phương pháp dùng visibility graph Trong đó, luận văn đóng góp giải thuật xây dựng visibility graph với độ phức

tạp O(n2logn) và khối chức năng điều khiển xe tự hành di chuyển chính xác theo

đường đi đã được hoạch định – dùng ý tưởng từ bộ điều khiển PID (Proportional Integral Derivative) Bên cạnh đó một mô hình kiểm thử bao gồm một sân giả lập với nhiều vật cản và một robot Lego Mindstorm được xây dựng để kiểm tra tính khả thi của giải thuật

Trang 13

đi từ một điểm khởi đầu đến điểm kết thúc trong không gian hai chiều hoặc nhiều chiều, đồng thời phải tránh được một tập hợp các vật cản Không gian có thể là tĩnh (các vật cản cố định và được biết trước) hoặc động (các vật cản không cố định hoặc không được biết trước) Quy hoạch đường chủ yếu có ba phương pháp tiếp cận: dựa trên tìm kiếm (Search-based), dựa trên lấy mẫu (Sampling-based) và tìm đường tổ hợp (Combinatorial-planning) [19] Đặc biệt với Combinatorial-planning thì việc tìm đường đi phải thông qua việc xây dựng một tập các đường có thể đi (roadmap)

và một trong những roadmap phổ biến là visibility graph Việc xây dựng một tập các đường có thể đi là nhiệm vụ chính trong toàn bộ quá trình Tuy nhiên, với một

số ứng dụng thực tế, ví dụ như: môi trường có nhiều vật cản thì giai đoạn này tốn rất nhiều thời gian Nhiều phương pháp đã được đưa vào để giảm độ phức tạp từ

O(n3) xuống O(n2logn) Tuy nhiên, kết quả O(nlogn) chỉ là một gợi ý lý thuyết [15]

Các tác giả của phương pháp này cũng khuyến cáo rằng nó là khá khó khăn để đạt

được độ chính xác O(nlogn) trong khi thực hiện, bởi vì cấu trúc dữ liệu của

O(nlogn) quá phức tạp Mặc dù tiêu tốn nhiều thời gian nhưng phương pháp tìm các

tập đường có thể đi vẫn hữu ích trong các ứng dụng tìm một đường đi đến điểm đích cho xe di chuyển tự động một cách chính xác Phương pháp này không yêu cầu thời gian thực hoặc trong môi trường tĩnh với số lượng vật cản trung bình, bởi vì nó đơn giản, trực quan và có thể thực hiện được Ngoài ra, phương pháp này có thể

Trang 14

được áp dụng trong nhiều lĩnh vực khác như CAD/CAM, xử lý hình ảnh, VLSI, v.v…

Ở Việt Nam, trong những năm gần đây, một số đề tài cũng đã tìm hiểu và áp dụng lý thuyết của bài toán path planning vào các thiết bị tự hành trong thực tế Luận văn cao học “Nghiên cứu và xây dựng các giải thuật tìm đường đi ngắn nhất tránh vật cản cho thiết bị không người lái” của Trần Thị Như Nguyệt, Trường Đại Học Bách Khoa TP Hồ Chí Minh, năm 2011 đã tìm hiểu các giải thuật xây dựng visibility graph của nhánh Combinatorial-planning với nhiều độ phức tạp khác nhau, đồng thời đưa ra một vài phương pháp cải tiến cho quá trình xây dựng visibility graph và hiện thực kết quả trên xe tự hành thật [3] Tuy nhiên phần mềm ứng dụng vẫn chưa đầy đủ và chưa có thể áp dụng được trong thực tế

Thêm vào đó, có các đề tài khác như “Lập lộ trình chuyển động cho robot” của Trần Duy Quang, đồ án môn học, Trường Đại Học Khoa Học Tự Nhiên, năm

2011 [2]; Luận văn cao học “Một số phương pháp chính xác lập lộ trình chuyển động cho Robot” của Nguyễn Thị Thu Thủy, Trường Đại Học Thái Nguyên, năm

2008 [1] và luận văn cử nhân “Nghiên cứu Planning để giải bài toán xác định lộ trình” của Trần Thủy Tiên và Trần Hồng Thái, Trường Đại Học Khoa Học Tự Nhiên, năm 2003 [4] phần lớn tập trung vào tìm hiểu, nghiên cứu lý thuyết; chưa xây dựng các ứng dụng hỗ trợ một xe tự hành thật

Từ những lý do trên, luận văn “Tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2D” này

sẽ tập trung tìm hiểu lý thuyết của bài toán tìm đường theo hướng planning, cụ thể là phương pháp dùng visibility graph với độ phức tạp giải thuật là

combinatorial-0(n2logn) Và trên cơ sở kế thừa từ luận văn cao học [3], luận văn cũng sẽ xây dựng

thêm các khối chức năng cần thiết để hoàn chỉnh phần mềm ứng dụng của [3] và hiện thực thêm khối chức năng bám đường khi di chuyển giúp xe tự hành di chuyển theo đường đi định trước một cách chính xác kết hợp với các giải thuật tìm đường

có thể đưa vào thực tế sử dụng dễ dàng Thêm vào đó, luận văn cũng xây dựng thêm khối chức năng truyền nhận hình ảnh giữa xe tự hành và máy tính điểu khiển nhằm phục vụ cho việc xử lý thông tin sau này

Trang 15

1.2 Nội dung đề tài

Các nội dung chính trong đề tài gồm:

- Tìm hiểu tổng quát bài toán path planning

- Tìm hiểu tổng quan về các giải pháp cho bài toán tìm đường trên mặt phẳng, với các đặc tính cụ thể:

+ Vật cản đa giác lồi và lõm;

+ Vật cản tĩnh không di chuyển;

+ Đối tượng di chuyển trong không gian có kích thước (hình tròn)

- Tìm hiểu các giải thuật liên quan đến visibility graph với độ phức tạp O(n3)

và O(n2logn)

- Ứng dụng giải thuật Dijkstra để xây dựng đường đi ngắn nhất

- Tìm hiểu Bộ điều khiển PID cho robot Lego Mindstorms

- Tìm hiểu Lego Mindstorm NXT và Microsoft Robotics Develop Studio

- Trên những cơ sở lý thuyết đó, đề tài hoàn chỉnh các khối chức năng cần thiết để hoàn chỉnh phần mềm có thể áp dụng vào xe tự hành thật Các khối chức năng cụ thể dự kiến là:

+ Xây dựng chức năng điều khiển xe tự hành di chuyển chính xác theo đường đi ngắn nhất từ phần mềm

+ Xây dựng chức năng truyền hình ảnh trên đường đi về máy tính điều khiển

- Hiểu cách giải bài toán path planning theo visibility graph với các độ

phức tạp O(n3) và O(n2logn)

- Sau khi visibility graph được tạo ra, sẽ dùng giải thuật Dijkstra để tính đường đi ngắn nhất từ điểm A tới điểm B nào đó

- Tìm hiểu Lego Mindstorm NXT; Microsoft Robotics Develop Studio

Trang 16

- Bộ điều khiển PID cho robot Lego Mindstorms

+ Khối chức năng truyền hình ảnh trên đường đi về máy tính điều khiển

- Xe tự hành nhận lệnh và đường đi ngắn nhất mà mình sẽ đi và di chuyển theo đường đi đó

- Một xe tự hành thật và một sân trên đó có chứa các vật cản sẽ được xây dựng để kiểm thử kết quả trong thực tế

1.4 Cấu trúc luận văn

Các chương còn lại của luận văn bao gồm:

Chương 2: Các cơ sở lý thuyết liên quan

2.1 Tổng quát bài toán path planning

2.2 Tổng quan các giải pháp cho bài toán path planning theo visibility graph

2.3 Tìm hiểu giải thuật tìm đường đi ngắn nhất với độ phức tạp

O(n2logn)

2.4 Giải thuật Dijkstra cho một đường đi ngắn nhất

Chương 3: Lego Mindstorm NXT và Microsoft Robotics Develop Studio 3.1 Tìm hiểu Lego Mindstorm NXT

3.2 Microsoft Robotics Develop Studio

Trang 17

Chương 4: Tìm hiểu bộ điều khiển PID cho robot Lego Mindstorms

4.1 Giới thiệu tổng quan về Bộ điều khiển PID Controller

4.2 Các khâu chức năng trong bộ điều khiển PID

4.3 Kết luận

Chương 5: Hiện thực và đánh giá kết quả

5.1 Mục tiêu kiểm tra

5.2 Tổng quan thiết kế

5.3 Hiện thực

5.3.1 Môi trường và đối tượng cụ thể được sử dụng kiểm tra

5.3.2 Hiện thực các hoạt động của xe tự hành trên mô hình thật 5.3.2.1 Chương trình tính đường đi ngắn nhất của robot

5.3.2.2 Xây dựng khối chức năng bám đường đi chính xác cho

robot Lego Mindstorm NXT dựa trên PID

5.3.2.3 Chương trình điều khiển, giao tiếp với xe tự hành

5.3.2.4 Xây dựng chức năng xác định vị trí hiện tại của xe tự

hành

5.4 Kết luận

Chương 6: Kết luận và hướng phát triển

Trang 18

Chương 2:

CÁC CƠ SỞ LÝ THUYẾT LIÊN QUAN

2.1 Tổng quát bài toán hoạch định đường đi (path planning)

2.1.1 Giới thiệu bài toán hoạch định đường đi

Path planning đôi khi được gọi là “Motion planning” là hành động của việc tìm kiếm một đường đi để đi từ vị trí A đến vị trí B Path planning là một bài toán tìm đường đi đã được áp dụng nhiều trong các lĩnh vực như sinh tin học, CAD/CAM, layout, xử lý ảnh,… và đặc biệt rất nhiều trong lĩnh vực robot Bài toán đặt ra là phải tìm ra đường đi tốt nhất theo một tiêu chuẩn tối ưu nào đó, sao cho một đối tượng có thể di chuyển dọc theo đường này từ điểm bắt đầu đến điểm kết thúc và không va chạm vào các vật cản trên đường đi trong môi trường hai hoặc nhiều chiều Các vật cản, điểm xuất phát và điểm đích là những đối tượng có kích thước và hình dạng khác nhau và motion planning là một trong những nhiệm vụ quan trọng trong việc kiểm soát thông minh của một robot di chuyển tự động Nó

thường được phân tách ra thành path planning và trajectory planning Path planning

là dùng để tạo ra một đường đi tự do có sự va chạm trong một môi trường với các vật cản và tối ưu hóa nó thông qua một số tiêu chí [20] Trajectory planning là lịch trình di chuyển của một robot, giúp robot di chuyển dọc theo đường đi đã được lập

kế hoạch trước

Có 2 phương pháp đã được đề xuất để giải quyết các vấn đề qui hoạch động

của một robot di động Phương pháp thứ nhất là Off-line planning là một địa hình

mà khi robot di chuyển trong đó được xem như tĩnh (điểm xuất phát và đích đến là biết trước và cố định, kích thước các vật cản không thay đổi, được cố định và biết

trước) hay còn gọi là tìm đường tĩnh toàn cục Phương pháp thứ hai là On-line

planning, tập trung vào việc giải quyết những sự không chắc chắn khi robot di

chuyển trong môi trường động hay còn gọi là tìm đường động cục bộ Trong một số

tài liệu, On-line path planning cũng được nghiên cứu với tên gọi navigation

problem

Trang 19

2.1.2 Các vấn đề liên quan khi giải quyết bài toán path planning

Giữa path planning và path mapping (bản đồ đường đi) thì không nên nhằm lẫn bởi vì path mapping tác động đến đặc tính của môi trường đường đi mà robot đi qua và có thể giúp nó xác định được vị trí cần đi đến Về mặt nghiên cứu, path planning được phân biệt dựa trên việc tính toán đường đi thông qua biểu hiện bởi tham số thời gian Do các robot khi di chuyển có những ảnh hưởng động học riêng đến từng loại robot, nên đường đi (path) phải được tính toán và kết hợp với nhiều yếu tố khác để giải quyết bài toán path planning:

2.1.2.1 Không gian làm việc (Work space):

Không gian làm việc (work space) là một mặt phẳng hai chiều gồm một robot được xem như một điểm di động và một tập S = {P1 ,… , P t} của các vật cản đa giác được đặt ở những vị trí cố định trước Việc xác định vị trí hoặc hình dạng của robot có thể được xác định bằng vector dịch chuyển Robot di chuyển

được thông qua một vector (x, y) bằng R(x, y) Vị trí của robot được xác định bởi

các tham số tương ứng với số bậc tự do (gọi là DOF - Degrees Of Freedom) của robot Khi robot di chuyển trên mặt phẳng không gian 2 chiều thì có bậc là 2, nếu số bậc tự do là 3 thì robot có thể di chuyển và quay trên mặt phẳng không gian 3 chiều Tham số để robot di chuyển trong không gian 3 chiều thì cao hơn Nhưng do thời gian và điều kiện nên trong luận văn này chỉ đề cập đến robot di chuyển trong mặt phẳng không gian 2 chiều

2.1.2.2 Không gian cấu hình (Configuration space):

Không gian mà các tham số của robot có thể di chuyển được gọi là không gian cấu hình (configuration space) Khái niệm này được giới thiệu bởi

Lozano-Perez [23] Không gian cấu hình được ký hiệu là C( ) Điểm p trong

không gian cấu hình thì tương ứng với một vị trí nhất định (p) của robot trong không gian làm việc Hình dạng của robot trên mặt phẳng cũng được xác định đến không gian làm việc Tuy nhiên, nó được dùng để phân biệt hai khái niệm: không gian làm việc và không gian cấu hình Không gian làm việc là không gian

mà trong đó các robot có thể xoay tròn và di chuyển được trong phạm vi đã được xác định trước; Không gian cấu hình là không gian chứa các tham số của robot Robot được xem là điểm hình tròn trong không gian làm việc, tương ứng bởi

Trang 20

một điểm trong không gian cấu hình và bất kỳ điểm nào trong không gian cấu hình đều tương ứng với một số vị trí của robot trong không gian làm việc

Như vậy, không phải tất cả vị trí của robot trong không gian làm việc thì đều có thể đi được (nơi mà các robot giao nhau với một trong những vật cản

trong tập S) Do đó, điểm tương ứng trong không gian cấu hình không thể xảy ra

Phần của không gian cấu hình bao gồm những điểm này được gọi là không gian cấu hình vùng cấm hay không gian vùng cấm Không gian vùng cấm được ký

hiệu là C forb (R, S) Phần còn lại của không gian cấu hình, bao gồm những điểm

tương ứng với những vị trí tự do nơi mà các robot không cắt bất kỳ vật cản nào thì được gọi là không gian cấu hình tự do hay không gian tự do và nó được ký

hiệu là C free (R,S) Những vị trí của robot được ánh xạ đến những điểm trong không gian cấu hình, tương tự như một vật cản P trong không gian làm việc được ánh xạ tới một tập các điểm p trong không gian cấu hình sao cho (p) cắt nhau với P Tập kết quả đó được gọi là không gian cấu hình vật cản hay C-

obstacle của P

2.1.2.3 Không gian tự do (Free space):

Không gian dùng để thiết lập các cấu hình tránh va chạm với những vật cản

được gọi là C free hay còn gọi không gian tự do Phần bù của C free trong C được

gọi là vật cản hoặc khu vực vùng cấm

Thông thường, khu vực vùng cắm là rất khó để tính toán một cách rõ ràng

hình dạng của C free Tuy nhiên, việc thử nghiệm có được hay không thì hình

dạng đã cho trong C free cũng là hiệu quả Trước tiên, sự di chuyển về phía trước của robot sẽ xác định vị trí hình học của robot, và thử nghiệm sẽ cho thấy sự có

sự va chạm hay không nếu hình dạng của robot va chạm với hình dạng của môi trường

2.1.2.4 Vật di chuyển:

Cần phải xét đến hình dạng của vật di chuyển trong bài toán được thể hiện như thế nào khi nó di chuyển từ điểm xuất phát đến điểm đích, vì nó có ảnh hưởng rất lớn đến quá trình tính toán trong quá trình xây dựng một đường đi tốt nhất Ngoài ra cũng phải xét thêm vật di chuyển có phải là chất điểm hay có kích thước hoặc có bao nhiêu bậc tự do, Trong luận văn này, vật di chuyển được

Trang 21

xem là một đối tượng di chuyển trong không gian có kích thước (hình tròn)

2.1.2.6 Đường cong được rút ngắn nhất:

Mục tiêu chính là tìm đường đi ngắn nhất tránh va chạm vào vật cản từ

điểm bắt đầu (P start ) đến điểm kết thúc (P goal ) của Robot R Chú ý rằng chỉ

cần có một đường đi ngắn nhất trong tất cả các đường đi được xem là ngắn

Để có được một đường đi ngắn nhất tồn tại, điều quan trọng cần lưu ý đến các vật cản là các tập mở Điều này có nghĩa là các robot được phép di chuyển men theo các vật cản

Hình 2.2 - Đường cong được rút ngắn [16]

Trang 22

Nhìn vào cấu trúc của đường đi, xét các đường cong trong Hình 2.2, dễ dàng thấy rằng đường đi này có thể được rút ngắn theo đường gạch nối Có hai đặc điểm của đường đi rút ngắn cần lưu ý:

Đặc điểm thứ nhất, đường đi rút ngắn bao gồm các đoạn đường thẳng

mà không gồm các đoạn đường cong Đặc điểm này là do phần cong của đường đi có thể được thay thế bằng một đoạn thẳng mà đoạn thẳng vẫn tồn tại trong không gian tự do Nếu vật cản là các đa giác và đường đi là đường

cong thì có một điểm p trên vị trí đường cong của đường đi đó Như vậy, vị trí trung tâm của đường cong tập trung tại điểm p và hoàn toàn chứa trong

không gian tự do Khi đó, một phần của đường đi sẽ chứa bên trong vòng tròn và có thể được rút ngắn bằng cách thay thế nó bằng một đoạn nối hai điểm trên đường biên của vòng tròn Ý tưởng này được minh họa trong Hình 2.3

Hình 2.3 - Một đường cong được rút ngắn bằng đường cắt [16]

Đặc điểm thứ hai, đường đi chứa các đỉnh của những vật cản Nguyên

lý này cũng tương tự như đặc điểm thứ nhất Nếu có một đỉnh v trên đường

đi thì sẽ tạo ra một vòng tròn tâm tại v và hoàn toàn nằm trong không gian

tự do, đường đi có thể được rút ngắn bằng cách thay thế một phần của

đường đi được thực hiện lần lượt tại v bởi một đoạn đường đi ngắn hơn Rõ ràng đây sẽ là trường hợp, khi v là một đỉnh vật cản và ranh giới những

đường biên của các vật cản Đặc điểm này được thể hiện theo một cách chính xác trong Bổ đề 2.1 sau đây

Bổ đề 2.1: Bất kỳ đường đi ngắn nhất giữa P start và P goal trong một tập

S là các vật cản đa giác rời nhau thì sẽ có một đường đi đa giác mà bên trong là các đỉnh của S [10]

Trang 23

Để tìm được một đường đi ngắn nhất, thông qua việc xây dựng từ tập các đường có thể đi (roadmap) và một trong những roadmap phổ biến là visibility graph

2.2 Tổng quan các giải pháp cho bài toán path planning theo visibility graph

Một đồ thị tầm nhìn, hay còn gọi là một visibility graph có hình ảnh như trong hình 2.4 và 2.5

Việc xây dựng một visibility graph có thể hiểu như một tiến trình mà dữ liệu

đầu vào là là đồ thị G được mô tả bằng một tập hợp các vật cản trong một không gian đa chiều, và dữ liệu đầu ra là đồ thị G v mô tả khả năng hiển thị giữa mỗi đỉnh

và mọi đỉnh khác trong G Visibility được xác định như là một đường thẳng có thể

đi giữa hai đỉnh mà không cắt bất kỳ cạnh khác trong đồ thị G Bằng cách này, hai

đỉnh nhìn thấy nhau được cho là không bị cản trở bởi bất kỳ vật cản nào, và một

đường thẳng được vẽ giữa chúng và đưa vào đồ thị G v

Một ví dụ về visibility graph trong không gian mặt phẳng 2 chiều cho tập các đoạn thẳng được thể hiện trong hình 2.4 và visibility graph cho tập các đa giác được thể hiện trong hình 2.5

Hình 2.4 - G là tập hợp các đoạn đường đơn giản và Gv là tập các đường kết nối giữa

mỗi đỉnh (visibility graph) [9]

Tập các vật cản trong đồ thị G có thể bao gồm nhiều kiểu hình dạng khác nhau

như: thẳng, tròn, đoạn thẳng, đa giác lồi, đa giác lõm hoặc thông thường nhất là các

đa giác đơn lẻ Đã có nhiều thuật toán khác nhau được phát triển dựa trên giả thuyết

mà trong đó các kiểu hình dạng của vật cản được cho phép Nhưng trong phần này chỉ tập trung vào các đa giác lồi lõm đơn lẻ mà không cắt nhau

Trang 24

Hình 2.5 - Visibility graph được tạo từ một tập các đa giác

Ký hiệu tập các vật cản là S, các nút của visibility graph là các đỉnh của S và các cạnh của visibility graph là một cung giữa hai nút v và w nếu nó nhìn thấy

mọi đỉnh khác Nghĩa là, nếu đoạn ̅̅̅̅ hoặc là biên của vật cản hoặc là không cắt

vật cản trong S sẽ trở thành một cạnh của visibility graph Nói cách khác, hai đỉnh

mà nhìn thấy mọi đỉnh khác thì gọi là visible, và đoạn nối chúng là một cạnh tầm nhìn (visibility edge) Lưu ý, hai điểm trên cùng một cạnh của đa giác thì luôn

luôn thấy mọi đỉnh khác

Nếu bài toán thêm vào hai đỉnh P start và P goal cho mục đích xác định một đường tối ưu nào đó giữa đỉnh này, P start và P goal sẽ được đưa vào tập đỉnh trong visibility graph và các cạnh visibility edge giữa hai đỉnh này và và các đỉnh khác cũng được thiết lập

Để tính toán một đường đi ngắn nhất từ P start đến P goal, có thể áp dụng giải thuật sau:

ShortestPath(S, P start , P goal )

Đầu vào: một tập S của các đa giác rời nhau, 2 điểm P start và P goal trong

không gian tự do

Đầu ra: Đường đi ngắn nhất mà không va chạm với đường nối giữa hai

điểm P start và P goal

1 G vis VisibilityGraph

2 Gán mỗi cung (v,w) trong G vis một trọng số, là chiều dài của đoạn ̅̅̅̅

3 Sử dụng giải thuật Dijkstra để tính đường đi ngắn nhất giữa điểm

Trang 25

Như vậy để giải quyết bài toán path planning sử dụng visibility graph có 2 vấn

đề cần giải quyết:

(1) Tạo ra một visibility graph

(2) Dùng giải thuật Dijkstra để tìm đường đi ngắn nhất của robot trên visibility graph đã tạo ra (có thể sử dụng các giải thuật tìm đường đi ngắn nhất trên đồ thị có trọng số khác như: Bellman-Ford, A* search, Floyd-Warshall)

Hình 2.6 - Ví dụ một đường đi ngắn nhất trong visibility graph [16]

2.3 Tìm hiểu giải thuật tìm đường đi ngắn nhất với độ phức tạp O(n2logn)

Như trình bày trong phần 2.2, để tính visibility graph của S, cần phải tìm tất

cả các cặp đỉnh khác mà chúng có thể thấy nhau được Thực hiện bằng cách quan sát những đoạn thẳng nối giữa cặp đỉnh để kiểm tra xem chúng có cắt nhau với bất kỳ vật cản nào không, cách tiếp cận này dẫn đến thời gian chạy của giải thuật

O(n3) Phần này trình bày giải thuật giúp giảm thời gian xây dựng một visibility

graph xuống còn O(n2logn)

Quá trình xây dựng một visibility graph được trình bày gồm các bước:

Trang 26

hiện thực sử dụng một cấu trúc dữ liệu cây T như hình 2.8 Từ một đỉnh, một đường thẳng p như ví dụ có thể cắt các cạnh theo thứ tự e 1 , e 2 , e 3 , e 4 , e 5 , e 6 Các cạnh này được lưu trong cây theo thứ tự sao cho lá ngoài cùng bên trái là cạnh

đầu tiên được cắt bởi p và lá ngoài cùng bên phải là cạnh cuối cùng được cắt Các nút bên trong của T cũng lưu trữ các cạnh dùng để hướng dẫn tìm kiếm

Hình 2.7 - Ví dụ về các cạnh giao nhau và cây tìm kiếm tương ứng [16]

Như vậy, từ một điểm bất kỳ có thể tao một tia quét vòng tròn xung quanh

để xác định các cạnh bị cắt, và từ đó cũng xác định được tập đỉnh mà “visible”

với đỉnh này Thuật toán VisibleVertices mô tả quá trình này cho một điểm p bất

kỳ và trả về tất cả các đỉnh đa giác có thể nhìn thấy từ p

Hình 2.8 - Điểm quét được bắt đầu với một nửa đường thẳng p [10]

Điểm quét được bắt đầu với một nửa đường thẳng p theo hướng được xác

định và được xử lý theo chiều kim đồng hồ (xem Hình 2.9) Vì vậy, các thuật

toán trước tiên sắp xếp các đỉnh theo góc chiều kim đồng hồ mà đoạn từ p đến đỉnh khác nằm trên trục x Để có thể quyết định tầm nhìn của một đỉnh w, cần

phải biết phí cắt ̅̅̅̅ trong vật cản bất kỳ Do đó, rõ ràng sự lựa chọn là để xem xét bất kỳ đỉnh đó có thể nằm trong ̅̅̅̅ trước khi xử lý w Nói cách khác, các đỉnh mà góc là giống nhau thì được xử lý theo thứ tự tăng dần khoảng cách đến p

Trang 27

VisibleVertices(p,S)

Đầu vào: Xét tập S của vật cản đa giác rời nhau và một điểm p không nằm

bên trong bất kỳ vật cản

Đầu ra: Tập hợp tất cả các đỉnh vật cản nhìn thấy từ p

Sắp xếp các đỉnh vật cản nằm xung quanh tâm p theo chiều kim đồng hồ Bắt đầu với một nửa đường ρ : y = 0

Tìm tất cả các cạnh vật cản bị cắt bởi p và lưu trữ chúng vào cây cân bằng

T

W 

for i 1 to n

do if Visible(w i ) then thêm w i vào W

Chèn các cạnh mới liên quan đến w i vào T Xóa các cạnh cũ liên quan đến w i từ T

return W

Trong chương trình VisibleVertices có hàm con Visible, hàm này phải quyết định xem một đỉnh w i có thể bị nhìn thấy hay không

Hình 2.9 - Một số ví dụ trong đó r chứa nhiều đỉnh [10]

Trong tất cả các trường hợp wi-1 là nhìn thấy được

Trong hai trường hợp trái wi cũng có thể nhìn thấy và trong hai trường hợp phải wi là không nhìn thấy được

Một số trường hợp có thể xảy ra khi có hoặc không thể cắt bên trong của các vật cản đến các đỉnh Như vậy cần phải kiểm tra tất cả các cạnh với đỉnh

Trang 28

trên để quyết định xem w i có thể nhìn thấy không May mắn thay là đã kiểm tra chúng trong khi xem xét các đỉnh trước đó nằm trên Do đó, có thể quyết

định khả năng hiển thị của w i như sau Nếu w i-1 không nhìn thấy được thì w i cũng

không thể nhìn thấy được một trong hai Nếu w i-1 có thể nhìn thấy thì w i có thể

cũng nhìn thấy được cả hai Hoặc toàn bộ đoạn w i-1 và w i nằm trong vật cản trong

đó cả w i-1 và w i là đỉnh, hoặc đoạn được cắt bởi một cạnh trong T (Bởi vì trong trường hợp này cạnh nằm giữa w i-1 và w i nó phải cắt đoạn ) Thử nghiệm này là chính xác bởi vì ⋃ (Nếu i = 1, thì không có

đỉnh ở giữa p và w i, nên chỉ nhìn đoạn ) Chương trình con:

Visible(w i )

If đoạn cắt phía trong vật cản, khi đó w i là một đỉnh cục bộ tại w i

then return false else if i = 1 or w i-1 thì không nằm trên đoạn

then tìm trong T với cạnh е trong lá ngoài cùng bên trái

if e tồn tại và đoạn cắt е

then return false else return true else if w i−1 thì không nhìn thấy

then return false else tìm trong T với cạnh е mà cắt

if е tồn tại

then return false else return true

Thuật toán này được giới thiệu bởi Lee [11] Quan sát VisibileVertices, có

thể thấy rằng thời gian tiêu tốn trước khi cho vòng lặp chi phối bởi bước phân

loại, quá trình này đòi hỏi thời gian là O(nlogn) Mỗi lần thực hiện thời gian của vòng lặp yêu cầu O(logn) để thực hiện liên tục một số xử lý trên T, cộng với thời

gian để thực hiện liên tục một số thử nghiệm về hình dạng Vì thế, thời gian để

thực hiện một lần là O(logn), dẫn đến thời gian để chạy toàn bộ O(nlogn) Tuy

nhiên, phải áp dụng VisibileVertices cho mỗi đỉnh n của S để tính toàn bộ

visibility graph, dẫn đến thời gian thực hiện được bằng O(n2logn)

Trang 29

2.4 Tìm đường đi ngắn nhất trong visibility graph với giải thuật Dijkstra

Để tạo visibility graph, giải thuật đơn giản nhất là lần lượt kiểm tra từng đoạn thẳng có trong đồ thị xem đoạn thẳng này có bị cắt bởi bất kỳ vật cản nào không

Giải thuật này chạy trong thời gian O(n3) Để giải thuật để đạt được độ phức tạp tốt

hơn, Lee đã cải tiến độ phức tạp từ O(n3) xuống O(n2logn) Lee sử dụng phương

pháp quét xoay tròn và một danh sách lưu lại thứ tự quét lần trước để làm giảm độ phức tạp của giải thuật [8]

Visibility graph thường được nghĩ đến để sử dụng trong việc tìm kiếm con

đường đi ngắn nhất trên mặt phẳng ơ-lít từ một điểm bắt đầu s đến điểm đích d và

nhiệm vụ là tìm đường đi nối tiếp tối ưu thông qua không gian trở ngại mà không vi phạm các ràng buộc vật lý Thực tế ứng dụng này được khai thác khi các đường đi ngắn nhất được tìm thấy trên các đường cong của visibility graph Một khi đồ thị visibility graph đã được xây dựng, vấn đề tìm con đường ngắn nhất có thể được giải quyết bằng cách sử dụng các thuật toán nổi tiếng như các thuật toán Dijkstra, thuật toán tìm kiếm A*, hoặc thuật toán Floyd-Warshall

Việc sử dụng thuật toán Dijkstra để giải quyết bài toán tìm đường đi ngắn nhất

từ đỉnh xuất phát đến đỉnh đích trong đồ thị có trọng số trên các cung của đồ thị không âm là tối ưu nhất

Thuật toán được xây dựng trên cơ sở gán các đỉnh là các nhãn tạm thời Nhãn của mỗi đỉnh sẽ cho biết cận trên của độ dài đường đi ngắn nhất từ điểm xuất phát đến nó Các nhãn này sẽ được biến đổi theo thủ tục lặp, nghĩa là ở mỗi bước lặp sẽ

có một nhãn tạm thời trở thành nhãn cố định Nếu nhãn của một đỉnh nào đó trở thành cố định thì nó sẽ không phải là cận trên mà là độ dài đường đi ngắn nhất từ đỉnh xuất phát đến nó Thuật toán Dijkstra được mô tả như sau:

Procedure Dijkstra;

Đầu vào : Đồ thị có hướng G = (V, E) với n đỉnh, s V là đỉnh xuất phát,

a[u,v] V là ma trận trọng số;

Giả thiết : a[u,v] ≥ 0; u,v V

Đầu ra : khoảng cách từ đỉnh s đến tất cả các đỉnh còn lại d[v], v V

Begin (*Khởi tạo*)

For v V do

Trang 30

Tim dinh u T thỏa mãn d[u] = min{d[z]:z T};

T := T {u}; (*cố định nhãn của đỉnh u*)

For v T do (*gán nhãn lại cho các đỉnh trong T*)

If d[v] > d[u] + a[u,v] then

Đánh giá số phép toán cần thực hiện theo thuật toán: Ở mỗi bước lặp để tìm ra

điểm u thì cần thực hiện O(n) phép toán, để gán nhãn lại cũng cần thực hiện một số lượng phép toán là O(n) Thuật toán cần phải thực hiện n - 1 bước lặp Vậy thời gian tính toán của thuật toán là cỡ O(n2)

Giải thuật tìm đường đi ngắn nhất giữa cặp đỉnh:

Định nghĩa 1: Xét đồ thị có trọng số G = (V,E,w), với hàm trọng số w: ER là

ánh xạ từ tập các cạnh E đến tập số thực R

Định nghĩa 2: Đường đi p đi từ đỉnh u đến đỉnh v là dãy các cạnh nối tiếp

nhau, bắt đầu từ đỉnh u kết thúc tại đỉnh v được biểu diễn như sau:

p = (u = v 0 , v 1 , …,v k = v) Định nghĩa 3: Độ dài của đường đi p = (v 0 , v 1 , …, v k), ký hiệu (p) là tổng các trọng số của các cạnh trên đường đi:

Trang 31

Định nghĩa 4: Gọi ρ(u,v) là tập tất cả đường đi từ u đến v Độ dài đường đi

ngắn nhất từ đỉnh u đến đỉnh v được xác định bởi:

d(u,v) = min{ (p)  p (u,v)}

Định nghĩa 5: Đường đi ngắn nhất p min (u,v) từ đỉnh u đến đỉnh v là đường đi

có độ dài d(u,v)

Giải thuật Dijkstra:

Đây là bài toán tìm một đường đi giữa hai đỉnh sao cho tổng trọng số của các cạnh tạo nên đường đi đó là nhỏ nhất Định nghĩa một cách hình thức, cho trước

một đồ thị có trọng số (nghĩa là một tập đỉnh V, một tập cạnh E, và một hàm trọng

số có giá trị thực f : E → R), cho trước một đỉnh v thuộc V, tìm một đường đi p từ v tới mỗi đỉnh v' thuộc V sao cho là nhỏ nhất trong tất cả các đường nối từ v tới

v' Bài toán tìm đường đi ngắn nhất giữa mọi cặp đỉnh là một bài toán tương tự,

trong đó, phải tìm các đường đi ngắn nhất cho mọi cặp đỉnh v và v'

Ở mọi đỉnh v giải thuật Dijkstra xác định ba thông tin: k v , d v , và p v Trong đó:

k v : mang giá trị boolean xác định trạng thái được chọn của đỉnh v

Ban đầu, khởi tạo tất cả các đỉnh v chưa được chọn, nghĩa là: k v =

false, v V

dv: chiều dài đường đi được tìm thấy cho đến thời điểm đang xét

Khởi tạo d v = ∞, v V{a}, da = 0

pv: đỉnh trước của đỉnh v trên đường đi ngắn nhất đi từ a đến b Đường đi ngắn nhất từ a đến b có dạng {a, …, p v , v, …, b}

Khởi tạo, p v = null,  v V

 Các bước của giải thuật Dijkstra:

B1: Khởi tạo: Đặt k v := false  v V; d v = ∞, v V{a}, da := 0

B2: Chọn v V sao cho k v = false và d v = min{d tt V, k t = false}

Nếu d v = ∞ thì kết thúc, không tồn tại đường đi từ a đến b

B3: Đánh dấu đỉnh v, gán k v := true

B4: Nếu v = b, kết thúc và d b chính là độ dài đường đi ngắn nhất đi từ a đến b Ngược lại nếu v ≠ b thì chuyển sang B5

Trang 32

B5: Với mỗi đỉnh u kề với v mà k u = false, kiểm tra

Nếu d u > d v + w(v,u) thì d u := d v + w(v,u)

Ghi nhớ đỉnh v: p u := v Quay lại bước B2

 Độ phức tạp của giải thuật Dijkstra:

Gọi f(n) số lần giải thuật Dijkstra khảo sát một cạnh của đồ thị G trong trường hợp xấu nhất Khi đó có: f(n) < O( V2)

Chứng minh: Cho n = V, B5 là vòng lặp chứa các bước B2B5, vòng lặp

được thực hiện đến khi v = b Vì ở mỗi vòng lặp sẽ rút ra một đỉnh của V và khởi đầu V có n phần tử, nên vòng lặp được xử lý nhiều nhất là n lần

Ở B2 số đỉnh tối đa được khảo sát là n – 1 đỉnh

Ở B5 số đỉnh kề tối đa được khảo sát là n – 1 đỉnh

Do đó: f(n) ≤ 2(n – 1)n < O( V2)

Vậy độ phức tạp của giải thuật Dijkstra là O( V2)

Trang 33

Phiên bản phần cứng và phần mềm của bộ thiết bị Mindstorms Robotics Invention System là một khối có khả năng lập trình được tạo ra tại MIT Media Lab, kết hợp giữa MIT và Lego Môi trường lập trình trực quan đầu tiên được gọi là LEGOsheets được tạo ra bởi Trường đại học University of Colorado vào năm 1994 dựa trên AgentSheets

Những thiết bị Mindstorms cũng được bán và sử dụng như một thiết bị hỗ trợ giáo dục Ban đầu thông qua sự hợp tác giữa Lego và MIT Media Laboratory Các sản phẩm cho phiên bản giáo dục được gọi là Lego Mindstorms được sử dụng cho các trường học, và đi kèm với các phần mềm lập trình dựa trên ROBOLAB GUI

Nó được phát triển tại Đại học Tufts bằng cách sử dụng National Instruments LabVIEW như một động cơ Ngoài ra, phần mềm vận chuyển có thể được thay thế bằng phần mềm của đối tác thứ ba hoặc ngôn ngữ lập trình, bao gồm một trong số những phổ biến nhất được sử dụng bởi các chuyên gia trong ngành công nghiệp hệ thống nhúng như Java và C, Sự khác biệt duy nhất giữa các phiên bản giáo dục được gọi là các “Challenge Set” và hàng loạt người tiêu dùng được gọi là “Inventor Set”, nó bao gồm một cảm biến cảm ứng và nhiều lựa chọn hơn trong ngành

Những sản phẩm thuộc họ Lego Mindstorm thông dụng:

 Robotics Invention System:

 RCX (Programming languages);

 Lego Mindstorm NXT: Lego Mindstorm NXT Educational Version; Lego Mindstorms NXT 1.0 và Lego Mindstorms NXT 2.0

Trang 34

 Những sản phẩm hỗ trợ kỹ thuật khác: Lego camera; 4.5V PC Interface; Technic Control Center; Dacta Control Lab; Cybermaster; Codepilot; Scout; Micro Scout; Spybotics và Lego Mindstorms NXT

RCX và NXT (gọi tắt là NXT) được như một khối não, gắn vào các hệ thống robot hoặc hệ thống nhúng để điều khiển các hoạt động xung quanh Chúng chứa vi điều khiển, bộ nhớ, các cổng giao tiếp,… RCX là thế hệ đầu tiên, NXT được phát triển sau với nhiều cải tiến hơn

RCX là thế hệ đầu tiên của Lego Mindstorm được xây dựng thành một hệ thống nhúng để điều khiển các hoạt động xung quanh Nó chứa một vi xử lý 8-bit Renesas (một phần của Hichi), H8/300 được xem như là một vi điều khiển bên trong của nó Nó cũng chứa 32K bộ nhớ RAM để lưu trữ các chương trình phần mềm và người dùng RCX được lập trình bằng cách đưa một chương trình (viết bằng một trong những ngôn ngữ lập trình có sẵn) từ một máy tính chạy hệ điều hành Windows hay Mac vào bộ nhớ RAM của nó thông qua một (IR) giao diện hồng ngoại đặc biệt

Hình 3.1 - RCX [24]

NXT là thế hệ sau của RCX, nó được xem như não của một Mindstorms robot, giúp robot điều khiển và thực hiện các hành động khác nhau NXT chứa vi xử lý 32-bit ARM7, 256 Kbytes FLASH, 64Kbytes RAM

Hình 3.2 - NXT [24]

3.1.2 Lego Mindstorm NXT

LEGO Mindstorms NXT là một bộ các robot có khả năng lập trình, được thay thế bởi LEGO vào cuối tháng 07 năm 2006 và là phiên bản đầu tiên của bộ LEGO Mindstorms, nó được gọi là Robotics Invention System Cơ bản thì Robotics Invention System có 2 phiên bản: Reil Version (set #8527) và Education Base Set

Trang 35

(set #9797), đi kèm với phần mềm lập trình là NXT-G hay tùy chọn trong LabVIEW cho LEGO MINDSTORMS Một phien bản mới của bộ LEGO Mindstorms là Lego Mindstorms NXT 2.0 được thay thế ngày 01 tháng 08 năm

2009, bao gồm một cảm biến màu và nhiều khả năng khác được nâng cấp, như là:Các thiết bị lắp ghép; 3 mô tơ; 4 loại cảm biến (cảm biến siêu âm, cảm biến chạm, cảm biến ánh sang, cảm biến màu); 7 dây cáp kết nối, một cáp giao diện USB

và 1 NXT Intelligent Brick

Từ bộ kit này, có thể xây dựng rất nhiều loại robot có hình dạng khác nhau và

có thể lập trình điều khiển chúng hoạt động theo yêu cầu Có 4 dạng robot thông dụng nhất được xây dựng và hỗ trợ bởi NXT-G:

(a) Dạng xe (b) Dạng cánh y (c) Dạng người (d) Robot dạng xe

Hình 3.3 - Các dạng robot thông dụng của họ Lego Mindstorm NXT [24]

Lego Mindstorm NXT gồm các phiên bản: Lego Mindstorms NXT Educational Version; Lego Mindstorms NXT 1.0 và Lego Mindstorms NXT 2.0 Trong đó:

Lego Mindstorms NXT Educational Version: Phiên bản giáo dục, được thiết

kế nhằm mục đích hỗ trợ các trường học Bao gồm: Một cảm biến ánh sang, một cảm biến siêu âm, một cảm biến âm thanh, ba đèn, một cặp cảm biến chạm Phiên bản đầu chứa 400 mẫu, phiên bản thêm chứa 600 mẫu

Lego Mindstorms NXT 1.0 và 2.0: Là những phiên bản thương mại, mà phiên bản 2.0 có thêm vào cảm biến màu, tăng thêm số lượng các cảm biến khác lên và cũng có thêm một số hoạt động khác như: làm việc trên số thực thay vì chỉ làm việc trên số nguyên như phiên bản 1.0

Lego Mindstorm NXT 2.0 có thể được xem là sự kết hợp linh hoạt trong việc xây dựng một hệ thống cho robot họ Lego với tất cả những kỹ thuật mới Bao gồm một vi điều khiển, một phần mềm lập trình kéo thả, cùng với các thiết bị cung cấp

Trang 36

kèm trong Mindstorm NXT 2.0 Do đó, giúp dễ dàng tạo ra rất nhiều dạng robot khác nhau, thực hiện rất nhiều công việc khác nhau

Hình 3.4 - Các cảm biến trong bộ Lego Mindstorm NXT [24]

3.1.3 Intelligent Brick NXT

Intelligent Brick NXT có thể được xem như thành phần chính trong bộ kit, là não của hệ thống Mindstorms Nó làm cho robot có thể tự động thực hiện những hoạt động khác nhau như: lấy input từ các cảm biến, điều khiển các mô tơ, giao tiếp với máy tính nhận hoặc gởi dữ liệu

Các thành phần chính trong bộ Lego Mindstorm là một khối gọi là NXT thông minh gạch AKA (Ciara) Nó có thể dữ liệu đầu vào từ 4 cảm biến và điều khiển 3

mô tơ thông qua cáp RJ12 (không tương thích với RJ11) Intelligent Brick NXT có một màn hình LCD 100 × 60 điểm ảnh đơn sắc và bốn nút có thể được sử dụng để điều hướng các trình đơn phân cấp thông qua giao diện người dùng để lấy dữ liệu đầu vào từ các cảm biến, điều khiển các mô tơ, giao tiếp với máy tính để nhận hoặc gởi dữ liệu Những đặc tính kỹ thuật của Intelligent Brick NXT 2.0:

- Bộ xử lý chính: 32-bit Atmel AT91SAM7S256 (256 KB bộ nhớ flash, 64KB RAM) và 8-bit Atmel ATmega48@4 MHz (4 KB flash memory, 512 Bytes RAM);

- Bộ xử lý phụ: 8-bit AVR và 4 Kbytes FLASH, 512 Byte RAM, 8MHz;

- Giao tiếp không dây Bluetooth (Bluetooth Class II V2.0 compliant);

- Cổng Giao tiếp USB (12 Mbit/s): được dùng để gắn USB cáp, kết nối NXT với máy tính để nạp chương trình từ máy tính tới NXT hoặc lấy dữ liệu từ NXT về máy tính Có thể sử dụng một kết nối bluetooth thay thế cho USB port này;

Trang 37

- 4 port dữ liệu vào 6-pin, để gắn các cảm biến vào (đặt tên là Port 1, 2, 3 và 4);

- 3 port dữ liệu ra 6-pin, để điều khiển các mô tơ (được đặt tên: Port A, B và C);

- LCD đơn sắc 100 x 64 pixel và 4 nút nhấn để thực hiện một số thao tác cơ bản cho Brick;

- Loudspeaker: âm thanh 8 kHz và độ phân giải 8-bit;

- Nguồn: 6 AA batteries;

- Four Push Buttons;

- Orange button: On/Enter;

- Light grey arrows: Di chuyển sang trái và sang phải trong menu NXT;

- Dark grey button: Clear/Go back

Lego phát hành firmware cho NXT Intelligent Brick như một Open Source, có thể được nâng cấp thường xuyên [24]

3.1.4 Bluetooth trên Brick NXT

Một trong những đặc trưng quan trọng nhất của Brick NXT là khả năng kết nối đến những thiết bị khác có hỗ trợ bluetooth Việc kết nối này giúp robot gởi nhận dữ liệu (chương trình, lệnh, tập tin âm thanh, …) với các thiết bị khác một cách có thứ tự Từ đó, những lệnh có thể được gởi để điều khiển robot từ xa Bluetooth giao tiếp giữa máy tính (hoặc một vài dạng điện thoại di động) với NXT Brick, hoặc giữa các NXT Brick với nhau

Các đặc tính kỹ thuật của bluetooth: CSR BlueCoreTM 4 v2.0 +EDR System; Supporting the Serial Port Profile (SPP); Internal 47 KByte RAM; External 8 MBit FLASH; 26 MHz và kết nối với tối đa ba thiết bị khác tại một thời điểm

NXT brick hỗ trợ giao tiếp không dây sử dụng bluetooth bằng cách sử dụng một chip CSR BlueCoreTM 4 v2.0 NXT brick có thể kết nối không dây cùng lúc tới ba thiết bị khác, nhưng tại một thời điểm chỉ có thể giao tiếp với một thiết bị

Hình 3.5 - Khả năng kết nôi với Bluetooth của Lego Mindstorm NXT [24]

Trang 38

Khoảng cách giao tiếp bluetooth có thể lên đến 10m Nhưng làm thế nào để thiết lập giao tiếp bluetooth giữa máy tính và khối NXT tham khảo thêm trong [24] Các vấn đề như: Cài đặt giao tiếp giữa các NXT brick, Interface giữa ARM7

và BlueCore chip, UART giữa ARM7 và BlueCore chip, hay các vấn đề kỹ thuật khác có thể tham khảo tại [24]

3.1.5 Lập trình với Brick NXT

Với những chương trình đơn giản, chương trình có thể lập trình sử dụng những menu trực tiếp trên NXT Intelligent Brick Với những chương trình phức tạp hơn, việc lập trình được thực hiện trên máy tính, sử dụng một số ngôn ngữ hoặc môi trường lập trình đặc biệt dành cho Mindstorm NXT, sau đó nạp vào Brick để điều khiển robot

Những môi trường lập trình thông dụng cho Mindstorm NXT thông thường chia làm nhóm chính:

 Nhóm môi trường lập trình trực quan dạng kéo thả, cung cấp lập trình theo từng khối, kết nối các khối với nhau, như NXT-G, LabView, VPL-Microsoft …

 Nhóm môi trường lập trình dạng thủ tục, từng dòng code điều khiển robot

sẽ được viết cùng với một thư viện hỗ trợ, như leJOS, RobotC, C#- Microsoft …

Hình 3.6 - Môi trường lập trình trên NXT-G [26]

Trang 39

NXT-G có hai phiên bản, một chung với phiên bản của Education của Lego Mindstorm NXT, và một phiên bản thương mại được bán rời rạc NXT-

G hỗ trợ đầy đủ cho những lập trình cơ bản như: điều khiển mô tơ, nhận dữ liệu từ những cảm biến, tính toán, điều khiển luồng …

3.1.5.2 C# và Microsoft Robotics Developer Studio

Là một đại diện trong nhóm lập trình điều khiển robot bằng cách lập trình thủ tục, viết code thay vì kéo thả C# cùng với VPL là hai cách lập trình điều khiển robot, cụ thể là Lego Mindstorm NXT, trong bộ Microsoft Robotics Developer Studio Luận văn này sử dụng C# để lập trình điều khiển một robot dạng xe, được tạo từ Lego Mindstorm NXT Giới thiệu về C# và Microsoft Robotics Developer Studio được trình bày cụ thể hơn trong phần 3.2 và chương 5

3.1.5.3 Các ngôn ngữ khác

Để lập trình cho robot Lego Minstorm NXT, còn rất nhiều ngôn ngữ có thể sử dụng Bảng 3.1 liệt kê một số ngôn ngữ lập trình và cùng với đặc trưng của nó

Bảng 3.1 - Một số ngôn ngữ có thể lập trình với Lego Mindstorm NXT [24]

FLL NXT Navigation Uses NXT-G and txt files

Trang 40

ROBOTC

An Integrated development environment rgeted towards students that is used to program and control LEGO NXT, VEX, RCX and Arduino robots using a programming language based on the C programming language

3.2 Microsoft robotics develop studio

3.2.1 Giới thiệu

Microsoft Robotics Developer Studio (được viết tắc là MRDS), là một môi trường lập trình dựa trên nền Windows dùng cho việc mô phỏng và điều khiển chung các loại robot

RDS được dựa trên CCR (Concurrency and Coordination Runtime), là một thư viện tồn tại trên nền NET dùng quản lý những công việc bất đồng bộ;

Và được sự hỗ trợ của DSS (Decentralized Software Services), dùng để điều phối sự phối hợp của nhiều dịch vụ nhằm đạt được nhiều hoạt động phức tạp Tính năng bao gồm: Microsoft Visual Programming Language là một công cụ lập trình trực quan cho việc tạo và gỡ lỗi các ứng dụng robot, dựa trên giao diện web và windows có mô phỏng 3D để dễ dàng truy cập vào các cảm biến của robot và các thiết bị truyền động Ngôn ngữ lập trình chính là C# Mục tiêu của MRDS hướng tới phát triển một môi trường lập trình tương thích cho nhiều phần cứng robot khác nhau, đáp ứng nhiều nhu cầu từ thương mại, học thuật cho đến đáp ứng những sở thích cá nhân

MRDS có các đặc trưng: Giao diện dựa trên windows và cả web ; Công

cụ debug và mô phỏng 3D (bao gồm cả gia tốc của phần cứng) và có công cụ

Ngày đăng: 28/11/2014, 09:43

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Thị Thu Thủy (2008), “Một số phương pháp chính xác lập lộ trình chuyển động cho Robot”, luận văn cao học, Trường Đại Học Thái Nguyên Sách, tạp chí
Tiêu đề: Một số phương pháp chính xác lập lộ trình chuyển động cho Robot
Tác giả: Nguyễn Thị Thu Thủy
Năm: 2008
[2] Trần Duy Quang (2011), “Lập lộ trình chuyển động cho robot”, đồ án môn học, Trường Đại Học Khoa Học Tự Nhiên Sách, tạp chí
Tiêu đề: Lập lộ trình chuyển động cho robot
Tác giả: Trần Duy Quang
Năm: 2011
[3] Trần Thị Nhƣ Nguyệt (2011), “Xây dựng giải thuật hoạch định đường đi ngắn nhất tránh vật cản cho thiết bị không người lái”, luận văn thạc sĩ, Trường Đại Học Bách Khoa TP. Hồ Chí Minh Sách, tạp chí
Tiêu đề: Xây dựng giải thuật hoạch định đường đi ngắn nhất tránh vật cản cho thiết bị không người lái
Tác giả: Trần Thị Nhƣ Nguyệt
Năm: 2011
[4] Trần Thủy Tiên và Trần Hồng Thái (2003), “Nghiên cứu Planning để giải bài toán xác định lộ trình”, luận văn cử nhân, Trường Đại Học Khoa Học Tự Nhiên, TP. Hồ Chí Minh.Tài liệu tiếng Anh Sách, tạp chí
Tiêu đề: Nghiên cứu Planning để giải bài toán xác định lộ trình
Tác giả: Trần Thủy Tiên và Trần Hồng Thái
Năm: 2003
[5] B. Ziegler and N. B. Nichols (1942), “Optimum settings for automatic controllers”, ASME Transactions, pp. 759-768 Sách, tạp chí
Tiêu đề: Optimum settings for automatic controllers
Tác giả: B. Ziegler and N. B. Nichols
Năm: 1942
[6] Bennett, Stuart (1993), “A history of control engineering”, 1930-1955. IET. tr. p. 48. ISBN 9-780863412998 Sách, tạp chí
Tiêu đề: A history of control engineering
Tác giả: Bennett, Stuart
Năm: 1993
[7] Burcin Cem Arabacioglu (June 2010), “Using fuzzy inference system for architectural space analysis”, Appl. Soft Comput., 10(3):926-937 Sách, tạp chí
Tiêu đề: Using fuzzy inference system for architectural space analysis
[8] D. T. Lee (1978), “Proximity and reachability in the plane”, Ph.D. Thesis, University of Ilfinois at UrbanaChampaign, Urbana, IL Sách, tạp chí
Tiêu đề: Proximity and reachability in the plane
Tác giả: D. T. Lee
Năm: 1978
[9] Dave Coleman, (May 2, 2012), “Lee's O(n 2 logn) Visibility Graph Algorithm Implemention and Analysis”, paper, Department of Computer Science * Sách, tạp chí
Tiêu đề: Lee's O(n"2"logn) Visibility Graph Algorithm Implemention and Analysis
[10] De Berg, M.; Cheong, O.; van Kreveld, M.; Overmars, M. (2008), “Computional Geometry Algorithrms and Applications”, XII, 386p. 370 illus, Hardcover – ISBN: 978-3-540-77973-5 Sách, tạp chí
Tiêu đề: Computional Geometry Algorithrms and Applications
Tác giả: De Berg, M.; Cheong, O.; van Kreveld, M.; Overmars, M
Năm: 2008
[11] Der-Tsai Lee (1978), “Proximity and reachability in the plane”, PhD thesis, Champaign, IL, USA. AAI7913526 Sách, tạp chí
Tiêu đề: Proximity and reachability in the plane
Tác giả: Der-Tsai Lee
Năm: 1978
[12] Donald B. Johnson (July 1973), “A note on dijkstra's shortest path algorithm”, J. ACM, 20(3):385-388 Sách, tạp chí
Tiêu đề: A note on dijkstra's shortest path algorithm
[13] John Kitzinger and Computer Engineering (2003), “The visibility graph among polygonal obscles: a comparison of algorithms” Sách, tạp chí
Tiêu đề: The visibility graph among polygonal obscles: a comparison of algorithms
Tác giả: John Kitzinger and Computer Engineering
Năm: 2003
[15] M.H. Overmars and E.Welzl (1988), “New methods for computing Visibility graphs”, Symposium on Computional Geometry, pp. 164-171 Sách, tạp chí
Tiêu đề: New methods for computing Visibility graphs
Tác giả: M.H. Overmars and E.Welzl
Năm: 1988
[16] Pankaj Nathani (2007), “Shortest path for a translating polygonal robot”, A report submitted in partial fulfillment of the requirements of cs7962 (Computional Geometry), School of Computing University of Uh Sách, tạp chí
Tiêu đề: Shortest path for a translating polygonal robot
Tác giả: Pankaj Nathani
Năm: 2007
[17] P.E. Hart, N.J. Nilsson and B. Raphael (july 1968), “A formal basis for the heuristic determination of minimum cost paths”, Systems Science and Cybernetics, IEEE Transactions on, 4(2):100-107 Sách, tạp chí
Tiêu đề: A formal basis for the heuristic determination of minimum cost paths
[18] Robert W. Floyd (June 1962), “Algorithm 97: Shortest path”, Com-mun. ACM, 5(6):345 Sách, tạp chí
Tiêu đề: Algorithm 97: Shortest path
[19] S. M. Valle (2006), “Planning Algorithms”, Cambridge University Press Sách, tạp chí
Tiêu đề: Planning Algorithms
Tác giả: S. M. Valle
Năm: 2006
[20] S. Florczyk (2005), “Robot Vision Video-based Indoor Exploration with Autonomous and Mobile Robots”, WILEY-VCH Verlag GmbH &amp; Co. KGaA, Weinheim Sách, tạp chí
Tiêu đề: Robot Vision Video-based Indoor Exploration with Autonomous and Mobile Robots
Tác giả: S. Florczyk
Năm: 2005
[21] Sertac Karaman and Emilio Frazzoli (June 2011), “Sampling-based algorithms for optimal motion planning”, Int. J. Rob. Res.,30(7):846-894 Sách, tạp chí
Tiêu đề: Sampling-based algorithms for optimal motion planning

HÌNH ẢNH LIÊN QUAN

Hình 2.2 - Đường cong được rút ngắn [16] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.2 Đường cong được rút ngắn [16] (Trang 21)
Hình 2.3 - Một đường cong được rút ngắn bằng đường cắt [16] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.3 Một đường cong được rút ngắn bằng đường cắt [16] (Trang 22)
Hình 2.4 - G là tập hợp các đoạn đường đơn giản và Gv là tập các đường kết nối giữa - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.4 G là tập hợp các đoạn đường đơn giản và Gv là tập các đường kết nối giữa (Trang 23)
Hình 2.5 - Visibility graph được tạo từ một tập các đa giác - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.5 Visibility graph được tạo từ một tập các đa giác (Trang 24)
Hình 2.6 - Ví dụ một đường đi ngắn nhất trong visibility graph [16] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.6 Ví dụ một đường đi ngắn nhất trong visibility graph [16] (Trang 25)
Hình 2.7 - Ví dụ về các cạnh giao nhau và cây tìm kiếm tương ứng [16] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.7 Ví dụ về các cạnh giao nhau và cây tìm kiếm tương ứng [16] (Trang 26)
Hình 2.8 - Điểm quét được bắt đầu với một nửa đường thẳng p [10] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.8 Điểm quét được bắt đầu với một nửa đường thẳng p [10] (Trang 26)
Hình 2.9 - Một số ví dụ trong đó r chứa nhiều đỉnh [10] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 2.9 Một số ví dụ trong đó r chứa nhiều đỉnh [10] (Trang 27)
Hình 3.3 - Các dạng robot thông dụng của họ Lego Mindstorm NXT [24] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 3.3 Các dạng robot thông dụng của họ Lego Mindstorm NXT [24] (Trang 35)
Hình 3.4 - Các cảm biến trong bộ Lego Mindstorm NXT [24] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 3.4 Các cảm biến trong bộ Lego Mindstorm NXT [24] (Trang 36)
Hình 3.5 - Khả năng kết nôi với Bluetooth của Lego Mindstorm NXT [24] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 3.5 Khả năng kết nôi với Bluetooth của Lego Mindstorm NXT [24] (Trang 37)
Hình 3.6 - Môi trường lập trình trên NXT-G [26] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 3.6 Môi trường lập trình trên NXT-G [26] (Trang 38)
Bảng 3.1 -  Một số ngôn ngữ có thể lập trình với Lego Mindstorm NXT [24] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Bảng 3.1 Một số ngôn ngữ có thể lập trình với Lego Mindstorm NXT [24] (Trang 39)
Hình 4.2 - Cho thấy giá trị của ánh sáng màu trắng và màu đen [26] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 4.2 Cho thấy giá trị của ánh sáng màu trắng và màu đen [26] (Trang 45)
Hình 4.4 - Minh họa ba mức độ của đường đi [26] - tìm hiểu và xây dựng phần mềm hỗ trợ bài toán tìm đường đi ngắn nhất tránh vật cản cho xe tự hành trong không gian 2d
Hình 4.4 Minh họa ba mức độ của đường đi [26] (Trang 46)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w