Thiết kế và chế tạo Robot di động bám theo vật sử dụng cảm biến vạch đen và xử lý ảnh OpenCV

MỤC LỤC

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

Mạch trên dùng vi mạch Max232 dùng để chuyển từ chuẩn RS232 sang 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).

Mạch tổng quát

Sơ đồ mạch Layout

THIẾT KẾ PHẦN CƠ CHO ROBOT

ĐIỀU KHIỂN ROBOT

Lập trình cho robot

    (XXX) nếu không có sensor nào tích cực thì phải xét thêm hai bit 00H,01H Ứng với mỗi vùng có 1 tốc độ riêng biệt  robot không thể lạc vạch được.

    XỬ LÝ ẢNH

    Các khái niệm cơ bản

      Các loại ảnh

        Với ảnh nhị phân, mỗi Pixel mã hóa trên một bit, còn với ảnh 256 mức mỗ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. Ảnh cường độ là một ma trận dữ liệu ảnh, mà giá trị của nó đại diện cho cườ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. 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ác nhau hoặc độ xám.

        Những điểm có cường độ bằng 0 thường được đại diện bằng màu đen và cường độ 1,255 hoặc 65535 thường đại diện cho cường độ cao nhất hay màu trắng. Do vậy để lưu ảnh màu, người ta lưu trữ từng mặt màu riêng biệt, mỗi màu lưu trữ như một ảnh xám đa cấp.

        TỒNG QUAN VỀ OPENCV

        • Cấu tạo
          • Cài đặt OpenCV 1. Cài đặt cơ bản
            • Lập trình với OpenCV: vài điều cơ bản
              • Truy xuất giá trị pixel

                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ính năng này còn được dùng để tạo nhãn và đánh dấu. OpenCV có cửa sổ giao diện riêng trong khi đó nó bị giới hạn khi là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 qua chuột hoặc bàn phím và điều khiển quá trình. Với những giao diện này bạn có thể lưu, tìm kiếm, và cách danh mụ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ả.

                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ục khi cần thiết. Với Window ta khi cài đặt OpenCV,nó sẽ cop file OpenCV và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ọc DirectX.Mặc định nó cài đặt đến C:/Program Files/OpenCV/<version>. OpenCV chỉ là một công cụ hỗ trợ cho người lập trình không phải là một chương trình bạn có thể lưu giữ nó ở một nơi nào đó khác thư mục Progam files.

                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ắc thư mục gốc của bạn nằm ở đâu, bạn có thể lưu chúng bằng cách chạy tiện ích Sysinfo có sẵn ở địa chỉ www.cognotics.com/utilities. Trên cả Linux và Windows, bạn có thể xác định vị trí của những header bằng cách tìm kiếm thư mục cài đặt và các thư mục con của nó với các file có đuôi mở rộng là *.h, *.hpp.

                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 đó. Xuất nhập ảnh rất dễ dàng với OpenCV/ hình 1 chỉ cho chú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. 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á, đỏ).

                Ví dụ, như nhận dạng khuôn mặt, tracking, và nhận dạng chương trình được nêu sau,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ấp cao khác. Mặc dù hàm cvGet2D() và cvSet2D() rất dễ dàng sử dụng nếu bạ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. IplImage.imageData định nghĩa theo kiểu char* vì vậy bạn cần hiểu kiểu dữ liệu này, ví dụ, nếu dữ liệu ảnh của bạn ở dạng unsigned bytes ( một kiểu dữ liệu phổ biến), bạn nên hiểu mỗi giá trị theo kiểu unsigned char* trước khi gán, hoặc sử dụng theo cách khác.

                TRUYỀN DỮ LIỆU BẰNG MODULE RF

                • Module ứng dụng

                  Điều đó rất khó thành công tuy nhiên bạn sẽ gặp phải hoàn cảnh đó và bạn sẽ phải truy xuất trực tiếp giá trị các điểm ảnh. Rất gọn nhẹ độ tin cậy cao, kích thước nhỏ gọn, dễ dàng lắp đặt. Module có hai chế độ hoạt động: chế độ giao tiếp và chế độ cấu hình được xác định bởi trạng thái của chân config khi nguồn mở Config = low: hoạt động ở chế độ thu phát.

                  Nếu chân config ở mức thấp khi nguồn mở thì module sẽ hoạt động ở chế độ truyền nhận thông tin. Module cung cấp kết nối RS232 để kết nối với máy tính hoặc TTL với MCU trực tiếp. Khi dữ liệu truyền tải dưới 9.6kbps thì module HM TR hỗ trợ tiếp tục truyền tải và tốc độ tối đa có thể đạt 1mb tuy nhiên tốc độ truyền tải không vượt quá 32bytes ở tốc độ cao.

                  HM-TR hoạt động ở chế độ bán song công khi nhận 32bytes dữ liệu ở cổng nối tiếp nó sẽ phát dữ liệu ra một lần. Sau khi phát dữ liệu thì module sẽ chuyển sang chế độ nhận dữ liệu một cách tự động và mất 5ms. Chân enable dùng để điều khiển lượng điện tiêu thụ nếu chân này ở mức thấp thì module hoạt động ở chế độ ngủ đông.

                  Người dùng có thể dùng chân này để điều khiển chu kỳ nhận năng lượng. Nếu chân config ở mức cao thì module sẽ hoạt động ở chế độ cấu hình ở trong chế độ này module truyền tin với host bằng định dạng nối tiếp cố định. Bạn có thể kiểm tra thông số của HM-TR và cài đặt các thông số bằng tiện ích HM-TR setup utility.

                  Nút read: đọc các thông số mà module đang dùng Nút write:ghi cấu hình mới vào module.

                  TRÌNH ĐIỀU KHIỂN I.Bảng điều khiển

                  LƯU ĐỒ GIẢI THUẬT

                   (4) - Quá trình xử lý các khung ảnh thu được thông tin về vị trí của đối tượng.

                  Chương trình điều khiển

                  //--- private void UpdateHistogram() //Cập nhật hình ảnh cũ (nếu có) hoặc mới, tính toán vùng hiển thị. //--- private void timer4_Tick(object sender, EventArgs e) //tính toán giá tri X de xác định camera quay trái hay phải. CLR WAITING LCALL DOI1S SETB WAITING LCALL DOI1S CLR WAITING LCALL DOI1S SETB WAITING LCALL DOI1S.

                  CLR IT0 ;cho phep ngat ngoai 0 CANH AM SETB EX0 ;BAT DAU CHAY NGAT NGOAI 0. MOV MOTOR2,V_MOTORL_VT3 MOV MOTOR3,V_MOTORR_VP3 JB MAT_THAN_NHO,LUI_LAI MOV MOTOR2,#00H.