TOM TAT KHÓA LUẬNSản phẩm của khóa luận là một robot nhện 6 chân được tạo nên từ 18 động cơ servokết hợp với một bộ nhận diện màu sắc - đóng vai trò là “một bộ não” giúp robot cóthê tự đ
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
NGUYEN NHAT LONG NGHIEM XUAN NHAT QUANG
KHOA LUAN TOT NGHIEP
NGHIEN CUU PHUONG PHAP XU LY ANH VA UNG DUNG VAO QUA TRINH DIEU KHIEN ROBOT
NHEN 6 CHAN
RESEARCH INTO THE DIGITAL IMAGE PROCESSING IN
PROCESS OF CONTROLLING THE 6 LEGS SPIDER
ROBOT
KY SU KY THUAT MAY TINH
TP HO CHi MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
NGUYEN NHAT LONG - 16520690
NGHIEM XUAN NHAT QUANG - 16520994
KHOA LUAN TOT NGHIEP
NGHIEN CUU PHUONG PHAP XU LY ANH VA UNG
DUNG VAO QUA TRINH DIEU KHIEN ROBOT
NHEN 6 CHAN
RESEARCH INTO THE DIGITAL IMAGE PROCESSING IN
PROCESS OF CONTROLLING THE 6 LEGS SPIDER
ROBOT
KY SU KY THUAT MAY TINH
GIANG VIEN HUONG DAN
PHAN ĐÌNH DUY
TP HÒ CHÍ MINH, 2021
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số Quyết định số
64/QD-DHCNTT ngày 26 tháng 01 năm 2021 của Hiệu trưởng Trường Dai học
Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Quá trình thực hiện luận văn tốt nghiệp là giai đoạn quan trọng nhất trong quãngđời mỗi sinh viên Khóa luận tốt nghiệp là tiền đề nhằm trang bị cho chúng emnhững kỹ năng nghiên cứu, những kiến thức quý báu trước khi lập nghiệp
Trước hết, chúng em xin chân thành cảm ơn quý Thay, Cô khoa Kỹ thuật máy tính.Thay, Cô trong bộ môn khoa đã tận tình chỉ dạy và trang bi cho em những kiến thức
cần thiết trong suốt thời gian ngồi trên ghế giảng đường, Làm nền tang cho em có
thể hoàn thành được báo cáo khóa luận này
Em xin trân trọng cảm ơn thầy Phan Đình Duy đã tận tình giúp đỡ, định hướng cách
tư duy và cách làm việc khoa học Đó là những góp ý hết sức quý báu không chỉ
trong quá trình thực hiện luận văn này mà còn là hành trang tiếp bước cho em trong
quá trình học tập và lập nghiệp sau này.
Và cuối cùng, xin gửi lời cảm ơn đến gia đình, bạn bè, tập thé lớp KTMT2016,những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập và cuộc sống Mongrằng, chúng ta sẽ mãi mãi gắn bó với nhau
Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành cùng mọi người
Trang 5MỤC LỤC
Chương 1 TỐNG QUAN 2-52 522 2EEEEEEEEE1E21211212121 11111 xe 13
1.1 Nội dung - Ăn TH TH HH Hành ngư 13
1.2 Mục tiÊU ĂẶ ng KH key 15
1.3 Phương pháp thực hiỆn c3 32.11211111 EEkrrrrrree 15
1.4 _ Các nội dung chính và gi6t hạn 5 s11 Eisrerseeereeeree 15
Chương2 CO SỞ LÝ THUYÊT 2 £+E+SE+EE+EE£EE+EEEEEEEeEEerEerkrrkrree 18
2.3.4 Không gian màu HSV - . ch ngư 27
2.3.5 Lọc ảnh số (Filter) & COntOUTS - - 556 +SvEE‡E+EvEEEeEeEerxzxerers 28
2.3.6 Phương pháp xói mòn hình anh (Erosion) -.- - 5s «5s <+++ 30
Chương 3 | PHAN TICH VA THIET KE HE THÓNG - 5+ 31
3.1 CAC KNOP ececcescsscessessesssessessesssssessessessesssessessessessusssessessesssssessessesssesseeseesess 31
3.2 LAP PAP veeeccecessesssessessesseessessessesssessessessessuessessessessusssessessesssssessessessessseeseesess 323.3 Mô tả di chuyển Robot nhện 6 Chan w cecececscescsessesesesssseeseesessesseseesees 35
3.3.1 Nguyên lí thăng bằng -¿ 2¿©2+c22ccExSrkrrrxrrrrerkrerxee 35
Trang 63.3.2 Nguyên lí đứỨng - SG nS S3 HH ng rệt 36
3.3.3 Nguyên lítiến tới ©-¿©c++ckeEkeEEEEEEEEEkErkrrrrrrkerkerkee 37
3.3.4 Nguyên lí xoay trái, phảI - . sgk re, 38
3.4 Mạch nguÖn -S2-5222<+EE2EEEEEEEEEE1021211211211211 21.11111111, 39
3.5 co n4 403.6 Tạo App Android kết nối Bluetooth HC-06 -¿-2- 2525: 44
3.7 Linh kiện -© 2E EkSEEEEEEEEEE2112112211221.211 211.1 xe 45Chương 4 CẤU HÌNH VA GIAO TIẾP 2-2-2 2+EE+EE+£EczErrxrrxerkerex 48
4.1 Phan mềm sử dụng - + 2 2+S£+E+E£EEEEEEEEEEEEEEEEE2EEEEEEEEEEEErrer 484.2 Cau hình xung Clock, Timer ¿- 2-5 s ESEEE+EE+EE£E£EerEerkerkrrszrs 514.3 Điều KHIM ee cecceccccsecseessesseesecsscsscessesscssessecsecsecsscsseesecssessesseeseessesseeseesees 534.4 Giao tiếp UART với HO-06 coccceccecccccccccsscsssessesssessessessessesssessessessesseeseesess 54Chương 5 KÉT QUA THUC NGHIỆM -2- 2 +2xc2x+z+rxerxezes 55
5.1 Hoan thành phần khung RoObot - 2- 2 s2 +££+E£+E£+E££EerEerxerxreee 555.2 Mạch PCB và nguồn cho toàn hệ thống 2-2 2+ s+£sz£E+£x+zz 565.3 _ Các di chuyển căn bản - 2 2+2 +E+EEeEEEEEEEEEEE2E12112121 21212 xe, 565.4 Kết nối Bluetooth HCO6 2¿©2¿©5£+2++EEt£E2EEEEEeExerkrrrerrerxerkeee 57
5.5 Phần mềm điều khiển - ¿2© £+E£+EEt2EEEEEESEEEEECEEErrkeerkrrrreee 57
5.6 Giao tiếp giữa Smartphone và STÌM32 - 2 ¿se xecke£xerxerxereee 585.7 Leo bậc thang (đã biết trước kích thước) - 2 2 z+s++x+zx+zx+rxxeee 585.8 _ Nhận diện màu sắc -¿- + +©E++E++EE£EEEEEEEEEEEEEEEErrkrrrkrrkerrees 585.9 Di chuyền tự động theo màu đã chọn từ App điều khiến 59
Chương 6 KÉTLUẬN ©-22222EESEESEEEEEEEEEEEEEEEEkrrkerkrrex 60
Trang 8DANH MỤC HÌNH
Hình 1.1 Robot nhện 6 chân -«-+©+++EEEketEEEEEEEEEEELEEHHHH Hà 14
Hình 2.1 Các khớp chân của RObOI -«-c<cc+++cxekkeEkttkrekrtrirkrtrirkrirkrrrrrrrkee 18
Hình 2.2 Kit STM32F411 Discovery [ Í-4] e-c-s«sccsxeeresreekeerserrrekrrerrrrrkee 19
Hình 2.3 Sơ đồ thực hiện của Timer [1 5] -++icceceevevvErErrrrrreessvveerrrrrrrrree 19
Hình 2.4 Mô tả quá trình Count Up của Timer [ I] e -s<cccssscscreerxxx 21
Hình 2.5 Điều chế độ rộng xung (PWM) [1 5] - iecceerreeceerrreeerrrrreeee 21Hình 2.6 Khung truyền (frame) tín hiệu UART [16] -ccesrreccee 22
Hình 2.7 Camera Pi V2 [17] s-cscessccs+evrEestkerErEtstterstrsttsttersrtsrkrrsttsrkrrsrtsrtrrsrrsrke 24
Hình 2.8 Hình ảnh được số hóa [18] ccccccsvevvvvvvvvvvEEEESEEEEEEEEEEEEEEttttttterrrrrrrree 24Hình 2.9 Điểm ảnh (Pixel) [1Ñ] e-iieeceerreeccerrreeerrrreerrrrrrerrrrrrrerrrrrrrere 25
Hình 2.10 Độ phân giải [ Í 8] 5<<55+ccEEkkcSkkkEkHH Hà 25
Hình 2.11 Chiều sâu của 1 điểm ảnh RGB [3] -eecccereerrerrrrre 26Hình 2.12 Ảnh xám và ảnh màu RGB Jal 8 | , Š Ất, ccceesrerrsrestsrrrresrsrrsrrsrsrrsrre 26
Hình 2.13 Không gian màu HSV [IO] -©c<ccxesxcekeeritkrrttirtrirkirrrrrrrkes 27
Hình 2.14 Ảnh màu sau khi quét (bên phải) -ccccccrrceeecverrrreesevrrrrrrcee 28
Hình 2.15 Bộ loc Kernel tỉ lệ 1:1 [20|] -.c<-5cccsccrxeeerkeerrrtrkrerrieerrke 29
Hình 2.16 Phương pháp xói mòn Erosion [21] - « -««-cseecseeerserersesrrrserrrke 30
Hình 3.1 Servo MG996R [22] cc 555-SS+ tt HE này 32 Hình 3.2 Khớp chân RObOI s s< xe nh Hà HH Hành 32
Hình 3.3 Khớp nói thân và chân R.ObOI( -ce+crxserkerrrrtrstrrrrrirrrrrrrrrrrrke 33
Hình 3.4 Chân Robot hoàn chỉÍnh «se +sxsrxskkxtrrtetrketkktrrkttkrrrrkrrkerrkrirkerrke 33
Hình 3.5 Ga chân nhện vào tấm dưới thân nhện -e-ccssccserccszeee 34
Hình 3.6 Khung nhện hoàn chỉnh -+:xetskrkrkkkiitEkiriiiiiiiie 34 Hình 3.7 VỊ trí 6 chân đúng va sai của RODOI c cc«eccvsereekreerteerrrtsrirerrertre 35
Hình 3.8 Hai góc tạo bởi khớp C.1 và C.2 -ccccrrkerrrirtrrirrrriiririirrrrirrrirrie 36
Hình 3.9 Cách tiến lên của Robot -:cccceireecvttreeevtrtrererrrrrererrrrrerrrrrrsrrte 37
Hình 3.10 Nguyên lí xoay trái phải «-csccsescekrEktkrrekrtkitkrrrrirrrirkrrrrrrrikes 38
Hình 3.11 PCB đế cắm STM32F411 cccccc++eieeeeeeverrrrrrrrtrrrrerrrrrrrrrrrrrree 39
Trang 9Hình 3.18 Layout của App điều khiển -cccc-cccccveeerrrrrrrreerrrrrrrrrrrrrrrrrrer 45
Hình 4.1 STM32CubeMX Development Software [4] -c-e.eeersexee 48
Hình 4.2 Atollic TrueSTUDIO Software [5] cccccscereeeerersersrersrrstrrrrrssee 49 Hình 4.3 Pycharm IDE Software [6] ssssessssssssessssessesssecsssesssecsseesssessessnsesseesseesssessseesssessseess 50 Hình 4.4 Android Studio Software [7 ] -e cccsccsxcerseestterstrsttsttersrtsrtrrrtsrtrrsrtsrkrrsrrsree 50
Hình 4.5 Proteus Design Suite Software [Š ] e-ecccceeekereriikririiirrike 51
Hình 4.6 Cấu hình xung clock bằng STM32CubeMX «-ss ccs+ 51Hình 4.7 Độ rộng xung dé điều khiển góc quay Servo [§] -s +- 53
Hình 4.8 Tín hiệu từ STM32 đến Servo vescesssssssssssssssssssssssesssssssssesessssssssssssssesssssesssusssssseesee 54
Trang 10DANH MỤC BANG
Bảng 3.1 Linh kiện sử dụng47
Bảng 4.1 Sơ đồ kết nối chân Robot và Timer STM32F452
Trang 11DANH MỤC TU VIET TAT
VCS : Version Control System
IDE : Integrated Development Environment
GPIO : General Purpose Input-Output
UART : Universal Asynchronous Receiver-Transmitter
PWM : Pulse Width Modulation
11
Trang 12TOM TAT KHÓA LUẬNSản phẩm của khóa luận là một robot nhện 6 chân được tạo nên từ 18 động cơ servokết hợp với một bộ nhận diện màu sắc - đóng vai trò là “một bộ não” giúp robot cóthê tự động di chuyển theo một màu được xác định trước Đề cải thiện cho việc điềukhiển được dé dang hơn và thuận tiện hơn, nhóm cũng cung cấp một ứng dụng điềukhiến dé thay thé cho những ứng dụng sẵn có ở bên ngoài thị trường hiện nay.
Về phần chức năng của robot, chú nhện này có thê đáp ứng được những thao tác dichuyên căn bản và những động tác giải trí khác Không dừng lại ở đó, ngoài việc di
chuyền trên bề mặt bằng phăng, nhóm cũng quyết định nâng cấp việc di chuyên trở
nên tốt hơn bằng cách hỗ trợ cho robot có khả năng trèo bậc thang (ở một chiều caođược nhóm xác định trước) Về mặt cấu trúc của robot nói chung và hệ thống nóiriêng, sản phẩm chính của khóa luận (robot nhện) được chia ra gồm 2 phần: phầnthân của robot và phần nhận diện màu sắc Đối với phần thân, cấu trúc của hệ thống
bao gồm:
+ Khung robot được tạo nên từ kim loại
r5 18 động cơ servo đóng vai trò chính để tạo nên 6 chân của robot
+ Vi điều khién STM32F411 đảm nhiệm quá trình băm xung cho các động cơ
% Khối mạch nguồn, mạch điều khiển và những linh kiện khác
Đối với khối xử lý màu sắc, hệ thống bao gồm các linh kiện như sau:
+ Jetson Nano được nhúng san hệ điều hành Linux hỗ trợ cho quá trình xử lý
ảnh đóng vai trò là “não bộ”
+ Camera đóng vai trò là “mắt nhện” dé Jetson có thé phát hiện được những
mau sắc ở phía trước và phản hồi lai cho người dùng
Về mặt chức năng, robot nhện có thể đáp ứng cụ như sau:
+ Thao tác căn ban: hướng về phía trước hoặc theo hướng ngược lại, xoay trái
hoặc xoay phải và những động tác giải trí khác
+ Tréo bậc thang với chiều cao được xác định trước
+ Tự động nhận diện được màu sắc ở trước mặt, có khả năng di chuyền theo
màu được chỉ định qua ứng dụng di động được cung cấp
12
Trang 13Chuong 1 TONG QUAN
1.1 Nội dung
Ngày nay, việc sử dụng robot để thay thế con người khám phá các địa hình khó
khăn trong thực tế đang dần được phát triển (Spider robot, lidar robot, ) Dựa trên
bài báo khoa hoc “Study on hexapod robot manipulation using legs” [1] và dự ánArduino Spider Robot (Quadruped) [2], spider robot vẫn còn nhiều hạn chế và
chưa mang tinh tự động hóa, không thé ứng dụng rộng rãi vào những van dé ở thực
tiễn Việc sử dụng robot vào quá trình này đòi hỏi robot phải đáp ứng được việc
điều khién từ xa, loại bỏ hoàn toàn việc điều khién thủ công như trước Không dừng
lại ở đó, dé robot có thé thực hiện những hành động mang tính chất phức tạp đòi hỏi
chúng cần có khả năng xử lý những tình huống một cách tự động, việc điều khiểnthủ công không thé đáp ứng được tính tỉ mi cũng như còn rất nhiều hạn chế tùythuộc vào tình huống sử dụng robot Giả sử, nếu sử dụng robot trong một khônggian mà tại đó ánh sáng còn hạn chế hoặc tín hiệu điều khiển không 6n định thì việccon người quan sát và điều khién robot gần như là không thé Về năng lượng đượccung cấp cho robot ở thời điểm hiện tại vẫn là những viên pin hoặc cao cấp hơn là
pin năng lượng mặt trời có khả năng tự sạc cho bản thân robot, do đó chưa thể đáp
ứng được việc duy trì năng lượng liên tục cho robot Nếu như con người sử dụngrobot vào việc khai thác hay tìm kiếm những nguồn tài nguyên quan trọng thì việccạn kiệt nguồn năng lượng có thé gây nên tình trạng: không thé lay được những tàinguyên đang trong quá trình vận chuyền, thậm chí không thê thu hồi lại robot saukhi sử dụng Tóm lại, đây chính là những hạn chế mang tính chất quyết định đến
thực trạng ở hiện tai.
13
Trang 14Từ thực trạng trên, nhóm quyết định thực hiện việc nghiên cứu, tìm hiểu và ứngdụng quá trình xử lý ảnh (nhận diện màu sắc từ các vat thé) điều khiến một robot cókhả năng di chuyền linh hoạt một cách tự động ở các bề mặt hiểm trở mà con ngườikhông thể đặt chân đến.
Hiện nay, Robot nhện ở nước ta chỉ dừng lại ở việc điều khiển thông thường [13](tiến, lùi, xoay, đi nhanh, đi chậm, ) bằng Remote cơ Nhóm đã cải tiến robotthêm những tính năng hữu ích giúp cho nó có khả năng tự động đưa ra quyết định dichuyên theo vật thé, hơn thé nữa có còn có thé thu thập dữ liệu của vật thể trongtầm nhìn và đưa dit liệu đó về cho người dùng quản lí Remote cũng được thay thébang phan mềm với giao diện thân thiện hiển thị trên Smartphone đề thuận tiện, tiếtkiệm chi phí và quan trọng tích hợp xử lí anh dé phát triển phan tự động di chuyển
trong không gian.
14
Trang 151.2 Mục tiêu
Mục tiêu chung của đê tài là lắp ráp một robot nhện có 6 chân và điêu khiên được
robot nhện di chuyên theo các hướng, leo bậc thang Đồng thời ứng dụng xử lý ảnh
đê xác định màu sắc các vật thê đê tự động điêu khiên robot di chuyên theo các vật
thê mang mau sac được lựa chọn Cu thê đê tài sẽ:
Tìm hiểu quy trình chế tạo một robot nhện 6 chân
Thực nghiệm lắp ráp robot và điều khiển robot di chuyền theo các hướng đã
Sử dung các bộ ha áp và nguồn tổ ong dé xây dựng nguồn điện thích hợp cho
các động cơ và các kit sử dụng trên robot.
Sử dụng kit STM32F411 Discovery làm bộ điều khiển chính chứa chươngtrình nhúng điều khiến các hoạt động di chuyên căn bản của robot
Sử dung kit Jetson Nano và Camera Raspberry Pi V2 8MP phục vụ cho quá
trình nhận diện, xử lý anh và truyền các tín hiệu điều khiển đến bộ điềukhiển chính
Các nội dung chính và giới hạn
Trong đề tài khóa luận này, những nội dung chính mà nhóm thực hiện bao gồm các
hoạt động chính như sau:
+
+
Tìm hiểu, nghiên cứu và lắp ráp hoàn chỉnh robot nhện 6 chân
Hiện thực việc thăng bằng cũng như các hoạt động di chuyển căn bản cho
robot.
15
Trang 16+ Tích hợp khả năng leo bậc thang cho robot, giúp nâng cao hiệu quả di
chuyển trên các bề mặt khác nhau (với kích thước bậc thang và bề mặt được
Đối với việc lắp ráp hoàn chỉnh robot, nhóm sử dụng bộ khung mà nhà sản xuất
cung cấp với kích thước sẵn có Cấu trúc mỗi chân của robot được tích hợp với 3
động cơ servo giúp cho chuyền động của mỗi chân được linh động và dé dang hơntrong việc thực hiện các thao tác căn bản Vì mỗi động cơ sẽ có một góc quay cụ thểứng với từng động tác nên chúng cần được tính toán, mô phỏng trước khi được lắpvào bộ khung sẵn có Sau khi quá trình lắp ráp servo vào khung hoàn tat, cần tínhtoán và thiết kế cho robot bộ mạch nguồn có thé đáp ứng đủ cho toàn bộ hệ thốngnhằm mang lại tính ồn định cho toàn bộ động cơ (tránh hiện tượng thiếu hụt áp vàdong) Vì tính chất cô định của khung kim loại từ nhà sản xuất (về kích thước cũngnhư khối lượng của robot) nên nó ảnh hưởng đến việc thu nhỏ kích thước của sảnphẩm thực tế
Dé có thé giúp cho robot hoạt động, có kha năng thực hiện được những thaotác di chuyên căn bản, chúng ta cần xây dựng giao tiếp giữa bộ vi điều khiển
STM32F411 cùng với toàn bộ các động cơ như sau:
% Sử dụng ngôn ngữ C, lập trình trên vi điều khiển để thực hiện việc thiết lập
những thông số căn bản cho hệ thống, điều chế xung (PWM) nhằm mục đíchđiều khiển các động cơ, từ đó phối hợp chúng tạo nên những hành động dichuyên căn ban cho robot
% Xác định các tham số cần thiết cho quá trình điều chế xung cho từng động cơ
dé chúng có thé quay đúng góc mong muốn và tạo thành một hoạt động hoàn
chỉnh cho từng chân
16
Trang 17Những hành động di chuyên của robot sẽ được mô phỏng dựa trên những hoạt động
thực tế của loài nhện Cụ thể, vì một chân của robot gồm 3 servo ở 3 vị trí: trong,giữa và ngoài nên cần tính toán cho từng động cơ dé tạo nên một hanh động cụ thécho 1 chân như: day, kéo, xoay, đây là một trong những nền tang tạo nên hành
động phức tạp như di chuyển hướng về phía trước hoặc về hướng ngược lại, xoay
trái hoặc xoay phải,
Không dừng lại ở đó, hệ thống cũng cần được xây dựng giao tiếp với ứng dụng diđộng (được viết bằng ngôn ngữ Java) nhằm đáp ứng việc điều khiển thủ công cho
robot Ứng dụng này sẽ có các nút điều hướng căn bản, những nút chức năng cũng
như những khu vực hiền thị trang thái của robot trong lúc quá trình điều khiển được
diễn ra.
Với mục tiêu cải thiện việc di chuyên của robot không những dừng lại ở việc dichuyên trên các bề mặt phẳng, nhóm cũng quyết định xây dựng thêm khả năng trèobậc thang (với chiều cao được xác định trước) giúp cho robot có thé đa dụng hơn.Hành động này được dựa theo hành động thực tế và được hiện thực bằng cách kếthợp quá lực đây ở chi sau và lực kéo từ những chi trước giúp cho robot có thể vượt
qua được bậc thang ở hướng trước mặt.
Điều đặc biệt ở robot này chính là quá trình tự động di chuyên theo các loại màu sắc
được lựa chọn từ ứng dụng điện thoại mà nhóm đã cung cấp Việc nhận diện màu
sắc ở robot được hiện thực bang những bước sau:
% Sử dụng ngôn ngữ Python để hiện thực giải thuật trên kit NVIDIA Jetson
% Sử dụng giao thức UART để truyền thông tin màu sắc đã nhận từ Camera
(Jetson) đến STM32F411, sau đó sẽ chuyển tiếp về cho ứng dụng (điện
thoại) hién thị màu sắc đã phát hiện
17
Trang 18Chương2 CƠ SỞ LÝ THUYET
Chương này sẽ giới thiệu về các cơ sở lý thuyết mà nhóm đã nghiên cứu và pháttriển dựa trên nhiều nguồn kiến thức khác nhau Những nội dung bao gồm : nghiêncứu và hiện thực mã nguồn trên STM32F411, các ngoại vi được áp dụng vào khóa
luận, các nguyên lí di chuyển cho Robot, tìm và nghiên cứu xử lí ảnh ứng dụng
Trước khi đi vào các phan trên, nhóm đã quy ước cách gọi chân của Robot như sau:
Các chân sẽ đánh số theo ngược chiều kim đồng hồ, các khớp sẽ đánh số từ ngoàivào trong theo kí hiệu:
Chân C.K
trong đó: C là thứ tự chân, K là thứ tự khớp của chân đó.
Hình 2.1 Các khớp chân của Robot
18
Trang 192.1 Board STM32F411 Discovery
Kit STM32F411 Discovery sử dung chip ARM Cortex M4 + DSP Core, giúp chúng
ta mau chóng tim hiểu và phát triển ứng dụng trên dòng MCU ARM Cortex M4 từ
STM, kit có tích hợp mạch nạp ST-Link/V2, các ngoại vi như cảm biến gia tốc, từtrường, audio, cùng với tài liệu và code mẫu chính hãng rất tích hợp cho người
Trang 20Timer là một loại ngoại vi được tích hợp trên STM32F4, cung cấp cho người dùngnhiều ứng dụng như xác định chính xác một khoảng thời gian, đo - đếm xung đầu
vào, điều khiến dạng sóng đầu ra, băm xung PWM
Thành phần chính của timer chính là bộ đếm — counter (CNT), với các ngưỡng trên
được thiết lập bởi thanh ghi Auto Reload (ARR) Counter có thể đếm lên lên hoặc
đếm xuống Clock đưa vào bộ đếm có thé được chia bởi một bộ chia tần —
Prescaler.
Người dùng có thể thực hiện các lệnh đọc, ghi vào các thanh ghi CNT, ARR và
PSC dé cấu hình cho khối cơ sở của mỗi bộ Timer
+ Counter Register (TIMx_CNT): Khi hoạt động, thanh ghi này tăng hoặc
giảm giá trị theo mỗi xung clock đầu vào Tùy vào bộ timer ma counter này
có thể là 16bit hoặc 32bit
+ Prescaler Register (TIMx_PSC): Giá trị của thanh ghi bộ chia tần (16bit)
cho phép người dùng cấu hình chia tần số đầu vào (CK_PSC) cho bắt kì giátrị nào từ [1- 65536] Sử dụng kết hợp bộ chia tan của timer và của RCC giúpchúng ta có thể thay đổi được thời gian của mỗi lần CNT thực hiện đếm,giúp tạo ra được những khoảng thời gian, điều chế được độ rộng xung phùhợp với nhu cầu
+ Auto-Reload Register (TIMx_ARR): Giá trị của ARR được người dùng xác
định sẵn khi cài đặt bộ timer, làm cơ sở cho CNT thực hiện nạp lại giá trị
đếm mỗi khi tràn (overflow khi đếm lên — CNT vượt giá tri ARR, underflowkhi đếm xuống — CNT bé hơn 0) Tùy vào bộ timer mà counter này có thé là
16bit hoặc 32bit.
20
Trang 21Timerclock = CK_CNT ị : [LI | IU] | | | | PU
Counter register 31 BEECH 01 |02 03 {04 {05 | 06 | o7 |
Counter overflow l
Update interrupt flag (UIF) j
Hình 2.4 Mô tả quá trình Count Up của Timer [15]
Mỗi bộ timer có 4 kênh Capture/Compare độc lập, mỗi kênh này phối hợp
Time-base unit có thé tạo ra xung PWM được xác định bởi giá tri của thanh ghi ARR, va
chu kỳ nhiệm vụ (Duty cycle) được xác định bởi giá trị thanh ghi CCR.
21
Trang 222.2.2 UART
UART - Universal asynchronous receiver transmitter là bộ truyền nhận nối tiếp bat
đồng bộ UART là một ngoại vi cơ bản trong chip STM32F4 thường được dùngtrong các quá trình giao tiếp với các loại module như: Bluetooth, Wifi
1 data frame
-Start Parity| Stop
DO | D1 | D2 | D3 | D4 | DS | D6 | D7 | pụ
Hình 2.6 Khung truyền (frame) tín hiệu UART [16]
Một số khái niệm cơ bản của UART :
% Baudrate: Số bit truyền được trong 1s, ở truyền nhận không đồng bộ thì ở
các bên truyền và nhận phải thống nhất Baudrate Các thông số tốc độ
Baudrate thường hay sử dung dé giao tiếp với máy tính là
600, 1200,2400,4800,9600, 14400, 19200,38400,56000,57600, 115200.
+ Frame: Ngoài việc giống nhau của tốc độ baud 2 thiết bị truyền nhận thi
khung truyền của bên cũng được cấu hình giống nhau Khung truyền quy
định số bit trong mỗi lần truyền, bit bắt đầu “Start bit”, các bit kết thúc (Stopbit), bit kiêm tra tính chan lẻ (Parity), ngoài ra số bit quy định trong một gói
dữ liệu cũng được quy định bởi khung truyền Có thé thấy, khung truyềnđóng một vai trò rất quan trọng trong việc truyền thành công dữ liệu
+ Start bit: Bit đầu tiên được truyền trong một frame, bit này có chức năng
báo cho bên nhận rằng sắp có một gói dữ liệu truyền đến Đường truyền
UART luôn ở trạng thái cao mức “1” cho đến khi chip muốn truyền dữ liệu
đi thì nó gởi bit start bằng cách kéo xuống mức “0” Như vậy start bit giá trịđiện áp 0V và phải bắt buộc có bit start trong khung truyền
* Data: Data hay dữ liệu là thông tin mà chúng ta nhận được trong quá trình
truyền và nhận Data trong STM32 có quy định khung truyền là 8bit hoặc9bit Trong quá trình truyền UART, bit có trọng số thấp nhất (LSB — least
22
Trang 23significant bit — bên phải) sẽ được truyền trước và cuối cùng là bit có ảnh
hưởng cao nhất (MSB — most significant bit — bên trái)
% Parity bit: Parity dùng dé kiểm tra dữ liệu truyền có đúng hay không Có 2
loại Parity đó là Parity chăn (even parity) và parity lẽ (odd parity) Parity
chan nghĩa là số bit 1 trong trong data truyền cùng với bit Parity luôn là sốchan, ngược lại nếu Parity lẽ nghĩa là số bit 1 trong data truyền cùng với bitParity luôn là số lẽ Bit Parity không phải là bit bắt buộc và vì thế chúng ta
có thể loại bỏ bit này ra khỏi khung truyền
% Stop bits: Stop bits là một bit báo cáo dé cho bộ truyền/nhận biết được gói
dữ liệu đã được gởi xong Stop bits là bit bắt buộc phải có trong khungtruyền Stop bits có thé là Ibit, 1.5bit, 2bit, 0.5bit tùy thuộc vào ứng dụng
UART của người sử dụng.
2.2.3 Camera
Camera Raspberry Pi V2 8MP là phiên bản Camera Module dành cho Raspberry Pi
mới nhất sử dung cảm biến ảnh IMX219 8-megapixel từ Sony thay cho cảm biến cũ
là OV5647 Với cảm biến IMX219 8-megapixel từ Sony, Camera Module choRaspberry Pi đã có được sự nâng cấp vượt trội về cả chất lượng hình ảnh, video
cũng như độ bên
Camera Raspberry Pi V2 8MP có thé sử dụng với Raspberry Pi dé chụp hình, quayphim với chất lượng HD 1080p30, 720p60 hoặc VGA90, cách sử dụng cũng nhưlập trình với Camera Module trên Raspberry Pi cũng rat dễ dàng, chỉ cần cắm vào
công Camera trên Raspberry Pi va Config 1 chút là có thể dùng được.
Camera Raspberry Pi V2 8MP có thé sử dụng tương thích với NVIDIA Jetson Nano
có rất nhiều bộ thư viện được cộng đồng phát triển trên Python giúp cho việc tim
hiểu và sử dung trở nên dé dàng hơn rất nhiều.
23
Trang 24Một hình ảnh có thé được định nghĩa là hàm hai chiều, f (x, y), trong đó x và y là
tọa độ không gian (mặt phẳng) và biên độ của f tại bất kỳ cặp tọa độ (x, y) nào được
gọi là cường độ hoặc mức độ màu xám của hình ảnh tại điểm đó Khi x, y và các giátrị cường độ của f đều là các đại lượng hữu hạn, rời rạc, chúng ta gọi hình ảnh là
Trang 252.3.2 Điểm ảnh (pixel) & độ phân giải
Điểm ảnh chính là 1 phan tử tại 1 điểm trong ma trận hàng x và cột y hữu hạn các
phan tử của I hình anh
Digital Image
Real imags (an approximation)
Hinh 2.9 Diém anh (Pixel) [18]
Độ phân giải là tập hợp 1 sô lượng Pixel nhât định vào 1 đơn vi diện tích nhat định.
Chang hạn , độ phân giải 8x8 thì sẽ có 8 hàng va 8 cột, tong cộng có 8x8= 64
Trang 262.3.3 Giá trị & chiều sâu
Các định dạng phổ biển của ảnh số bao gồm:
3# 1 giá trị trên diém/pixel (B&W hay Grayscale)
* 3 giá trị trên diém/pixel (Red, Green, Blue)
+ Đi sâu vào RGB, mỗi điểm ảnh sẽ có 3 giá trị là Red, Green và Blue Sự kết
hợp của 3 màu này trên 1 điêm ảnh sẽ tạo nên rat nhiêu màu khác nhau.
Blue component Image Plane
Pixel,
[255, 0, 255]
Green component
image Plane
Red component image Plane
Pixel of an RGB image are formed from the corresponding pixel of the three component images
Hình 2.11 Chiều sâu của 1 điểm anh RGB [3]
26
Trang 272.3.4 Không gian màu HSV
Dé có thé nhận diện và phân tích màu sắc, thì điều đầu tiên ta phải làm đó là chọn ramàu sắc cần xác định và nhóm đã tìm ra rất nhiều không gian màu khác nhau chắng
hạn như : RGB (Red-Green-Blue), CMYK (cyan-magenta-yellow-key), HSB
(Hue-Saturation-Brightness) va HSV (Hue-Saturation- Value) Cuối cùng, nhóm đã đưa raquyết định đó là sẽ ứng dụng hệ mau HSV, vì nó đơn giản và dễ tiếp cận Khônggian màu này dùng dé xử lý màu sắc rất thuận tiện, vì mỗi màu sẽ có 1 giá trị năm
trong H[0;360], còn V[0;100] và S[0;100] chỉ thị độ sáng và độ bão hoà của màu.
Hệ màu này được ứng dụng đề theo dõi đối tượng theo màu sắc:
+ H ( Hue ) : Vùng màu là bao gồm tat cả các màu trong hệ màu, mỗi mau sẽ chiếm một cung tròn nhất định trong không gian màu này Chương sau sẽ chỉ ra
mau sắc cụ thé với khoảng giá trị Hue cụ thé
+ S (Saturation) : Độ bão hòa mau sắc thê hiện độ thuần khiết của màu sắc
Khi có độ bão hòa cao, màu sẽ sạch và rực rỡ Khi có độ bão hòa thấp, màu sẽ đục
và xin Độ bão hòa thay đổi từ 0% (xám) đến 100%
+ V (Value) : Giá trị độ sáng của một màu sắc mô tả nó sáng hay tối như thế
nao Độ sáng thay đổi từ 0% đến 100%
27
Trang 282.3.5 Lọc ảnh số (Filter) & Contours
Sau khi đã có khoảng màu từ không gian màu ở phan 2.4.4 Ta tiến hành lọc hình
ảnh bằng phương pháp Filter Phương pháp nay sử dụng 1 ma trận loc (Kernel) déquét toàn bộ hình ảnh và thu về 1 hình anh mới tùy theo mục đích lọc là gì, trongngữ cảnh của nhóm đó là lọc hình ảnh đã thu được về 1 màu nhất định Tùy theo
mục đích mà người ta chọn ra các Kernel có kích thước khác nhau (3x3, 5x5,
9x9 ) Tức là khi sử dụng một Kernel có không gian màu đỏ, thì hình ảnh thu vềsau khi quét sẽ chỉ còn lại những điểm ảnh có chứa màu đỏ, những điểm ảnh không
chứa màu đỏ sẽ bị biến thành màu đen Băng cách đó chúng ta có thể nhận dạng
mau sắc, cụ thé thuật toán sẽ được trình bày ở chương sau
Ngoài ra, phương pháp này còn có thể tỉ lệ hình ảnh, nghĩa là hình ảnh sau khi quétbằng Kernel có thể lớn hơn, nhỏ hơn hoặc bằng ảnh ban đầu Nhóm đã sử dụng tỉ lệbằng nhau là bởi vì nhóm đã sử dụng một camera 8MP có khả năng thu video có độphân giải Full HD với 30 khung hình trên giây và mặt khác là để cho việc xử lí ảnh
trở nên dễ dàng hơn.
Hinh 2.14 Anh mau sau khi quét (bén phai)
28
Trang 29Sau khi đã có đầy đủ lý thuyết về quá trình lọc ảnh màu bằng Kernel, nhóm đãquyết định tìm hiểu va áp dung mô-đun Contours từ OpenCV, thư viện mã nguồn
mở hàng đầu cho xử lí về thị giác máy tính, machine learning, xử lí ảnh Mô-đunnay sử dụng phương pháp lọc ảnh số (filter) dé lọc một giá trị màu cụ thé hoặc cùng
mật độ màu từ một tam hình Sau đó, tập hợp những điểm ảnh gần nhau (liên tục)
dé tạo thành một đường cong (boundary), và không có khoảng hở trong đường cong
đó Ngoài ra còn có các tính năng bé sung như : vẽ đường bao (hình chữ nhật, cham
ở bốn góc, hình tròn, ), tính diện tích Contours từ thư viện OpenCV là một công
cụ hữu ích được dùng dé phan tich hinh dang đối tượng, phát hiện đối tượng, nhận
dạng đối tượng Các giải thuật cho việc xử lí ảnh và phát hiện đối tượng sẽ được
trình bày cụ thể ở chương sau
29
Trang 302.3.6 Phương pháp xói mòn hình ảnh (Erosion)
Như kết quả hình 2.18, ta có thé thấy còn rất nhiều điểm ảnh nhỏ rời rac, tạo sựkhông liền mạch, và xuất hiện những hình vuông nhỏ ở hình bên trái Dé loại bỏ các
điểm ảnh rời rạc, ta bắt buộc phải sử dụng phương pháp xói mòn điểm ảnh rời rạc
(Erosion) Phương pháp nảy cũng đến từ thư viện OpenCV.
Mục đích của phương pháp này sẽ giúp:
* Loại bỏ những pixel nhiễu cô lập.
% Loại bỏ những pixel nhiễu xung quanh đối tượng giúp cho phan viền (cạnh)
của đối tượng trở nên mịn hơn
* Loại bỏ lớp viền (cạnh) của đối tượng giúp đối tượng trở nên nhỏ hơn và đặt
những pixel viền đó trở thành lớp nền của đối tượng
% Áp dụng dé tính diện tích của đối tượng bằng cách tinh tổng tất cả các điểm
ảnh đã cấu thành nên vật thé
Như kết qua dat được ở hình 2.20 , ta có thé thấy các điểm rời rac đã bị xóa, chỉ
còn lại đối tượng cụ thê như hình bên trái Bước này hết sức quan trọng trong quátrình phát triển thuật toán xử lí ảnh để có thể phát hiện vật thể
30
Trang 31Chương3 PHAN TÍCH VÀ THIẾT KE HE THONG
Nội dung của chương này gồm 3 phần chính: cấu tạo hệ thống robot, quá trình nhậndiện màu sắc và quá trình xây dựng các thao tác căn bản cho robot Phần đầu tiêngiúp đọc giả hiểu rõ hơn về cấu trúc của hệ thống robot, cách tính toán và xây dựngmạch nguồn nhằm đáp ứng nguồn năng lượng én định cho nhiều động cơ Nhữngphan còn lại sẽ trình bày cụ thé lần lượt các giải thuật mà nhóm đã áp dụng nhằm
xây dựng nên những động tác căn ban cho việc điều khién
cơ RC Servo MG996 có lực kéo mạnh, các khớp và bánh răng được làm hoàn toàn
bang kim loại nên có độ bền cao, động cơ được tích hợp sẵn driver điều khiển động
cơ bên trong theo cơ chế phát xung - quay góc nên rat dễ sử dụng MG996 có trọnglượng vô cùng nhẹ 55g Mô men xoắn cực mạnh 9.4kg/cm tại 4.8V Tốc độ xoaycủa bánh răng là 0.17 giây cho một cung tròn 60 độ Đầu vào điện áp cũng vô cùnglinh hoạt từ 4.8V cho đến 7.2V Vì mô men xoắn khá cao nên là dòng diện tiêu thụcũng không ít, từ 500mA đến 900mA (dòng tối đa có thể lên đến 2A) Tiếp đến lànhiệt độ hoạt động lúc ôn định là từ 0 đến 55 độ C
Robot mà nhóm phát triển yêu cầu 6 chân, mỗi chân có 3 động cơ Servo, tổng cộng
có 18 động cơ Robot yêu cầu 1 nguồn điện có thé lên đến 12A nếu tải nặng, vì vậy
dé đảm bảo nguồn cung cấp 6n định và an toàn cho robot, nhóm đã sử dụng nguồn
tổ ong 12V-20A và thiết kế một mạch điện tử riêng (sẽ có bản vẽ chi tiết ở phần
3.3) để có thể vừa vặn với khung của robot nhện Như vậy, các linh kiện cần thiết
dé tạo ra hình dáng robot đã đầy đủ, phan tiếp theo sẽ tiến hành lắp ráp và hoàn
thiện robot ở mức độ tạo hình.
31