Tải bản đầy đủ - 0 (trang)
I.GIỚI THIỆU VỀ ROBOT TỰ HÀNH

I.GIỚI THIỆU VỀ ROBOT TỰ HÀNH

Tải bản đầy đủ - 0trang

Đô an hê thông nhung

viêc ơ những vị tri khac nhau. Bài toan tìm đ ương cua robot tự hành cũng không

phao là loai bài toan đơn gian như nhiêu ngươi nghĩ luc ban đâu. Trong đô an

môn học này, bài toan tìm đương se được 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

chuyên trong không gian làm viêc cua nó. Trong vân đê do đươ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 trên đ ương

đi. 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 đi cho robot tr ươc khi nó



Đơ an hê 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 1 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 trên nó đê do đ ương. Bài toan toàn cuc to rõ l ợi thê là ta bi êt

trươc đương đi tơi đich hay khơng trươc khi robot khơi hành. Tuy vây nó l ai 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 ra nêu ban đơ mơi tr ương làm viêc không được khai bao chinh xac,

yêu câu biêt trươc hoàn toàn môi trương làm viêc cũng là m ơt nhược đi êm c ua

nó. Trong khi đó, robot tìm đương cuc bơ chi biêt được 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 tôi ưu không có ý nghĩa trong 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 giữa cuc bô và toàn c uc đang 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 khi ên robot tự hành. Robot

tự hành có th ê ho at đông ôn định, tự tìm đ ương đi tơi đich xac đ ịnh cua mê

cung, có thê học nhanh chóng cach tìm đương đi khi thay đơi hình dang mê cung,

sư dung thuât toan tìm kiêm theo hương ưu tiên re 1 hương trươc. Sư d ung kit

vi xư lý đê xư lý thuât toan do đươ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 kê bô phân do tìm.

Khao sat tinh kha thi cua thuât toan do đương

Thực nghiêm: kiêm tra tinh ôn định cua robot, tôi ưu code

Đanh gia kêt qua đat được



Đô an hê thông nhung



Đô an hê 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 ai đây, môt trong những xu hương chu y êu trong cac

thiêt kê v ơi vi điêu khiên là sư d ung cac chip ARM7 và ARM9 nh ư m ôt vi đi êu

khiên đa dung. Ngày nay cac nhà san xuât IC đưa ra 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 ra măt dong

STM32, vi điêu khiên đâu tiên dựa trên nên lõi ARM Cortex-M3 thê h ê m ơi do

hang ARM thiêt kê, lõi ARM Cortex-M3 là sự cai tiên cua lõi ARM7 truyên th ông,

tưng mang lai sự 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 êu suât, chi phi, cũng nh ư kha năng đap ưng cac ưng

dung tiêu thu năng 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 ơi đưa ra môt ki ên truc chu ân

cho nhu câu đa dang vê công ngh ê. Không giông như cac chip ARM khac, dong

Cortex là môt lõi vi xư lý hoàn thi ên, đưa ra môt chuân CPU và ki ên truc h ê

thơng chung. Dong Cortex gơm có 3 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 được thi êt kê dựa trên

dong Cortex-M3, dong Cortex-M3 được thi êt kê đ ăc bi êt đ ê nâng cao hi êu su ât

hê th ông, kêt hợp vơi tiêu thu năng l ượng thâp, Cortex-M3 được thi êt kê trên

nên kiên truc mơi, do đó có chi phi san xuât th âp đu đ ê c anh tranh v ơi cac dong

vi điêu khiên 8 và 16-bit truyên thông.

Cac chip ARM7 và ARM9 được cac nhà san xuât ban d ân thi êt kê v ơi gi ai

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 ra môt lõi vi điêu khi ên chuân

nhằm cung câp phân tông quat, quan trọng nhât cua môt vi đi êu khi ên, bao

gôm hê thông ngăt (interrupt system), SysTick timer (đ ược thi êt kê cho h ê đi êu

hành thơi gian thực), hê th ông kiêm lôi (debug system) và memory map, không



Đô an hê thông nhung

gian địa chi 4Gbyte c ua Cortex-M3 được chia thành cac vung cho ma ch ương

trình, SRAM, ngoai vi và ngoai vi hê th ông. Không giông vơi ARM7 được thi êt kê

theo kiên truc Von-Neumann (bô nh ơ chương trình và bô nh ư d ữ li êu chung vơi

nhau), Cortex-M3 được thiêt kê theo ki ên truc Harvard (b ô nh ơ ch ương trình và

bô nhơ dữ liêu được 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, do đó làm tăng hiêu su ât c ua chip. Không gi ông v ơi

cac kiên truc ARM trươc đó, dong Cortex cho phep truy c âp d ữ li êu không xêp

hàng (unaligned dât, vì chip ARM là kiên truc 32-bit, do đó tât c a cac d ữ li êu

hoăc ma chương trình đêu được 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 con h ơ tr ợ

viêc đăt và xóa cac bit bên trong 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 êu qu a t ơi cac thanh ghi

ngoai vi và cac cơ được dung trên 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 được tiêu chn hóa gơm mơt CPU 32-bit, c âu truc bus (bus



Đô an hê thông nhung

structure), đơn vị x ư lý ng ăt có hơ tr ợ tinh năng l ông ng ăt vào nhau (nested

interrupt unit), hê th ông kiêm lôi (debug system) và tiêu chuân b ô tri b ô nh ơ

(standard memory layout).

Môt trong những 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 được thiêt kê d ựa trên 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 ơi

240 ngn ngăt tư ngoai vi, mơi ngn ngăt đó có thê đ ược ưu tiên hóa v ơi cac

mưc riêng biêt. NVIC được thiêt kê đ ê x ư lý cac ng ăt đoi h oi th ơi gian đap ưng

cực kì nhanh (extremely fast interrupt). Thơi gian tư luc nh ân m ôt tin hi êu ng ăt

cho tơi khi thực thi dong lênh đâu tiên trong trình ph uc v u ng ăt ch i là 12 chu kì

xung nhịp. Công viêc này được thực hiên tự đ ông bơi môt vi chương trình

(microcode) được cài săn trong CPU. Trong trương hợp xuât hiên cac interrupt

lông nhau (tưc là xay ra ngăt khi đang 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 được ph uc v u v ơi đ ô tr ê

nho ch i chó 6 chu kì xung nh ịp. Trong suôt giai đo an lưu trữ d ữ li êu 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 hơn 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ì sự trì hoan nào. C âu truc ngăt cũng đi kem v ơi ch ê đ ô ti êt

kiêm năng lượng cua trong lõi Cortex-M3. CPU có th ê được câu hình tự đ ơng vào

chê đô tiêt kiêm năng lượng sau khi thoat khoi ngăt. Sau đó lõi ti êp tuc ngu cho

đên khi môt exceptiong (ngăt đăc biêt) xuât hiên.

Măc du Cortex-M3 được thiêt kê là m ôt lõi chi phi th âp (low cost core),

nhưng nó 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 kê cac ph ân mêm phưc tap và h ô tr ợ cac h ê đi êu hành

thơi gian thực. Lõi Cortex có hơ tr ợ m ơt timer 24-bit tự đ ơng n ap l ai gia trị, nó

cũng 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 hê thông nhung

bit và tâp lênh Thumb 16-bit), trong khi đó dong Cortex được thi êt kê h ơ tr ợ tâp

lênh ARM Thumb-2, tâp lênh này được pha trôn giữa tâp l ênh 16 và 32-bit,

nhằm đat được hiêu suât cao cua tâp lênh ARM 32-bit vơi mât đô ma ch ương

trình tôi ưu cua tâp lênh Thumb 16-bit. Tâp lênh Thumb-2 được thi êt kê đ ăc

biêt dành cho trình biên dịch C/C++, tưc là cac ưng dung dựa trên n ên Cortex

hoàn toàn có thê đ ược viêt bằng ngôn ngữ C mà không c ân đên chương trình

khơi đông viêt bằng assembler như ARM7 và ARM9.



1.2.Môt vài đăc điêm nôi bât cua STM32

ST đa đưa ra thị tr ương 4 dong vi điêu khiên dựa trên ARM7 và ARM9,

nhưng STM32 là môt bươc tiên quan trọng trên đương cong chi phi và hi êu su ât

(price/performace), gia chi gân 1 Euro vơi sô l ượng l ơn, STM32 là s ự thach th ưc

thât sự v ơi cac vi điêu khiên 8 và 16-bit truyên thông. STM32 đâu tiên g ôm 14

biên thê khac nhau, được phân thành hai nhóm: don performance có t ân s ô ho at

đông cua CPU lên tơi 72Mhz và dong Access có tân sơ ho at đ ơng lên t ơi 36Mhz.

Cac biên thê STM32 trong hai nhóm này t ương thich hoat toàn vê cach b ô tri

chân (pin) và phân mêm, đông thơi kich thươc bô nh ơ Flash Rom có th ê lên t ơi

128k và 20k SRAM.



Hình 2.2. Kiên truc STM32 nhanh performance và Access



Đô an hê thông nhung

Bô xư li Cortex và đ ơn vị x ư li trung tâm Cortex se đ ược xư d ung đ ê phân

biêt giữa nhung lõi Cortex hoàn chinh và bô x ư li trung tâm RISC n ôi (internal

RISC CPU).



Đô an hê thông nhung

1.3.Kiên truc đương ông

CPU Cortex có thê th ực thi hâu hêt cac lênh trong môt chu kì đ ơn. Gi ông

như CPU cua ARM7/9, viêc thực thi này đat được vơi môt đương ông ba tâng.

Tuy nhiên Cortex-M3 kha năng d ự đoan vi êc re nhanh đ ê gi am thi êu s ô l ân làm

rông (flush) đương ông.



Hình 2.3. Kiên truc đương ông cua ARM Cortex-M3

Trong khi môt lênh đang được thực thi, thì lênh tiêp theo được gi ai ma và

lênh tiêp theo nữa se được lây vê t ư b ô nh ơ. Phương thưc hoat đ ông này se

phat huy hiêu qua t ôi đa cho ma tuyên tinh (linear code), nhưng khi g ăp ph ai

môt re nhanh (vi du như cây truc lênh if ...else) thì cac đương ông phai được làm

rông (flush) và làm đây (refill) trươc khi ma có th ê ti êp tuc th ực thi. V ơi CPU cua

ARM7/9, viêc re nhanh là rât tôn kem vê măt hi êu suât ma (code performance).

Trong CPU Cortex có đương ơng ba tâng được tăng cương kha năng d ự đoan re

nhanh, có nghĩa rằng khi mơt lênh re nhanh có điêu kiên xuât hiên, môt thao tac

lây lênh dựa trên suy đoan được thực hiên, do đó lênh re nhanh có điêu ki ên

săn sàng đê th ực hiên mà không cân chịu them m ôt thao tac nào. Tr ương h ợp

xâu nhât khi găp môt lênh re nhanh gian tiêp, khi đó khơng th ê th ực hiên lây

lênh dựa trên viêc suy đoan, do đó phai làm rơng đương ông dân. Kiên truc

đương ông là chìa khóa dân đên hiêu suât tông thê c ua CPU Cortex, vì vây

không cân bât kì cân nhăc, xem xet đăc biêt nào đ ược thực hiên trong ma ưng

dung.



Đô an hê thông nhung

1.4. Mô hình lâp trình (programmer’s model)

CPU Cortex là bô xư li dựa trên kiên truc RISC, do đó h ô tr ợ ki ên truc n ap

và lưu trữ (load and store architecture). Đê th ực hi ên lênh xư li dữ li êu, cac toan

hang phai được nap vào môt tâp thanh ghi trung tâm, cac phep tinh dữ li êu phai

được thực hiên trên cac thanh ghi này và kêt qua sau đó đ ược lưu l ai trong b ô

nhơ.



Hình 2.4. Kiên truc load and store cua ARM Cortex-M3

Do vây tât ca cac ho at đông cua chương trình tâp trung xung quanh tâp

thanh ghi cua CPU. Tâp thanh ghi này bao gôm 16 thanh ghi 32-bit. Cac thanh ghi

R0-12 là cac thanh ghi đơn gian, có thê đ ược dung đ ê ch ưa cac biên cua ch ương

trình. Cac thanh ghi R13-15 có chưc năng đăc bi êt trong CPU Cortex. Thanh ghi

R13 là con tro ngăn x êp (stack pointer). Thanh ghi này đ ược chia thành nhóm

(banked), cho phep CPU Cortex có hai chê đ ô ho at đ ông, m ôi chê đ ơ có khơng

gian ngăn xêp riêng biêt. Đăc điêm này thương được hê đi êu hành th ơi gian

thưc (Real Time Operating System) sư d ung đê có th ê ch ay ma hê th ông c ua

mình trong môt chê đ ô b ao vê. Trong CPU Cortex có hai ngăn xêp đ ược g ọi là

main stack và process stack. Thanh ghi R14 tiêp theo được g ọi là thanh ghi lien

kêt (link register). Thanh ghi này được sư d ung đê l ưu tr ữ cac đ ịa ch i tr o v ê khi

môt cuôc gọi thu tuc (call a procedure) được thực hiên. Đi êu này cho phep CPU

Cortex thực hiên râ nhanh vi êc nhâp và thoat khoi môt th u t uc (fast entry and

exit to a procedure). Nêu chương trình cua ban gọi sâu vào nhi êu l ơp ch ương

trình con, trình biên dịch se tự đ ông lưu R14 trên ngăn xêp. Thanh ghi cu ôi cung

R15 là bơ đ êm chương trình (program counter), nó là mơt ph ân cua tâp thanh

ghi trung tâm nó có thê được đọc và thao tac giông như bât ky thanh ghi khac.



Đô an hê thông nhung



Hình 2.5. Mô hình lâp trình cua ARM Cortex-M3

1.5.Thanh ghi xPSR

Ngoài tâp thanh ghi trung tâp con có m ơt thanh ghi riêng bi êt đ ược g ọi là

thanh ghi trang thai chương trình (program status register). Nó khơng ph ai là

mơt phân cua tâp thanh ghi chinh và chi có th ê truy c âp thông qua hai l ênh

chuyên dung. XPSR chưa môt sô cac vung ch ưc năng quan trong anh h ương đ ên

viêc thực thi cua CPU Cortex.



Hình 2.6. Thanh ghi trang thai chương trình cua CPU Cortex

Thanh ghi xPSR cũng có thê được truy câp thơng qua ba bi êt hiêu đ ăc bi êt

(special alias names) cho phep truy câp vào cac bit trong xPSR. Năm bit đ âu là

những cơ ma điêu kiên và được gan biêt hiêu (aliased) như thanh ghi trang thai

chương trình ưng dung. Bôn cơ N,Z,C,V (Negative, Zero, Cary và Overflow) se

được thiêt lâp và xóa tuy thc vào kêt qua c ua môt lênh xư li d ữ li êu. Bit Q là

được sư d ung bơi cac lênh toan học DPS đê ch i ra r ằng môt bi ên đa đ at gia tr ị

tôi đa hoăc gia trị t ơi thiêu cua nó. Giơng như tâp lênh ARM 32-bit, cac l ênh

Thumb-2 chi đươc thực hiên nêu ma điêu kiên cua lênh phu hợp v ơi trang thai

cua cac cơ trong thanh ghi tr ang thai chương trình ưng dung (application

program status register). Nêu ma điêu kiên cua lênh không phu h ợp, thì l ênh đi

ngang qua đương ông như là môt lênh NOP (lênh này không làm gì c a). Đi êu này

đam bao rằng cac lênh đi qua đương ông môt cach tr ơn tru và gi am thi êu làm

rông đương ông. Trong CPU Cortex, ki thuât này được mơ r ông vơi thanh ghi



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

I.GIỚI THIỆU VỀ ROBOT TỰ HÀNH

Tải bản đầy đủ ngay(0 tr)

×