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

Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)

71 631 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 71
Dung lượng 3,24 MB
File đính kèm So do nguyen ly + Program + C# Kèm Theo.rar (684 KB)

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

Nội dung

Điểm ảnh Pixel là là một phần tử của ảnh số tạitọa độ x,y với độ sáng hoặc màu nhất định.. Khoảng cách các điểm ảnh được chọn sao cho mắt người thấy được sựliên tục của ảnh và tạo nên mậ

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH

KHOA ĐIỆN - ĐIỆN TỬ

GVHD : THS.PHẠM THÀNH DANH SVTH : PHẠM ĐÔNG NHẬT DUY (06044601)

NGUYỄN ĐẠI DƯƠNG (06046371) LỚP : DHDT2A1

Tp Hồ Chí Minh, tháng 5 năm 2010

Trang 2

Trong thời đại ngày nay, ngành công nghiệp đóng vai trò quan trọng trong nềnkinh tế, khoa học… những ROBOT tự động, sẽ giúp cho con người rất nhiều,chúng đã thay thế sức con người một cách hiệu quả nhất ROBOT được sử dụngrộng rãi cuộc sống, nơi mà môi trường có tính độc hại , nguy hiểm cũng như cáccông việc yêu cầu có độ chính xác cao Do vậy ROBOT có tầm quan trọng rấtlớn trong thời đại ngày nay.

Là sinh viên chuyên ngành điện tử tự động, để bổ sung những kiến thức

đã học cũng như nghiên cứu những vấn đề mới trong lĩnh vực điều khiển tự

động nên chúng em quyết định chọn đề tài “ROBOT DI DỘNG BÁM THEO

VẬT”

Mặc dù đã cố gắng hoàn thành đồ án đúng thời hạn nhưng trong quá trìnhthực hiện không tránh khỏi những thiếu sót Chúng em rất mong nhận được sựđóng góp ý kiến từ quý Thầy cô và các bạn

Trang 3

MỤC LỤC

Trang 4

Việc khó khăn là robot liên kết với sàn thi đấu bằng bánh xe và lớpcao su, vì vậy việc chuyển động là nhờ vào lực ma sát, do đó việc chínhxác không cao lắm vì phục thuộc tương đối vào hai bánh xe, sự trượtcủa bánh Sai số hệ thống là do những cơ cấu chấp hành,những thiết kếkhông chính xác như: hai bánh xe không bằng nhau,không cân bằng…

Phương pháp định vị tương đối chủ yếu dựa vào số vòng quay củamotor, để xác định vị trí tương đối của robot sau một quá trình chuyểnđộng Phương pháp này thì đơn giản, nhưng có khuyết điểm lớn nhất làbán kính sai số lớn và là sai số tích lũy

Sau đây là 1 ví dụ đơn giản:

Trang 5

Hình 1.1: Mô hình robot đơn giản

Trong hình hai bánh xe được truyền động bằng hai motor giảm tốcriêng biệt và có hai encorder hồi tiếp xung cho mỗi motor Đặt vấn đề làbài toán yêu cầu cho robot chạy một đoạn thẳng 10 cm thì có sai số không

và sai số là bao nhiêu Để giải quyết bài toán trên ta giả sử dùng 2 encodercho hai bánh xe với độ phân giải là 100 xung/vòng quay và encoder đượcgắn trên bánh xe có đường kính 5cm,

Gọi D là đường kính của bánh xe Encorder

S là chu vi của bánh xe encorder

P là độ phân giải của encoder

Trên đây chỉ là tính toán tuyệt đối và encorder xoay trong điều kiện

lý tưởng,nhưng thực tế thì thường có sai số vì:

Trang 6

 Tần số lấy mẫu của encoder

 Các phần thiết kế cơ khí không cần tuyệt đối chính xác

 Luôn luôn đọc giá trị hiện tại

 Điều khiển theo cơ sở logic

a Ưu điểm của phương pháp định vị tuyệt đối:

 Định vị chính xác

 Vị trí sai số nhỏ,không đáng kể

 Cơ khí không cần thiết kế tuyệt đối chính xác

b Nhược điểm của phương pháp này:

 Tốn kém kinh phí đầu tư

 Mạch thiết kế phức tạp, để đáp ứng yêu cầu điều khiển

 Cần cập nhật giá trị cảm biến liên tục

Phần 2: THIẾT KẾ PHẦN MẠCH ĐIỀU KHIỂN2.1 Tìm hiểu encoder:

Trang 7

Hình 2.1 Mô hình Encoder và encoder đang sử dụng E6B2

Trang 8

Ngõ ra của encoder có thể được xem như kênh A và kênh B nhưhình dưới.

Hình2.2: Trạng thái ngõ ra kênh A và kênh B

Ngõ ra của kênh A là điện áp được khuếch đại bởi transisstor Q1 vàtương thích TTL với thời gian tăng và giảm bằng mạch kích SchmittrigerL1 Hoạt động tương tự ở kênh B qua Q2 và L2 Rõ ràng là mạch kíchSchmitt kênh A tạo ra xung clock để chốt và mạch kích Schmitt kênh Bnối với ngõ vào diode của chốt Với cấu hình này, trạng thái của ngõ ra Qcủa chốt sẽ cho biết chiều quay của đĩa mã hoá

Giả sử trạng thái logic của ngõ ra Q của SN7474 là mức cao Thế thìkênh B được ưu tiên dẫn trước kênh A Nói cách khác, khi chốt được kíchcạnh, có 1 tín hiệu logic ở ngõ vào diode của nó Dưới các điều kiện này,bảng sự thật của mạch chốt sẽ biểu diễn ngõ ra Q của nó sẽ lên mức cao.Chiều quay ngược chiều kim đồng hồ tồn tại dưới điều kiện kênh B dẫn

6

4 1

D

C L K Q

Trang 9

R O L E

3 45 6 8 7 1 2

2.2 Mạch điều khiển động cơ:

Hình 2.3: Mạch điều khiển động cơGiản đồ trạng thái điện áp:

Hình 2.4: Giản đồ trạng thái điện áp ngõ ra

Nếu cho động cơ chạy thì chân 1 Opto(PWM1) phải ở mức logic1,lúc này nội trở hai chân 3 và 4 của Opto sẽ thấp, nguồn 12v qua R5(doOpto) dẫn nên tại chân B của Q2 sẽ đạt mức logic thấp Q2 tắt  Q3 dẫnbão hoà  Q4 tắt  Q5 dẫn  Động cơ chạy

Ngược lại, khi Opto tắt  Q2 dẫn bão hòa  Q3 tắt  Q4 dẫn(nếu

có điện áp rơi trên chân E của Q4)  Q5 tắt  Động cơ tắt

Trang 10

Khi muốn đảo chiều động cơ ta chỉ cần xuất mức logic 0 tại chânDKRL1, lúc này role 2 sẽ ON, nhờ vào những tiếp điểm của role ta sẽ đảochiều cấp nguồn của động cơ  Động cơ chạy ngược chiều

2.3 Mạch Detect màu trên sân thi đấu:

Nguyên lý hoạt động: Dựa vào sự thay đổi nội trở của PhotoResistor khi được chiếu sáng hay che tối, điều này làm thay đổi nội trở(dạng analog) tại chân (-) của Opam.Chân (+) là áp ngưỡng so sánh chongõ vào (-).Vì vậy ở ngõ ra chỉ tồn tại hai trạng thái 1 nếu áp chân (-) nhỏhơn áp tại chân (+) và ngược lại là mức 0

Trong sân thi đấu có hai màu, xanh và trắng, nếu led phát vào màutrắng thì ánh sáng phản chiếu vào quang trở sẽ mạnh hơn khi đi vào màuxanh vì vậy khi vào vạch trắng thì điện áp tại chân (-) nhỏ hơn áp tại chân(+)  ngõ ra = 1.Ngược lại khi ra khỏi vạch trắng thì áp tại chân (-) lớnhơn áp tại chân (+)  ngõ ra = 0,lấy mức logic này đưa vào mạch đảo tínhiệu để tạo mức logic chính xác trước khi đưa vào vi điều khiển để nhậnbiết màu và đưa ra điều khiển thích hợp Ta có dạng trạng thái xung tronghình sau:

Trang 11

8 7 6 5 4 3 2

có thể chọn được 16 chương trình từ 5 chân của vi điều khiển

Bảng hoạt động như sau:

Select 4 Select 3 Select 2 Select 1 EN Output

2.5 Mạch nạp chương trình vào vi điều khiển:

Trang 12

U 2

M A X 2 3 2

1 3

4 5 6

9

1 0 8

Mạch trên dùng vi mạch Max232 dùng để chuyển từ chuẩn RS232sang mức logic 0 ;1.Nhờ vi điều khiển có chức năng nạp trực tiếp từ max

232 nên ta đưa trực tiếp hai chân TXD,RXD từ max232 vào vi điều khiển(Dùng phần mềm Flash Magic của Phillips để load chương trình vào,ra viđiều khiển)

2.6 Mạch tổng quát:

A Sơ đồ mạch Layout:

Sơ đồ mạch Capture:

Trang 13

3 2 1

A R 5 R

C 1 3 C

3 2 1

W A I T I N G

L E D

A R 1 3 R

R 1 0 8

A R 3 R

A Q 6

L E D

A R 1 2

R 2 0 R

U 1 8 B

4 0 1 0 6

4 3

A Q 2 6

P R O 1 0

E N C O D E R 2

R 1 9 R

3 2 1

A R 1 R

3 2 1

U 1 8 A

4 0 1 0 6

2 1

3 2 1

D 2 1

L E D

A 9

R 2 2 R

C 1 6 C

R 2 6 R

1 0

Phần 3: THIẾT KẾ PHẦN CƠ CHO ROBOT

Trang 14

Hình 3.a: Hình chiếu đứng robot tự động

b Hình chiếu bằng:

bằng robot tự động

c Hình chiếu cạnh:

Trang 15

Hình 3.c: Hình chiếu cạnh robot tự động

Trang 16

Phần 4: ĐIỀU KHIỂN ROBOT4.1 Vi xử lý và các ngõ vào ra:

 8 ngõ vào sensor dò đường

 2 ngõ vào encoder, 2 ngõ vào ngắt ngoài

 5 motor điều rộng xung

 2 SW tổ hợp chọn chế độ hoạt động,1 nút chọn màu của độiđỏ/xanh

 L3 sensor trái thứ 3 so với sensor trung tâm

 L2 sensor trái thứ 2 so với sensor trung tâm

 L1 sensor trái thứ 1so với sensor trung tâm

 CL sensor trung tâm bên trái

 CR sensor trung tâm bên phải

 R1 sensor phải thứ 1 so với sensor trung tâm

 R2 sensor phải thứ 2 so với sensor trung tâm

 R3 sensor phải thứ 3 so với sensor trung tâm

Đọc cảm biến theo nguyên tắc : đọc từ trong ra ngoài, tức là kiểmtra giá trị sensor từ CL,CR  L1,R1  L2,R2  L3,R3  Vùng error

Trang 17

Vùng Error sẽ được thực thi khi và chỉ khi robot đang chạy dòđường nhưng bất ngờ không có sensor nào tích cực  đã chạy sai vạch tăng tốc bánh bên trái nếu trước đó rẽ phải hoặc tăng tốc bánh bên phảinếu trước đó rẽ trái

Trang 20

PHẦN 5: XỬ LÝ ẢNH3.1.1 Các khái niệm cơ bản:

3.1.1.1 Điểm ảnh:

Ảnh trong tự nhiên là ảnh liên tục về không gian và độ sáng Khi ảnhđược lưu vào máy tính thì ảnh đã được số hóa Số hóa là sự biến đổi gần đúngcủa một ảnh liên tục thành một tập hợp điểm phù hợp với ảnh thật về vị tríkhông gian và độ sáng Mỗi điểm như vậy gọi là một điểm ảnh ( PEL : PictureElement ) hay còn gọi là Pixel Điểm ảnh Pixel là là một phần tử của ảnh số tạitọa độ (x,y) với độ sáng hoặc màu nhất định Tập hợp những điểm ảnh tạo thành

ma trận ảnh

3.1.1.2 Độ phân giải của ảnh:

Độ phân giải ảnh là mật độ điểm ảnh được ấn định trên một ảnh số đượchiển thị Khoảng cách các điểm ảnh được chọn sao cho mắt người thấy được sựliên tục của ảnh và tạo nên mật độ phân bố theo hai trục x và y trong không gianhai chiều

3.1.1.3 Mức xám:

Mỗi điểm ảnh được đặc trưng cơ bản bởi tọa độ x, y của điểm ảnh và độxám Mức xám của điểm ảnh là cường độ sáng của nó được gán giá trị số tạiđiểm đó Các thang mức xám thường dùng là: 16, 32, 64, 128, 256.Trong đómức 256 thường dùng nhất vì máy tính dùng 1 byte ( 2^8=256) để biểu diễn từ

Trang 21

mức lớn hơn 2 người ta gọi là ảnh đa cấp xám Việc xác định số mức là phụthuộc vào tiêu chí lượng hóa.

Với ảnh nhị phân, mỗi Pixel mã hóa trên một bit, còn với ảnh 256 mứcmỗi Pixel được mã hóa trên 8 bit Ảnh nhị phân khá đơn giản, các phân tử ảnh

có thể coi như các phần tử logic, ứng dụng chính là tính toán logic để phân biệtđối tượng ảnh với nền hoặc phân biệt điểm biên với các điểm khác

3.1.2.2 Ảnh cường độ:

Ảnh cường độ là một ma trận dữ liệu ảnh, mà giá trị của nó đại diện chocường độ trong một số vùng nào đó của ảnh Matlab chứa một ảnh cường độnhư một ma trận dơn , với mỗi phần tử của ma trận tương ứng với một pixel củaảnh Ma trận có thể thuộc lớp double , uint8 hay uint16 Trong khi ảnh cường

độ hiếm khi được lưu với bản đồ màu , Matlab sử dụng bản đồ màu để hiển thịchúng

Những phần tử trong ma trận cường độ đại diện cho các cường độ khácnhau hoặc độ xám Những điểm có cường độ bằng 0 thường được đại diệnbằng màu đen và cường độ 1,255 hoặc 65535 thường đại diện cho cường độ caonhất hay màu trắng

Một mảng ảnh RGB có thể thuộc lớp double , uint8 hoặc uint16 Trongmột mảng RGB thuộc lớp double , mỗi thành phần màu có giá trị giữa 0 và 1 Một pixel mà thành phần màu của nó là (0,0,0) được hiển thị với màu đen vàmột pixel mà thành phần màu là (1,1,1 ) được hiển thị với màu trắng Ba thànhphần màu của mỗi pixel được lưu trữ cùng với chiều thứ 3 của mảng dữ liệu

Ví dụ giá trị màu R,G,B của pixel (2,5) được lưu trữ trong RGB(2,5,1) ,

Trang 22

RGB(2,5,2) và RGB(2,5,3) tương ứng Mô hình ảnh màu dựa trên hệ tọa độDecac.

Không gian ảnh màu RGB

Ngoài ra trong các camera số, máy chụp ảnh số người ta còn thường dùng

mô hình màu HSV, mô hình YcbCr và mô hình YIQ:

- H: Hue –đặc trưng cho màu sắc

- S: Saturation – đặc trưng cho mức độ đậm nhạt của màu sắc

- V: Value – đặc trưng cho cường độ ánh sáng

Mô hình màu HSV.

Trang 23

Mô hình màu YCbCr

Trang 24

Phần 6: TỒNG QUAN VỀ OPENCV

I. Tổng quan về OpenCV:

OpenCV (Open Source Computer Vision Library) là một thư viện

xử lý hình ảnh nguồn mở của Intel Nó có rất nhiều tác dụng như: tươngtác giữa người và máy tính, nhận dạng vật, phân đoạn và nhận dạng,nhận dạng khuôn mặt, nhận biết, hiểu về cử chỉ, cấu trúc của vận động,

và trong Robot di động Thêm vào đó nó cải thiện rất nhiều các thuậttoán cở bản của thị giác máy như các hàm API cấp thấp hơn

Intel đưa ra phiên bản OpenCV đầu tiên vào năm 1999 Ban đầu nóyêu cầu phải có thư viện xử lý ảnh của Intel Sau đó vì sự lệ thuộc này

mà họ đã phải gỡ bỏ và bây giờ chúng ta có thể sử dụng thư viện nàyhoàn toàn độc lập OpenCV rất đa dạng, nó hỗ trợ rất nhiểu hệ điểuhành như: Window, Linux và MacOSX

II. Những điểm đặc trưng:

Open CV có rất nhiều chức năng bạn có thể bị bất ngờ khi lần đầu tiêntiếp xúc nhưng chỉ sau vài lần sử dụng bạn sẽ thấy dễ dàng hơn

Sau đây là tóm tắt các chức năng cơ bản của openCV 1.0

1. Image and video I/O:

Những giao tiếp này cho phép đọc dữ liệu ảnh từ các file, hoặc từnhững video Bạn cũng có thể tạo những files hình ảnh và video nữa

2. Thị giác máy tính và thuật toán xử lý( mức trung bình và thấp):

Sử dụng giao tiếp này bạn có thể thử nghiệm với rất nhiều thuậttoán về thị giác máy tính mà không cần viết thêm code Nó bao gồmđường mép, đường thẳng và góc phát hiện, hình elip, hình ảnh kim tụtháp cho xử lý đa tỉ lệ, mẫu phù hợp, biến đổi đa dạng và nhiều hơnnữa

3. Module thị giác máy tính cấp cao:

OpenCV chứa đựng vài chức năng cao cấp như nhận dạng khuônmặt, nhận dạng vật thể và tracking, nó bao gồm luồng quang học ( sửdụng camera để xác định cấu trúc 3D), camera xác định kich thước và

âm thanh stereo

4. AI và phương pháp học của máy:

Thị giác máy tính thường đòi hỏi phương pháp học của máy hayphương pháp AI khác một vài phương pháp đó có trong OpenCV

5. Lấy mẫu hình ảnh và sự chuyển đổi:

Trang 25

Nó rất có ích để xử lý một nhóm pixels thành một đơn vị Open

CV có giao tiếp để trích những phân miền ảnh, lấy mẫu ngẫu nhiên,chỉnh sửa kích cỡ ảnh, làm cong, xoay, và cho phép tạo hiệu ứng choảnh

6. Phương pháp để tạo và phân tích ảnh nhị phân:

ảnh nhị phân thường được dùng trong hệ thông kiểm tra, nó quét

để tìm ra sự thay đổi hình dạng hoặc đếm các phần trên ảnh Sự biểudiễn ảnh cũng rất thuận tiện khi chúng ta biết rõ vật thể cần bắt

7. Cách thức tính toán thông tin 3D:

Những hàm này rất có ích khi cần sắp xếp và xác định một vật thểvới âm thanh stereo hoặc không gian đa chiều phức tạp từ mộtcamera

8. Mã lệnh toán để xử lý ảnh, thị giác máy tính và biên dịch ảnh:

OpenCV sử dụng các phép toán thông dụng như: đại số, thống kê,hình học

9. Đồ họa:

Những giao diện này cho phép bạn viết chữ và vẽ trên hình ảnh,thêm vào đó những chức năng thú vị có thể tạo ảnh, và những tínhnăng này còn được dùng để tạo nhãn và đánh dấu ví dụ nếu bạn muốnviết một chương trình nhận dạng vật thể, nó sẽ giúp bạn tạo nhãn ảnhvới kích thước và vị trí định sẵn

10. Phương thức GUI:

OpenCV có cửa sổ giao diện riêng trong khi đó nó bị giới hạn khilàm việc trong mỗi môi trường, chúng cung cấp đa môi trường API đểhiển thị hình ảnh và cho phép người dùng nhập dữ liệu thông quachuột hoặc bàn phím và điều khiển quá trình

11.Cấu trúc dữ liệu và thuật toán

Với những giao diện này bạn có thể lưu, tìm kiếm, và cách danhmục điều khiển, các tuyển tập(cũng như các tập hợp lệnh được gọi ),

đồ họa và sơ đồ nhánh một cách hiệu quả

12.Khả năng tồn tại của dữ liệu

Những phương pháp này cung cấp các giao diện một cách thuận lợi

để lưu trữ các dạng khác nhau của dữ liệu vào đĩa để có thể khôi phụckhi cần thiết

III Cấu tạo

Những hàm của OpenCV có chứa ở trong vài modules

CXCORE chứa đựng các định nghĩa về kiểu dữ liệu cơ bản ví dụ, cấutrúc dữ liệu của ảnh, các điểm và các hình chữ nhật được xác định

Trang 26

trong file cxtypes.h CXCORE cũng chứa đựng các phép toán đại sốtuyến tính,thống kê,các hàm lâu dài và lỗi thao tác Có một chút kỳcục o đây là các hàm đồ họa phục vụ cho vẽ trên ảnh được giữ ở đây.

CV chứa đựng quá trình xử lý ảnh và các phương pháp đánh giá

sơ bộ kích thước ảnh Những hàm tính toán hình học cũng được lưutrữ tại đây

CVAUX được mô tả trong văn bản của OpenCV như là modul

cũ và chỉ dùng để thí nghiệm Tuy nhiên, giao diện đơn giản nhất chonhận dạng mặt được nằm trong modul này Những mã nguồn nằmtrong module này rất phù hợp cho việc nhận dạng mặt và chúng được

sử dụng rộng rãi cho mục đích này

1 ML chứa đựng giao diện mechine-learning

Những hàm còn lại được nằm trong HighGUI và CVCAM Cả haiđều nẳm ở thư mục có tên “otherlibs”, sử dụng chúng rất dễ gặp lỗi

Vì rằng HighGUI chứa các thư viện vào ra cơ bản , bạn sẽ muốn chắcchắn hơn, đừng bỏ sót nó.Nó cũng chứa đựng nhiều cửa sổ đa chứcnăng

CVCAM là thư viện chứa các hàm truy nhập video thông quaDirectX trên môi trường Window 32 bit Tuy nhiên, HighGUI cũng cócác giao diện video.Trong bài báo này, tôi chỉ xem xét HighGUI.Chúng đơn giản, làm việc trên nhiều môi trường Nếu bạn sử dụngWindow XP hoặc 2000, bạn có thể làm tăng hiểu quả của nó bằngcách chuyển qua giao diện CVCAM, nhưng học OpenCV sẽ đơn giảnhơn khi dùng HighGUI

Trang 27

IV Cài đặt OpenCV

1 Cài đặt cơ bản

OpenCV cho Linux và MacOSX được đóng gói như một gói

mã nguồn lưu trữ Bạn sẽ phải xây dựng cả thư viện tĩnh và cảnhững đối tượng chia sẻ (shared-object) Bạn cần xây dựng RPMtrước tiên và cài đặt từ nó, hoặc biên dịch và cài đặt nó ngay.Cấutrúc cho cả hai được nằm trong INSTALL

Với Window ta khi cài đặt OpenCV,nó sẽ cop file OpenCVvào thư mục mà bạn chọn.Cách thức lựa chọn trong đường dẫn hệthống của bạn chứa mã nhị phân OpenCV, đăng kí một vài bộ lọcDirectX.Mặc định nó cài đặt đến C:/Program Files/OpenCV/<version>

2 Những yêu cầu khi cài đặt trong windows

Đối với người dùng xài Windows, OpenCV rất dễ dàng cài đặtvàluôn hoạt động nhưng một chút cải tiến nhỏ sẽ cho bạn kết quả tốthơn Sau đây là một vài đề nghị

OpenCV chỉ là một công cụ hỗ trợ cho người lập trìnhkhông phải là một chương trình bạn có thể lưu giữ nó ở một nơinào đó khác thư mục Progam files Nếu bạn thích cài vào một nơikhác hãy chọn thư mục đó trước khi nó hỏi

Tôi đề nghị bạn cũng quyết định trước khi cài đặt – bạnmuốn windows tìm kiếm những files dll của OpenCV như thế nào.Bạn có thể chỉnh sửa đường dẫn của hệ thống của bạn thay vì của

hệ thống, hoặc bạn có thể di chuyển chúng sau khi cài đặt từ thưmục “bin” của OpenCV bằng thư mục gốc của bạn

Nếu bạn muốn di chuyển các files dll nhưng bạn không chắcthư mục gốc của bạn nằm ở đâu, bạn có thể lưu chúng bằng cách

Nếu bạn thích chỉnh đường dẫn hơn di chuyển các file dll, bạn cóthể cài đặt bằng cách lựa chọn các check box “ Add bin directory

to path”

3 Sau khi cài đặt

Thư mục OpenCV có chứa và thư mục con Thư mục “docs” cóchứa các tài liệu html cho tất cả các hàm và kiểu dữ liệu từ các tàiliệu này bạn có thể làm các ví dụ, bạn cũng có thể duyệt (browse)thư mục “samples”

Bạn cũng cần đến những file header khi biên dịch chươngtrình nó có ở trong các module của OpenCv Mặc dù bạn khôngcần làm việc này Tôi thích tập hợp chúng lại với nhau vào trongmột thư mục

Trang 28

Trên cả Linux và Windows, bạn có thể xác định vị trí củanhững header bằng cách tìm kiếm thư mục cài đặt và các thư mụccon của nó với các file có đuôi mở rộng là *.h, *.hpp sẽ có rấtnhiều file được tìm thấy bạn sẽ không cần tất cả các file Headercho tất cả các modules ngoại trừ HighGUI đã được đính sẵn trongmỗi module Bạn có thể bỏ các header trong thư mục “src” chonhưng module này Với HighGUI bạn sẽ cần đến file highgui.hđược lưu ở otherlibs/highgui.

1 Những điều cần biết về Header và Libraries

Hầu hết chương trình OpenCV cần cv.h và highgui.h.Sau đó

để nhận dạng mặt chúng ta cần thêm cvaux.h Phần còn lại của file

header được thêm vào bởi những header cao nhất ( high-levelheaders)

Nếu bạn để các file header trong các thư mục khác nhau( càiđặt mặc định), hãy chắc chắn rằng đường dẫn của trình biên dịch

có các thư mục đó Nếu bạn gom chúng lại một thư mục hãy chắcchắn rằng nó trùng với đường dẫn của trình biên dịch của bạn

Mối liên kết của bạn sẽ cần cả hai thư viện và tên của thưviện tĩnh để sử dụng thư viện tĩnh bạn cần liên kết đến filecxcore.lib, cv.lib, và highgui.lib và sau đó bạn cần thêm file

Figure 1:Ví dụ chương trình đọc một ảnh từ file và ghi nó vào một

file khác với dịnh dạng khác

Trang 29

cvaux.lib để nhận dạng gương mặt tất cả các file này đều nằmtrong thư mục “lib”.

2 Đọc và ghi ảnh

Xuất nhập ảnh rất dễ dàng với OpenCV/ hình 1 chỉ chochúng ta thấy một chương trình hoàn chỉnh để đọc một ảnh và ghiảnh đó sang một file thứ hai trong một định dạng khác

Để đọc một file ảnh đơn giản ta chỉ cần gọi cvloadImage(),trong ví dụ nó nằm ở dòng thứ 14 OpenCV hỗ trợ hầu hết các địnhdạng ảnh phổ biến như JPEG, PNG và BMP Bạn không cần phảicung cấp thông tin của định dạng ảnh cvLoadImage xác định địnhdạng file bằng cách đọc các file header

Để ghi một hình ảnh ra file, gọi hàm cvSaveImage() Hàmnày quyết định định dạng file nào sẽ được dùng từ đuôi mở rộng.trong ví dụ này đuôi mở rộng là “PNG” Vì vậy nó sẽ ghi dữ liệuảnh dưới định dạng PNG

Cả hai hàm cvLoadImage() và cvSaveImage() đều nằmtrong HighGUI module

Khi bạn hoàn thành việc sử dụng nhập ảnh từcvLoadImage(), bạn cần thả free bằng cách gọi hàm

cvReleaseImage(), như ở dòng 29 hàm này sẽ lấy địa chỉ của mộtđiểm làm input tạo “ngắt an toàn” Nó trả tự do cho cấu trúc ảnh

Trang 30

chỉ khi ảnh không rỗng sau khi trả tự do, nó sẽ đặt giá trị điểm ảnh

về 0

3 Thu video trục tiếp

Chụp một khung hình từ một webcam, hoặc từ các thiết bịquay video kĩ thuật số khác dễ dàng như load hình từ một file.Hình 2 cho chúng ta thấy một danh sách các lệnh để khởi tạo cấutrúc chụp, và lưu các video frames và đóng các giao diện chụp

Giao diện chụp được khởi tạo tại dòng 19 bằng cách gọi hàmcvCaptureFromCAM() Hàm này trả một pointer về cấu trúccvCapture Bạn không thể truy cập trực tiếp vào cấu trúc này Thayvào đó bạn sẽ lưu pointer qua lệnh cvQueryFrame()

Khi bạn hoàn thành việc sử dụng thu video, bạn gọi lệnhcvReleaveCapture() để thả nổi thu video Giống như hàmcvReleaseImage(), bạn hãy lưu địa chỉ của pointer cvCapture bằnghàm cvReleaseCapture()

Không được thả rỗi hoặc chỉnh sửa IplImage bạn nhận được

từ cvQueryFrame()! Nếu bạn cần sửa dữ liệu ảnh hãy tạo một bảncopy với câu lệnh như sau:

// Copy the video frame

IplImage *pImgToChange = cvCloneImage(pVideoFrame);

// Insert your image-processing code here

// Free the copy after using it cvReleaseImage(&pImgToChange);

4 Chuyển đổi màu

Hình 3 biểu diễn mã lệnh để chuyển đổi một ảnh màu sang mộtảnh xám OpenCV hỗ trợ chuyển đổi từ nhiều chuẩn mẫu màu

khác nhau, gồmRGB, HSV, YCrCb

và CIELAB

Lưu ý các hàm

cvCvtColor() đòihỏi hai ảnh đầu vào.ảnh thứ nhấtpRGBImag là ảnhnguồn còn ảnh thứhai pGrayImag là

Figure 2: Ví dụ chương trình chụp ảnh video và lưu chúng vào một file

Trang 31

ảnh sản phẩm nó sẽ chứa kết quả chuyển đổi khi hàm cvCvtColor()được gọi lại.

Bởi mô hình này có nguồn ngẫu nhiên và hình ảnh kết quả

để xử lý hàm và rất phổ biến trong OpenCV bạn sẽ cần chúng đểtạo ảnh sản phẩm như ở dòng 25 lệnh gọi hàm cvCreateImage()tạo ra một ảnh có cùng kích thước như ảnh ban đầu

5 OpenCV lưu ảnh như thế nào

OpenCV lưu hình ảnh giống như C,IplImage IPL ở trongthư viện xử lý ảnh là một thừa kế từ phiên bản trước của OpenCV

Kiểu dữ liệu IplImage được xác định trong CXCORE.Thêm vào đó là dữ liệu ảnh thô, nó chứa một số mô tả chi tiết gọiheader của ảnh bao gồm:

trên mỗi pixel trên mỗi kênh Ví dụ nếudepth=IPL_DEPTH_8U dữ liệu cho mỗi pixel được lưutrong 8 bit với giá trị unsigned (unsigned values)

kiểu dữ liệu pixel Ví dụ một ảnh RGB có 3 channels – đỏ,xanh lá, xanh dương (đôi khi nó được gọi là ảnh BGR bởi vì

dữ liệu pixel được lưu ở dạng xanh dương, xanh lá, đỏ) ảnhđen trắng chỉ có chứa một kênh là độ sáng của pixel

Bạn có thể tạo nhiều kiểu hàm khác nhau nhờ OpenCV màkhông cần truy xuất trực tiếp vào dữ liệu pixel thô Ví dụ, như nhậndạng khuôn mặt, tracking, và nhận dạng chương trình được nêusau,trong series này bạn không cần truy xuất dữ liệu thô bằng tay màthay vào đó chúng hoạt động bằng pointer của ảnh và các cấu trúc cấpcao khác Sự tính toán các mức pixel được thi hành bên trong các hàmcủa OpenCV Tuy nhiên nếu bạn ghi thuật toán xử lya ảnh của chínhbạn bạn có thể cần đến truy xuất vào dữ liệu pixel thô Có hai cách đểthực hiện như sau:

1 Truy xuất pixel đơn giản

Cách dễ dàng nhất để đọc các pixel riêng lẻ là với hàmcvGet2D():

Hàm này lấy 3 thông số là một pointer chứa dữ liệu (CVArr*), vàmảng được xếp theo hang và theo cột

Dữ liệu chứa đựng có thể có cấu trúc IplImage Cái hang cao nhất củađiểm ảnh có row = 0 và hang thấp nhất có row = chiều cao -1

Hàm cvGet2D() trả về cấu trúc dạng C là CvScalar được xác định nhưsau:

Figure 3: Ví dụ chương trình chuyển đổi ảnh màu qua ảnh đen trắng

Trang 32

typedef struct CvScalar{

double val[4];

}CvScalar;

Giá trị của mỗi điểm ảnh cho mỗi kênh được nằm trong val[i].Với ảnh đen trắng, val[0] chứa độ sáng của điểm ảnh, ba giá trị khácđược đặt bằng 0 Với ảnh có 3 kênh BGR thì blue = val[0], green =val[1],và red = val[2]

Các hàm bổ sung cvSet2D() cho phép bạn chỉnh sửa giá trị điểmảnh Nó được khai báo như sau:

void cvSet2D(CvArr*, int row, int col,CvScalar);

2 Truy xuất nhanh điểm ảnh

Mặc dù hàm cvGet2D() và cvSet2D() rất dễ dàng sử dụng nếubạn muốn truy xuất nhiều hơn vài giá trị điểm ảnh và gặp vấn đề bạn

sẽ phải đọc dữ liệu trực tiếp từ bộ nhớ đệm IplImage.imageData

Dữ liệu ảnh trong bộ nhớ đệm được lưu dưới dạng 1 chiều, trongchủ yếu một hang Điều đó có nghĩa tất cả các giá trị điểm ảnh tronghang đầu tiên được liệt kê ra trước tiếp theo sau là giá trị điểm ảnh củahang thứ hai và cứ tiếp tục như thế cho đến hang cuối cùng

Bởi vì dữ liệu điểm ảnh được xếp hàng và chèn thêm vào nếucần thiết vì thế mỗi dòng đều bắt đầu là bội của 4 byte Ngoài raIplImage.WidthStep biểu thị số byte dữ liệu điểm ảnh của mỗi dòng

IplImage.imageData+i*IplImage.widthStep

IplImage.imageData định nghĩa theo kiểu char* vì vậy bạn cầnhiểu kiểu dữ liệu này, ví dụ, nếu dữ liệu ảnh của bạn ở dạng unsignedbytes ( một kiểu dữ liệu phổ biến), bạn nên hiểu mỗi giá trị theo kiểuunsigned char* trước khi gán, hoặc sử dụng theo cách khác

Nếu bạn truy xuất dữ liệu từ một ảnh đen trắng ( kênh đơn),

và độ sâu của dữ liệu là 8 bits( một byte trong mỗi pixel), bạn nên truyxuất hàng cột của điểm ảnh như sau:

step = pImg->widthStep;

Trang 33

Phần 7 TRUYỀN DỮ LIỆU BẰNG MODULE RF

I. Đặc điểm của module HM TR:

Trang 34

1 Công nghệ FSK, chế độ bán song công, nhưng nhiễu rất mạng

2 Băng tần ISM, không cần đăng ký tần số

3 Có thể cấu hình tần số và có thể sử dụng ứng dụng FDMA

4 Có thể chọn được độ lệch tần số phát sóng và băng thông thu

5 Giao thức dịch tự điều khiển và rất dễ sử dụng

6 Tốc độ truyền dữ liệu có thể lựa chọn nhiều phạm vi

7 Có chân Enable để điều khiển công suất cho những ứng dụngkhác nhau

8 Độ nhạy cao, phạm vi truyền tải rộng

9 Giao tiếp UART tiêu chuẩn, TTL hoặc RS232 với mức logictùy chọn

10 Rất gọn nhẹ độ tin cậy cao, kích thước nhỏ gọn, dễ dàng lắpđặt

11 Không có chỉnh sóng trên thiết bị

II. Ứng dụng:

1 Điều khiển từ xa, điều khiển thiết bị đo

2 Đo không dây

3 Điều khiển truy xuất

4 Nhận dạng tách lọc

5 Thu thập dữ liệu

6 Thiết bị điện máy trong nhà

7 Sản phẩm cho căn nhà thông minh

8 Quản lý trẻ em

III. Hình dạng thực tế:

Trang 35

IV Sơ đồ chân

Ngày đăng: 21/11/2016, 21:47

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Mô hình robot đơn giản - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
Hình 1.1 Mô hình robot đơn giản (Trang 5)
Hình 2.3: Mạch điều khiển động cơ Giản đồ trạng thái điện áp: - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
Hình 2.3 Mạch điều khiển động cơ Giản đồ trạng thái điện áp: (Trang 8)
Hỡnh 2.4: Giản đồ trạng thỏi điện ỏp ngừ ra - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
nh 2.4: Giản đồ trạng thỏi điện ỏp ngừ ra (Trang 9)
Bảng hoạt động như sau: - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
Bảng ho ạt động như sau: (Trang 10)
Sơ đồ mạch Capture: - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
Sơ đồ m ạch Capture: (Trang 11)
Hình 3.a: Hình chiếu đứng robot tự động b. Hình chiếu bằng: - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
Hình 3.a Hình chiếu đứng robot tự động b. Hình chiếu bằng: (Trang 13)
Bảng điều khiển Robot. - Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)
ng điều khiển Robot (Trang 37)

TỪ KHÓA LIÊN QUAN

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