Luận văn Một số phương pháp chính xác lập lộ trình chuyển động cho Robot

Lời nói đầu Tìm đường là một khoa học (hay nghệ thuật) hướng dẫn lộ trình cho robot di chuyển qua môi trườngluận văn - báo cáo - tiểu luận - tài liệu chuyên ngành Môi Trường với mong muốn đến đãợc đích mà không bị lạc hay va vào những đối tượng khác. Thông thường, một lộ trình đãợc lập trước để dẫn dắt robot đến đích của nó. Với phãơng pháp này, môi trường robot đi qua phải đãợc biết hoàn toàn và không thay đổi, robot có thể đi theo một cách hoàn hảo. Hạn chế của việc vạch lộ trình trãớc đòi hỏi việc nghiên cứu tìm hiểu việc vạch lộ trình nội tại, phụ thuộc vào các tri thức thu đãợc từ môi trường hiện tại đề xử lý các chướng ngại chãa biết khi robot băng qua môi trường. Trên thế giới hiện nay robot là một lĩnh vực đãợc hết sức quan tâm. Bài toán lập lộ trình cho robot là bài toán c ơ bản để thiết kế chế tạo Robot, do vậy việc tìm hiểu bài toán và nghiên cứu các phãơng pháp vạch lộ trình là hết sức quan trọng cần thiết cho sự phát triển lĩnh vực thiết kế và chế tạo Robot. Đã có một số nghiên cứu để giải quyết bài toán nhã ứng dụng giả i thuật di truyền lập chãơng trình tiến hoá, xây dựngluận văn - báo cáo - tiểu luận chuyên ngành Xây Dựng một số các thuật toán cho bài toán, nhãng đây vẫn là một vấn đề mở đang rất đãợc quan tâm. Đặc biệt trong nãớc, đây là một lĩnh vực còn tãơng đối mới mẻ, hầu nhã chãa có các tài liệutài liệu trực tuyến, tài liệu điện tử, thư viện tài liệu đề một cách đầy đủ về lĩnh vực này. Nhận thức đãợc vấn đề đó và với sự gợi ý định hãớng của PGS .TS Đặng Quang á em đã chọn nghiên cứu đề tài “Một số phương pháp chính xác lập lộ trình chuyển động cho Robot” . Nội dung cơ bản của luận vănCung cấp luận văn cách ngành tốt nghiệp gồm có ba chương: Chương 1- Trình bày tổng quan bài toán lập lộ trình cho Robot đó là các khái niệm cơ bản về Robot, và bài toán về Robot, thuật toán và một số ví dụ ứng dụng bài toán lập lộ trình cho Robot. Chương 2- Trình bày các khái niệm về cấu hình không gian trạng thái, cách biểu diễn không gian trong bài toán lập lộ trình cho robot. Đây là các khái niệm cơ sở để biểu diễn đãợc bài toán cho các giải thuật lập lộ trình chuyển động cho robot. Chương 3- Đi sâu nghiên cứu một số phãơng pháp chính xác lập lộ trình chuyển động cho Robot. Cụ thể đó là hai phãơng pháp ROADMAP VISIBILITY GR APH và CELL DECOMPSITION. Đây là những cách tiếp cận tổ hợp tới việc lập lộ trình chuyển động để tìm thấy những đãờng đi xuyên qua không gian cấu hình liên tục mà không dùng đến những thuật toán xấp xỉ. Qua luận văn này em xin chân thành cảm ơn: PGS .TS Đặng Quang á - Viện Công nghệluận văn - báo cáo - tiểu luận - tài liệu chuyên ngành Công Nghệ thông tin đã tận tình giúp đỡ, động viên, định hãớng, hãớng dẫn em nghiên cứu và hoàn thành luận văn này. Em xin cảm ơn các thầy cô giáo trong viện Công nghệ thông tin, các thầy cô giáo khoa Công nghệ thông tin ĐH Thái nguyên, đã giảng dạy và giúp đỡ em trong hai năm học qua, cảm ơn sự giúp đỡ nhiệt tình của các bạn đồng nghiệp . MỤC LỤC MỤC LỤC 2 DANH MỤC CÁ C HìNH VẼ, ĐỒ THỊ 4 MỞ ĐẦU 5 CHãơNG I: GIơI THIệU BàI TOáN LậP TRìNH CHO ROBOT . 7 1.1. Robot nhân tạo . 7 1.2. Bài toán lập lộ trình . 9 1.3.Ví dụ và những ứng dụng về lộ trình Robot . 12 1.4. Những thành phần cơ bản của việc lập lộ trình . 16 1.5. Giải thuật, ng ãời lập lộ trình và lộ trình 17 1.6. Kết luận . 23 Chãơng II- cấu hình không gian trạng thái . 24 2.1.Các Khái niệm cấu hình không gian 24 2.1.1. Chãớng ngại (Obstacle) . 24 2.1.2. Không gian trống ( Free Space- Cfree ) 25 2.2. Mô hình cấu hình 26 2.2.1. Mô hình hình học . 26 2.2.2. Mô hình nửa Đại số 32 2.3. Các phép biến đổi của robot 35 2.4. Không gian cấu hình ch ãớng ngại vật . 37 2.5- Định nghĩa chính xác về vấn đề lập lộ trình chuyển động 38 2.6. Một số mô hình C obs 39 2.7. Kết luận . 47 Chãơng III- Một số phưƠNG pháp chính xác lập lộ trình chuyển Động 48 3.1.Giới thiệu chung . 48 3.2. Biểu diễn không gian chướ ng ngại vật 50 3.3. Một số giải thuật lập lộ trình chính xác cho robo t 53 3.3.1 . Roadmap Visibility Graph – Đồ thị tầm nhìn . 53 3.3.2. Vertical Cell Deco mposition ( phân ly Ô dọc ) . 59 Kết luận 68 Tài liệu tham khảo 69 Phụ lục 1 - Chương trình thử nghiệm Visibility Graph . 70 Phụ lục 2- Chương trình thử nghiệm Vertical Cell Decomposition 73Trích từ: http://************** .

pdf84 trang | Chia sẻ: maiphuongtl | Lượt xem: 1602 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Một số phương pháp chính xác lập lộ trình chuyển động cho Robot, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nh÷ng vect¬ v1 vµ v2. H×nh 2.18: X©y dùng Cobs cho phÐp quay. Sù ph¸t biÓu l•u t©m tíi h•íng cña nh÷ng vect¬ ph¸p tuyÕn cã thÓ t•¬ng ®•¬ng víi viÖc tr×nh bµy râ rµng gãc gi÷a n vµ v1, n vµ v2, ph¶i nhá h¬n p/2. Sö dông nh÷ng tÝch v« h•íng, n v1 = 0 vµ n v2 = 0. Nh• trong tr•êng hîp tÞnh tiÕn, ®iÒu kiÖn n v = 0 lµ ®iÒu kiÖn cña sù va ch¹m. Ta thÊy n phô thuéc vµo . Cho bÊt kú q C, nÕu n( ) v1 = 0, n( ) v2 = 0, vµ n( ) v(q) > q, th× q Cfree. §Ó cho Hf biÓu thÞ tËp hîp cña nh÷ng cÊu h×nh tháa m·n nh÷ng ®iÒu kiÖn nµy cã nghÜa lµ tËp c¸c ®iÓm trong Cfree. H¬n n÷a, mäi kiÓu kh¸c víi hai kiÓu tiÕp xóc EV vµ VE víi cã thÓ cã nhiÒu ®iÓm h¬n trong Cfree. Hf Cfree, phÇn bï cña nã C \ Hf, lµ mét tËp chøa Cobs ( Cobs C \ Hf ). §Ó cho HA = C \ Hf. Sö dông nh÷ng mÉu: Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 46 §Ó cho . §iÒu ®ã cho biÕt nh÷ng Cobs HA, trõ phi HA cã chøa ®iÓm trong Cfree. T×nh tr¹ng t•¬ng tù ®Ó x©y dùng mét m« h×nh cña mét ®a gi¸c låi tõ nh÷ng nöa - mÆt ph¼ng. Trong sù thiÕt ®Æt hiÖn thêi, bÊt kú cÊu h×nh nµo bªn ngoµi cña HA ph¶i thuéc trong Cfree. NÕu HA giao víi tÊt c¶ nh÷ng tËp hîp cho mçi tiÕp xóc kiÓu EV vµ kiÓu VE, th× kÕt qu¶ lµ Cobs. Mçi tiÕp xóc cã c¬ héi ®Ó lo¹i bá mét phÇn cña C free tõ sù xem xÐt. DÇn dÇn, ®¹t tíi møc ®é tõng phÇn cña Cfree ®•îc lo¹i bá ®Ó nh÷ng cÊu h×nh duy nhÊt cßn l¹i ph¶i thuéc trong Cobs. Víi bÊt kú kiÓu va ch¹m EV nµo (H1 H2) \ H3 Cfree. Ph¸t biÓu t•¬ng tù cho nh÷ng va ch¹m kiÓu VE. Mét vÞ tõ l«gÝc, cã thÓ x©y dùng ®Ó x¸c ®Þnh q Cobs víi thêi gian tuyÕn tÝnh theo sè nh÷ng mÉu cña Cobs. Mét vÊn ®Ò quan träng cßn l¹i. BiÓu thøc n( ) kh«ng ph¶i lµ mét ®a thøc bëi v× cos( ) vµ sin( ) vÉn lµ nh÷ng ®èi t•îng trong ma trËn quay cña SO(2). NÕu mét ®a thøc cã thÓ lµ thay thÕ cho nh÷ng biÓu thøc nµy, th× mäi thø cã thÓ trë nªn cè ®Þnh v× biÓu thøc cña vect¬ ph¸p tuyÕn (kh«ng ph¶i lµ mét ®¬n vÞ chuÈn t¾c) vµ tÝch v« h•íng lµ c¶ hai hµm tuyÕn tÝnh, do ®ã thay ®æi ®a thøc vµo trong ®a thøc. Tuy nhiªn, mét c¸ch tiÕp cËn ®¬n gi¶n h¬n lµ sö dông nh÷ng sè phøc ®Ó ®¹i diÖn phÐp quay. Khi a + bi ®•îc sö dông ®Ó ®¹i diÖn phÐp quay, mçi ma trËn quay trong SO(2) ®•îc ®¹i diÖn nh• c«ng thøc vµ ma trËn 3x3 biÕn ®æi thuÇn nhÊt trë thµnh: (2.36) (2.37) (2.38) (2.39) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 47 Sö dông ma trËn nµy ®Ó thay ®æi mét ®iÓm [ x y 1 ] trong nh÷ng täa ®é ®iÓm (ax-by+xt, bx+ay+yt). Nh• vËy, bÊt kú ®iÓm biÕn ®æi trªn A lµ mét hµm tuyÕn tÝnh cña a, b, xt, vµ yt. 2.7. KÕt luËn. Ch•¬ng nµy tr×nh bµy c¸c vÊn ®Ò biÓu diÔn c¸c kh«ng gian cÊu h×nh vµ c¸c phÐp biÕn ®æi cña robot trong kh«ng gian ®Æc biÖt lµ kh«ng gian Cobs.§©y chÝnh lµ nh÷ng kiÕn thøc lµm nÒn t¶ng cho c¸c ph•¬ng ph¸p lËp lé tr×nh chÝnh x¸c. (2.40) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 48 Ch•¬ng III Mét sè ph•¬ng ph¸p chÝnh x¸c lËp lé tr×nh chuyÓn ®éng 3.1.Giíi thiÖu chung Trong vÊn ®Ò lËp tr×nh cho robot cã rÊt nhiÒu nh÷ng gi¶i thuËt lËp lé tr×nh, mçi gi¶i thuËt cã nh÷ng tiÒm n¨ng vµ øng dông nhÊt ®Þnh. C¸c ph•¬ng ph¸p cã thÓ bao gåm c¸c ph•¬ng ph¸p lÊy mÉu c¬ së, ph•¬ng ph¸p lËp lé tr×nh chÝnh x¸c. C¸ch tiÕp cËn tæ hîp tíi viÖc lËp lé tr×nh chuyÓn ®éng ®Ó t×m thÊy nh÷ng ®•êng ®i xuyªn qua kh«ng gian cÊu h×nh liªn tôc mµ kh«ng dïng ®Õn nh÷ng thuËt to¸n xÊp xØ. Nhê cã tÝnh chÊt nµy nªn c¸ch tiÕp cËn nµy cßn gäi lµ gi¶i thuËt lËp lé tr×nh chÝnh x¸c. Sù biÓu diÔn quan träng: Khi nghiªn cøu nh÷ng gi¶i thuËt nµy ®iÒu quan träng lµ viÖc xem xÐt cÈn thËn ®Þnh nghÜa ®Çu vµo : - M« h×nh nµo ®•îc sö dông ®Ó m« h×nh ho¸ robot vµ ch•íng ng¹i vËt? - TËp hîp nh÷ng biÕn ®æi nµo ®•îc ¸p dông cho Robot? - Sè chiÒu cña kh«ng gian? - Robot vµ kh«ng gian cã tho¶ m·n tÝnh chÊt låi kh«ng? - Chóng cã lµ ph©n ®o¹n tuyÕn tÝnh? ChØ ®Þnh râ c¸c ®Çu vµo cã thÓ x¸c ®Þnh tËp c¸c thÓ hiÖn cña bµi to¸n mµ trªn ®ã c¸c thuËt to¸n sÏ t¸c nghiÖp. NÕu nh÷ng thÓ hiÖn cã nh÷ng tÝnh chÊt thuËn lîi nhÊt ®Þnh (sè chiÒu cña kh«ng gian thÊp, nh÷ng m« h×nh thÓ hiÖn lµ kh«ng gian låi…) th× mét gi¶i thuËt tæ hîp cã thÓ cung cÊp mét gi¶i ph¸p rÊt tèt vµ thùc tÕ. NÕu tËp hîp cña nh÷ng thÓ hiÖn qu ¸ réng, th× mét yªu cÇu ph¶i tho¶ m·n c¶ tÝnh chÊt trän vÑn lÉn nh÷ng gi¶i ph¸p thùc hµnh cã thÓ v« lý, nh÷ng c«ng thøc chung cña vÊn ®Ò lËp lé tr×nh chuyÓn ®éng kh«ng thÓ ®¹t ®•îc. Tuy vËy, vÉn tån t¹i mét sè ®iÓm chung ®Ó Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 49 hoµn thµnh nh÷ng gi¶i thuËt lËp lé tr×nh chuyÓn ®éng. T¹i sao cÇn ph¶i nghiªn cøu ph•¬ng ph¸p lËp lé tr×nh tæ hîp? Cã hai lý do cÇn nghiªn cøu nh÷ng ph•¬ng ph¸p tæ hîp ®Ó tiÕp cËn tíi viÖc lËp lé tr×nh chuyÓn ®éng, ®ã lµ : Thø nhÊt, trong nhiÒu øng dông, viÖc lËp lé tr×nh chuyÓn ®éng cã thÓ chØ quan t©m ®Õn mét líp ®Æc biÖt, vÝ dô víi kh«ng gian chØ lµ kh«ng gian hai chiÒu 2D, vµ robot chØ cã kh¶ n¨ng tÞnh tiÕn. Khi tËp hîp nhiÒu líp ®Æc biÖt th× nh÷ng gi¶i thuËt thùc thi cã thÓ ®•îc ph¸t triÓn. Nh÷ng gi¶i thuËt nµy lµ ®Çy ®ñ, kh«ng phô thuéc vµo sù xÊp xØ, vµ tá ra thùc hiÖn tèt h¬n h¬n nh÷ng ph•¬ng ph¸p lËp lé tr×nh lÊy mÉu c¬ së. Thø hai, nh÷ng ph•¬ng ph¸p tæ hîp võa ®¸ng chó ý l¹i võa tho¶ m·n cho mét líp réng nh÷ng gi¶i thuËt lËp lé tr×nh chuyÓn ®éng. Tuy nhiªn, còng cÇn ph¶i chó ý víi ®a sè c¸c ph•¬ng ph¸p cã thÓ thùc th i, nh•ng ng•îc l¹i cßn mét sè gi¶i thuËt cßn qu ¸phøc t¹p vµ khã øng dông trong thùc tÕ. Dï mét gi¶i thuËt trong lý thuyÕt cho c¸c chi phÝ vÒ thêi gian thùc hiÖn rÊt nhá, nh•ng trong thùc tÕ khi thùc hiÖn th× nã khã cã thÓ ®¹t ®•îc møc chi phÝ ®ã. §«i khi ng•êi ta ph¶i chÊp nhËn tr•êng hîp nh÷ng gi¶i thuËt cã thêi gian ch¹y xÊu h¬n nhiÒu so víi gi¶i thuËt lý thuyÕt nh•ng l¹i dÔ hiÓu vµ dÔ thùc hiÖn h¬n. §©y còng vÉn lµ mét vÊn ®Ò më ®Ó nh÷ng ng•êi lËp tr×nh cÇn cè g¾ng x©y dùng nh÷ng gi¶i thuËt ngµy cµng hiÖu qu¶ h¬n cho dï hiÖn nay kÕt qu¶ chñ yÕu vÉn lµ trªn lý thuyÕt. V× vËy nã lu«n thóc ®Èy mäi ng•êi t×m kiÕm nh÷ng gi¶i thuËt ®¬n gi¶n vµ hiÖu qu¶ h¬n trong thùc tÕ. Roadmaps HÇu nh• tÊt c¶ c¸ch tiÕp cËn cña viÖc lËp lé tr×nh chÝnh x¸c lµ x©y dùng mét ®•êng ®i theo mét c¸ch nµo ®ã ®Ó gi¶i quyÕt nh÷ng truy vÊn. Kh¸i niÖm nµy ®· ®•îc giíi thiÖu. Nh•ng trong ch•¬ng nµy yªu cÇu Roadmaps ph¶i ®•îc ®Þnh nghÜa chÝnh x¸c h¬n bëi v× c¸c gi¶i thuËt ë ®©y cÇn x©y dùng trän vÑn. Mét sè gi¶i thuËt lËp lé tr×nh tæ hîp ®•îc tiÕp cËn theo ý t•ëng tr•íc hÕt x©y dùng mét sù ph©n ly Cfree vµ tõ ®ã sÏ x©y dùng lªn ®•êng ®i. Mét sè ph•¬ng ph¸p kh¸c l¹i trùc tiÕp x©y dùng mét Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 50 ®•êng ®i mµ kh«ng xem xÐt ®Õn sù ph©n ly «. §Þnh nghÜa Roadmap: Cho G lµ mét ®å thÞ t«p« ¸nh x¹ vµo trong Cfree. L¸t c¾t S Cfree lµ tËp hîp cña tÊt c¶ c¸c ®iÓm trong tÇm víi bëi G, (S= )]1,0([ £ e e  trong ®ã e([0,1]) Cfree lµ ¶nh cña ®•êng ®i e). §å thÞ G ®•îc gäi mét Roadmap nÕu nã tháa m·n hai ®iÒu kiÖn quan träng sau: 1. TÝnh dÔ tiÕp cËn : Tõ bÊt kú q Cfree, ph¶i tÝnh to¸n ®•îc mét ®•êng ®i hiÖu qu¶ vµ ®¬n gi¶n : [ 0, 1 ] Cfree sao cho (0) = q vµ (1) = s, trong ®ã s lµ mét ®iÓm bÊt kú trong S. Th«ng th•êng, s lµ ®iÓm gÇn nhÊt víi q, víi gi¶ thiÕt C lµ mét kh«ng gian metric. 2. Duy tr× kÕt nèi : Thø nhÊt, lu«n lu«n cã thÓ nèi ®•îc qI vµ qG tíi mét vµi s1 vµ s2, theo thø tù trong S. Thø hai yªu cÇu r»ng nÕu tån t¹i mét ®•êng ®i :[0,1] Cfree sao cho (0) = qI vµ (1) = qG, th× ë ®ã còng tån t¹i mét ®•êng ®i ' : [0,1] S, mµ '(0) = s1 vµ '(1) = s2. Nh• vËy, nh÷ng gi¶i ph¸p kh«ng lçi bëi v× G lu«n gi÷ liªn kÕt víi Cfree. §iÒu nµy b¶o ®¶m r»ng ph¸t triÓn nh÷ng gi¶i thuËt hoµn chØnh. Khi tháa m·n nh÷ng thuéc tÝnh nµy, mét ®•êng ®i sÏ cung cÊp mét sù biÓu diÔn rêi r¹c cho vÊn ®Ò lËp lé tr×nh chuyÓn ®éng. Mét truy vÊn, (qI, qG), ®•îc gi¶i quyÕt bëi viÖc nèi mçi truy vÊn ®iÓm cho Roadmap vµ sau ®ã biÓu diÔn mét sù t×m kiÕm ®å thÞ rêi r¹c trªn G. Duy tr× tÝnh chÊt ®Çy ®ñ, lµ ®iÒu kiÖn ®Çu tiªn b¶o ®¶m r»ng bÊt kú truy vÊn nµo ®Òu cã thÓ ®•îc nèi tíi G, vµ ®iÒu kiÖn thø hai b¶o ®¶m r»ng sù t×m kiÕm lu«n lu«n tiÕp nèi nÕu tån t¹i mét gi¶i ph¸p. 3.2. BiÓu diÔn kh«ng gian ch•íng ng¹i vËt Tr•íc khi nghiªn cøu mÉu chung nhÊt cña vÊn ®Ò lËp lé tr×nh tæ hîp, chóng ta nªn tiÕp cËn nh÷ng tr•êng hîp ®¬n gi¶n vµ trùc quan víi nh÷ng gi¶i thuËt minh b¹ch cho tr•êng hîp C = R2 vµ Cobs lµ ®a gi¸c. HÇu hÕt nh÷ng ®iÒu ®ã kh«ng thÓ trùc tiÕp ®•îc më réng tíi nh÷ng kh«ng gian cã sè chiÒu cao h¬n nh•ng nh÷ng nguyªn lý chung vÉn t•¬ng tù; Bëi vËy, rÊt cÇn thiÕt ®Ó tiÕp cËn viÖc lËp lé tr×nh chuyÓn ®éng chÝnh x¸c trong kh«ng gian hai chiÒu. Cã mét vµi øng dông cña nh÷ng gi¶i thuËt nµy cã thÓ trùc tiÕp ¸p dông. Mét vÝ dô cho viÖc lËp lé tr ×nh nhá cho mét Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 51 Robot di ®éng cã thÓ ®•îc m« h×nh nh• mét ®iÓm di ®éng trong mét toµ nhµ mµ b¶n ®å sµn nhµ ®•îc m« h×nh b»ng mét ®a gi¸c 2D 3.2.1 BiÓu diÔn Gi¶ thiÕt : W = R2; Nh÷ng ch•íng ng¹i O lµ ®a gi¸c; Robot A lµ mét robot ®iÓm chØ cã kh¶ n¨ng tÞnh tiÕn. Gi¶ sö Cobs còng lµ ®a gi¸c, tr•êng hîp ®Æc biÖt A lµ mét ®iÓm trong W, nh÷ng ¸nh x¹ trùc tiÕp tõ O tíi Cobs kh«ng cã bÊt kú sù biÕn d¹ng nµo. Nh• vËy, nh÷ng vÊn ®Ò ë ®©y ®•îc xem xÐt nh• viÖc lËp lé tr×nh cho mét robot ®iÓm. NÕu A kh«ng lµ robot ®iÓm th× hiÖu Minkowski cña O vµ A ®•îc tÝnh to¸n. Víi tr•êng hîp c¶ hai A vµ O lµ låi, gi¶i thuËt m« h×nh Cobs râ rµng trong tr•- êng hîp tÞnh tiÕn cã thÓ ®•îc ¸p dông tÝnh to¸n mçi thµnh phÇn cña C obs. H×nh 3.1 : Mét m« h×nh kh«ng gian ®•îc chØ râ bëi bèn ®a gi¸c cã h•íng ®¬n gi¶n. Trong tr•êng hîp tæng qu¸t, c¶ hai A vµ O cã thÓ lµ kh«ng låi vµ thËm chÝ chóng cã thÓ chøa ®ùng nh÷ng lç, nh• nh÷ng Cobs trong h×nh 3.1. Trong tr•êng hîp nµy, A vµ O ®•îc ph©n ly vµo trong nh÷ng thµnh phÇn låi, vµ hiÖu Minkowski ®•îc sö dông ®Ó tÝnh to¸n cho mçi cÆp cña nh÷ng thµnh phÇn. Mçi lÇn hiÖu Minkowski ®•îc tÝnh to¸n, chóng cÇn hîp nhÊt ®Ó thu ®•îc mét c¸ch biÓu diÔn d•íi d¹ng nh÷ng Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 52 ®a gi¸c ®¬n gi¶n, nh• nh÷ng ®a gi¸c trong H×nh 3.1. Thùc thi c¸c gi¶i thuËt trong phÇn nµy sÏ gióp chóng ta sö dông mét cÊu tróc d÷ liÖu cho phÐp truy cËp thuËn tiÖn vµo c¸c th«ng tin trong m« h×nh . §Ó biÓu diÔn ®•îc chóng ta cÇn ph¶i tr¶ lêi ®•îc nh÷ng c©u hái: - BiÓu diÔn ®•êng biªn ngoµi nh• thÕ nµo? - Nh÷ng lç ë trong nh÷ng ch•íng ng¹i ®•îc biÓu diÔn ra sao? - Lµm thÕ nµo chóng ta biÕt nh÷ng lç nµo bªn trong nh÷ng ch•íng ng¹i vËt? Nh÷ng truy vÊn nµy cã thÓ ®•îc tr¶ lêi hiÖu qu¶ bëi viÖc sö dông cÊu tróc d÷ liÖu danh s¸ch liªn th«ng hai ®Çu. Chóng ta sÏ cÇn biÓu diÔn nh÷ng m« h×nh vµ mäi th«ng tin kh¸c cña nh÷ng gi¶i thuËt lËp lé tr×nh ®Ó duy tr× trong thêi gian thùc hiÖn. Cã ba b¶n ghi kh¸c nhau : §Ønh : Mçi ®Ønh v chøa ®ùng mét con trá tíi mét ®iÓm ( x, y) C = R2 vµ mét con trá tíi nöa –c¹nh nµo ®ã mµ v lµ gèc cña nã. MÆt : Mçi mÆt cã mét con trá tíi mét chu tr×nh nöa –c¹nh trªn biªn giíi bao quanh mÆt; gi¸ trÞ con trá lµ NIL nÕu mÆt lµ biªn giíi ë ngoµi cïng. MÆt còng chøa ®ùng mét danh s¸ch nh÷ng con trá cho mçi thµnh phÇn cã quan hÖ (nh• c¸c lç) chøa ®ùng ë trong mÆt ®ã. Nöa – c¹nh: Mçi Nöa –c¹nh ®•îc ®Þnh h•íng ®Ó phÇn ch•íng ng¹i lu«n lu«n ë bªn tr¸i nã. C¸c nöa c¹nh lu«n lu«n ®•îc xÕp trong nh÷ng chu tr×nh ®Ó h×nh thµnh ranh giíi cña mét mÆt. Nh÷ng chu tr×nh nh• vËy lu«n ®Þnh h•íng ®Ó phÇn ch•íng ng¹i vËt lu«n lu«n ë bªn tr¸i nã. Nã gi÷ mèi liªn hÖ víi nöa c¹nh tiÕp theo vµ nöa c¹nh tr•íc nã trong chu tr×nh. VÝ dô trong H×nh 3.1, cã bèn chu tr×nh cña nh÷ng nöa c¹nh mµ mçi chu tr×nh lµ giíi h¹n cña mét mÆt kh¸c nhau. C¸c nöa c¹nh lu«n theo mét h•íng nhÊt ®Þnh nªn nh÷ng chu tr×nh gianh giíi ngoµi cña nh÷ng ch•íng ng¹i vËt lu«n lu«n ch¹y ng•îc chiÒu kim ®ång hå (bªn tr¸i), vµ nh÷ng chu tr×nh ranh giíi cña lç trèng lu«n Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 53 theo chiÒu thuËn chiÒu kim ®ång hå. 3.3. Mét sè gi¶i thuËt lËp lé tr×nh chÝnh x¸c cho robot Cã rÊt nhiÒu gi¶i thuËt kh¸c lËp lé tr×nh chÝnh x¸c. ë ®©y chóng ta tËp chung vµo hai gi¶i thuËt lËp lé tr×nh chÝnh x¸c tiªu biÓu ®ã lµ Visibility Graph vµ Cell decomposition. 3.3.1 . Roadmap Visibility Graph – §å thÞ tÇm nh×n Víi môc ®Ých t×m thÊy nh÷ng ®•êng ®i ng¾n nhÊt cho robot ®· dÉn tíi ph•¬ng ph¸p Roadmap Visibility graph. ý t•ëng cña gi¶i thuËt nµy cã thÓ ®•îc coi lµ vÝ dô ®Çu tiªn cho mét gi¶i thuËt lËp lé tr×nh chuyÓn ®éng. Roadmap Visibility graph cho phÐp l•ít qua nh÷ng gãc cña Cobs. Trong thùc tÕ, ®©y lµ mét vÊn ®Ò ®•a ra t•¬ng ®èi khã bëi v× C free lµ mét tËp hîp më. Bëi v× víi bÊt kú ®•êng ®i nµo : [0,1] Cfree, lu«n lu«n cã thÓ ®Ó t×m thÊy mét ®•êng ng¾n h¬n. Do lý do nµy, chóng ta ph¶i xem xÐt vÊn ®Ò x¸c ®Þnh nh÷ng ®•êng ®i ng¾n nhÊt trong cl(Cfree) – tËp ®ãng cña Cfree. §iÒu nµy cã nghÜa r»ng robot ®•îc cho phÐp “ch¹m” hoÆc “ l­ít qua ” nh÷ng ch­íng ng¹i, nh•ng nã kh«ng ®•îc phÐp xuyªn qua chóng. Trªn thùc tÕ ng•êi ta tÝnh to¸n ®iÒu chØnh mét l•îng nhá cho ®•êng ®i gi¶i ph¸p cña lé tr×nh, ®Ó chóng cã thÓ ®Õn rÊt gÇn Cobs nh•ng kh«ng va vµo chóng. §iÒu nµy lµm t¨ng thªm ë møc ®é kh«ng ®¸ng kÓ ®é dµi ®•êng dÉn. L•îng bæ sung cã thÓ ®•îc lµm nhá tïy ý cho ®•êng ®i cã thÓ ®Õn gÇn Cobs tuú ý. 3.3.1.1. X©y dùng Roadmap Visibility Graph Gi¶ thiÕt r»ng tÊt c¶ ®Ønh cña mét ®a gi¸c låi kh«ng cã ba ®Ønh liªn tiÕp nµo céng tuyÕn lµ ®Ønh ph¶n x¹. §å thÞ G víi: C¸c ®Ønh lµ c¸c ®Ønh ph¶n x¹. Nh÷ng c¹nh cña G ®•îc h×nh thµnh tõ hai nguån kh¸c nhau : - §Ønh ph¶n x¹ liªn tiÕp : NÕu hai ®Ønh ph¶n x¹ lµ ®iÓm cuèi cña mét c¹nh cña Cobs, th× mét c¹nh gi÷a chóng ®•îc x©y dùng bªn trong G. - TiÕp tuyÕn c¹nh : NÕu mét ®•êng tiÕp tuyÕn cã thÓ ®•îc vÏ xuyªn qua mét Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 54 cÆp cña ®Ønh ph¶n x¹, th× mét c¹nh t•¬ng øng ®•îc x©y dùng bªn trong G. Mét ®•êng tiÕp tuyÕn, lµ mét ®•êng liªn quan tíi hai ®Ønh ph¶n x¹ cña Cobs vµ c¸c ®Ønh nµy ph¶i nh×n thÊy lÉn nhau. Mét vÝ dô cña roadmap kÕt qu¶ ®•îc cho thÊy trong H×nh 3.2. H×nh 3.2 : X©y dùng Roadmap Visibility Graph bao gåm c¸c c¹nh gi÷a ®Ønh ph¶n x¹ liªn tiÕp trªn Cobs vµ c¶ nh÷ng c¹nh tiÕp tuyÕn. H×nh 3. 3 : qI vµ qG ®•îc nèi tíi tÊt c¶ ®Ønh cã thÓ thÊy cña roadmap ®Ó t×m kiÕm ®•êng dÉn Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 55 3.3.1.2. Gi¶i ph¸p cho truy vÊn: qI vµ qG ®•îc nèi tíi tÊt c¶ ®Ønh roadmap mµ cã thÓ thÊy trong H×nh 3.3, chÝnh ®iÒu ®ã lµm cho roadmap më réng cã thÓ t×m kiÕm ®•îc mét gi¶i ph¸p. NÕu gi¶i thuËt cña Dijkstra ®•îc sö dông, vµ nÕu mçi c¹nh ®•îc ®•a vµo mét gi¸ trÞ t•- ¬ng øng th× gi¸ cña ®•êng ®i chÝnh lµ ®é dµi cña ®•êng ®i ®ã, ®•êng ®i kÕt qu¶ gi¶i ph¸p lµ ®•êng ®i ng¾n nhÊt gi÷a qI vµ qG. §•êng ®i ng¾n nhÊt cho vÝ dô trong H×nh 3.3 ®•îc cho thÊy trong H×nh 3.4. H×nh 3.4 : §•êng ®i ng¾n nhÊt trong Roadmap lµ ®•êng ®i ng¾n nhÊt gi÷a qI vµ qG. §¸nh gi¸ gi¶i thuËt: NÕu tiÕp tuyÕn kiÓm tra ®•îc thùc hiÖn ®¬n gi¶n, th× kÕt qu¶ gi¶i thuËt yªu cÇu thêi gian O(n3), trong ®ã n lµ sè ®Ønh cña Cobs. Cã O(n 2) nh÷ng cÆp cña ®Ønh ph¶n x¹ cÇn kiÓm tra, vµ mçi sù kiÓm tra yªu cÇu O(n) thêi gian kiÓm tra nhÊt ®Þnh ®Ó ®¶m b¶o r»ng kh«ng cã bê nµo kh¸c ng¨n chóng nh×n thÊy nhau. Nguyªn lý planesweep cã thÓ ®•îc lµm thÝch nghi ®Ó thu ®•îc mét gi¶i thuËt tèt h¬n víi thêi gian cÇn thiÕt chØ lµ O(n2lg n). ý t•ëng thùc hiÖn nguyªn lý planesweep : Dïng mét tia quay quÐt tõ mçi ®Ønh ph¶n x¹, v. Mét tia ®•îc khëi ®éng t¹i = 0, vµ nh÷ng sù kiÖn xuÊt hiÖn khi tia ch¹m ®Ønh. Mét tËp hîp cña tiÕp tuyÕn xuyªn qua v cã thÓ ®•îc tÝnh to¸n bªn trong theo c¸ch nµy trong thêi gian O(nlgn). Tõ ®ã cã O(n) ®Ønh ph¶n x¹, tæng thêi gian thùc hiÖn lµ O(n2lgn). Ta thÊy mét gi¶i thuËt cã thÓ tÝnh to¸n ®•êng dÉn ng¾n Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 56 nhÊt trong thêi gian O(nlgn + m), trong ®ã m lµ tæng sè c¹nh trong roadmap. NÕu vïng ch•íng ng¹i ®•îc m« t¶ bëi mét ®a gi¸c ®¬n gi¶n, th× sù nhãm thêi gian cã thÓ ®•îc gi¶m tíi O(n). 3.3.1.3. Ch•¬ng tr×nh thö nghiÖm vµ ®¸nh gi¸ a) Ch•¬ng tr×nh thö nghiÖm Ch•¬ng tr×nh ®•îc viÕt b»ng ng«n ng÷ Visual Basic (xem phô lôc 1) dùa theo s¬ ®å thuËt to¸n nh• (h×nh 3.5). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 57 - Nèi I víi J - CËp nhËt träng sè ts(i,j) = ts(j,i) X¸c ®Þnh c¸c ®a gi¸c vËt c¶n víi tæng sè n ®Ønh Ghi nhËn to¹ ®é ®Ønh cña c¸c vËt c¶n i=1 I<=n Begin J=1, Dk =False J <=n k=1 §o¹n [I,J] giao víi ®o¹n [K,K+1] T Dk:=true K=K +1 F K I = I+1 J = J+1 F T T F K <=n <=n Dk=False T T F ¸p dông Dijktra t×m ®•êng ®i ng¾n nhÊt End ChØ ra ®•êng dÉn tèi •u H×nh 3.5 S¬ ®å thuËt to¸n Visibility Graph Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 58 b-KÕt qu¶ ®¹t ®•îc: Ch•¬ng tr×nh cho phÐp ng•êi sö dông cã thÓ x©y dùng kh«ng gian tr¹ng th¸i bÊt kú. Trªn c¬ së ®ã x©y dùng ®å thÞ tÇm nh×n vµ t×m ®•îc ®•êng ®i tèi •u cho robot tõ qI ®Õn qG bÊt kú. Ch•¬ng tr×nh trªn ®· ®•îc thö nghiÖm víi mét sè kh«ng gian cÊu h×nh nh• sau: H×nh 3.6- Mét sè ®•êng ®i gi¶i ph¸p cña ch•¬ng tr×nh thùc nghiÖm gi¶i thuËt Visibility Graph Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 59 3.3.2. Vertical Cell Decomposition (ph©n ly ¤ däc ) Nh÷ng ph•¬ng ph¸p tæ hîp ph¶i x©y dùng mét cÊu tróc d÷ liÖu h÷u h¹n ®Ó m· ho¸ chÝnh x¸c vÊn ®Ò lËp lé tr×nh. Nh÷ng gi¶i thuËt ph©n ly « h•íng tíi viÖc chia c¾t Cfree thµnh mét tËp hîp h÷u h¹n nh÷ng vïng gäi lµ nh÷ng «. Sù ph©n ly « cÇn ph¶i tháa m·n ba thuéc tÝnh : 1.ViÖc x©y dùng mét ®•êng ®i tõ mét ®iÓm bªn trong mét « ph¶i dÔ dµng. VÝ dô, nÕu mçi « låi, th× bÊt kú cÆp ®iÓm nµo trong mét « ®Òu cã thÓ nèi ®•îc bëi mét ®o¹n th¼ng. 2. Sù cung cÊp th«ng tin cho nh÷ng « liÒn kÒ ph¶i dÔ dµng ®Ó x©y dùng roadmap. 3. Cho tr•íc mét qI vµ qG, sù ph©n ly « cÇn ph¶i x¸c ®Þnh ®•îc nh÷ng « nµo chøa chóng. NÕu mét sù ph©n ly « tháa m·n nh÷ng thuéc tÝnh nµy, th× vÊn ®Ò lËp lé tr×nh chuyÓn ®éng ®•îc biÕn ®æi thµnh vÊn ®Ò t×m kiÕm ®å thÞ. Tuy nhiªn, trong sù thiÕt ®Æt hiÖn thêi, toµn bé ®å thÞ, G, th«ng th•êng ®•îc biÕt tr•íc. §iÒu nµy kh«ng gi¶ thiÕt riªng cho nh÷ng vÊn ®Ò lËp lé tr×nh. 3.3.2.1. §Þnh nghÜa sù ph©n ly däc: PhÇn nµy chóng ta giíi thiÖu mét gi¶i thuËt mµ x©y dùng mét sù ph©n ly « däc. Cfree ®•îc ph©n chia vµo trong mét tËp hîp h÷u h¹n cña nh÷ng 2-cell vµ 1-cell. Mçi 2 - cell lµ mét h×nh thang cã nh÷ng c¹nh däc hoÆc lµ mét h×nh tam gi¸c (lµ mét h×nh thang suy biÕn). Víi lý do nµy, ph•¬ng ph¸p nµy cßn ®•îc gäi sù ph©n ly h×nh thang. Sù ph©n ly ®•îc ®Þnh nghÜa nh• sau: Cho P biÓu thÞ tËp hîp cña ®Ønh ®Þnh nghÜa Cobs. T¹i mçi p P, dïng nh÷ng tia th¼ng h•íng h•íng lªn hoÆc xuèng xuyªn qua Cfree, cho ®Õn khi va ph¶i Cobs th× dõng l¹i. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 60 H×nh 3.7 : Bèn tr•êng hîp tæng qu¸t cña tia ph©n ly: 1) Cã thÓ theo hai h•íng xuèng xu«i hoÆc h•íng lªn, 2) ChØ h•íng lªn, 3) ChØ xu«i xuèng, vµ 4) Kh«ng thÓ më réng. 1. Khi ph©n ly sÏ cã bèn tr•êng hîp, nh• trong H×nh 3.7, phô thuéc vµo lµ nã cã thÓ ®Ó më réng theo hai ph•¬ng h•íng hay kh«ng. NÕu C free ®•îc ph©n chia theo nh÷ng tia nµy, th× kÕt qu¶ lµ mét sù ph©n ly däc. VÝ dô víi C obs trong H×nh 3.7 a sö dông sù ph©n ly däc Cfree ta ®•îc h×nh H×nh 3.7 b. H×nh 3.8 : Sö dông ph•¬ng ph¸p ph©n ly « däc ®Ó x©y dùng mét roadmap, ®•îc t×m kiÕm ®Ó sinh ra mét gi¶i ph¸p cho mét truy vÊn. Chó ý r»ng chØ nh÷ng h×nh thang vµ nh÷ng h×nh tam gi¸c thu ®•îc gäi lµ nh÷ng 2 - cell trong Cfree. Mçi 1-cell lµ mét ®o¹n däc ®¸p øng nh• mét c¹nh gi÷a hai 2 - cell. Khi ph©n ly chóng ph¶i b¶o ®¶m r»ng topology cña Cfree ®•îc biÓu diÔn chÝnh x¸c. Ta ®· biÕt r»ng Cfree ®· ®•îc ®Þnh nghÜa lµ mét tËp hîp më. Mçi 2- cell thËt sù còng ®•îc ®Þnh nghÜa lµ mét tËp hîp më trong R2; nh• vËy, nã lµ phÇn trong cña mét h×nh thang hoÆc h×nh tam gi¸c vµ 1- cell lµ nh÷ng ®iÓm trªn c¸c ®o¹n th¼ng. 3.3.2.2 §Þnh nghÜa roadmap trong ph•¬ng ph¸p §Ó ®iÒu khiÓn nh÷ng truy vÊn lËp lé tr×nh chuyÓn ®éng, mét roadmap ®•îc Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 61 x©y dùng tõ sù ph©n ly däc. Cho mçi « Ci, gäi qi lµ mét ®Ønh sao cho qi Ci khi ®ã qi ®•îc gäi lµ ®iÓm mÉu. Nh÷ng ®iÓm mÉu cã thÓ ®•îc lùa chän theo nhiÒu c¸ch, vÝ dô nh• nh÷ng träng t©m trong c¸c «, nh•ng sù lùa chän ®Æc biÖt kh«ng ph¶i lµ qu¸ quan träng, cã thÓ tån t¹i nhiÒu c¸ch lùa chän ®iÓm mÉu kh¸c. H×nh 3.9 : Roadmap b¾t nguån tõ sù ph©n ly « däc. Cho G(V,E) lµ mét ®å thÞ t«p« ®Þnh nghÜa nh• sau: Víi mçi «, Ci, ®Þnh nghÜa mét ®Ønh qi V. Víi mçi 2- cell, ®Þnh nghÜa mét c¹nh tõ ®iÓm mÉu ®· lùa chän cña nã ®Õn ®iÓm mÉu ®· lùa chän cña mçi 1- cell n»m däc theo ranh giíi cña nã. Mçi c¹nh lµ mét ®o¹n th¼ng nèi gi÷a c¸c ®iÓm lùa chän cña c¸c «. §å thÞ kÕt qu¶ lµ mét roadmap (H×nh 3.9). §iÒu kiÖn dÔ tiÕp cËn ®•îc tháa m·n bëi v× mçi ®iÓm mÉu cã thÓ ®¹t ®•îc bëi mét ®•êng ®i nhê vµo tÝnh låi cña mçi «. §iÒu kiÖn kÕt nèi còng ®•îc tháa m·n v× G nhËn ®•îc tõ sù ph©n ly «, mµ khi ph©n ly vÉn gi÷ quan hÖ thuéc Cfree. Mçi lÇn roadmap x©y dùng xong, c¸c th«ng tin vÒ « kh«ng cÇn ®•îc l•u gi÷ n÷a. §èi víi viÖc tr¶ lêi cho nh÷ng truy vÊn lËp lé tr×nh chÝnh lµ roadmap ®· x©y dùng. 3.3.2.3. T×m lêi gi¶i cho mét truy vÊn Mét lÇn roadmap thu ®•îc, nã cã thÓ tr¶ lêi râ rµng cho mét truy vÊn cña vÊn ®Ò lËp lé tr×nh chuyÓn ®éng tõ qI ®Õn qG. Cho C0 vµ Ck biÓu thÞ nh÷ng « chøa ®ùng Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 62 qI vµ qG t•¬ng øng. Trong ®å thÞ G, t×m kiÕm mét ®•êng ®i cã thÓ nèi tõ ®iÓm mÉu cña C0 tíi ®iÓm mÉu cña Ck. NÕu kh«ng cã ®•êng ®i nh• vËy nµo tån t¹i, th× gi¶i thuËt tuyªn bè kh«ng tån t¹i gi¶i ph¸p. NÕu tån t¹i mét ®•êng ®i th× cho C1, C2, . . ., Ck-1 lÇn l•ît ®i qua tÊt c¶ nh÷ng ®iÓm mÉu cña c¸c 1 - cell vµ 2- cell tõ C0 ®Õn Ck. Mét ®•êng ®i gi¶i ph¸p cã thÓ ®•îc h×nh thµnh mét c¸ch ®¬n gi¶n b»ng c¸ch “Nèi nh÷ng ®iÓm”, q0, q1, q2, . . ., qk-1, qk biÓu thÞ nh÷ng ®iÓm mÉu däc theo ®•êng ®i bªn trong G. §•êng ®i gi¶i ph¸p, : [ 0, 1 ] Cfree, ®•îc h×nh thµnh bëi viÖc ®Æt (0) = qI, (1) = qG, vµ viÖc ®Õn th¨m mçi ®iÓm trong d·y c¸c ®iÓm tõ q0 ®Õn qk ®i theo mét ®•êng ®i ng¾n nhÊt. VÝ dô, Gi¶i ph¸p trong H×nh 3.10. Trong viÖc lùa chän nh÷ng ®iÓm mÉu, ®iÒu ®ã quan träng ®Ó b¶o ®¶m r»ng mçi ®o¹n ®•êng ®i tõ ®iÓm mÉu cña mét « ®Õn ®iÓm mÉu cña nh÷ng « l¸ng giÒng cña nã kh«ng cã va ch¹m x¶y ra. H×nh 3.10 : VÝ dô mét ®•êng ®i gi¶i ph¸p 3.3.2.4. §¸nh gi¸ gi¶i thuËt: HiÖu qu¶ tÝnh to¸n sù ph©n ly sÏ ®•îc xem xÐt. Thùc chÊt trong vÊn ®Ò nµy c¸c b•íc ®Òu ®¬n gi¶n vµ thùc hiÖn bëi ph•¬ng ph¸p brute - force (b¾t Ðp th« b¹o) . NÕu Cobs cã n ®Ønh, th× c¸ch tiÕp cËn nµy cÇn Ýt nhÊt thêi gian lµ O(n2) v× ph¶i kiÓm tra sù giao nhau gi÷a mçi tia däc vµ mçi ®o¹n . NÕu tæ chøc cÈn thËn c¸c b•íc tÝnh to¸n th× kÕt qu¶ ch¹y thêi gian chØ cßn lµ O(nlgn). 3.3.2.5. Nguyªn lý quÐt mÆt ph¼ng: C¬ së cña gi¶i thuËt lµ nguyªn lý mÆt- quÐt (hoÆc ®•êng - quÐt) tõ mÉu h×nh Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 63 häc trªn m¸y tÝnh, ®©y còng lµ c¬ së cña nhiÒu gi¶i thuËt lËp lé tr×nh tæ hîp vµ nhiÒu gi¶i thuËt chung kh¸c. NhiÒu vÊn ®Ò h×nh häc tÝnh to¸n bëi m¸y tÝnh cã thÓ ®•îc xem xÐt nh• sù ph¸t triÓn cña nh÷ng cÊu tróc d÷ liÖu vµ gi¶i thuËt mµ kh¸i qu¸t hãa ph©n lo¹i vÊn ®Ò cho nhiÒu chiÒu. Nãi c¸ch kh¸c, nh÷ng gi¶i thuËt cÈn thËn “ s¾p xÕp ” c¸c th«ng tin h×nh häc. Tõ “QuÐt” ®­îc sö dông khi tr×nh bµy nh÷ng gi¶ i thuËt nµy v× cã thÓ h×nh dung ®ã lµ mét ®•êng (hoÆc mÆt ph¼ng) quÐt ngang qua kh«ng gian, chØ dõng khi ®¹t ®Õn tr¹ng th¸i thay ®æi nµo ®ã khi t×m thÊy th«ng tin. Trªn ®©y míi lµ sù miªu t¶ trùc quan, cßn viÖc quÐt ch•a ®•îc biÓu diÔn râ rµng b»ng gi¶i thuËt. §Ó x©y dùng sù ph©n ly däc, h×nh d¹ng mét ®•êng däc lµ ®•êng quÐt tõ x = - tíi x = , gi¶ sö (x, y) lµ mét ®iÓm trong C = R2. D÷ liÖu ®Çu vµo lµ tËp hîp P cña ®Ønh Cobs. Bëi vËy chóng ta chØ quan t©m ®Õn nh÷ng vÊn ®Ò xuÊt hiÖn ë nh÷ng ®iÓm nµy. S¾p xÕp nh÷ng ®iÓm trong P theo thø tù to¹ ®é x t¨ng dÇn. Gi¶ thiÕt th«ng th•êng kh«ng cã hai ®iÓm nµo cã cïng täa ®é x. Nh÷ng ®iÓm trong P b©y giê sÏ ®•îc th¨m theo thø tù ®· s¾p xÕp. Mçi lÇn th¨m mét ®iÓm sÏ ®•îc coi lµ mét sù kiÖn. Tr•íc, sau, vµ gi÷a mçi sù kiÖn, mét danh s¸ch L chøa mét vµi c¹nh Cobs sÏ ®•îc x¸c nhËn. Danh s¸ch nµy ph¶i ®•îc duy tr× trong suèt thêi gian theo thø tù nh÷ng c¹nh ®Õn khi nµo va ph¶i ®•êng quÐt däc. Danh s¸ch ®•îc s¾p xÕp theo thø tù t¨ng dÇn. H×nh 3.11 : VÝ dô cã 14 sù kiÖn. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 64 H×nh 3.12: T×nh tr¹ng cña L ®•îc chØ ra sau mçi 14 sù kiÖn xuÊt hiÖn. Nh÷ng b•íc thùc hiÖn gi¶i thuËt H×nh 3.11 vµ 3.12 thÓ hiÖn sù tr×nh diÔn gi¶i thuËt. §Çu tiªn, L trèng rçng, sau ®ã víi mçi sù kiÖn sÏ ®•a vµo danh s¸ch nh÷ng c¹nh biÓu diÔn cña Cfree cã liªn quan ®Õn sù kiÖn. Mçi thµnh phÇn liªn quan cña C free sinh ra mét phÇn tö ®¬n trong cÊu tróc d÷ liÖu. Sau vµi b•íc lÆp ta x©y dùng ®•îc L chÝnh x¸c. Mçi sù kiÖn sÏ xuÊt hiÖn lµ mét trong sè bèn tr•êng hîp trong H×nh 3.7. ViÖc duy tr× L trong mét c©y t×m nhÞ ph©n c©n ®èi, cã thÓ ®•îc x¸c ®Þnh trong thêi gian O(lg n), tèt h¬n rÊt nhiÒu so víi thêi gian O(n) cña tr•êng hîp b¾t buéc ph¶i kiÓm tra mäi ®o¹n. ViÖc phô thuéc vµo bèn tr•êng hîp xuÊt hiÖn tõ H×nh 3.7, dÉn tíi nh•ng cËp nhËt kh¸c nhau cña L ®•îc thùc hiÖn. NÕu tr•êng hîp xuÊt hiÖn ®Çu tiªn, th× hai c¹nh kh¸c nhau ®•îc chÌn vµo, vµ thÓ hiÖn ®ã trªn p lµ hai nöa ®o¹n. Hai tr•êng hîp tiÕp theo trong H×nh 3.7 th× ®¬n gi¶n h¬n; chØ mét thÓ hiÖn ®¬n ®•îc thùc hiÖn.Tr•êng hîp cuèi cïng, kh«ng xuÊt hiÖn viÖc ph©n ly. Mét lÇn thùc hiÖn thao t¸c ph©n ly bÒ mÆt cña Cfree th× L ®•îc cËp nhËt. Khi tia quÐt qua p, lu«n lu«n cã hai c¹nh bÞ ¶nh h•ëng. VÝ dô, trong tr•êng hîp ®Çu tiªn vµ cuèi cïng cña H×nh 3.7, hai c¹nh ph¶i ®•îc chÌn vµo trong L (¶nh ®èi xøng cña nh÷ng tr•êng hîp nµy lµ nguyªn nh©n hai c¹nh sÏ ®•îc xãa ®i tõ L). NÕu hai tr•êng hîp gi÷a xuÊt hiÖn, th× mét c¹nh ®•îc thay thÕ bëi ®èi t•îng kh¸c trong L. Nh÷ng thao t¸c thªm vµo vµ xãa ®i nµy cã thÓ ®•îc thùc hiÖn trong thêi gian O(lgn). Tõ ®ã khi cã sù kiÖn n, thêi gian cho x©y dùng gi¶i thuËt lµ O(nlgn). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 65 3.3.2.6. Ch•¬ng tr×nh thö nghiÖm Ch•¬ng tr×nh ®•îc viÕt b»ng ng«n ng÷ Visual Basic (xem phô lôc 2) dùa theo s¬ ®å thuËt to¸n nh• (h×nh 3.13). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 66 X¸c ®Þnh c¸c ®a gi¸c vËt c¶n víi tæng sè n ®Ønh Ghi nhËn to¹ ®é ®Ønh cña vËt c¶n A[i,j] Ph©n ly Cfree tia däc t¹i ®Ønh I X¸c ®Þnh ®iÓm mÉu X©y dùng Roadmap theo c¸c ®iÓm mÉu TÝnh to¸n vµ cËp nhËt ma trËn träng sè cña Roadmap T×m ®•êng ®i gi¶i ph¸p tõ qI ®Õn qG Begin End S¾p xÕp to¹ ®é c¸c ®iÓm mÉu theo thø tù t¨ng dÇn I=1 I<=n DK=True J <=n ®o¹n [J,J+1] giao víi tia däc qua I J =1 , DK=False DK=False J=J+1 T T F I=I+1 F H×nh 3.13 S¬ ®å thuËt to¸n Cell decomposition Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 67 KÕt qu¶ ®¹t ®•îc: Ch•¬ng tr×nh còng ®¸p øng ®•îc cho kh«ng gian tr¹ng th¸i bÊt kú víi ®Ých vµ nguån bÊt kú. VÝ dô: Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 68 H×nh 3.14- Mét sè ®•êng ®i gi¶i ph¸p cña ch•¬ng tr×nh thùc nghiÖm gi¶i thuËt Cell Decompsition KÕt luËn Trong luËn v¨n " Mét sè ph•¬ng ph¸p chÝnh x¸c lËp lé tr×nh lËp lé tr×nh chuyÓn ®éng cho Robot " em ®· thùc hiÖn ®•îc mét sè c«ng viÖc sau: 1. §· tr×nh bµy ®•îc tæng quan cña bµi to¸n lËp lé tr×nh chuyÓn ®éng cho robot vµ c¸c øng dông cña bµi to¸n trong thùc tÕ. 2. Kh¸i qu¸t ®•îc c¬ së to¸n häc ®Ó biÓu diÔn kh«ng gian cÊu h×nh cña bµi to¸n cho c¸c gi¶i thuËt lËp lé tr×nh cho Robot . 3. §i s©u nghiªn cøu hai ph•¬ng ph¸p chÝnh x¸c lËp lé tr×nh chuyÓn ®éng cho Robot ®ã lµ Rodmap Visibility Graph vµ Vertical Cell Decomposition. Cµi ®Æt thùc nghiÖm thµnh c«ng hai ph•¬ng ph¸p trªn víi kh«ng gian tr¹ng th¸i bÊt kú vµ t×m ®•îc ®•êng ®i tèi •u cho Robot. 4. H•íng më réng cña ®Ò tµi nµy lµ tiÕp tôc më réng nghiªn cøu ¸p dông cho c¸c ph•¬ng ph¸p lËp lé tr×nh chÝnh x¸c trªn vµ mét sè c¸c ph•¬ng ph¸p kh¸c nh• Vonoroi Diagram hay Cylindrical Algebraic Decomposition trong c¸c kh«ng gian tr¹ng th¸i cã sè chiÒu lín h¬n. Më réng bµi to¸n sang c¸c ph­¬ng ph¸p lÊy mÉu c¬ së…. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 69 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 70 TÀI LIÖU THAM KH¶O 1. A. Abrams and R. Ghrist(2002), Finding topology in a factory: Configuration spaces. The American Mathematics Monthly. 2. B. Aronov and M. Sharir(December-1997). On translational motion planning of a convex polyhedron in 3-space. SIAM Journal on Computing. 3. G. Dudek, M. Jenkin (2000), Computational Principles of Mobile Robots , MIT Press. 4. J.C. Latombe (1991), Robot Motion Planning, Kluwer Academic Publishers. 5. J. Angeles. Spatial Kinematic Chains (1982). Analysis, Synthesis, and Optimisation. Springer-Verlag, Berlin. 6. J. F. Canny (1988). The Complexity of Robot Motion Planning. MIT Press, Cambridge, MA. 7. M. A. Armstrong (1983). Basic Topology. Springer-Verlag, New York. 8. P. K. Agarwal, B. Aronov, and M. Sharir (1999). Motion planning for a convex polygon in a polygonal environment. Discrete and Computational Geometry. 9. Steven M. LaValle (2006), Planning algorithms, Cambridge University Press, 842 pages. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 71 Phô lôc 1 Ch•¬ng tr×nh ph•¬ng ph¸p visibility Graph Option Explicit Dim dx, dy, a, b, c, i, j, n, k, k1, k2, s, t, u, v, di, ddx, ddy, dcx, dcy As Integer Dim maxint, minp As Single Dim ts(1 To 50, 1 To 50) As Single Dim truoc(1 To 50), d(1 To 50) As Single Dim final(1 To 50) As Boolean Dim Ar(1 To 50), Br(1 To 50), dc(1 To 10) As Integer Dim x1, x2, y1, y2, xp1, xp2, yp1, yp2, xc, yc As Integer Dim dk, dk1 As Boolean --------------------------------------------------------------------------------------------------- Private Sub Command1_Click() For i = 1 To n For j = 1 To n ts(i, j) = maxint Next j Next i For s = 2 To t For i = 1 To n For j = 1 To n dk = False 'Loai truong hop hai diem cung da giac If (j i + 1) And (i <= dc(s)) And (j <= dc(s)) Then dk = True End If If (j i + 1) And (i >= dc(s)) And (j >= dc(s)) Then dk = True End If 'C¸c truong hop khac For k = 1 To n - 3 If (i j) Then x1 = Ar(j) - Ar(i) y1 = Br(j) - Br(i) x2 = Ar(k + 1) - Ar(k) y2 = Br(k + 1) - Br(k) If ((y1 * Ar(k) - x1 * Br(k) - Ar(i) * y1 + Br(i) * x1) * (y1 * Ar(k + 1) - x1 * Br(k + 1) - Ar(i) * y1 + Br(i) * x1) < 0) And ((y2 * Ar(i) - x2 * Br(i) - Ar(k) * y2 + x2 * Br(k)) * (y2 * Ar(j) - x2 * Br(j) - Ar(k) * y2 + x2 * Br(k)) < 0) Then dk = True End If 'Lo¹i tr•êng hîp ®iÓm cuèi mçi ®a gi¸c k1 = dc(s - 1) + 1 k2 = dc(s) + 1 x2 = Ar(k2) - Ar(k1) y2 = Br(k2) - Br(k1) If ((y1 * Ar(k1) - x1 * Br(k1) - Ar(i) * y1 + Br(i) * x1) * (y1 * Ar(k2) - x1 * Br(k2) - Ar(i) * y1 + Br(i) * x1) < 0) And ((y2 * Ar(i) - x2 * Br(i) - Ar(k1) * y2 + x2 * Br(k1)) * (y2 * Ar(j) - x2 * Br(j) - Ar(k1) * y2 + x2 * Br(k1)) < 0) Then dk = True End If Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 72 End If Next k If dk = False And (Ar(j) 0) And (Ar(i) 0) Then DrawWidth = 2 Line (Ar(i), Br(i))-(Ar(j), Br(j)), &H800080 ts(i, j) = Sqr((Ar(j) - Ar(i)) * (Ar(j) - Ar(i)) + (Br(j) - Br(i)) * (Br(j) - Br(i))) ts(j, i) = Sqr((Ar(j) - Ar(i)) * (Ar(j) - Ar(i)) + (Br(j) - Br(i)) * (Br(j) - Br(i))) End If Next j Next i Next s End Sub ------------------------------------------------------------------------------------------- Private Sub Command3_Click() 'duong di ngan nhat s = n - 1 t = n ' Khoi tao For v = 1 To n d(v) = ts(s, v) truoc(v) = s final(v) = False Next v truoc(s) = 0 d(s) = 0 final(s) = True Do While Not (final(t)) minp = maxint For v = 1 To n If (Not (final(v))) And (minp > d(v)) Then u = v minp = d(v) End If Next v final(u) = True If Not (final(t)) Then For v = 1 To n If (Not (final(v))) And (d(u) + ts(u, v) < d(v)) Then d(v) = d(u) + ts(u, v) truoc(v) = u End If Next v End If Loop DrawWidth = 4 i = truoc(t) Line (Ar(t), Br(t))-(Ar(i), Br(i)), &HFF& Do While i s Line (Ar(i), Br(i))-(Ar(truoc(i)), Br(truoc(i))), &HFF& i = truoc(i) Loop End Sub Private Sub Form_Load() maxint = 1000000 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 73 n = 1 t = 1 di = 1 dc(1) = 0 End Sub ------------------------------------------------------------------------------------------------------------- Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If O2.Value = True Then Select Case Button Case vbLeftButton If c 2 Then Circle (X, Y), 30 a = X b = Y c = 2 dx = a dy = b Ar(n) = a Br(n) = b Else n = n + 1 Circle (X, Y), 30 DrawWidth = 6 Line (a, b)-(X, Y), QBColor(2) a = X b = Y Ar(n) = a Br(n) = b End If Case vbRightButton c = 1 DrawWidth = 6 Line (dx, dy)-(a, b), QBColor(2) n = n + 1 Ar(n) = dx Br(n) = dy t = t + 1 dc(t) = n n = n + 1 End Select Else If O1.Value = True Then Select Case Button Case vbLeftButton Circle (ddx, ddy), 30, &H8000000F Circle (X, Y), 30, QBColor(3) ddx = X ddy = Y Print "qI" Ar(n) = ddx Br(n) = ddy Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 74 n = n + 1 Case vbRightButton Circle (dcx, dcy), 30, &H8000000F Circle (X, Y), 30, QBColor(4) dcx = X dcy = Y Print "qG" Ar(n) = dcx Br(n) = dcy End Select Else MsgBox " Hay chon nut..." End If End If End Sub Phô lôc 2 Ch•¬ng tr×nh ph•¬ng ph¸p Cell Decompsition Option Explicit Dim dx, dy, a, b, c, i, j, n, k, k1, k2, s, t, u, v, td1, td2, qI, qG As Integer Dim maxint, minp, tgx, tgy, tg1, tg2, ddx, ddy, dcx, dcy, tdy1max, tdy2min, tdxmax, tdxmin As Single Dim tsxmax(1 To 5), tsymax(1 To 5), tsxmin(1 To 5), tsymin(1 To 5), dn1(1 To 5), dn2(1 To 5) As Single Dim ts(1 To 60, 1 To 60) As Single Dim truoc(1 To 60), d(1 To 60), dinh(1 To 60) As Single Dim final(1 To 50) As Boolean Dim Ar(1 To 60), Br(1 To 60), dc(1 To 10) As Single Dim x1, x2, y1, y2, xp1, xp2, yp1, yp2, xc, yc As Integer Dim tdx1(1 To 60), tdy1(1 To 60), tdx2(1 To 60), tdy2(1 To 60) As Single Dim dk, dk1 As Boolean ----------------------------------------------------------------------------------------------------------------------- - Private Sub Command1_Click() ' phan ly DrawWidth = 2 n = n - 1 For s = 2 To t For i = 1 To n dk = False For j = 1 To n - 1 If (j dc(s)) Then If ((Ar(j) - Ar(i)) * (Ar(j + 1) - Ar(i)) Br(j)) Or (Br(i) > Br(j + 1))) Then dk = True dk1 = True End If End If Next j If dk1 = False Then 'loai truong hop canh noi giua hai da giac k1 = dc(s - 1) + 1 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 75 k2 = dc(s) + 1 If ((Ar(k2) - Ar(i)) * (Ar(k1) - Ar(i)) Br(k2)) Or (Br(i) > Br(k1))) Then dk = False End If End If If (i 1) And (i n) And (dk = False) Then 'Phan ly va cap nhat ma tran trung diem 1 DrawWidth = 1 Line (Ar(i), Br(i))-(Ar(i), 0) tdx1(td1) = Ar(i) tdy1(td1) = Br(i) / 2 td1 = td1 + 1 End If Next i Next s Line (tdx1(1) - 300, 0)-(tdx1(1) - 300, 7000) 'phan ly ngoai vung da giac tdxmin = tdx1(1) - 300 tdx1(td1) = tdxmin tdy1(td1) = 7000 / 2 td1 = td1 + 1 '************************************** For i = 1 To n dk = False dk1 = False For j = 1 To n - 1 If (j dc(s)) Then If ((Ar(j) - Ar(i)) * (Ar(j + 1) - Ar(i)) < 0) And ((Br(i) < Br(j)) Or (Br(i) < Br(j + 1))) Then dk = True dk1 = True End If End If Next j If dk1 = False Then 'loai truong hop canh noi giua hai da giac k1 = dc(s - 1) + 1 k2 = dc(s) + 1 If ((Ar(k2) - Ar(i)) * (Ar(k1) - Ar(i)) Br(k2)) Or (Br(i) > Br(k1))) Then dk = False End If End If If (i 1) And (i n) And (dk = False) Then 'Phan ly va cap nhat ma tran trung diem 2 DrawWidth = 1 Line (Ar(i), Br(i))-(Ar(i), 7000) tdx2(td2) = Ar(i) tdy2(td2) = Br(i) + (7000 - Br(i)) / 2 td2 = td2 + 1 End If Next i td1 = td1 - 1'Sap xep mang td1 va tim tung do lon nhat tdy1max = tdy1(2) For i = 3 To td1 If tdy1(i) > tdy1max Then tdy1max = tdy1(i) End If Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 76 Next i For i = 1 To td1 - 1 For j = i + 1 To td1 If tdx1(i) > tdx1(j) Then tgx = tdx1(i) tdx1(i) = tdx1(j) tdx1(j) = tgx tgy = tdy1(i) tdy1(i) = tdy1(j) tdy1(j) = tgy End If Next j Next i td2 = td2 – 1 'Sap xep mang td2 va tim tung do nho nhat tdy2min = tdy2(1) For i = 1 To td2 - 1 If tdy2(i) < tdy2min Then tdy2min = tdy2(i) End If Next i For i = 1 To td2 - 1 For j = i + 1 To td2 If tdx2(i) > tdx2(j) Then tgx = tdx2(i) tdx2(i) = tdx2(j) tdx1(j) = tgx tgy = tdy2(i) tdy2(i) = tdy2(j) tdy2(j) = tgy End If Next j Next i Line (tdx2(td2) + 300, 0)-(tdx2(td2) + 300, 7000) 'phan ly ngoai td2 = td2 + 1 tdxmax = tdx2(td2 - 1) + 300 tdx2(td2) = tdx2(td2 - 1) + 300 tdy2(td2) = 7000 / 2 For s = 2 To t ' Tim toa do giua cac vat can tsxmax(s) = Ar(s) tsxmin(s) = Ar(dc(s)) For i = dc(s - 1) + 1 To dc(s) If Ar(i) > tsxmax(s) Then tsxmax(s) = Ar(i) tsymax(s) = Br(i) End If If Ar(i) < tsxmin(s) Then tsxmin(s) = Ar(i) tsymin(s) = Br(i) End If Next i Next s Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 77 End Sub ------------------------------------------------------------------------------------------------------------ Private Sub Command3_Click() ' xay dung do thi For i = 1 To td1 + td2' Khoi tao mang trong so For j = 1 To td1 + td2 ts(i, j) = maxint Next j Next i DrawWidth = 3 If ddx < tdx1(1) Then If ddy < tdy1max Then If Sqr((tdx1(1) - ddx) * (tdx1(1) - ddx) + (tdy1(1) - ddy) * (tdy1(1) - ddy)) < Sqr((tdx1(2) - ddx) * (tdx1(2) - ddx) + (tdy1(2) - ddy) * (tdy1(2) - ddy)) Then Line (ddx, ddy)-(tdx1(1), tdy1(1)), QBColor(5) qI = 1 Else Line (ddx, ddy)-(tdx1(2), tdy1(2)), QBColor(5) qI = 2 End If Else If Sqr((tdx2(1) - ddx) * (tdx2(1) - ddx) + (tdy2(1) - ddy) * (tdy2(1) - ddy)) < Sqr((tdx2(2) - ddx) * (tdx2(2) - ddx) + (tdy2(2) - ddy) * (tdy2(2) - ddy)) Then Line (ddx, ddy)-(tdx2(1), tdy2(1)), QBColor(5) qI = 1 Else Line (ddx, ddy)-(tdx2(2), tdy2(2)), QBColor(5) qI = 2 End If End If Else If ddx >= tdx2(td2) Then If ddy < tdy1max Then If Sqr((tdx1(td1) - ddx) * (tdx1(td1) - ddx) + (tdy1(td1) - ddy) * (tdy1(td1) - ddy)) < Sqr((tdx1(td1 - 1) - ddx) * (tdx1(td1 - 1) - ddx) + (tdy1(td1 - 1) - ddy) * (tdy1(td1 - 1) - ddy)) Then Line (ddx, ddy)-(tdx1(td1), tdy1(td1)), QBColor(5) qI = td1 Else Line (ddx, ddy)-(tdx1(td1 - 1), tdy1(td1 - 1)), QBColor(5) qI = td1 - 1 End If Else If Sqr((tdx2(td2) - ddx) * (tdx2(td2) - ddx) + (tdy2(td2) - ddy) * (tdy2(td2) - ddy)) < Sqr((tdx2(td2 - 1) - ddx) * (tdx2(td2 - 1) - ddx) + (tdy2(td2 - 1) - ddy) * (tdy2(td2 - 1) - ddy)) Then Line (ddx, ddy)-(tdx2(td2), tdy2(td2)), QBColor(5) qI = td2 Else Line (ddx, ddy)-(tdx2(td2 - 1), tdy2(td2 - 1)), QBColor(5) qI = td2 - 1 End If End If Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 78 Else i = 1 If ddy < tdy1max Then Do While tdx1(i) < ddx i = i + 1 Loop If dcx > tdx1(i) Then Line (ddx, ddy)-(tdx1(i), tdy1(i)), QBColor(5) qI = i Else Line (ddx, ddy)-(tdx1(i - 1), tdy1(i - 1)), QBColor(5) qI = i - 1 End If Else Do While tdx2(i) < ddx i = i + 1 Loop If dcx > tdx2(i) Then Line (ddx, ddy)-(tdx2(i), tdy2(i)), QBColor(5) qI = i Else Line (ddx, ddy)-(tdx2(i - 1), tdy2(i - 1)), QBColor(5) qI = i - 1 End If End If End If End If '******************************************** k1 = 1 For i = 1 To td1 – 1 'noi cac diem mau Line (tdx1(i), tdy1(i))-(tdx1(i + 1), tdy1(i + 1)), QBColor(5) ts(k1, k1 + 1) = Sqr((tdx1(i + 1) - tdx1(i)) * (tdx1(i + 1) - tdx1(i)) + (tdy1(i + 1) - tdy1(i)) * (tdy1(i + 1) - tdy1(i))) ts(k1 + 1, k1) = Sqr((tdx1(i + 1) - tdx1(i)) * (tdx1(i + 1) - tdx1(i)) + (tdy1(i + 1) - tdy1(i)) * (tdy1(i + 1) - tdy1(i))) k1 = k1 + 1 Next i Line (tdx1(td1), tdy1(td1))-(tdx2(td2), tdy2(td2)), QBColor(5) ts(k1, k1 + 1) = Sqr((tdx2(td2) - tdx1(td1)) * (tdx2(td2) - tdx1(td1)) + (tdy2(td2) - tdy1(td1)) * (tdy2(td2) - tdy1(td1))) ts(k1 + 1, k1) = Sqr((tdx2(td2) - tdx1(td1)) * (tdx2(td2) - tdx1(td1)) + (tdy2(td2) - tdy1(td1)) * (tdy2(td2) - tdy1(td1))) k1 = k1 + 1 Line (tdx1(1), tdy1(1))-(tdx2(1), tdy2(1)), QBColor(5) For i = 1 To td2 - 1 Line (tdx2(i), tdy2(i))-(tdx2(i + 1), tdy2(i + 1)), QBColor(5) ts(k1, k1 + 1) = Sqr((tdx2(i + 1) - tdx2(i)) * (tdx2(i + 1) - tdx2(i)) + (tdy2(i + 1) - tdy2(i)) * (tdy2(i + 1) - tdy2(i))) ts(k1 + 1, k1) = Sqr((tdx2(i + 1) - tdx2(i)) * (tdx2(i + 1) - tdx2(i)) + (tdy2(i + 1) - tdy2(i)) * (tdy2(i + 1) - tdy2(i))) k1 = k1 + 1 Next i k = 1'Ghi diem ngat Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 79 i = 1 For s = 2 To t - 1 Do While tdx1(i) tsxmax(s) And (i < k1) i = i + 1 Loop dn1(k) = i i = 1 Do While (tdx2(i) tsxmax(s)) And (i < k1) i = i + 1 Loop dn2(k) = i k = k + 1 Next s '***************************************************** 'Noi diem dich voi do thi If dcx > tdx2(td2) Then 'diem dich nam sau If dcy < tdy1max Then 'diem cuoi nam tren If Sqr((tdx1(td1) - dcx) * (tdx1(td1) - dcx) + (tdy1(td1) - dcy) * (tdy1(td1) - dcy)) < Sqr((tdx1(td1 - 1) - dcx) * (tdx1(td1 - 1) - dcx) + (tdy1(td1 - 1) - dcy) * (tdy1(td1 - 1) - dcy)) Then Line (dcx, dcy)-(tdx1(td1), tdy1(td1)), QBColor(5) qG = td1 Else Line (dcx, dcy)-(tdx1(td1 - 1), tdy1(td1 - 1)), QBColor(5) qG = td1 - 1 End If Else If Sqr((tdx2(td2) - dcx) * (tdx2(td2) - dcx) + (tdy2(td2) - dcy) * (tdy2(td2) - dcy)) < Sqr((tdx2(td2 - 1) - dcx) * (tdx2(td2 - 1) - dcx) + (tdy2(td2 - 1) - dcy) * (tdy2(td2 - 1) - dcy)) Then Line (dcx, dcy)-(tdx2(td2), tdy2(td2)), QBColor(5) qG = td2 Else Line (dcx, dcy)-(tdx2(td2 - 1), tdy2(td2 - 1)), QBColor(5) qG = td2 - 1 End If End If Else If dcx <= tdx1(1) Then ''diem dich nam truoc If dcy < tdy1max Then If Sqr((tdx1(1) - dcx) * (tdx1(1) - dcx) + (tdy1(1) - dcy) * (tdy1(1) - dcy)) < Sqr((tdx1(2) - dcx) * (tdx1(2) - dcx) + (tdy1(2) - dcy) * (tdy1(2) - dcy)) Then Line (dcx, dcy)-(tdx1(1), tdy1(1)), QBColor(5) qG = 1 Else Line (dcx, dcy)-(tdx1(2), tdy1(2)), QBColor(5) qG = 2 End If Else If Sqr((tdx2(1) - dcx) * (tdx2(1) - dcx) + (tdy2(1) - dcy) * (tdy2(1) - dcy)) < Sqr((tdx2(2) - dcx) * (tdx2(2) - dcx) + (tdy2(2) - dcy) * (tdy2(2) - dcy)) Then Line (dcx, dcy)-(tdx2(1), tdy2(1)), QBColor(5) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 80 qG = 1 Else Line (dcx, dcy)-(tdx2(2), tdy2(2)), QBColor(5) qG = 2 End If End If Else 'diem dich nam trong vung phan ly j = 1 If dcy < tdy1max Then Do While (tdx1(j) < dcx) And (j < td1) j = j + 1 Loop If ddx > tdx1(j) Then Line (dcx, dcy)-(tdx1(j), tdy1(j)), QBColor(5) qG = j Else Line (dcx, dcy)-(tdx1(j - 1), tdy1(j - 1)), QBColor(5) qG = j - 1 End If Else Do While (tdx2(j) < dcx) And (j <= td2) j = j + 1 Loop If ddx < tdx2(j) Then Line (dcx, dcy)-(tdx2(j - 1), tdy2(j - 1)), QBColor(5) qG = j - 1 Else Line (dcx, dcy)-(tdx2(j), tdy2(j)), QBColor(5) qG = j End If End If End If End If '************************************************* 'Duong di giua cac vat can For s = 2 To t - 1 Line (tsxmax(s), tsymax(s) / 2)-(tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2, tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2), QBColor(5) tg1 = tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2 - tsxmax(s) tg2 = tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2 - tsymax(s) / 2 k1 = k1 + 1 Line (tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2, tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2)-(tsxmax(s), tsymax(s) + (7000 - tsymax(s)) / 2), QBColor(5) tg1 = tsxmax(s) - tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2 tg2 = tsymax(s) + (7000 - tsymax(s)) / 2 - tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2 k1 = k1 + 1 Next s End Sub Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 81 ------------------------------------------------------------------------------------------------- Private Sub Command4_Click() ' Tim duong di ngan nhat s = qI n = td1 + td2 - 1 t = qG ' Khoi tao For v = 1 To n d(v) = ts(s, v) truoc(v) = s final(v) = False Next v truoc(s) = 0 d(s) = 0 final(s) = True 'buoc lap Do While Not (final(t)) minp = maxint For v = 1 To n If (Not (final(v))) And (minp > d(v)) Then u = v minp = d(v) End If Next v final(u) = True If Not (final(t)) Then For v = 1 To n If (Not (final(v))) And (d(u) + ts(u, v) < d(v)) Then d(v) = d(u) + ts(u, v) truoc(v) = u End If Next v End If Loop DrawWidth = 5 i = t ' noi duong dan giai phap If (ddy < tdy1max) And (dcy < tdy1max) Then ' hai diem thuoc nua tren Line (ddx, ddy)-(tdx1(qI), tdy1(qI)), &HFF& Do While i s Line (tdx1(i), tdy1(i))-(tdx1(truoc(i)), tdy1(truoc(i))), &HFF& i = truoc(i) Loop Line (dcx, dcy)-(tdx1(qG), tdy1(qG)), &HFF& Else If (ddy > tdy1max) And (dcy > tdy1max) Then 'Hai diem thuoc nua duoi Line (ddx, ddy)-(tdx2(qI), tdy2(qI)), &HFF& Do While i s Line (tdx2(i), tdy2(i))-(tdx2(truoc(i)), tdy2(truoc(i))), &HFF& i = truoc(i) Loop Line (dcx, dcy)-(tdx2(qG), tdy2(qG)), &HFF& Else Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 82 If (ddy < tdy1max) Then ' qI nua tren qG nua duoi Line (ddx, ddy)-(tdx1(qI), tdy1(qI)), &HFF& If tdx1(dn1(1)) < tdx1(qI) Then k1 = dn1(1) k2 = qI - 1 Else k1 = qI k2 = dn1(1) - 1 End If For i = k1 To k2 Line (tdx1(i), tdy1(i))-(tdx1(i + 1), tdy1(i + 1)), &HFF& Next i s = 2 Line (tsxmax(s), tsymax(s) / 2)-(tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2, tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2), &HFF& Line (tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2, tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2)-(tsxmax(s), tsymax(s) + (7000 - tsymax(s)) / 2), &HFF& If tdx2(dn2(1)) < tdx2(qG) Then k1 = dn2(1) k2 = qG - 1 Else k1 = qG k2 = dn2(1) - 1 End If For i = k1 To k2 Line (tdx2(i), tdy2(i))-(tdx2(i + 1), tdy2(i + 1)), &HFF& Next i Line (dcx, dcy)-(tdx2(qG), tdy2(qG)), &HFF& Else ' qI nua duoi qG nua tren Line (ddx, ddy)-(tdx2(qI), tdy2(qI)), &HFF& If tdx2(qI) < tdx2(dn2(1)) Then k1 = qI k2 = dn2(1) - 1 Else k2 = qI - 1 k1 = dn2(1) End If For i = k1 To k2 Line (tdx2(i), tdy2(i))-(tdx2(i + 1), tdy2(i + 1)), &HFF& Next i s = 2 Line (tsxmax(s), tsymax(s) / 2)-(tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2, tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2), &HFF& Line (tsxmax(s) + (tsxmin(s + 1) - tsxmax(s)) / 2, tsymax(s) + (tsymin(s + 1) + (7000 - tsymin(s + 1)) / 2 - tsxmax(s)) / 2)-(tsxmax(s), tsymax(s) + (7000 - tsymax(s)) / 2), &HFF& If tdx1(qG) < tdx1(dn1(1)) Then k1 = qG k2 = dn1(1) - 1 Else k1 = dn1(1) k2 = qG - 1 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 83 End If For i = k1 To k2 Line (tdx1(i), tdy1(i))-(tdx1(i + 1), tdy1(i + 1)), &HFF& Next i Line (dcx, dcy)-(tdx1(qG), tdy1(qG)), &HFF& End If End If End If End Sub ----------------------------------------------------------------------------------------- Private Sub Form_Load() n = 1 t = 1 dc(1) = 0 dk1 = False td1 = 1 td2 = 1 ddx = 0 ddy = 0 dcx = 0 dcy = 0 maxint = 100000 End Sub -------------------------------------------------------------------------------------------------------------------- Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If O2.Value = True Then Select Case Button Case vbLeftButton If c 2 Then Circle (x, y), 30, QBColor(2) a = x b = y c = 2 dx = a dy = b Ar(n) = a Br(n) = b Else n = n + 1 Circle (x, y), 30, QBColor(2) DrawWidth = 7 Line (a, b)-(x, y), QBColor(2) a = x b = y Ar(n) = a Br(n) = b End If Case vbRightButton c = 1 DrawWidth = 7 Line (dx, dy)-(a, b), QBColor(2) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 84 n = n + 1 Ar(n) = dx Br(n) = dy t = t + 1 dc(t) = n n = n + 1 End Select Else If O1.Value = True Then Select Case Button Case vbLeftButton Circle (ddx, ddy), 30, &H8000000F Circle (x, y), 30, QBColor(3) ddx = x ddy = y Print "qI" Case vbRightButton Circle (dcx, dcy), 30, &H8000000F Circle (x, y), 30, QBColor(4) dcx = x dcy = y Print "qG" End Select Else MsgBox "Hay chon mot nut...!" End If End If End Sub

Các file đính kèm theo tài liệu này:

  • pdfdoc325.pdf
Tài liệu liên quan