Robot bám line dùng xử lý ảnh 1 CHƯƠNG I DẪN NHẬP 1.1 Tổng quan về vấn đề nghiên cứu Ngày nay, với sự phát triển mạnh mẽ vượt bậc của Khoa học kỹ thuật, vi điều khiển AVR và PIC ngày cà
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT CƠ ĐIỆN TỬ
NGHIÊN CỨU CHẾ TẠO ROBOT BÁM LINE DÙNG
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH
-
KHOA CƠ KHÍ CHẾ TẠO MÁY
Giảng viên hướng dẫn : TH.S LÊ TẤN CƯỜNG
Sinh viên thực hiện : ĐỖ ĐÌNH CẨM
MSSV : 11146012
Lớp : 111461A
Tp.Hồ Chí Minh, ngày 20 tháng 07 năm 2016
Trang 3Robot bám line dùng xử lý ảnh i
LỜI NÓI ĐẦU
Trong những năm gần đây, khả năng xử lý hình ảnh của các camera ngày càng phát triển Các robot được gắn camera có khả năng theo dõi, định vị hình dạng, kích thước vật quan sát Theo xu hướng phát triển đó, em quyết định lựa chọn thực hiện nghiên cứu đề
tài: “Nghiên cứu chế tạo Robot bám line dùng xử lý ảnh”
Ngoài việc hoàn thành đồ án tốt nghiệp với những công việc trên đây thì nó còn có ý nghĩa sâu sắc đối với sinh viên thực hiện Một lần nữa sinh viên được thực hành những kiến thức học được từ ghế nhà trường sẽ giúp hình thành những sản phẩm công nghiệp, được sử dụng, cầm tay lắp những cảm biến mà từ trước chỉ nằm trên trang giấy Trong quá trình tiến hành không thể không gặp những khó khăn vấp phải, do đó kích thích sinh viên tư duy để tìm ra phương án tối ưu và trao đổi thảo luận với thầy cô, chúng ta bè Tuy nhiên do hạn chế về kinh nghiệm thực tế và thời gian thực hiện nên việc giải quyết
đề tài không thể tránh khỏi những thiếu sót Do đó rất mong sự chỉ bảo thêm của quý thầy
cô cũng như những đóng góp của các chúng ta sinh viên
Xin chân thành cảm ơn!
Trang 4Robot bám line dùng xử lý ảnh ii
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập – Tự Do – Hạnh Phúc
Thành phố Hồ Chí Minh, ngày tháng năm
NHIỆM VỤ CỦA ĐỒ ÁN TỐT NGHIỆP
Họ và tên: Đỗ Đình Cẩm MSSV: 11146012
Giảng viên hướng dẫn: TS Lê Tấn Cường ĐT: 0909744100
Ngày nhận đề tài: 25/08/2016 Ngày nộp đề tài: 28/07/2016
1 Tên đề tài: NGHIÊN CỨU CHẾ TẠO ROBOT BÁM LINE DÙNG XỬ LÝ ẢNH
2 Các số liệu, tài liệu ban đầu:
- Tài liệu tổng quan về Pixy và Wikipedia về Pixy
3 Nội dung thực hiện đề tài:
- Tìm hiểu về Pixy Camera và PixyMon
- Thiết kế mô hình camera
- Tìm hiểu về stepper motor
- Thiết kế mô hình robot
- Lập trình điều khiển
- Chạy thử nghiệm
4 Sản phẩm:
- Nghiên cứu tổng quan về xe bám line, Arduino và các cảm biến
- Tìm hiểu về Pixy Camera
- Thiết kế xe bám line tự động có camera
Trang 5Robot bám line dùng xử lý ảnh iii
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
***
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ và tên Sinh viên: Đỗ Đình Cẩm MSSV: 11146012 Ngành: Cơ Điện Tử Tên đề tài: Nghiên cứu chế tạo robot bám line dùng xử lý ảnh
Họ và tên Giáo viên hướng dẫn: TS Lê Tấn Cường NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện: ………
………
………
………
………
………
2 Ưu điểm: ………
………
………
………
………
………
………
………
………
3 Khuyết điểm: ………
………
………
………
………
………
………
………
………
Trang 61 Hình thức và kết cấu luận án 20
Đúng format với đầy đủ cả hình thức và nội dung của các mục 5
Tính tổng quan, mục tiêu và nhiệm vụ nghiên cứu 5
2 Nội dung nghiên cứu 80
Khả năng ứng dụng kiến thức toán học, khoa học và kỹ thuật, khoa
Khả năng thực hiện thiết kế và chế tạo hệ thống, máy móc,
hoặc thiết bị,…(đối với đề tài theo hướng công nghệ)
Khả năng thực hiện nghiên cứu, đề xuất phương pháp hoặc
quy trình,… có tính mới và sáng tạo, đáp ứng yêu cầu đưa ra
với những ràng buộc thực tế (đối với đề tài theo hướng
nghiên cứu)
Khả năng sử dụng công cụ kỹ thuật, phần mềm chuyên ngành,… 5
Tổng điểm quy đổi (hệ 10) 10
5 Câu hỏi phản biện (nếu có):
Có nên sử dụng động cơ có encoder (thay cho động cơ bước) hay không ? So sánh ưu và
nhược điểm khi sử dụng từng loại ?
Trình bày rõ hơn về kết quả thực nghiệm của việc dò line bằng xử lý ảnh ?
6 Đề nghị cho bảo vệ hay không?
Đồng ý cho bảo vệ
Tp Hồ Chí Minh, ngày 20 tháng 07 năm 2016
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
TS Lê Tấn Cường
Trang 7Robot bám line dùng xử lý ảnh v
******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ và tên Sinh viên: Đỗ Đình Cẩm MSSV: 11146012 Ngành: Cơ điện tử Tên đề tài: Nghiên cứu chế tạo robot bám line dùng xử lý ảnh Họ và tên Giáo viên hướng dẫn: Lê Tấn Cường NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện: ……… ………
………
2 Ưu điểm: ………
………
………
………
………
………
3 Khuyết điểm: ………
………
………
………
………
………
………
………
………
………
Trang 81 Hình thức và kết cấu luận án 20
Đúng format với đầy đủ cả hình thức và nội dung của các mục 5
2 Nội dung nghiên cứu 80
Khả năng ứng dụng kiến thức toán học, khoa học và kỹ thuật, khoa
Khả năng thực hiện thiết kế và chế tạo hệ thống, máy móc,
hoặc thiết bị,…(đối với đề tài theo hướng công nghệ)
Khả năng thực hiện nghiên cứu, đề xuất phương pháp hoặc
quy trình,… có tính mới và sáng tạo, đáp ứng yêu cầu đưa ra
với những ràng buộc thực tế (đối với đề tài theo hướng
nghiên cứu)
Khả năng sử dụng công cụ kỹ thuật, phần mềm chuyên ngành,… 5
Tổng điểm quy đổi (hệ 10) 10
5 Câu hỏi phản biện (nếu có):
Có nên sử dụng động cơ có encoder (thay cho động cơ bước) hay không ? So sánh ưu và nhược điểm khi sử dụng từng loại ?
Trình bày rõ hơn về kết quả thực nghiệm của việc dò line bằng xử lý ảnh ?
6 Đề nghị cho bảo vệ hay không?
Đồng ý cho bảo vệ
(Ký & ghi rõ họ tên)
Trang 9
Robot bám line dùng xử lý ảnh vii
Lời cam kết: “Chúng tôi xin cam đoan đồ án tốt nghiệp này là công trình do chính chúng
em nghiên cứu và thực hiện Chúng em không sao chép từ bất kỳ một bài viết nào đã được công bố mà không trích dẫn nguồn gốc Nếu có bất kỳ một sự vi phạm nào, chúng
em xin chịu hoàn toàn trách nhiệm”
Tp.HCM, ngày 20 tháng 7 năm 2016
Người thực hiện đề tài
Đỗ Đình Cẩm
Trang 10Robot bám line dùng xử lý ảnh viii
Các chúng ta cùng đồng hành với em trong suốt quá trình học tập và nghiên cứu
Đặc biệt xin gửi lời tri ân đến Thầy LÊ TẤN CƯỜNG, người trực tiếp hướng dẫn đề
tài đã hỗ trợ cho em rất nhiều về kiến thức, tài liệu và cơ sở vật chất để em có thể hoàn thành tốt đề tài
Trang 11Robot bám line dùng xử lý ảnh ix
MỤC LỤC
LỜI NÓI ĐẦU i
NHIỆM VỤ CỦA ĐỒ ÁN TỐT NGHIỆP ii
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN iii
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN v
LỜI CAM KẾT vii
LỜI CẢM ƠN viii
MỤC LỤC ix
CHƯƠNG I 1
DẪN NHẬP 1
1.1 Tổng quan về vấn đề nghiên cứu 1
1.2 Hướng dẫn giải quyết vấn đề 2
1.2.1 Bộ điều khiển trung tâm 2
1.2.2 Cảm biến 2
1.3 Mục tiêu và nhiệm vụ của đề tài 2
1.3.1 Mục tiêu 2
1.3.2 Nhiệm vụ 2
1.4 Giới hạn của đề tài 3
1.5 Tóm tắt các chương 3
CHƯƠNG II 4
CƠ SỞ LÝ LUẬN 4
2.1 Đối tượng nghiên cứu 4
2.2 Nội dung, phương tiện và phương án thực hiện 4
2.2.1 Nội dung 4
2.2.2 Phương tiện và phương án thực hiện 5
CHƯƠNG III 6
TỔNG QUAN VỀ ROBOT 6
3.1 Tổng quan về Robot 6
3.2 Giới thiệu Robot bám line tự động 7
3.2.1 Giới thiệu Robot bám đường 7
3.2.2 Nguyên tắc chung của robot bám line tự động 7
Trang 12Robot bám line dùng xử lý ảnh x
3.3 Ứng dụng của Robot bám line tự động 7
CHƯƠNG IV 9
TỔNG QUAN VỀ XỬ LÝ ẢNH 9
4.1 Giới thiệu xử lý ảnh 9
4.1.1 Cảm biến hình ảnh 9
4.1.2 Giới thiệu về Pixy 9
4.2 Tính năng của Pixy 10
4.2.1 Hỗ trợ điều khiển 10
4.2.2 Thuật toán lọc màu 10
4.2.3 Đặc điểm của Pixy 11
4.2.4 Thông số kĩ thuật 11
4.3 Tính năng PIXY camera 12
4.3.1 Dạy pixy các đối tượng quan tâm 12
4.3.2 Pixy Mon 14
4.3.3 Giao tiếp thông qua PixyMon 21
4.3.4 Một mã màu ( Color code) 37
CHƯƠNG V 39
THIẾT BỊ ĐIỀU KHIỂN 39
5.1 Arduino 39
5.1.1 Giới thiệu chung về Arduino 39
5.1.2 Giới thiệu board Arduino UNO 328 R3 40
5.1.3 Tổ chức bộ nhớ 41
5.1.4 Các chân năng lượng 41
5.1.5 Vi điều khiển 42
5.1.6 Các cổng vào/ ra 43
5.1.7 Một số lưu ý về Arduino 44
5.1.8 Giới thiệu về Arduino IDE và ngôn ngữ lập trình cho Arduino 44
5.2 Duel Bipolar Stepper Motor Shield for Arduino (A4988) 51
5.2.1 Giới thiệu 51
5.2.2 Đặc điểm kĩ thuật 51
5.2.3 Pin out & Diagram 52
5.2.4 Các chi tiết bổ trợ 53
CHƯƠNG VI 54
THIẾT KẾ ROBOT BÁM LINE TỰ ĐỘNG 54
6.1 Thiết kế cơ khí 54
Trang 13Robot bám line dùng xử lý ảnh xi
6.1.1 Ý tưởng 54
6.1.2 Khung xe 54
6.2 Phần điều khiển 55
6.2.1 Tổng quan và sơ đồ khối 55
6.2.2 Các khối cơ bản của Robot 56
6.2.2.1 Khối cảm biến dò đường 56
6.2.2.2 Khối động lực 56
6.2.2.3 Khối xử lý trung tâm 59
CHƯƠNG VII 60
XÂY DỰNG THUẬT TOÁN VÀ GIẢI THUẬT CHO ROBOT 60
7.1 Giải thuật điều khiển PID 60
7.2 Lưu đồ thuật toán 62
7.2.1 Theo dõi đối tượng (đường line) 62
7.2.2 Tìm kiếm đối tượng đường line 64
7.3 CODE 65
7.4 Một số hình ảnh trong quá trình 70
CHƯƠNG VIII 73
KẾT LUẬN VÀ 73
HƯỚNG PHÁT TRIỂN 73
8.1 Kết luận 73
8.2 Hướng phát triển đề tài 73
TÀI LIỆU THAM KHẢO 74
Trang 14Robot bám line dùng xử lý ảnh 1
CHƯƠNG I DẪN NHẬP 1.1 Tổng quan về vấn đề nghiên cứu
Ngày nay, với sự phát triển mạnh mẽ vượt bậc của Khoa học kỹ thuật, vi điều khiển AVR và PIC ngày càng thông dụng hơn, nhưng có thể nói sự xuất hiện của Arduino vào năm 2005 tại Italia đã mở ra một hướng đi mới cho vi điều khiển Sự xuất hiện của Arduino đã hỗ trợ cho con người rất nhiều trong lập trình và thiết kế, nhất là đối với những người mới bắt đầu tìm tòi về vi điều khiển mà không có nhiều kiến thức về lập trình và điện tử Phần cứng của thiết bị đã được tích hợp nhiều chức năng cơ bản và là mã nguồn mở với ngôn ngữ C cùng thư viện phong phú nên Arduino hiện đang dần phổ biến trên thế giới Ngày nay điều khiển tự động đã trở thành một nhu cầu không thể thiếu được của con người, dưới sự xuất hiện của các học thuyết và các ứng dụng cụ thể trong đời sống hằng ngày, có thể nói điều khiển tự động đang chi phối dần cuộc sống của chúng ta con người đang cố gắng sáng tạo ra các con robot có khả năng làm việc thay cho con người, chúng ta thường bắt gặp các con robot trong các dây chuyền công nghiệp sản xuất tự động hay robot giúp việc trong gia đình Để tìm ra các ý tưởng sáng tạo hay hàng năm đề diễn ra cuộc thi robocon châu á Thái Bình Dương đó là tiền đề để tạo ra những con robot có khả năng áp dụng vào thực tế
Nhưng robot đôi khi chỉ có thể thay thế đôi tay của con người như thế là chưa đủ, có những công việc cần phải quan sát và đánh giá Để làm được điều đó thì sự phát triển của
xử lý ảnh là rất cấp thiết Do đó khả năng sử dụng camera để trợ giúp đôi mắt của con người trong những điều kiện khác nhau ngày càng phát triển Và khả năng xử lý những hình ảnh được thu về từ camera là rất quan trọng Nó thể hiện bước tiến dài của công nghệ
xử lý ảnh Với thuật toán đúng, một bộ cảm biến hình ảnh có thể cảm nhận được hoặc phát hiện bất cứ điều gì thực tế, do đó Pixy camera ra đời
Xuất phát từ những thực tiễn nói trên, nhóm quyết định thực hiện đề tài: “Nghiên cứu
và chế tạo robot bám line dùng xử lý ảnh”
Trang 15Robot bám line dùng xử lý ảnh 2
1.2 Hướng dẫn giải quyết vấn đề
1.2.1 Bộ điều khiển trung tâm
Có nhiều hướng thiết kế bộ xử lý trung tâm để điều khiển chiếc xe Gồm có:
1.2.2 Cảm biến
Hiện nay thì robot dò line hay bám line khá phổ biến Đa phần sử dụng cảm biến phản xả ánh sáng hay cảm biến thu phát Điều nay tuy là dễ dàng trong việc điều khiển xong chỉ giúp cho robot hoạt động theo đường line có sẵn, và không giúp được nhiều trong việc quan sát
Do đó Pixy Camera là 1 lựa chọn phù hợp để giải quyết vần đề về tầm nhìn Pixy vừa cung cấp tầm nhìn cho người quan sát, vừa có thể theo dõi cùng lúc nhiều đối tượng Nhằm giảm bớt chi phí cho các thành phần phụ khác, vừa giúp thu gọn kích thước của robot
1.3 Mục tiêu và nhiệm vụ của đề tài
1.3.1 Mục tiêu
Robot có khả năng xử lý hình ảnh, trả về vị trí các đối tượng mà ta cần quan sát
Tìm hiểu các mối tương quan giữa các tín hiệu thu được (hình ảnh) và tín hiệu trả
về bộ xử lý (tín hiệu số)
Robot có thể đi chuyển trên đường line thiết kế sẵn
1.3.2 Nhiệm vụ
Robot đi chuyển theo đường đi đã được định sẵn
Nghiên cứu sử dụng Pixy CMUcam5 và phần mêm PixyMon
Camera xác định được vị trí line và trả về tín hiệu cho bộ điều khiển
Điều khiển ổn định bộ động cơ sử dụng stepmotor
Trang 16Robot bám line dùng xử lý ảnh 3
1.4 Giới hạn của đề tài
Ứng dụng của Pixy camera là khá rộng lớn Với lượng thời gian và kiến thức có hạn, trong đề tài này nhóm chỉ thực thi một phần của Pixy camera Đó là xây dựng mô hình xe với các khả năng sau:
Thiết kế khả năng xử lý hình ảnh, nhận diện đường line của Camera
Thiết kế khả năng điều khiển của Arduino dành cho xe khi dùng step motor
1.5 Tóm tắt các chương
Chương 1: Dẫn nhập
Chương 2 : Cơ sở lý luận
Chương này trình bày về kế hoạch và ý tưởng thực hiện
Chương 3: Tổng quan về robot
Trong chương này, ta tìm hiểu sơ bộ về robot và hoạt động của robot bám line tự động
Chương 4: Tổng quan về Pixy Camera
Chương 5: Các linh kiện sử dụng
Chương 6: Thiết kế và thi công mô hình
Chương này trình bày các thiết kế chi tiết, nguyên lý hoạt động của mạch điện, cũng như kết quả thu được
Chương 7: Lưu đồ và giải thuật
Chương 8: Kết luận
Chương này nêu những ưu và khuyết của đề tài, khẳng định những đóng góp của đề tài
vào thực tiễn Đồng thời cũng đưa ra các đề nghị hướng phát triển cho đề tài
Trang 17
Robot bám line dùng xử lý ảnh 4
CHƯƠNG II
CƠ SỞ LÝ LUẬN
2.1 Đối tượng nghiên cứu
Đề tài hướng tới một phương thức điều khiển tự động có sự kết hợp của nhiều lĩnh vực liên quan như: PIXY camera, vi mạch điện tử, xử lý ảnh…Do đó, để tạo ta được một sản phẩm hoàn thiện theo mục đích đặt ra của đề tài thì người thực hiện cần phải tập trung nghiên cứu chủ yếu đến đối tượng: Vi mạch điện tử: là một đối tượng giữ vai trò trung tâm trong việc liên kết và xử lý tín hiệu từ các đối tượng khác Trong đề tài có một board mạch chính là Arduino, broad này được thiết kế và thi công từ các linh kiện điện tử đã có sẵn ngoài thị trường như: điện trở, tụ điện, các IC số…với sự điều khiển trung tâm là vi điều khiển Board này khi nhận tín hiệu từ cảm biến sẽ điều khiển nhiệm vụ được lập trình từ trước
Pixy camera đóng vai trò tiếp nhận và xử lý hình ảnh Nó chứa đựng các thông tin mà người dùng muốn Pixy truyền tải về và để người dùng ra lệnh cho các thiết bị ngoại vi làm việc
2.2 Nội dung, phương tiện và phương án thực hiện
2.2.1 Nội dung
Từ những lập luận trên, nhóm thực hiện tiến hành thi công đồ án với những nội dung như sau:
Phần viết báo cáo gồm các nội dung chính:
Mô hình, sơ đồ khối và phương án thiết kế
Trang 18Robot bám line dùng xử lý ảnh 5
Phần thi công mô hình và xử lý ảnh gồm:
Chế tạo robot bám đường tự động
Khả năng nhận diện hình ảnh của camera
2.2.2 Phương tiện và phương án thực hiện
Nhóm thực hiện đồ án và tiến hành công việc theo các giai đoạn như sau:
Giai đoạn 1: Thiết kế, lắp ráp mô hình xe
Giai đoạn 2: Nghiên cứu tìm hiểu về Pixy Camera
Giai đoạn 3: Lắp ráp hoàn thiện xe mô hình, cho chạy trên đường line
Giai đoạn 4: Chỉnh sửa, khắc phục lỗi hoàn thiện mô hình và báo cáo với thầy hướng dẫn về những kết quả của đề tài
Trang 19Robot bám line dùng xử lý ảnh 6
CHƯƠNG III TỔNG QUAN VỀ ROBOT
3.1 Tổng quan về Robot
Robot đã và đang xuất hiện trong cuộc sống của chúng ta từ lâu và ngày càng trở thành một phần không thể thiếu trong cuộc sống hiện đại Chúng đã góp phần mình vào cuộc sống lao động, chính robot đang làm nên một cuộc cách mạng về lao động, khoa học
và đang phục vụ đắc lực cho các ngành khoa học khác: Khoa học quân sự,khoa học giáo dục, các ngành dịch vụ giải trí…
Năm 1921 nhà soạn kịch Karel Capek người Tiệp Khắc đã đưa lên sân khấu vở kịch
có tiêu đề “Romands Univesal Robot” Có thể đây là một gợi ý, một ý tưởng ban đầu về những cỗ máy có khả năng thao tác như con người Đến trước chiến tranh thế giới lần thứ hai nhu cầu sử dụng những máy móc có khả năng thay thế con người ở những môi trường làm việc độc hại đã trở thành một nhu cầu cấp thiết Ban đầu cơ cấu máy này hoạt động giống như tay máy của người vận hành Cấu tạo của cơ cấu này bao gồm các thanh và các khớp và hệ thống giây chằng Người vận hành điều khiển tay máy thông qua một cơ cấu khuyếch đại cơ khí.Trong chiến tranh thế giới lần thứ hai (năm 1945), xuất hiện cơ cấu máy được điều khiển từ xa để cầm nắm chất phóng xạ
Cho đến những năm 1950 cùng với sự ra đời của kĩ thuật điều khiển chương trình
số NC(Number Control) Kỹ thuật tay máy lúc này đã kết hợp với kĩ thuật điều khiển xa và điều khiển chương trình số Sự kết hợp này đã tạo ra những thế hệ máy điều khiển từ xa có khả năng mềm dẻo, khả năng tự động hóa cao nên gọi là Robot
Năm 1960 George Devol đưa ra mẫu Robot đầu tiên Năm 1961 cũng tại Mỹ Robot công nghiệp (IR: Industrial Robot) đầu tiên đưa ra thị trường Robot Unimat 1990 (Do trường đại học MIT chế tạo) đây là Robot phản hồi lực nó được ứng dụng trong công nghiệp sản xuất ô tô
Trên thế giới hiện nay có rất nhiều loại Robot:
- Quy mô lớn như: Cánh tay máy trong các dây chuyền sản xuất, những hệ thống sản xuất tự động,…
- Quy mô nhỏ hơn: là những Robot có khả năng di chuyển, làm những công việc nguy hiểm thay thế con người, Robot giúp người già, Robot bán hàng,…
Trang 20Robot bám line dùng xử lý ảnh 7
3.2 Giới thiệu Robot bám line tự động
3.2.1 Giới thiệu Robot bám đường
Loại robot mà có thể di động theo một quỹ đạo định sẵn được gọi là Robot bám đường Robot bám đường có thể di chuyển theo một đường, đường đi có thể được nhìn nhận như một dòng màu vàng trên một bề mặt trắng (bám line) hoặc có thể là đường vô hình như một từ trường…
3.2.2 Nguyên tắc chung của robot bám line tự động
Robot chuyển động theo một quỹ đạo được định trước nhờ vạch dẫn, hệ thống hai bánh xe được dẫn động bởi 2 động cơ điện một chiều (step motor) thông qua mạch điều khiển và mạch công suất Thường thì các vạch dẫn có màu khác với màu nền của quỹ đạo chuyển động Để Robot chuyển động đúng quỹ đạo cần có bộ phận cảm biến, bộ phận này
có nhiệm vụ phân biệt vạch dẫn và màu nền, đưa tín hiệu điện tương ứng về mạch điều khiển Mạch điều khiển có nhiệm vụ thu nhận thông tin phản hồi từ bộ phận cảm biến từ
đó điều khiển tốc độ và chiều quay của hai động cơ điện một chiều sao cho xe luôn bám
và chuyển động theo vạch dẫn Nhìn chung, về mạch cấu tạo thì Robot tự động bám đường được thể hiện theo sơ đồ sau
Hình 1: Sơ đồ robot bám line tự động
3.3 Ứng dụng của Robot bám line tự động
Được ứng dụng vào công nghệ dò đường di chuyển tự động trong vận chuyển hàng hóa Tuy còn sơ khai về nguyên tắc điều khiển nhưng robot bám line đã tạo một bước ngoặc quan trong trong công nghệ thiết kế và chế tạo robot, mở ra một kỷ nguyên mới về ngành công nghệ kỹ thuật tự động hóa và đưa tự động hóa vào sản xuất
Trang 21Robot bám line dùng xử lý ảnh 8
Hình 2: Robot phục vụ di chuyển trên đường line
Bên cạnh đó việc xử dụng camera xử lý ảnh trên robot bám line làm tăng thêm xự hữu ích của robot bám line, nó giúp cho theo dõi, định vị vị trí, đánh dấu và theo dõi vật
Hình 3: Pixy pet robot
Trang 22Robot bám line dùng xử lý ảnh 9
CHƯƠNG IV TỔNG QUAN VỀ XỬ LÝ ẢNH
4.1 Giới thiệu xử lý ảnh
4.1.1 Cảm biến hình ảnh
Nếu chúng ta muốn robot của chúng ta để thực hiện một công việc như chọn lên một đối tượng, theo đuổi một bóng, vị trí một trạm thu phí, vv, và chúng ta muốn có một
cảm biến duy nhất để giúp thực hiện tất cả các nhiệm vụ, sau đó “hình ảnh” là cảm biến
của chúng ta Vision (hình ảnh) cảm biến này rất hữu ích bởi vì họ rất linh hoạt Với thuật toán đúng, một bộ cảm biến hình ảnh có thể cảm nhận được hoặc phát hiện bất cứ điều gì thực tế Nhưng có hai nhược điểm với bộ cảm biến hình ảnh: Có rất nhiều đầu ra của dữ liệu, hàng chục MB mỗi giây, và xử lý số lượng dữ liệu có thể áp đảo nhiều bộ vi xử lý Và nếu bộ xử lý có thể theo kịp với các dữ liệu, nhiều sức mạnh xử lý của nó sẽ không có sẵn cho các nhiệm vụ khác
PixyCam giải quyết những vấn đề này bằng cách ghép nối một bộ xử lý chuyên dụng mạnh mẽ với bộ cảm biến hình ảnh Pixy xử lý hình ảnh từ các bộ cảm biến hình ảnh
và chỉ gửi các thông tin hữu ích (ví dụ như PixyMon phát hiện bóng tại x = 54, y = 103) cho vi điều khiển của chúng ta Và nó làm việc này ở tỷ lệ khung hình (50 Hz) Các thông tin có sẵn thông qua một trong những giao diện: UART nối tiếp, SPI, I2C, USB, hoặc đầu
ra digital / analog Vì vậy, Arduino của chúng ta hoặc vi điều khiển khác có thể giao tiếp
dễ dàng với Pixy và vẫn còn có rất nhiều CPU có sẵn cho các nhiệm vụ khác
Có thể gắn nhiều Pixy lên vi điều khiển của chúng ta - ví dụ, một robot với 4 Pixy
và 360 độ của cảm biến Hoặc sử dụng Pixy mà không có một vi điều khiển và sử dụng các kết quả đầu ra digital hoặc analog để kích hoạt sự kiện, công tắc, servo, vv
4.1.2 Giới thiệu về Pixy
Nhỏ gọn, nhanh, dễ sử dụng, chi phí thấp, hệ thống camera dễ dàng – có sẵn
Có thể học để phát hiện đối tượng mà chúng ta dạy nó
Đầu ra những gì nó phát hiện 50 lần mỗi giây
Kết nối với Arduino thông qua cáp nối kèm theo Cũng làm việc với Raspberry Pi, BeagleBone và bộ điều khiển tương tự
Tất cả các thư viện cho Arduino, Raspberry Pi, v.v được cung cấp sẵn
C / C ++ và Python được hỗ trợ
Giao tiếp thông qua một trong những giao diện SPI, I2C, UART, USB hoặc analog I/O digital
Tiện ích cấu hình chạy trên Windows, MacOS và Linux
Tất cả các phần mềm / firmare là mã nguồn mở GNU cấp phép
Tất cả các tài liệu phần cứng bao gồm sơ đồ, công thức, PCB bố trí, vv được cung cấp
Trang 23Robot bám line dùng xử lý ảnh 10
Hình 4: Pixy CMUcam5 (mặt trước)
4.2 Tính năng của Pixy
4.2.1 Hỗ trợ điều khiển
Pixy có thể dễ dàng kết nối với rất nhiều các bộ điều khiển khác nhau, vì nó hỗ trợ một số tùy chọn giao diện (UART nối tiếp, SPI, I2C, USB, hoặc digital / analog), nhưng Pixy bắt đầu hoạt động của mình giao tiếp với Arduinos Trong vài tháng qua, nhà sản xuất đã thêm hỗ trợ cho Arduino Do, Raspberry Pi và BeagleBone Black Thư viện phần mềm được cung cấp cho tất cả các nền tảng, do đó chúng ta có thể nhận được và thao tác nhanh Ngoài ra, nhà sản xuất đã thêm một API Python nếu chúng ta đang sử dụng một bộ
điều khiển dựa trên Linux (ví dụ như Raspberry Pi, BeagleBone)
4.2.2 Thuật toán lọc màu
Pixy sử dụng một thuật toán lọc màu dựa trên phát hiện các đối tượng Phương pháp lọc màu dựa trên rất phổ biến vì chúng nhanh chóng, hiệu quả, và tương đối mạnh mẽ Hầu hết chúng ta đã quen thuộc với RGB (đỏ, xanh lá cây, và màu xanh) để đại diện cho màu sắc Pixy tính toán màu sắc và độ bão hòa của mỗi pixel RGB từ các cảm biến hình ảnh và
sử dụng các thông số như lọc chính Các màu sắc của một đối tượng phần lớn vẫn không thay đổi với những thay đổi trong ánh sáng và phơi sáng Những thay đổi trong ánh sáng
và tiếp xúc có thể có một tác động bực bội về thuật toán lọc màu, khiến chúng vỡ Thuật toán lọc Pixy là mạnh mẽ khi nói đến ánh sáng và tiếp xúc với những thay đổi
Trang 24Robot bám line dùng xử lý ảnh 11
4.2.3 Đặc điểm của Pixy
Có 7 kí tự màu: Pixy nhớ lên đến 7 chữ ký màu sắc khác nhau, điều đó có nghĩa
rằng nếu chúng ta có 7 đối tượng khác nhau với màu sắc độc đáo, thuật toán lọc màu Pixy sẽ không có vấn đề xác định chúng Nếu chúng ta cần nhiều hơn bảy, chúng ta có thể sử dụng mã màu
Có khả năng thấy hàng trăm đối tượng: Pixy có thể tìm thấy hàng trăm đối tượng
tại một thời điểm Nó sử dụng một thuật toán thành phần kết nối để xác định nơi một đối tượng bắt đầu và kết thúc khác Pixy sau đó biên dịch các kích thước và vị trí của từng đối tượng và báo cáo cho họ thông qua một trong các giao diện của nó (ví dụ như SPI)
Tốc độ 50 khung hình mội giây: "50 khung hình mỗi giây" có nghĩa là gì? Nó có
nghĩa là Pixy nhanh Pixy xử lý toàn bộ khung 640x400 hình ảnh mỗi 1 / 50th của một giây (20 phần nghìn giây) Điều này có nghĩa rằng chúng ta sẽ có được một cập nhật đầy đủ các vị trí tất cả các đối tượng phát hiện mỗi 20 ms Với tốc độ
này, theo dõi đường đi của rơi / bóng nảy là có thể
4.2.4 Thông số kĩ thuật
Bộ xử lý: NXP LPC4330, 204 MHz, lõi kép
Cảm biến hình ảnh: Omnivision OV9715, 1/4 ", 1280x800
Lens trường-of-view: 75 độ theo chiều ngang, dọc 47 độ
loại ống kính: tiêu chuẩn M12 (loại khác nhau có sẵn)
Công suất tiêu thụ: 140 mA điển hình
Công suất đầu vào: đầu vào USB (5V) hoặc đầu vào không được kiểm soát (6V đến 10V)
Trang 25Robot bám line dùng xử lý ảnh 12
4.3 Tính năng PIXY camera
4.3.1 Dạy pixy các đối tượng quan tâm
Chúng ta có thể dạy cho Pixy những gì mà chúng ta quan tâm đền cảm biến Đặt quả bóng màu cam phía trước của Pixy và nhấn nút Thật đơn giản và nhanh chóng
Hình 6 : dạy pixy về màu sắc
Dạy Pixy một đối tượng là siêu dễ dàng, nhưng trước tiên hãy nói về những đối tượng mà sẽ làm việc tốt với Pixy Pixy sử dụng một thuật toán lọc màu sắc dựa trên phát hiện các đối tượng Các đối tượng cần phải có một màu riêng biệt Dưới đây là một số đối tượng là tốt, vì nó có màu nổi bật, màu sắc khác nhau rõ ràng
Hình 7: Đối tượng tốt cho camera có thể phát hiện
Trang 26Robot bám line dùng xử lý ảnh 13
Dưới đây là một số đối tượng xấu bởi vì hoặc là không có màu (đen, trắng hoặc màu xám) hoặc màu sắc không phải là riêng biệt
Hình 8 : Đối tượng khiến camera khó phát hiện
Lưu ý những hướng dẫn trên, sau đó chọn một đối tượng để dạy Pixy Bây giờ , giữ nút trên đầu board của Pixy Sau khoảng 1 giây, đèn LED sẽ bật - đầu trắng, sau đó màu
đỏ, sau đó màu sắc khác - nhưng khi nó chuyển sang màu đỏ, thả nút Khi chúng ta thả nút, Pixy sẽ nhập vào những gì được gọi là "ống ánh sáng" chế độ, nơi màu LED là màu sắc của đối tượng đó Pixy đã "khóa" vào Pixy sẽ khóa vào đối tượng ở trung tâm của khung hình video của nó, vì vậy giữ đối tượng trực tiếp ở phía trước của Pixy, từ 6 đến 20 inch từ các ống kính
Pixy sử dụng một thuật toán phát triển không gian để cố gắng xác định điểm ảnh của đối tượng và những điểm ảnh của nền Sử dụng các điểm ảnh, Pixy sẽ cố gắng tạo ra một
mô hình thống kê đối tượng của chúng ta để nó có thể phát hiện ra đối tượng trong những điều kiện ánh sáng khác nhau Sử dụng các màu LED như thông tin phản hồi để xác định nếu Pixy đã khóa các đối tượng, và sử dụng các hướng dẫn sau đây để đánh giá:
1 Khi Pixy đã khóa vào đối tượng của chúng ta, màu sắc LED nên phù hợp với màu của đối tượng của chúng ta
2 Các đèn LED sáng hơn, khóa đối tượng tốt hơn Di chuyển các đối tượng một chút
và xem nếu chúng ta có thể tối đa hóa độ sáng LED
3 Nhìn vào lưới điện khu vực đang phát triển trong cửa sổ PixyMon và xem như thế nào kích thước của lưới điện tương ứng với màu LED và độ sáng Một tấm lưới đó bao gồm nhiều đối tượng của chúng ta thì tốt hơn so với một mạng lưới mà chỉ bao gồm một số đối tượng và kết quả của chúng ta trong một LED sáng hơn Những hình ảnh dưới đây cho thấy một mạng lưới bao gồm hầu hết các đối tượng (tốt)
Hình 9: Dạy Pixy 1 đối tượng
Trang 27Robot bám line dùng xử lý ảnh 14
Để Pixy có thể học màu đối tượng bằng cách sử dụng màu của các đèn LED có thể mất một chút luyện tập, nhưng một khi chúng ta có được cảm giác về nó, chúng ta có thể dạy
Pixy đối tượng mới đáng tin cậy mà không cần phải sử dụng PixyMon ! Khi chúng ta đã
hài lòng, nhấn và thả nút trên Pixy, như chúng ta phải nhấp chuột của chúng ta Các đèn LED sẽ nhấp nháy một vài lần chỉ ra rằng Pixy hiện đã "học" được đối tượng của chúng
ta Nó sẽ bắt đầu theo dõi đối tượng của chúng ta Pixy có thể học lên đến bảy chữ ký màu Có thể dạy Pixy chữ ký màu 1 bằng cách thả nút khi các đèn LED chuyển sang màu
đỏ Nếu chúng ta tiếp tục giữ nút, các đèn LED sẽ chuyển sang màu cam, vàng, vv, cho thấy chữ ký màu còn lại Dưới đây là những chữ ký theo thứ tự:
Vị trí chữ ký màu được xác định bởi khi chúng ta thả nút Thả nút khi các đèn LED có
màu vàng và chúng ta đang dạy chữ ký 3 Thả nút khi các đèn LED màu xanh là chúng ta
đang dạy chữ ký 6 Những màu sắc không liên quan đến màu sắc của các đối
tượng Những màu sắc chỉ được sử dụng để chỉ ra vị trí chữ ký Vì vậy, ví dụ, chữ ký 1 có
thể là một đối tượng màu vàng, mặc dù chữ ký 1 được chỉ định bởi một đèn LED màu đỏ, chữ ký và 2 có thể là một đối tượng màu hồng mặc dù chữ ký 2 được chỉ định bởi một cam LED
Sau khi chúng ta dạy Pixy một chữ ký, nó sẽ lưu lại chữ ký trong flash, vì vậy nó sẽ nhớ các chữ ký chúng ta đã dạy nó và tiếp tục theo dõi các đối tượng phù hợp với những chữ ký
Nếu chúng ta vô tình thấy mình dạy nhầm chữ kí màu cho đèn LED (tức là chúng ta phát hành nút khi nó là màu cam thay vì màu đỏ), ví dụ, chỉ cần giữ nút cho đến khi đèn LED tắt Đây là cách chúng ta nói Pixy để hủy bỏ chế độ giảng dạy Sau đó chúng ta có thể bắt đầu lại bằng cách giữ nút xuống một lần nữa
4.3.2 Pixy Mon
PixyMon là một ứng dụng chạy trên Windows, MacOS và Linux Nó cho phép chúng ta xem những gì Pixy thấy, hoặc là video thô hoặc chỉnh sửa Nó cũng cho phép chúng ta cấu hình Pixy của chúng ta, thiết lập các cổng đầu ra và quản lý chữ ký màu PixyMon giao tiếp với Pixy qua cáp mini USB chuẩn
PixyMon là rất tốt để gỡ lỗi các ứng dụng của chúng ta Chúng ta có thể cắm một cáp USB vào mặt sau của Pixy và chạy PixyMon và sau đó xem những gì Pixy thấy trong khi nó được nối với Arduino của chúng ta hoặc vi điều khiển khác - không cần tháo bất cứ điều gì PixyMon là mã nguồn mở, giống như mọi thứ khác
Dưới đây là những gì PixyMon truyền tới máy tính:
Trang 28Robot bám line dùng xử lý ảnh 15
Hình 10: Pixy truyền tới máy tính qua PixyMon
Buttons: đó là những hành động PixMon phổ biến nhất, vị trí thuận lợi ở trên cùng
của cửa sổ chính
Cửa sổ Video: đây là nơi PixyMon làm cho nhiều loại hình video thô hoặc
processsed
Command / trạng thái: đây là nơi mà các thông điệp tình trạng được hiển thị và
nơi lệnh Pixy có thể được gõ vào
Dưới đây là một chi tiết của các nút:
Hình 10: Một số các nút
Dừng / tiếp tục: nhấn nút này dừng video đang được kết xuất trong cửa sổ
video Điều này rất hữu ích khi lấy một khung hình hoặc gõ lệnh vào cửa sổ lệnh / trạng thái Nhấn nút này lần nữa để chạy lại các video
Chương trình mặc định: nhấn nút này chạy chương trình mặc định, đó là các
chương trình thực thi khi Pixy quyền hạn lên Đó thường là các chương trình mà tất
cả các xử lý trên Pixy và xuất ra kết quả (ví dụ như phát hiện các đối tượng) thông qua một trong các cổng nối tiếp Pixy của
Video thô: nhấn nút này sẽ hiển thị liệu, video chưa qua chỉnh sửa Điều này rất
hữu ích cho điều chỉnh tiêu cự, độ sáng máy ảnh, vv
Cooked video: nhấn nút hiển thị xử lý video này "chỉnh sửa" Nhấn nút này nếu
chúng ta muốn có được một ý tưởng tốt về cách Pixy đang xử lý hình ảnh trong chương trình mặc định Chế độ Cooked video là video thô với lớp phủ xử lý video
Cấu hình: nhấn này sẽ trả về các cấu hình hộp thoại, trong đó có các thông số cấu
hình khác nhau cho Pixy và PixyMon
Trang 29Robot bám line dùng xử lý ảnh 16
Hình 11:Menu Action
Menu này sẽ liệt kê tất cả các thư mục có trong "Action" đã được truy vấn và có sẵn trên Pixy của chúng ta
Run / Stop: Điều này giống như cách nhấn vào nút Run / Stop trong cửa sổ chính
của PixyMon Lựa chọn này dừng video đang được kết xuất trong cửa sổ video Điều này rất hữu ích khi lấy một khung hoặc gõ lệnh vào cửa sổ lệnh / trạng thái Hãy chọn điều này một lần nữa để lại các video
Mặc định chương trình: Đây là giống như việc nhấn nút chương trình mặc định
trong cửa sổ chính của PixyMon Lựa chọn này chạy các chương trình mặc định, đó
là các chương trình thực thi khi Pixy quyền hạn lên Đó thường là các chương trình
mà tất cả các xử lý trên Pixy và xuất ra kết quả (ví dụ như phát hiện các đối tượng) thông qua một trong các cổng nối tiếp Pixy của
Video thô: Đây là giống như cách nhấn vào nút video thô trong cửa sổ chính của
PixyMon Lựa chọn này sẽ hiển thị liệu, video chưa qua chế biến Điều này rất hữu ích cho điều chỉnh tiêu cự, độ sáng máy ảnh, vv
Cooked video: Đây là giống như cách nhấn các nút cooked video trong cửa sổ chính
của PixyMon Lựa chọn hiển thị xử lý video này "cooked video" Hãy chọn điều này nếu chúng ta muốn có được một ý tưởng tốt về cách Pixy đang xử lý hình ảnh
Trang 30Robot bám line dùng xử lý ảnh 17
trong chương trình mặc định Chế độ cooked chín là video thô với lớp phủ xử lý video
Chạy pan / tilt demo: Lựa chọn này chạy demo pan / tilt onboard Pixy (không
Arduino hoặc bộ điều khiển bên ngoài yêu cầu)
Set chữ ký: Lựa chọn một trong số này sẽ cho phép chúng ta thiết lập chữ ký bằng
cách chọn đối tượng của chúng ta trong cửa sổ video với một con chuột - chọn
Đặt chữ ký CC: Chọn một trong số này sẽ cho phép chúng ta thiết lập một chữ ký
mã màu bằng cách chọn đối tượng của chúng ta trong cửa sổ video với một con chuột - chọn
Xóa chữ ký : Lựa chọn này và chúng ta sẽ được nhắc trong cửa sổ lệnh / tình trạng
mà màu chữ ký chúng ta muốn xóa
Xóa tất cả chữ ký: Lựa chọn này sẽ xóa tất cả các chữ ký màu
Khôi phục các giá trị tham số mặc định: Lựa chọn này sẽ khôi phục lại tất cả các
thông số Pixy giá trị mặc định Điều này rất hữu ích nếu Pixy chúng ta hoạt động không đúng theo yêu cầu - chúng ta có thể sử dụng điều này để "thiết lập lại" mọi thứ Lưu ý, đây không khôi phục lại các thông số PixyMon về giá trị mặc định của chúng
Dạy pixy một đối tượng thông qua PixyMon
Chúng ta cũng có thể dạy Pixy một đối tượng thông qua PixyMon Điều này có thể hữu ích nếu đối tượng chúng ta muốn dạy là vật nhỏ, hoặc nếu chúng ta muốn kiểm soát nhiều hơn đối với các điểm ảnh được sử dụng để giảng dạy Bắt đầu bằng cách cắm cáp USB giữa Pixy và máy tính của chúng ta và chạy PixyMon
Bây giờ giữ các đối tượng chúng ta muốn dạy trước Pixy và chọn Action➜Set signature 1 từ trình đơn thả xuống
Hình 12 : Chọn Action➜Set signature 1
Trang 31Robot bám line dùng xử lý ảnh 18
Sử dụng chuột, click và kéo chuột để chọn khu vực chúng ta muốn Pixy sử dụng
để tìm hiểu những đối tượng
Hình 13 : Click và kéo chuột
Sau khi chúng ta chọn khu vực, Pixy sẽ "học" các đối tượng và tự động chuyển sang chế độ cooked video, do đó chúng ta có thể xác minh chữ ký như thế nào màu sắc của chúng ta đang làm việc
Hình 13 :Pixy đã học (đánh dấu) lên đối tượng
Trang 32Robot bám line dùng xử lý ảnh 19
Chữ ký điều chỉnh
Đôi khi các chữ ký màu chúng ta dạy Pixy cần phải "tinh chỉnh" - đó là, chúng ta đang nhận được một số dương tính giả (Pixy là phát hiện các đối tượng không phải là đối tượng mà chúng ta dự định) hoặc âm tính giả (Pixy không phát hiện các đối tượng chúng
ta chỉ dạy nó, hoặc nó phát hiện các đối tượng liên tục.) chúng ta có thể tinh chỉnh mọi thứ
bằng cách đưa ra hộp thoại Configure Chọn chỉnh Chữ ký ô dưới Pixy Parameters
Hình 14 : Bảng menu Pixy Parameters
Sử dụng thanh trượt cho Chữ ký 1 phạm vi điều chỉnh toàn diện của chữ ký 1 (giả
định đó là chữ ký của 1 chúng ta đang mong muốn để điều chỉnh) Trượt sang trái nếu chúng ta muốn được ít bao gồm (tức là nếu chúng ta đang nhìn thấy dương tính giả, giống như hình ảnh dưới đây):
Hình 15 : Nhìn thấy dương tính giả
Trang 33Robot bám line dùng xử lý ảnh 20
hoặc trượt sang bên phải nếu chúng ta muốn được toàn diện hơn (tức là chúng ta đang nhìn thấy âm tính giả) hoặc phát hiện là không liên tục hay thưa thớt (như trong hình dưới đây):
Hình 16 : Nhìn thấy âm tính giả
Chọn giá trị thanh trượt mà cung cấp phát hiện tốt mạnh mẽ, giống như hình ảnh dưới đây:
Hình 17 : Ví trí màu phù hợp
Chúng ta có thể điều chỉnh tất cả bảy chữ ký màu theo cách này để tối đa hóa độ
chính xác phát hiện cho tất cả các chữ ký Hãy chắc chắn để nhấn Apply hoặc OK để lưu! Các giá trị được điều chỉnh sẽ không được ghi lại nếu chúng ta nhấn Cancel hay bỏ
qua hộp thoại
Trang 34Robot bám line dùng xử lý ảnh 21
4.3.3 Giao tiếp thông qua PixyMon
Hiện có phần mềm hỗ trợ cho các vi điều khiển sau đây:
Serial: điều này bao gồm SPI, I2C và giao diện UART Các giao diện nối tiếp đều
sử dụng một giao thức đơn giản hóa với một mã số và bộ nhớ giắc cắm Mã này là đơn giản đến cổng để vi điều khiển khác nhau Đây là phương pháp được sử dụng
để giao tiếp với Arduino Sử dụng giao thức nối tiếp, Pixy gửi thông tin đầy đủ về những gì nó phát hiện, và nó chấp nhận các lệnh đơn giản để thiết lập các servo pan / tilt, vv
USB: giao diện USB dành cho vi điều khiển có nguồn tài nguyên bộ nhớ (RAM và
đèn flash) Mã cho giao thức USB có một bộ nhớ lớn hơn Đây là phương pháp được
sử dụng để giap tiếp với Raspberry Pi và BeagleBone Black, và nó được sử dụng bởi PixyMon dòng video trực tiếp và đọc / ghi thông tin cấu hình
Analog / digital: đây là giao diện đơn giản và thậm chí không có một giao thức
Chọn đúng giao diện
Trước tiên, chúng ta cần phải xác định cách chúng ta muốn giao tiếp với Pixy Pixy gửi/chặn thông tin để Arduino tại 1 Mbits / giây qua SPI vì tốc độ clock Arduino SPI được thiết lập để 1 MHz (nó có thể được đặt cao hơn, tuy nhiên) Điều này có nghĩa Pixy có thể gửi nhiều hơn 6000 phát hiện đối tượng mỗi đối tượng phát hiện thứ hai hay 135 cho mỗi khung hình (quy trình Pixy tại 50 khung hình mỗi giây) Nhưng nó vẫn còn có thể là liên kết nối tiếp là quá chậm để gửi lại tất cả các đối tượng trước khi frame kế tiếp được xử lý
và các đối tượng mới đã sẵn sàng để gửi qua nối tiếp Điều này đặc biệt có thể xảy ra với UART nối tiếp, mà chỉ là 19,2 kbaud thường, nhưng có thể cao như 115 kbaud Khi điều này xảy ra, các khối đối tượng chưa gửi từ khung trước đó được ném và các khối đối tượng mới từ khung mới được gửi thay thế Bằng cách này, những thông tin gần đây nhất là ưu tiên và luôn luôn được gửi Và kể từ khi đối tượng được sắp xếp theo kích thước, lớn hơn các đối tượng, ưu tiên nhiều hơn, nó cũng thu Hãy xem xét những hướng dẫn này:
Nếu điều khiển của chúng ta được dựa trên Linux và có một cổng USB host, sử dụng libpixyusb Đó là khá dễ dàng để cảng và USB là giao diện nhanh nhất
Nếu điều khiển của chúng ta hỗ trợ SPI, sử dụng đó Nó thường nhanh hơn so với I2C và UART, hoặc
Nếu điều khiển của chúng ta hỗ trợ I2C, sử dụng đó Đó là về tốc độ giống như UART nối tiếp, nhưng linh hoạt hơn, hoặc
Nếu điều khiển của chúng ta hỗ trợ UART nối tiếp, sử dụng, hoặc
Nếu điều khiển của chúng ta không hỗ trợ bất kỳ các giao diện, xem xét sử dụng tương tự đơn giản và đầu ra digital Đây là giao diện đơn giản nhất có thể!
Trang 35Robot bám line dùng xử lý ảnh 22
Thiết lập giao diện
Chúng ta có thể cấu hình các giao diện đầu ra thông qua PixyMon "Dữ liệu ra cổng" tham số trong các "giao diện" tab xác định giao diện chúng ta đang sử dụng
Hình 18 : Thiết lập giao diện
Arduino ICSP SPI - đây là cổng mặc định mà sử dụng 3 dây (chân 1, 3, và 4 của I/O kết nối) và được sử dụng để giao tiếp với Arduino thông qua đầu nối ICSP Phiên bản này của SPI không sử dụng một slavechọn tín hiệu
SPI với SS - điều này cũng giống như Arduino ICSP SPI ngoại trừ việc nó bao gồm
hỗ trợ cho Slave Chọn thông qua pin 7 (SPI SS) Đó là chúng ta cần phải điều khiển SPI SS thấp trước khi gửi / nhận từng byte
I2C - đây là một multi-drop 2 dây cổng (chân 5 và 9 của I / O kết nối) cho phép một chủ duy nhất để giao tiếp lên đến 127 người slave (lên đến 127 Pixys) Chúng ta có thể cấu hình các địa chỉ I2C thông qua các tham số "địa chỉ I2C"
UART - đây là "cổng nối tiếp" thông thường (chân 1 và 4 của I/O ) Pixy nhận dữ liệu thông qua pin 1 (đầu vào) và truyền dữ liệu thông qua pin 4 (đầu ra) Chúng ta
có thể cấu hình baudrate UART thông qua các tham số "UART baudrate"
analog / digital x – điều này sẽ ra các giá trị x của đối tượng phát hiện lớn nhất là một giá trị tương tự giữa 0 và 3.3V (pin 3) Nó cũng kết quả đầu ra cho dù một đối tượng được phát hiện hoặc không phải là một tín hiệu digital (pin 1 của I/O)
analog / digital y - điều này sẽ ra các giá trị y của đối tượng phát hiện lớn nhất là một giá trị tương tự giữa 0 và 3.3V (pin 3) Nó cũng kết quả đầu ra cho dù một đối tượng được phát hiện hoặc không phải là một tín hiệu digital (pin 1 của I/O)
LEGO I2C - nếu chúng ta có một LEGO Mindstorms EV3 hoặc NXP điều khiển,
sử dụng chế độ này Đó là I2C, nhưng sử dụng giao thức LEGO
Lưu ý, các giao diện USB và giao thức luôn được kích hoạt, trong khi mỗi giao diện trên chỉ có thể được kích hoạt một tại một thời điểm nhất định
Trang 36Robot bám line dùng xử lý ảnh 23
Ghi chú trên mỗi giao diện
Dưới đây là sơ đồ chân nối của I / O Pixy, nơi mà tất cả các nối tiếp (SPI, I2C, UART) và analog / digital giao diện có sẵn
Hình 19 : Sơ đồ nối chân
Nhìn vào mặt sau của Pixy, các chân của cổng I / O là theo thứ tự sau đây, với pin 1 nằm trên bên trái:
1 Dữ liệu được gửi bit quan trọng nhất đầu tiên
2 SPI SCK là thấp khi nhàn rỗi
3 bit dữ liệu được bám trên các cạnh tăng của SPI SCK
4 Slave chọn là hoạt động thấp
Pixy cũng hỗ trợ SPI với slave chọn (SPI với SS)
Dưới đây là làm thế nào để kết nối SPI điều khiển của chúng ta lên Pixy (nếu chúng ta không sử dụng một Arduino và cáp cung cấp):
1 Pin 10 ➜ tín hiệu mặt đất điều khiển của chúng ta
2 Pin 1 (SPI MISO) ➜ tín hiệu SPI MISO điều khiển của chúng ta
3 Pin 4 (SPI MOSI) ➜ tín hiệu SPI MOSI điều khiển của chúng ta
4 Pin 3 (SPI SCK) ➜ tín hiệu SPI SCK điều khiển của chúng ta
5 Pin 7 (SPI SS) ➜ tín hiệu SPI SS điều khiển của chúng ta (nếu chúng ta đang sử dụng SPI với SS)
Trang 37Robot bám line dùng xử lý ảnh 24
I2C
Giao diện I2C hoạt động như một slave I2C
Có biến trở 4.7K pullups đến 5V trên SDA và SCL tín hiệu, thông qua R14 và R15
Tín hiệu I2C được 5V
Các địa chỉ I2C có thể được cấu hình trong "Giao diện" tab và các tham số cấu hình hộp thoại trong PixyMon
Có một ví dụ Arduino sử dụng I2C Chạy nó bằng cách chọn File➜Examples➜i2c trong Arduino IDE Chúng ta sẽ cần phải thực hiện một cáp đặc biệt
Dưới đây là làm thế nào để kết nối I2C điều khiển của chúng ta lên Pixy:
1 Pin 10 ➜ tín hiệu mặt đất điều khiển của chúng ta
2 Pin 9 (I2C SDA) ➜ tín hiệu I2C SDA điều khiển của chúng ta
3 Pin 5 (I2C SCL) ➜ tín hiệu I2C SCL điều khiển của chúng ta
Lưu ý, khi giao tiếp với nhiều hơn một Pixy qua I2C, chúng ta sẽ cần phải cấu hình một địa chỉ I2C khác nhau cho mỗi Pixy vì vậy họ không ảnh hưởng vào nhau Đó là, khi chọn I2C là một giao diện, tất cả các tín hiệu trên kết nối I / O Pixy đi vào một trạng thái trở kháng cao và sẽ không can thiệp với nhau, tránh lãng phí năng lượng, vv
RX tín hiệu (pin 1) là 5V đầu vào
TX tín hiệu (pin 4) là 0 để tín hiệu đầu ra 3.3V
Baudrates lên đến 230 kbaud hỗ trợ
Có một ví dụ Arduino sử dụng UART nối tiếp Chạy nó bằng cách chọn File➜Examples➜uart trong Arduino IDE Chúng ta sẽ cần phải thực hiện một cáp đặc biệt
Dưới đây là làm thế nào để kết nối UART điều khiển của chúng ta lênPixy:
1 Pin 10 ➜ tín hiệu mặt đất điều khiển của chúng ta
2 Pin 1 (UART RX) ➜ đầu ra UART TX điều khiển của chúng ta
3 Pin 4 (UART TX) ➜ UART RX đầu vào của bộ điều khiển của chúng ta
Analog và digital đầu ra
Pixy có một đầu ra analog đơn (DAC), vì vậy có hai chế độ cho analog/digital đầu
ra
Chế độ 4 đầu ra các giá trị x của trung tâm của các đối tượng phát hiện lớn nhất đối với pin 3 của I / O
5 chế độ xuất ra giá trị y của đối tượng phát hiện lớn nhất đối với pin 3 I/ O
Pin 1 lên mức cao (3.3V) khi một đối tượng được phát hiện, và thấp (0V) khi không
có đối tượng được phát hiện
Đầu ra digital Pixy là 0 - 3.3V và source/sink 5 mA
Trang 381 Pin 10 ➜ tín hiệu mặt đất điều khiển của chúng ta
2 Pin 3 (DAC OUT) ➜ một trong những tín hiệu đầu vào ADC của bộ điều khiển của chúng ta
3 Pin 1 (GPIO0) ➜ một trong những tín hiệu đầu vào digital điều khiển của chúng ta Lưu ý, tất cả các tín hiệu đầu ra digital trên Pixy là 3.3V CMOS logic Tất cả các tín hiệu đầu vào digital trên Pixy được 5V
Các giao thức nối tiếp
Cho dù đang sử dụng SPI, I2C hay UART nối tiếp, giao thức là giống hệt nhau
Giao thức là dữ liệu hiệu quả nhị phân
Các đối tượng trong mỗi khung hình được sắp xếp theo kích thước, với các đối tượng lớn nhất gửi đầu tiên
Chúng ta có thể cấu hình số lượng tối đa của vật gửi cho mỗi khung hình ( "khối Max" tham số)
SPI và I2C hoạt động trong "chế độ slave" và dựa vào điểm bỏ phiếu để nhận được cập nhật
Khi không có đối tượng phát hiện (không có dữ liệu) Pixy gửi số không nếu giao diện SPI hoặc I2C (kể từ Pixy là một slave, nó có gửi một cái gì đó)
Mỗi đối tượng được gửi trong một "khối đối tượng" (xem dưới đây)
Tất cả các giá trị trong khối đối tượng là những từ 16-bit, byte gửi kém signifcant đầu tiên (về cuối nhỏ) Vì vậy, ví dụ, khi gửi lời đồng bộ 0xaa55, Pixy gửi 0x55 (byte đầu tiên) sau đó 0xaa (byte thứ hai)
Trang 39#define PIXY_START_WORD 0xaa55
#define PIXY_START_WORD_CC 0xaa56
#define PIXY_START_WORDX 0x55aa
return 0; // in I2C and SPI modes this means no data, so return immediately
else if (w==PIXY_START_WORD && lastw==PIXY_START_WORD)
{
g_blockType = NORMAL_BLOCK; // remember block type
return 1; // code found!
Trang 40Robot bám line dùng xử lý ảnh 27
Vì vậy, để xác minh rằng chúng ta đang nhận được 50 khung hình / giây:
int main()
{
int i=0, curr, prev=0;
// look for two start codes back to back
static int g_skipStart = 0;
static Block *g_blocks;
uint16_t getBlocks(uint16_t maxBlocks)