Chọn phương án thiết kế và kết quả thi công

Một phần của tài liệu Nghiên cứu thiết kế và chế tạo robot vượt địa hình, bám đối tượng sử dụng công nghệ xử lý ảnh (Trang 51 - 124)

Do yêu cầu của đồ án, nên ở đây chọn phương án thiết kế thứ hai.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Sơ đồ tổng quát của hệ thống điều khiển rô bốt:

Hình 5.1. Sơ đồ khối tổng quát của hệ thống điều khiển rô bốt

MẠCH CÔNG SUẤT ATMEGA 32

5.1. Thị giác máy điều khiển rô bốt bám đối tượng

Mục tiêu của đồ án là điều khiển rô bốt bám theo một đối tượng sử dụng OpenCV. Nó phải duy trì được khoảng cách nhất định giữa rô bốt và đối tương, khi đối tượng di chuyển rô bốt phải di chuyển theo dựa vào hình ảnh thu được từ webcam để xác định đối tượng đi thẳng, rẽ phải, rẽ trái, đi tiến, đi lùi v..v. Nghĩa là chúng ta phải điều khiển cả tốc độ và hướng của rô bốt tuy nhiên trong đồ án này tôi chỉ điều khiển hướng, tốc độ của đối tượng có thể xem là không đổi. Để làm được việc này, chúng ta phải nhận dạng được đối tượng và xác định được hướng di chuyển của nó. Thứ hai phải xây dựng thuật toán bám đối tượng. Thứ ba là phải xây dựng được phần cứng để kiểm định thuật toán CamShift.

Có rất nhiều cách để dò tìm đối tượng ví dụ dựa trên hình dáng, âm thanh v..v. những thuật toán này thực sự rất phức tạp. Để giảm độ khó của thuật toán theo dõi chúng ta đặt phía sau đối tượng một vật có những thuộc tính về màu sắc đặc biệt ví dụ bóng đèn led phát sáng màu đỏ, màu vàng, màu xanh v..v. Như vậy, lúc tiến hành theo dõi sẽ giảm được rất nhiều về việc xử lý nhiễu do nền và các đối tượng không mong muốn gây ra, giảm đáng kể sự nhầm lẫn đối tượng theo dõi. Chương trình xử lý ảnh sử dụng thuật toán CamShift trong OpenCV để tiến hành theo dõi căn cứ vào màu sắc đối tượng. Khoảng cách giữa rô bốt và đối tượng chúng ta đặt là cố định, dựa vào tâm của đối tượng tìm được qua thuật toán CamShift chúng ta biết được vị trí của đối tượng tham chiếu trên mặt phẳng ảnh. Các thuộc tính nhận được sẽ truyền qua cổng giao tiếp RS232 xuống vi điều khiển Atmega32 để điều khiển hướng động cơ một chiều (DC) thông qua mạchđiều khiển động cơ rơle.

5.2. Thuật toán tính hướng và kích cỡ của đối tượng cần theo dõi5.2.1. Thuật toán chung 5.2.1. Thuật toán chung

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Hình 5.2: Sơ đồ thuật toán chung

5.2.2. Nhận dạng và bám mục tiêu di động

Cấu trúc của hệ bám mục tiêu di động gồm hai phần chính. Phần thứ nhất là phần xử lý ảnh dựa vào chuỗi hình ảnh thu được từ webcam để nhận dạng và tính toán vị trí của đối tượng quan tâm.

Phần thứ hai là phần điều khiển, dựa vào thông tin vị trí đối tượng nhận được trong mặt phẳng ảnh, tính toán tín hiệu điều khiển rô bốt sao cho đối tượng di chuyển được duy trì ở một vị trí nhất định trên mặt phẳng ảnh và ở một khoảng cách nhất định.

Để giảm ảnh hưởng của nhiễu và giảm khối lượng tính toán trong xử lý ảnh nên các bước xử lý ảnh nhận dạng, thích nghi cũng được sử dụng. Các bước này sẽ được trình bày lần lượt như dưới đây.

chọn như đã nói ở trên các thuộc tính đó như cạnh, góc, các thuộc tính về màu sắc v..v. Trên cơ sở đó để so sánh nhằm phân biệt mục tiêu với nền và các mục tiêu khác. Qua đó xác định được vị trí của mục tiêu trên mặt phẳng ảnh. Trong quá trình tìm kiếm ta chia bức ảnh thành tập hợp các pixel bao gồm hai thành phần hoặc thuộc đối tượng hoặc thuộc nền. Qua đó ta tiến hành xử lý các giá trị thuộc tính của đối tượng trong vị trí mới và tìm nhận dạng được đối tượng cần theo dõi.

Mặt phẳng ảnh là mặt phẳng có gốc nằm phía trên bên trái, trục x là trục nằm ngang, trục y là trục thẳng đứng như hình vẽ.

Hình 5.3. Mặt phẳng ảnh

Căn cứ vào vị trí dịch chuyển của đối tượng trên mặt phẳng ảnh so với gốc toạ độ mà ta tính toán các khả năng di chuyển của rô bốt sao cho đối tượng nằm ở một vị trí bất kỳ trên mặt phẳng ảnh.

Tính toán vị trí của mục tiêu di động trong môi trường có nhiễu sử dụng thuật toán CamShift. Căn cứ vào kết quả thu được về giá trị tâm của đối tượng qua thuật toán CamShift đề xuất thuật toán di chuyển như sau.

Hình vẽ sau mô tả các vị trí tương ứng của đối tượng trên mặt phẳng ảnh với điều kiện di chuyển.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Hình 5.4. Biểu diễn đối tượng di chuyển trên mặt phẳng ảnh

5.2.3. Chuyển đổi không gian màu từ RGB đến HSV

Chúng ta sử dụng hàm cvCvtColor() để chuyển đổi giữa các không gian màu trong OpenCV không gian màu chính là số lượng các kênh hay là chuyển đổi từ không gian màu này đến không gian màu khác.

H: (Hue) vùng màu.

S: (Saturation) Độ bão hoà màu. V( hay B): Độ sáng.

Hình 5.5. Chuyển đối không gian màu RGB đến HSV

5.2.4. Histogram

Trong việc nhận dạng đối tượng, bức ảnh và thông tin video, chúng ta thường muốn mô tả đối tượng dưới dạng biểu đồ (Histogram) để dễ quan sát. Histogram có thể được sử dụng để chỉ ra sự khác nhau giữa các đối tượng về màu sắc, góc, cạnh các mẫu Gradient cạnh của đối tượng và chỉ ra xác suất phân bố màu sắc. Trong mỗi một khung vùng màu mà chúng ta quan tâm được tính toán ở khung hình tiếp theo sau đó một chuỗi các khung hình liên tiếp sẽ được theo dõi với Histogram. Histogram của đối tượng là duy nhất nếu giá trị Histogram mới nhận được gần với giá trị histogram nhất thì đối tượng đó sẽ được chọn.

Tạo một Histogram Camshift theo dõi đối tượng dựa căn cứ vào việc so sánh Histogram màu sắc của đối tượng nhận được với giá trị của thuộc tính ở vị trí mới nên việc tạo một Histogram là điều thiết yếu đầu tiên trong mục đích nhận dạng đối tượng. (adsbygoogle = window.adsbygoogle || []).push({});

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Hình 5.6. Histogram

Quan sát hai Histogram của đối tượng trong hình trên cho ta thấy thuộc tính màu sắc của hai đối tượng mà chúng ta cần theo dõi. Mỗi thanh màu chỉ rõ có bao nhiêu pixel có giá trị “hue”. Hue là một trong ba thuộc tính mô tả màu của pixel trong không gian màu HSV (Hue, Saturation, Value).

5.2.5. Lọc nhiễu Filter

Lọc thì được sử dụng để loại bỏ nhiễu, có nhiều nguyên nhân phát sinh nhiễu trong quá trình xử lý ảnh. Ngoài ra lọc nhiễu còn quan trọng trong việc chúng ta giảm độ phân giải của bức ảnh. Có rất nhiều cách để chúng ta loại bỏ nhiễu, trong đồ án này, do đối tượng theo dõi là vật bất kỳ nên tôi đặt các loại nhiễu thông thường qua đó sẽ tuỳ chỉnh tuỳ thuộc vào đối tượng nhận được.

Hình 5.7. kết quả trước và sau khi lọc nhiễu

5.2.6. Thuật toán CamShift

Trong phần này tôi sẽ trình bày việc dùng thuật toán CamShift để theo dõi mục tiêu di động.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

1) Histogram

Đầu tiên một Histogram sẽ được tạo ra, Histogram này chứa các thuộc tính liên quan đến màu sắc như đã trình bày ở phần trên. Tiếp theo, tâm của và kích cỡ của mục tiêu được tính toán để theo dõi mục tiêu khi hình dạng và kích cỡ của nó thay đổi.

2) Tính toán xác suất phân bố của mục tiêu căn cứ vào Histogram nhận được

Histogram được tạo ra duy nhất một lần, lúc bắt đầu theo dõi. Sau đó nó được sử dụng để gán cho “xác suất đối tượng” giá trị mỗi điểm ảnh trong khung video tiếp theo.

3) Dịch chuyển đến vị trí mới với mỗi khung hình vừa nhận được từ video,

CamShift sẽ “dịch chuyển” đến vị trí mà nó ước lượng trên đối tượng nó sẽ mà tập trung nhiều điểm sáng nhất trong bức ảnh xác suất. Nó tìm vị trí mới bắt đầu từ vị trí trước đó và tính toán giá trị trọng tâm của xác suất phân bố bên trong một hình chữ nhật. Sau đó nó dịch chuyển vị trí của hình chữ nhật về trọng tâm vừa tìm được. OpenCV sử dụng hàm cvCamShift() để thực hiện chuyển dịch này. Việc tính toán trọng tâm trong Camshift thì dựa vào thuật toán Mean Shift như đã đề cập trước đó.

Dựa vào giá trị x, y vừa tìm được này ta có thể điểu khiển rô bốt chạy bám đối tượng.

Kết quả theo dõi đối tượng.

Hình 5.10. Kết quả bước đầu theo dõi đối tượng bằng thuật toán CamShift

Dựa vào kết quả nhận đươc như trên, ta sẽ gửi tín hiệu điều khiển này qua cổng kết nối RS232 để điều khiển rô bốt di động.

5.2.7. Thiết kế hoàn chỉnh phần mềm điều khiển

Chương trình được thiết kế trên visual C++ 2008 (MFC Aplication). Giao diện chương trình điều khiển được chia thành 3 khối chính như trên hình sau.

- DIEU KHIEN ROBOT. Khối được xây dựng có chức năng điều khiển rô bốt quay

phải, quay trái, đi tiến đi lui v..v. Đặc biệt nút lệnh “Tự động” được tính hợp chương trình xử lý ảnh OpenCV như đã nói ở trên.

- MO CONG COM: Khối có chức năng thực hiện việc giao tiếp RS232 giữa

Atmega32 và laptop.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

- Vmin: giá trị nhỏ nhất độ sáng của bức ảnh.

- Vmax: giá trị lớn nhất độ sáng của bức ảnh.

- Smin: giá trị bão hòa của bức ảnh.

- Dilate: giá trị giãn của các thành phần ảnh. (adsbygoogle = window.adsbygoogle || []).push({});

- Erode: giá trị co lại của thành phần ảnh.

- Filter: các hàm lọc khác nhau sử dụng trong chương trình.

- Histogram: giá trị histogram của đối tượng.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

6.1. Sơ đồ mạch dùng trong đồ án

Mạch phần cứng được chia thành 4 khối:

- Khối điều khiển trung tâm sử dụng Atmega32.

- Khối nguồn.

- Khối điều khiển động cơ.

- Khối truyền thông RS232.

6.1.1. Khối điều khiển trung tâm

Khối điều khiển trung tâm là khối có chức năng điều khiển chính trong khối phần cứng bao gồm điều khiển động cơ và giao tiếp RS232. Atmega32 được lựa chọn sử dụng trong đồ án đảm nhận chức năng khối điều khiển này.

Hình 6.1. Sơ đồ khối điều khiển trung tâm

Trong khối phần cứng dùng Atmega32 để điều khiển động cơ. Cờ ngắt dùng trong việc truyền nhận dữ liệu giữa PC và Atmega32.

6.1.2. Khối nguồn

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Khối nguồn có chức năng lấy điện áp 12V từ Acqui điện áp này được đưa qua IC7805 để chuyển đổi thành điện áp 5V cung cấp nguồn cho Atmega32.

6.1.3. Khối truyền thông RS232

Hình 6.3. Sơ đồ khối truyền thông RS232

Khối này có nhiệm vụ nhận tín hiệu điều khiển từ cổng RS232 của laptop truyền xuống cho Atmega32 điều khiển hoạt động của rô bốt.

6.1.4. Khối điều khiển động cơ

Khối này có thành phần chính là một role 24v và IRF 540 có chức năng điều khiển hoạt động của các động cơ rô bốt. Nguyên tắc hoạt động của IRF 540 như đã trình bày ở phần trên.

Sau khi hoàn thiện các khối điều khiển ta xây dựng được mạch điều khiển phần cứng hoàn thiện như sau.

Hình 6.5. Sơ đồ phần cứng hoàn chỉnh.

6.2. Tập lệnh điều khiển rô bốt

Bảng 1: Tập lệnh điều khiển rô bốt

Lệnh Động cơ đầu Động cơ cuối Hai động cơ trái

Hai động cơ phải

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/ (adsbygoogle = window.adsbygoogle || []).push({});

f Tiến Tiến Tiến Tiến Chạy thẳng

r Tiến Tiến Lùi Tiến Rẽ trái

l Tiến Tiến Tiến Lùi Rẽ phải

c Lùi Lùi Lùi Lùi Chạy lùi

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Vượt qua được một số địa hình: ghồ ghề, mặt phẳng có độ nghiêng lớn, những bậc lề đường có độ cao trên 20cm và đặc biệt leo những bậc cầu thang có kích thước xác định một cách dễ dàng.

7.3. Rô bốt vượt địa hình nghiêng.

7.2. Thực nghiệm với phần xử lý ảnh ứng dụng điều khiển rô bốt.Kết quả được thử nghiệm trong môi trường sau: Kết quả được thử nghiệm trong môi trường sau:

- Operating System: Window7 Ultimate.

- Processor: Intel® Core™2 CPU T5500 @ 1.66GHz 1.67 GHz.

- Installed memory (RAM): 2.00 GB.

- System type: 32-bit Operating System.

- Webcam: sony visual communication camera VGP-VCC4.

Môi trường tĩnh: rô bốt đứng yên đối tượng di chuyển phía trước rô bốt, môi trường tĩnh dùng để kiểm tra độ chính xác, tốc độ đáp ứng và độ tin cậy của thuật toán đã xây dựng.

Môi trường động: rô bốt di chuyển bám theo đối tượng, qua đó sẽ kiểm tra được khả năng đáp ứng và độ tin cậy của toàn hệ thống để đưa ra các điều chỉnh phù hợp với bài toán thực tế.

Thử nghiệm trong môi trường tĩnh và môi trường động được đặt dưới những điều kiện ánh sáng nhất định, Webcam được điều chỉnh ở những độ phân giải khác nhau qua đó ta sẽ có rút ra được đánh giá toàn diện hơn cho toàn hệ thống.

Đối tượng thử nghiệm là theo dõi vật tròn màu đỏ có tốc độ tăng dần và liên tục thay đổi, sử dụng tay để di chuyển vật này.

Biểu đồ giá trị X,Y là biểu đồ thay đổi giá trị của tâm đối tượng dò tìm được qua thuật toán đã xây dựng ở trên.

Dùng một biến “đếm” trong thuật toán để kiểm tra có bao nhiêu lần bị mất đối tượng do đối tượng di chuyển quá nhanh, hoặc kích thước quá nhỏ. Số lần mất đối tượng này trên biểu đồ giá trị X,Y là các đoạn thẳng nằm song song với trục nằm ngang.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Cùng một điều kiện môi trường nhưng bức ảnh có độ phân giải khác nhau sẽ cho ta kết quả khác nhau.

· Môi trường tĩnh độ phân giải (160x120) kết quả cho thấy có tổng cộng 34 lần bị

mất đối tượng trong 1 phút do đối tượng di chuyển quá nhanh.

Biểu đồ 1: Giá trị toạ độ tâm đối tượng môi trường tĩnh (160x120)

· Môi trường tĩnh webcam độ phân giải (176x144) kết quả cho thấy có tổng cộng 20

Biểu đồ 2: Giá trị toạ độ tâm đối tượng môi trường tĩnh (176x144)

· Môi trường tĩnh webcam có độ phân giải (320x240) kết quả có 16 lần bị mất đối

tượng trong 1 phút do đối tượng di chuyển quá nhanh.

Biểu đồ 3: Giá trị toạ độ tâm đối tượng môi trường tĩnh (320x240)

· Môi trường tĩnh webcam có độ phân giải (640x480) kết quả 17 lần bị mất đối (adsbygoogle = window.adsbygoogle || []).push({});

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Biểu đồ 4: Giá trị toạ độ tâm đối tượng môi trường tĩnh (640x480)

7.2.2. Kết quả thử nghiệm với môi môi trường động

· Môi trường động webcam có độ phân giải (160x120) kết quả có 116 lần bị mất đối

tượng trong 1 phút.

· Môi trường động webcam có độ phân giải (176x144) kết quả có 97 lần mất đối tượng trong 1 phút.

Biểu đồ 6: Giá trị toạ độ tâm đối tượng môi trường động (176x144)

· Môi trường động webcam có độ phân giải (320x240) kết quả có 91 lần bị mất đối

tượng trong 1 phút.

Một phần của tài liệu Nghiên cứu thiết kế và chế tạo robot vượt địa hình, bám đối tượng sử dụng công nghệ xử lý ảnh (Trang 51 - 124)