ĐỒ án hệ THỐNG NHÚNG THIẾT kế ROBOT dò ĐƯỜNG TRONG mê CUNG đơn GIẢN

55 10 0
  • Loading ...
1/55 trang

Thông tin tài liệu

Ngày đăng: 04/05/2019, 20:37

Đô an thông nhung ĐỀ TÀI: THIẾT KẾ ROBOT DỊ ĐƯỜNG TRONG CUNG ĐƠN GIẢN Đơ an thơng nhung Mục lục CHƯƠNG TƠNG QUAN I.GIƠI THIÊU VÊ ROBOT TƯ HANH .4 1.1.Muc tiêu 1.2.Nôi dung CHƯƠNG II: CAC THANH PHÂN VA CÂU TRUC ROBOT .7 I.VI XỬ LÝ ARM 1.1.Cortex là gì? 1.2.Môt vài đăc điêm nôi bât cua STM32 10 1.3.Kiên truc đương ông .11 1.4 Mô hình lâp trình (programmer’s model) .12 1.5.Thanh ghi xPSR 13 1.6 Bô xư li Cortex 14 1.7.Timer thông (system timer) 15 1.8.Xư li ngăt (interrupt handling) 15 1.9.Bô điêu khiên vector ngăt lông (Nested Vector Interrupt Controller) 15 1.10.Ngăt ngoai (EXTI) 15 1.11 Sơ đô phân cưng ban 17 1.12.Cac công I/O đa dung 17 II CẢM BIẾN SIÊU ÂM SRF05 19 2.1.Chê đô 19 2.2.Chê đô 20 III Môt sô linh kiên khac 22 Đô an thông nhung 3.1 IC câu H (L293D) 22 3.2 Tranzitor C828 23 3.3 Đông bươc dây (step motor) 24 3.4 Câu truc cua xe 25 CHƯƠNG 3: THUÂT TOAN ĐƯỜNG – CODE SẢN PHẨM VA ỨNG DỤNG 27 I SƠ ĐÔ KHÔI TÔNG QUAT 27 1.1.Sơ đô khôi tông quat .27 1.2 Thuât toan đương .28 1.3 Lưu đô thuât toan .29 1.4:Code 29 II.PHAT TRIỂN VA ỨNG DỤNG .50 III TAI LIÊU THAM KHẢO 51 Đơ an thơng nhung CHƯƠNG TƠNG QUAN I.GIƠI THIÊU VÊ ROBOT TƯ HANH Robot tự hành hay robot di đông (mobile robots, thương gọi tăt là m obot) định nghĩa là môt loại xe robot có khả tự dịch chuyển, tự vận độ ng (có thể l ập trinh lại đươc) dươi khiển tự đ ộng để th ực hiên công công viêc đươc giao Theo lý thuyêt, môi trương hoat đơng cua robot tự hành có thê là đât, nư ơc, không khi, không gian vũ tru hay tô hợp chung Địa hình bê măt mà r obot di chuyên có thê phẳng hoăc thay đôi, lôi lõm Theo bô phân t hực hiên chun đơng, ta có thê chia robot tự hành làm lơp: chuyên đông bằng chân và chuyên đông banh.Trong lơp đâu tiên, chun đơng có nhơ cac chân băt chươc ch uyên đông cua và đơng vât Robot loai này có thê di chuyên rât tôt cac định hình lôi lõm, phưc ta p Tuy nhiên, cach phôi hợp cac chân vân đê gi ữ v ững tư thê là cơng viêc cực kì khó khăn Lơp lai (di chuyên banh) to th ực tê hơn, chung có thê làm vi êc tơt hâu hêt cac địa hình t ao Đi ên robot di chuyên banh đơn gian nhiêu, gân đam bao tinh ôn định cho robot Lơp này có thê chia thành lo ai: lo chuyên đ ông b ằng banh xe, loai chuyên đông vong xich và loai hôn hợp banh và xich Tiêm cua robot tự hành là hêt sưc rơng lơn Có thê đên robot vân chuyên vât liêu, hàng hóa cac nhà may, toa nhà, cua hàng, sân bay và thư viên; robot phuc vu quet d ọn đương phô; khoang chân không … Măc du ưng dung cao han chê ch ưa giai quyêt cua robot tự hành nh chi phi chê tao, đa không cho phep chung sư dung rông rai Môt nh ược êm khac cua robot tự hành ph đ ên là thiêu tinh linh hoat và thich ưng làm Đô an thông nhung viêc vị tri khac Bài toan tìm đ ương cua robot tự hành không phao là loai bài toan đơn gian nhiêu nghĩ luc ban đâu Trong đô an môn học này, bài toan tìm đương se giai quyêt m ưc đô không qua ph ưc tap Hình 1.1 môt sô hình anh vê robot tự hành Do đương (navigation) là môt khoa học dân hương robot tự hành di chun khơng gian làm viêc cua Trong vân đê đương, bài toan đ ược quan tâm nhiêu nhât là tìm đương vê đich mà không ch am vât c an đ ương Có hai bài toan tìm đương cho robot: bài toan cuc b ô (local) và bài toan toàn cuc (global) Trong bài toan toàn cuc, ban đô môi tr ương làm viêc c ua robot hoàn toàn biêt trươc, vân đê chinh là tìm đ ược đương cho robot tr ươc Đơ an thơng nhung xt phat Ơ bài toan c uc bô, môi trương làm viêc cua robot ch ưa bi êt ho ăc ch i biêt phân, robot hoàn toàn phai nhơ vào s ự c am nhân môi trương thông qua cam biên găn đê đ ương Bài toan toàn cuc to rõ l ợi thê là ta bi êt trươc đương tơi đich hay không trươc robot khơi hành Tuy vây l có han chêt là đoi hoi nhiêu lênh tinh toan và bô nh ơ, và đăc bi êt tình hu ơng xâu có thê xay nêu ban đô môi tr ương làm viêc không khai bao chinh xac, yêu câu biêt trươc hoàn toàn môi trương làm viêc là m ôt nhược êm c ua Trong đó, robot tìm đương cuc bô chi biêt thông tin xung quanh qua sensor cam nhân môi trương găn cung Vì thê, robot tìm đương cuc bơ có th ê không hoan thành viêc tơi đich, khai niêm ưu khơng có ý nghĩa bài toan này Tuy nhiên, dung lương bô nh và khôi l ượng tinh toan lai thâp Ngày nay, cach tiêp cân cuc bô và toàn c uc ngày càng phô bi ên, giup robot tự hành tăng tinh linh hoat và hiêu qua 1.1.Mục tiêu Muc tiêu cua đê tài là thi êt kê, thi công, điêu ên robot tự hành Robot tự hành có th ê ho at đơng ôn định, tự tìm đ ương tơi đich xac đ ịnh cua cung, có thê học nhanh chóng cach tìm đương thay đôi hình dang cung, sư dung thuât toan tìm kiêm theo hương ưu tiên re hương trươc Sư d ung kit vi xư lý đê xư lý thuât toan đương 1.2.Nôi dung Nôi dung nghiên cưu: Tìm hiêu vê kit arm cortex m3 Khao sat phân tich tông hợp: phân tich cach thưc hoat đ ông c ua robot t ự hành theo thiêt bô phân tìm Khao sat tinh kha thi cua thuât toan đương Thực nghiêm: kiêm tra tinh ôn định cua robot, ưu code Đanh gia kêt qua đat Đô an thông nhung Đô an thông nhung CHƯƠNG II: CAC THANH PHÂN VA CÂU TRUC ROBOT I.VI XỬ LÝ ARM Trong vài năm trơ l đây, môt xu hương chu y cac thiêt v vi điêu khiên là sư d ung cac chip ARM7 và ARM9 nh m ôt vi khiên đa dung Ngày cac nhà san xuât IC đưa th ị tr ương h ơn 240 dong vi điêu khiêu sư d ung lõi ARM Tâp đoàn ST Microelectronic vưa cho măt dong STM32, vi điêu khiên đâu tiên dựa nên lõi ARM Cortex-M3 thê h ê m hang ARM thiêt kê, lõi ARM Cortex-M3 là cai tiên cua lõi ARM7 truyên th ông, tưng mang lai thành công vang d ôi cho công ty ARM Dong STM32 thi êt l âp cac tiêu chuân mơi vê hi suât, chi phi, nh kha đap ưng cac ưng dung tiêu thu lượng thâp và tinh điêu khiên thơi gian thực khăt khe 1.1.Cortex là gì? Dong ARM Cortex là môt bô x lý th ê h ê m đưa môt ki ên truc chu ân cho nhu câu đa dang vê công ngh ê Không giông cac chip ARM khac, dong Cortex là môt lõi vi xư lý hoàn thi ên, đưa môt chuân CPU và ki ên truc h ê thông chung Dong Cortex gơm có phân nhanh chinh: dong A dành cho cac ưng dung cao câp, dong R cho cac ưng dung thơi gian thực nh cac đ âu đ ọc và dong M cho cac ưng dung vi điêu khiên và chi phi thâp STM32 thi êt dựa dong Cortex-M3, dong Cortex-M3 thi êt đ ăc bi êt đ ê nâng cao hi su ât th ông, kêt hợp vơi tiêu thu l ượng thâp, Cortex-M3 thi êt nên kiên truc mơi, có chi phi san xuât th âp đu đ ê c anh tranh v cac dong vi điêu khiên và 16-bit truyên thông Cac chip ARM7 và ARM9 cac nhà san xuât ban d ân thi êt v gi phap riêng cua mình, đăc biêt là phân xư lý cac ng ăt đ ăc bi êt (exception) và cac ngăt thông thương (interrupt) Cortex-M3 đưa môt lõi vi điêu ên chuân nhằm cung câp phân tông quat, quan trọng nhât cua môt vi ên, bao gôm thông ngăt (interrupt system), SysTick timer (đ ược thi êt cho h ê hành thơi gian thực), th ông kiêm lôi (debug system) và memory map, không Đô an thông nhung gian địa chi 4Gbyte c ua Cortex-M3 chia thành cac vung cho ma ch ương trình, SRAM, ngoai vi và ngoai vi th ông Không giông vơi ARM7 thi êt theo kiên truc Von-Neumann (bô nh chương trình và bô nh d ữ li chung vơi nhau), Cortex-M3 thiêt theo ki ên truc Harvard (b ô nh ch ương trình và bô nhơ liêu tach biêt vơi nhau), và có nhiêu bus cho phep th ực hi ên cac thao tac song song vơi nhau, làm tăng hiêu su ât c ua chip Khơng gi ơng v cac kiên truc ARM trươc đó, dong Cortex cho phep truy c âp d ữ li không xêp hàng (unaligned dât, vì chip ARM là kiên truc 32-bit, tât c a cac d ữ li hoăc ma chương trình đêu săp xêp khit vơi vung bô nh là b ôi c ua 4byte) Đăc điêm này cho phep sư d ung hiêu qua SRAM n ôi Dong Cortex h ô tr ợ viêc đăt và xóa cac bit bên hai vung 1Mbyte cua bô nh b ằng phương phap gọi là bit banding Đăc điêm này cho phep truy câp hi qu a t cac ghi ngoai vi và cac dung bô nhơ SRAM mà không cân môt b ô x lý luân lý (Boolean processor) Hình 2.1 Kiên truc vi xư lý ARM Cortex-M3 Khôi trung tâm cua STM32 là bô x lý Cortex-M3 B ô x lý Cortex-M3 là môt vi điêu khiên tiêu chuân hóa gơm mơt CPU 32-bit, c âu truc bus (bus Đô an thông nhung structure), đơn vị x lý ng ăt có hơ tr ợ tinh l ông ng ăt vào (nested interrupt unit), th ông kiêm lôi (debug system) và tiêu chuân b ô tri b ô nh (standard memory layout) Môt thành phân chinh cua lõi Cortex-M3 là NVIC (Nested Vector Interrupt Controller) NVIC cung câp môt c âu truc ngăt chu ân cho tât c a cac vi điêu khiên thiêt d ựa lõi Cortex và cach x lý cac ng ăt đ ăc biêt (exceptional interrupt) NVIC cung câp cac vector ngăt chuyên d ung lên t 240 nguôn ngăt tư ngoai vi, mơi ngn ngăt có thê đ ược ưu tiên hóa v cac mưc riêng biêt NVIC thiêt đ ê x lý cac ng ăt đoi h oi th gian đap ưng cực kì nhanh (extremely fast interrupt) Thơi gian tư luc nh ân m ôt tin hi ng ăt cho tơi thực thi dong lênh đâu tiên trình ph uc v u ng ăt ch i là 12 chu kì xung nhịp Công viêc này thực hiên tự đ ông bơi môt vi chương trình (microcode) cài săn CPU Trong trương hợp xuât hiên cac interrupt lông (tưc là xay ngăt x lý ng ăt tr ươc đó), NVIC s d ung môt phương phap gọi là “tail chain” cho phep ngăt lien ti êp ph uc v u v đ tr ê nho ch i chó chu kì xung nh ịp Trong suôt giai đo an lưu trữ d ữ li lên vung nhơ stack đ ê b ăt đâu thực thi chương trình phuc vu ng ăt, m ơt ngăt có m ưc ưu tiên cao ngăt hiên tai có thê c anh tranh vơi (pre-empt) ngăt hi ên tai mà không chịu bât kì trì hoan nào C âu truc ngăt kem v ch ê đ ô ti êt kiêm lượng cua lõi Cortex-M3 CPU có th ê câu hình tự đ ông vào chê đô tiêt kiêm lượng sau thoat khoi ngăt Sau lõi ti êp tuc ngu cho đên mơt exceptiong (ngăt đăc biêt) xuât hiên Măc du Cortex-M3 thiêt là m ôt lõi chi phi th âp (low cost core), vân là mơt CPU 32-bit và vân hô tr ợ hai ch ê đ ô ho at đ ông: Thread và Hander, môi chê đô có th ê đ ược câu hình vơi mơi vung stack riêng bi êt c ua nó, điêu này cho phep thiêt cac ph ân mêm phưc tap và h ô tr ợ cac h ê hành thơi gian thực Lõi Cortex có hơ tr ợ m ôt timer 24-bit tự đ ông n ap l gia trị, se cung câp mơt ngăt timer đêu đăn cho môt nhân RTOS (Real Time Operating System) Cac chip ARM7 và ARM9 có hai tâp l ênh (tâp l ênh ARM 32- Đô an thông nhung TIM_OCInitStructure.TIM_Pulse = 1000; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); } void bat_pwm3() { TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 500; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC4Init(TIM2, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); } void tat_pwm3() { TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 1000; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; Đô an thông nhung TIM_OC4Init(TIM2, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); } // cac ham dieu khien banh dong co // chan PA0, PA1, PA2 , PA3 //ham tien void tien(void) { tat_pwm3(); //dk dong co ben phai quay ve phia truoc bat_pwm2(); tat_pwm1(); bat_pwm0(); } //ham dung xe void dunglai(void) { tat_pwm3(); tat_pwm2(); tat_pwm1(); tat_pwm0(); //dk dong co ben phai quay ve phia truoc Đô an thông nhung } //ham quay trai void quaytrai(void) { bat_pwm3(); //dk dong co ben phai quay ve phia truoc tat_pwm2(); tat_pwm1(); //dk dong co ben trai quay ve phia sau bat_pwm0(); Delay(64); //ham tao delay tat_pwm3(); //dung ca hai banh tat_pwm2(); tat_pwm1(); tat_pwm0(); } // ham quay sang phai void quayphai(void) { tat_pwm3(); //dk dong co ben phai quay ve phia sau bat_pwm2(); bat_pwm1(); tat_pwm0(); //dk dong co ben trai quay ve phia sau Đô an thông nhung Delay(64); tat_pwm3(); tat_pwm2(); tat_pwm1(); tat_pwm0(); } // ham quay dang sau void quaydangsau(void) { tat_pwm3(); //dk dong co ben phai quay ve phia sau bat_pwm2(); bat_pwm1(); //dk dong co ben trai quay ve phia truoc tat_pwm0(); Delay(126); // delay tat_pwm3(); tat_pwm2(); tat_pwm1(); tat_pwm0(); } //cac ham dieu khien dong co buoc Đô an thông nhung // cac chan PB2, PB3, PB4, PB5 duuoc su dung de dieu khien dong co buoc void trai90(void) { x=13; while(x ) { GPIO_WriteBit(GPIOB, GPIO_Pin_3,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_3,0); Delay1(100); GPIO_WriteBit(GPIOB, GPIO_Pin_4,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_4,0); Delay1(100); GPIO_WriteBit(GPIOB, GPIO_Pin_5,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_5,0); Delay1(100); GPIO_WriteBit(GPIOB, GPIO_Pin_2,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_2,0); Đô an thông nhung Delay1(100); } } void phai180(void) { x=26; while(x ) { GPIO_WriteBit(GPIOB, GPIO_Pin_5,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_5,0); Delay1(100); GPIO_WriteBit(GPIOB, GPIO_Pin_4,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_4,0); Delay1(100); GPIO_WriteBit(GPIOB, GPIO_Pin_3,1); Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_3,0); Delay1(100); GPIO_WriteBit(GPIOB, GPIO_Pin_2,1); Đô an thông nhung Delay1(1100); GPIO_WriteBit(GPIOB, GPIO_Pin_2,0); Delay1(100); } } ///cac ham giao tiep voi cam bien //chan PB6 duoc su dung de tao xung lon hon 10us khoi dong cam bien int dokhoangcach(void) { ok=0; bien=0; bien1=0; khoangcach=0; GPIO_WriteBit(GPIOB, GPIO_Pin_6,1); // Delay1(2); //cho mot xung lon hon 10us vao chan TRIGGER-ECHO cua cam bien GPIO_WriteBit(GPIOB, GPIO_Pin_6,0); // TIM_SetCounter(TIM1, 0); Delay1(3000);// tao delay 30ms dam bao cho cam bien da tra ve gia tri duoc Đô an thông nhung khoangcach=(bien-bien1)/58; // lay gia tri nhan duoc luu vao bien khoang cach if(khoangcach30)) // neu ben trai co duong di thi dieu khien xe di ve ben trai { Delay(5); tien(); Delay(80); dunglai(); Delay(30); quaytrai(); Delay(30); tien(); Delay(80); dunglai(); goto next; } if((giua==0) | (giua>9)) va phia truoc co duong thi cho xe di thang // // neu ben trai ko co duong Đô an thông nhung { goto next; } if((phai==0) | (phai>30)) // neu ben trai va phia truoc ko co duong thi cho xe re phai { quayphai(); Delay(10); tien(); Delay(25); dunglai(); goto next; } quaydangsau(); // neu phia truoc , ben trai, ben phai deu khong co duong thi cho xe quay lai next: tien(); Delay(25); dunglai(); Đô an thông nhung } } void EXTI1_IRQHandler(void) //ham ngat ngoai { if(EXTI_GetITStatus(KEY_BUTTON_EXTI_LINE) != RESET) { ok++; if(ok==1) { bien1=TIM_GetCounter(TIM1); } if(ok==2) { bien=TIM_GetCounter(TIM1); ok=0; } EXTI_ClearITPendingBit(KEY_BUTTON_EXTI_LINE); //xoa bit co ngat } } Đô an thông nhung /////*bai toan duong me cung vuong thang goc don gian*//////// II.PHAT TRIỂN VA ỨNG DỤNG Có thê lăp thêm cac loai cam biên khac lên robot đ ê ph uc v u cac nhu c âu khac vi du nhiêt đô đô âm … đê ki êm tra tình tr ang ho at đ ông c ua môt sô loai may móc hoăc môt sơ địa hình khó cham tơi Ưu điêm cua robot đương siêu âm là khong cân vach ch i đ ương cac yêu câu bê măt khac(tương đen hoăc tr ăng) nên môi tr ương ho at đông rông lọi thê hoàn toàn so vơi hông ngoai vê khoang cach Đô an thông nhung III TAI LIÊU THAM KHAO Embedded Systems Architecture http://letsmakerobots.com/blog Kien truc co ban cua STM32-ARM Cortex M3 STM32F103xx Reference Manual ... hiên chun đơng, ta có thê chia robot tự hành làm lơp: chuyên đông bằng chân và chun đơng banh .Trong lơp đâu tiên, chun đơng có nhơ cac chân băt chươc ch uyên đông cua và đông vât Robot loai... an : Xây dựng môt trân mê cung bât ky lôi vào lôi Xây dựng mô hình robot tự hành có đơng di chuy ên, đơng chinh góc quay cua cam biên Sư dung cam biên siêu âm Kêt qua: robot có thê di chuyên,... nhung CHƯƠNG TÔNG QUAN I.GIƠI THIÊU VÊ ROBOT TƯ HANH Robot tự hành hay robot di đông (mobile robots, thương gọi tăt là m obot) định nghĩa là môt loại xe robot có khả tự dịch chuyển, tự vận độ
- Xem thêm -

Xem thêm: ĐỒ án hệ THỐNG NHÚNG THIẾT kế ROBOT dò ĐƯỜNG TRONG mê CUNG đơn GIẢN, ĐỒ án hệ THỐNG NHÚNG THIẾT kế ROBOT dò ĐƯỜNG TRONG mê CUNG đơn GIẢN, I.GIỚI THIỆU VỀ ROBOT TỰ HÀNH, CHƯƠNG II: CÁC THÀNH PHẦN VÀ CẤU TRÚC ROBOT, II. CẢM BIẾN SIÊU ÂM SRF05, III. Một số linh kiện khác, SẢN PHẨM VÀ ỨNG DỤNG, 3 Lưu đồ thuật toán

Gợi ý tài liệu liên quan cho bạn