Ngày nay, robot khơng chỉ xuất hiện trong các hoạt động sản xuất, nhà máy, dây chuyền lắp ráp mà ngày càng gần gũi với con người; ví dụ như: robot hút bụi, robot phục vụ trong nhà hàng,
TỔNG QUAN
Đặt vấn đề
Cùng với sự tiến bộ của công nghệ thông tin, đặc biệt là trí tuệ nhân tạo Robot thông minh được tạo ra và được cải thiện về khả năng nhận thức, khả năng ra quyết định giúp thực thi nhiệm vụ một cách toàn diện hơn Công nghệ robot là một công nghệ phức tạp và tiên tiến liên quan đến đa lĩnh vực và liên ngành, bao gồm cơ khí - điện tử, điều khiển tự động, công nghệ cảm biến, công nghệ máy tính, vật liệu mới, công nghệ sinh học và trí thông minh nhân tạo (sẽ còn tiếp tục được tích hợp mở rộng)
Nó được công nhận là một lĩnh vực công nghệ cao có ảnh hưởng quan trọng tới sự phát triển của những công nghệ đang nổi trong tương lai Như là một một nền tảng công nghệ quan trọng, nó không chỉ hỗ trợ chủ đạo cho phát triển sản xuất tiên tiến, mà còn giúp mang tới cho cuộc sống với nhiều biến đổi đột phá Ngày nay, robot không chỉ xuất hiện trong các hoạt động sản xuất, nhà máy, dây chuyền lắp ráp mà ngày càng gần gũi với con người; ví dụ như: robot hút bụi, robot phục vụ trong nhà hàng, khách sạn, robot tư vấn, chỉ dẫn ở bệnh viện,… Và trong số đó, có thể nhắc đến là Mobile Robot, nó ngày càng thể hiện tiềm năng lớn trong các lĩnh vực dịch vụ và cuộc sống hàng ngày Chúng có thể được sử dụng trong lĩnh vực y tế để vận chuyển vật liệu y tế, trong lĩnh vực công nghiệp Nhờ có Mobile Robot mà đã giúp con người tiết kiệm rất nhiều thời gian cũng như tăng tính tiện lợi trong cuộc sống Vì tất cả những lập luận trên đã tạo nên động lực để nhóm quyết định lựa chọn đề tài “Thiết kế và thi công robot di động bám người vận chuyển hàng” Đề tài tập trung vào việc phân biệt mục tiêu với các đối tượng khác cũng như di chuyển và giữ khoảng cách nhất định với mục tiêu, tránh những vật cản xuất hiện trong quãng đường robot bám theo mục tiêu Việc đánh giá mô hình, nhóm thực hiện triển khai đề tài trong những môi trường cũng như trường hợp khác nhau nhằm đánh giá khách quan nhất về thuật toán nhận dạng đối tượng.
Tình hình nghiên cứu
Robot di động (Mobile Robot) là một loại máy tự động mà có khả năng di chuyển trong một môi trường nhất định Robot di động có khả năng di chuyển xung quanh môi trường của chúng và không cố định với một môi trường vật lý nào Robot di động tập trung với số lượng lớn các nghiên cứu hiện nay và hầu hết các trường đại học lớn đều có một hay nhiều phòng thí nghiệm để tập trung nghiên cứu robot này Robot di động cũng có trong công nghiệp, quân sự và bảo mật Chúng cũng xuất hiện như những sản phẩm dành cho ngành giải trí hoặc thực hiện những nhiệm vụ nhất định trong cuộc sống hàng ngày như hút bụi hay cắt cỏ,…
1.2.1 Tình hình nghiên cứu trên thế giới
Tình hình nghiên cứu Mobile Robot đang rất phát triển và sôi động trên toàn cầu Các nước trên thế giới đều đang đầu tư và chú trọng vào lĩnh vực này, với sự tham gia của các viện nghiên cứu, trường đại học, công ty công nghệ và tổ chức nghiên cứu Dưới đây là một số ví dụ về tình hình nghiên cứu Mobile Robot ở một số quốc gia nổi tiếng:
− Matradee có khả năng mở cửa nhà bếp, cho phép giao hàng từ nhà bếp đến bàn ăn Chúng ta có thể ra lệnh cho Matradee từ xa bằng đồng hồ thông minh có thể đeo được Cho phép bạn điều khiển Matradee từ bất kỳ đâu trong nhà hàng của bạn
Hình 1.1 Matradee - Robot dịch vụ nhà hàng của công ty RichTech Robotic
− LEO và CLEO đã được triển khai làm robot phục vụ khi khách sạn EMC2 Chicago khai trương vào tháng 5 năm 2017 Nhiệm vụ chính của LEO và CLEO là giao hàng đến các phòng ở khách sạn
Hình 1.2 LEO và CLEO – Robot dịch vụ nhà hàng ở Chicago (Mỹ)
− Được thiết kế bởi Follow Inspiration, một công ty khởi nghiệp của Bồ Đào Nha được thành lập vào năm 2012, WiiGo là một giỏ hàng tự điều khiển, giúp khách hàng giảm khả năng di chuyển mua sắm tại các siêu thị lớn
Hình 1.3 WiiGo – của công ty Follow Inspiration (Bồ Đào Nha)
1.2.2 Tình hình nghiên cứu ở trong nước Ở Việt Nam, đã có một số loại Mobile Robot được phát triển và ứng dụng trong các lĩnh vực khác nhau Dưới đây là một số ví dụ về các loại Mobile Robot đã được phát triển tại Việt Nam:
− Mobile Robot giao hàng tự động: FPT Software đã giới thiệu robot tự động giao hàng có tên là "NextAMR" - là robot tự hành sử dụng trong sản xuất công nghiệp đầu tiên do người Việt chế tạo Ở môi trường nhà máy, NextAMR có thể tự động định vị, tìm đường di chuyển linh hoạt, mà không cần đường ray chuyên dụng, chủ động tránh người & vật cản, cập nhật bản đồ thích ứng với những thay đổi
Hình 1.4 Robot NextAMR của tập đoàn FPT
− Robot công nghiệp: Trong ngành công nghiệp, Mobile Robot cũng được các nhà máy sản xuất ngày càng cập nhật khả năng tự động hóa Ví dụ, công ty Inteligent Robotics Company (IROCO) đã phát triển robot phục vụ đẩy xe và phân phối các bộ phận trong nhà máy
Hình 1.5 Robot AMR300 do Công ty IROCO phát triển
− Mobile Robot tự động: Vuletech là một trong những đơn vị có nhiều sự hợp tác với các đơn vị nước ngoài trong lĩnh vực Mobile Robot(KuKa Đức, Cognex Mỹ, ) Một số Mobile Robot mà công ty phát triển như Robot Cart Thouzer được thiết trong ứng dụng vận chuyển hàng hóa, Robot Wheelchair ứng dụng cho ngành y tế và chăm sóc sức khỏe,
1.2.3 Tình hình nghiên cứu tại Trường Đại học Sư Phạm Kỹ Thuật
Tại Trường Đại học Sư Phạm Kỹ Thuật TP.HCM cũng đã có nhiều sinh viên cùng với giảng viên đã nghiên cứu một số robot tự hành, Mobile Robot Dưới đây là Bảng 1.1 liệt kê một số đề tài đồ án tốt nghiệp của các anh/chị khóa trước mà nhóm tìm kiếm được có liên quan đến robot tự hành, Mobile Robot
Bảng 1.1 Một số đề tài nghiên cứu về robot tự hành, Mobile Robot ở SPKT
STT Tên đề tài - Tác giả Khóa Nội dung
1 Nghiên cứu, thiết kế và chế tạo xe đẩy siêu thị thông minh
Tác giả: Phan Trung Nghĩa, Nguyễn
Huy An, Ngô Tấn Hậu
K18 Thiết kế và sử dụng bộ điều khiển PID, ứng dụng xử lý ảnh bằng camera và máy tính nhúng Jetson Nano cho Mobile Robot phục vụ tại siêu thị
2 Nghiên cứu, thiết kế và chế tạo robot tự hành phục vụ trong nhà máy sản xuất
Tác giả: Trần Hiển Vinh, Lê Phúc
K18 Chế tạo xe tự hành bằng ứng dụng của Lidar, ROS phục vụ trong nhà máy sản xuất với khả năng chịu tải cao
3 Nghiên cứu, chế tạo mô hình Mobile
Tác giả: Nguyễn Vũ Long, Nguyễn
Duy Tuấn, Phan Trường Hải
K18 Nghiên cứu chế tạo được
Mobile Robot bằng xử lý ảnh bằng OpenCV nhằm di chuyển robot đến vị trí sao cho luôn duy trì khoảng cách cố định với đối tượng phát hiện được.
Mục tiêu của đề tài
Mục tiêu sâu xa của đề tài là xây dựng được một robot di động trên bánh xe phục vụ trong siêu thị lớn với tính năng bám theo người sử dụng để chứa hàng hoá được mua Mục tiêu ban đầu là robot có thể bám theo người Để làm được điều đó, nhóm cần:
− Xây dựng hệ thống cơ khí của robot có thể tải hàng tối đa 10kg
− Xây dựng bộ điều khiển vi tích phân tỉ lệ (PID) đáp ứng được tốc độ mong muốn
− Xây dựng thuật toán xử lý ảnh giúp bám được mục tiêu khi có nhiều đối tượng gây nhiễu
− Xây dựng thuật toán tránh vật cản trong phạm vi hoạt động của robot.
Phương pháp nghiên cứu
− Nhóm tiến hành các bước thu thập dữ liệu, xử lý và phân tích dữ liệu, thiết kế và triển khai hệ thống và đánh giá, kiểm tra
− Học hỏi từ những thầy cô có nhiều kinh nghiệm trong lĩnh vực robot để có hướng làm việc, phát triển và giải quyết vấn đề nhanh và tốt nhất
− Dựa vào các đề tài nghiên cứu khoa học có trên sách, báo, tạp chí khoa học, từ đó nghiên cứu lý thuyết các giải thuật và phát triển đề tài
− Giải quyết từng module nhỏ sau đó ghép thành khối hoàn chỉnh
− Tính toán và chạy thử nghiệm để rút ra được phương án tối ưu nhất
− Thiết lập mô hình robot, chạy thử nghiệm ở điều kiện môi trường thực tế nhằm tìm ra được kết quả tốt nhất.
Nội dung đề tài
Nội dụng báo cáo bao gồm 6 chương:
Giới thiệu sơ lược về đề tài.
Chương 2 CƠ SỞ LÝ THUYẾT
Các kiến thức lí thuyết liên quan đề tài: Robot dịch vụ, cảm biến, bộ điều khiển PID, ROS (Robot Operation System)
Chương 3 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
Tính toán, thiết kế và xây dựnghệ thống cơ khí, tính toán động học.
Chương 4 THIẾT KẾ PHẦN MỀM
Trình bày hiệu chỉnh ảnh, nhận dạng, thiết lập, theo dõi đối tượng mục tiêu và điều hướng robot
Chương 5 KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ
Trình bày về kết quả thu được từ các thuật toán về điều khiển động cơ, thuật toán xử lý ảnh Đưa ra những nhận xét và đánh giá chung về kết quả đạt được
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trình bày các kết luận rút ra được từ đề tài sau khi hoàn thành đồ án và đưa ra hướng phát triển, ý tưởng cho đề tài trong tương lai.
Giới hạn đề tài
Sau đây là một số giới hạn đề tài trong quá trình thực hiện:
− Robot chạy chủ yếu trên địa hình bằng phẳng
− Đề tài không xét đến trường hợp giữa mục tiêu và các đối tượng có độ tương đồng quá cao (như: sinh đôi, quần áo, hình dáng giống hệt nhau)
− Không xét điều kiện môi trường ánh sáng quá kém (quá tối, quá chói)
− Chỉ xác định vị trí mục tiêu bằng phép ước lượng
− Khoảng cách tối thiểu để robot có thể nhận dạng được mục tiêu là 0.8m
− Tầm nhìn robot giới hạn từ -45 độ đến 45 độ
− Trong quá trình robot thiết lập mục tiêu theo dõi, chỉ cho phép một đối tượng giơ tay phải trong khung hình của robot.
CƠ SỞ LÝ THUYẾT
Giới thiệu về Mobile Robot
Mobile Robot là một loại robot di động được thiết kế để thực hiện các tác vụ tự động trong môi trường không cần sự can thiệp trực tiếp của con người Được trang bị các cảm biến và hệ thống điều khiển, Mobile Robot có khả năng di chuyển và tương tác với môi trường xung quanh một cách tự động và linh hoạt Với sự tiến bộ vượt bậc trong lĩnh vực công nghệ và trí tuệ nhân tạo, Mobile Robot đã trở thành một phần không thể thiếu trong nhiều ngành công nghiệp và ứng dụng khác nhau Trong công nghiệp sản xuất, Mobile Robot được sử dụng để thực hiện các công việc tự động hóa như vận chuyển hàng hóa, lắp ráp sản phẩm và kiểm tra chất lượng Chúng tăng năng suất và hiệu suất làm việc, đồng thời giảm nguy cơ tai nạn lao động và đảm bảo độ chính xác trong quy trình sản xuất
Mobile Robot cũng đã thể hiện tiềm năng lớn trong các lĩnh vực dịch vụ và cuộc sống hàng ngày Chúng có thể được sử dụng trong lĩnh vực y tế để vận chuyển vật liệu y tế, hỗ trợ trong quá trình chăm sóc bệnh nhân và thậm chí thực hiện các ca phẫu thuật tự động Trong lĩnh vực giao hàng và dịch vụ, Mobile Robot có thể tự động vận chuyển hàng hóa đến địa chỉ khách hàng, giúp tiết kiệm thời gian và tăng tính tiện lợi
Một ứng dụng khác của Mobile Robot là trong việc dọn dẹp nhà cửa Chúng có thể được lập trình để tự động quét sàn, hút bụi và lau chùi, giúp giảm gánh nặng công việc cho con người và tạo ra một môi trường sống sạch sẽ Ngoài ra, Mobile Robot còn có ứng dụng trong giáo dục và nghiên cứu Chúng được sử dụng để giảng dạy và trình bày các khái niệm khoa học và kỹ thuật một cách tương tác và thú vị Mobile Robot cũng là một công cụ quan trọng trong việc phát triển và thử nghiệm các thuật toán và công nghệ mới, từ trí tuệ nhân tạo đến học máy và thị giác máy tính
Tuy Mobile Robot mang lại nhiều lợi ích, nhưng cũng đối diện với một số thách thức Điều này bao gồm độ tin cậy của hệ thống, an toàn trong môi trường làm việc chung với con người và khả năng tương tác với con người một cách tự nhiên Các vấn đề này đang được nghiên cứu và phát triển để đảm bảo rằng Mobile Robot có thể hoạt động một cách an toàn, hiệu quả và hợp tác với con người trong tương lai
Tổng quan, Mobile Robot đóng vai trò quan trọng trong việc nâng cao hiệu suất, giảm rủi ro và tạo ra sự tiện lợi cho con người trong nhiều lĩnh vực khác nhau Với tiềm năng và sự phát triển liên tục, Mobile Robot hứa hẹn mang đến một tương lai đầy hứa hẹn với những ứng dụng và tiện ích vượt trội
2.1.2 Xu thế phát triển Mobile Robot hiện nay
Cùng với sự tiến bộ của công nghệ thông tin, đặc biệt là trí tuệ nhân tạo, robot hiện nay đã trở nên thông minh hơn Robot thông minh là một hệ thống máy được cải thiện về khả năng nhận thức, ra quyết định và thực thi nhiệm vụ một cách toàn diện hơn Chúng có thể ứng xử, có cảm xúc và suy nghĩ giống người Với một “bộ não” thông minh, robot có thể thực hiện theo chỉ dẫn của người vận hành, sau đó hoàn thành nhiều nhiệm vụ đã được lập trình trước, tự học và nâng cấp ứng xử của chúng trong lúc tương tác với con người Thực tiễn cho thấy, vai trò của robot thông minh trong cuộc sống xã hội và sản xuất sẽ ngày càng trở nên quan trọng
Công nghệ robot là một công nghệ phức tạp và tiên tiến liên quan đến đa lĩnh vực và liên ngành, bao gồm cơ khí - điện tử, điều khiển tự động, công nghệ cảm biến, công nghệ máy tính, vật liệu mới, công nghệ sinh học và trí thông minh nhân tạo (sẽ còn tiếp tục được tích hợp mở rộng) Nó được công nhận là một lĩnh vực công nghệ cao có ảnh hưởng quan trọng tới sự phát triển của những công nghệ đang nổi trong tương lai Như là một một nền tảng công nghệ quan trọng, nó không chỉ hỗ trợ chủđạo cho phát triển sản xuất tiên tiến, mà còn giúp mang tới cho cuộc sống nhiều biến đổi đột phá Ngày nay, robot không chỉ xuất hiện trong các hoạt động sản xuất, nhà máy, dây chuyền lắp ráp mà ngày càng gần gũi với con người; đặc biệt là các dạng robot dịch vụ như robot hút bụi, robot phục vụ trong nhà hàng, khách sạn, robot tư vấn, chỉ dẫn ở bệnh viện,…
2.1.3 Lịch sử phát triển của Mobile Robot [24]
Hình dạng robot đầu tiên xuất hiện ở Hoa Kỳ, là loại tay máy chép hình dùng trong phòng thí nghiệm vật liệu phóng xạ Vào những năm 50 của thế kỷ trước, bên cạnh các tay máy chép hình cơ khí, các loại tay máy chép hình thủy lực điện từ đã xuất hiện Tuy nhiên, các tay máy thương mại đều có chung nhược điểm là thiếu sự di động Các tay máy cố định chỉ hoạt động trong một không gian bị giới hạn quanh vị trí của nó
Ngược lại, Mobile Robot là loại robot di động có thể di chuyển từ không gian này tới không gian khác một cách độc lập hay có điều khiển từ xa, do đó tọa nên không gian hoạt động rất lớn
− Từ năm 1939 đến năm 1945: trong cuộc chiến tranh thế giới lần thứ II, những robot di động đầu tiên được xuất hiện Nó là kết quả của những thành tựu công nghệ trong những lĩnh vực nghiên cứu mới có liên quan như khoa học máy tính và điều khiển học, hầy hết chúng là những quả bom bay, ví dụ những quả bom chỉ nổ trong những dãy mục tiêu nhất định,…sử dụng hệ thống hướng dẫn và radar điều khiển Tên lửa V1 và V2 có ”phi công tự động” và hệ thống phát nổ, chúng là tiền thân của đầu đạn hạt nhân tự điều khiển hiện đại
− Từ năm 1948 đến năm 1949: W.Gray Walter tạo nên Elmer và Elsie Hai robot tự động trông giống con đồi mồi Về mặt hành chính, chúng được gọi là Machina Speculatrix bởi vì những robot này hoạt động trong môi trường như những chú chim đồi mồi Elmer và Elsie được trang bị một bộ cảm biến sáng Nếu chúng nhận ra một nguồn sáng, chúng sẽ di chuyển về phía đó Chúng có thể tránh hoặc chuyển những chướng ngại vật trên đường đi của chúng Những robot này chứng minh rằng những cử chỉ phức tạp có thể phát sinh từ một thiết kế đơn giản Elmer và Elsie chỉ được thiết kế tương đương hai tế bào thần kinh
Hình 2.1 Robot Machina Speculatrix bởi W.Gray Walter
− Từ năm 1961 đến năm 1963: trường Đại học Johns Hopkins phát triển “Beast”
Beast sử dụng hệ thống định vị chuyển động xung quanh Khi pin yếu, nó sẽ tự tìm ổ cắm điện và cắm vào
Hình 2.2 Robot Beast do Trường Đại học John Hopkins phát triển
− Từ năm 1969 đến năm 1970: Mowbot là robot đầu tiên cắt cả bãi có một cách tự động The Stanford Cart line follower là robot di động có thể di chuyển thông qua nhận dạng đường kẻ trắng, sử dụng một camera để nhìn Nó bao gồm một cảm biến gắn với hệ thống máy tính lớn để tạo ra những tính toán Cùng thời điểm 1969-1972, Viện nghiên cứu Stanford đang xây dựng và nghiên cứu ra Shakey Shakey là một camera, một dãy kính ngắm, một bộ cảm biến, một bộ phần truyền thanh Shakey là robot đầu tiên có thể lý giải về những chuyển động của nó Điều này có nghĩa là Shakey có thể đưa cho nhiều lệnh chung và robot này sẽ tính toán những bước cần thiết để hoàn thành nhiệm vụ được giao
Hình 2.3 Robot Stanford Cart line follower
− Năm 1977: bộ phim “Chiến tranh giữa các vì sao” phần I, A New Hope mô tả
R2D2 (một robot di động hoạt động độc lập) và C3P0 (một robot hình người) Họ đã khiến công chúng biết đến những robot
− Năm 1980: thị hiếu của người tiêu dùng về robot tăng, robot được bày bán để sử dụng trong nhà Ví dụ, robot RB5X vẫn tồn tại tới ngày nay và một loạt mẫu robot HERO Robot The Stanford Cart được phát triển mạnh, nó thể lái tàu biển vượt qua những trở ngại và tạo nên bản đồ những nơi nó đã đi qua
− Năm 1990: cha để của nền robot công nghiệp Joseph Engelberger làm việc với các đồng nghiệp và đã phát minh ra những robot tự động trong ngành y tế và được bán bởi Helpmate Sở an ninh Mỹ gây quỹ cho dự án MDARS-I dựa vào robot bảo vệ trong nhà Cybermotion
− Năm 1993-1994: Dante-I và Dante-II được phát triển bởi Trường Đại học
Carnegie Mllon, cả hai là robot dùng để thám hiểm núi lửa đang hoạt động
− Năm 1995: Robot di động có thể lập trình Pioneer (người tiên phong) được bán sẵn ở một mức giá chấp nhận được, điều đó dẫn tới sự gia tăng rộng rãi về nghiên cứu robot và các trường đại học nghiên cứu về robot trong suốt các thập kỉ sau Robot di động trở thành một phần không thể thiếu trọng chương trình giảng dạy của các trường đại học
− Năm 1996-1997: NASA phóng con tàu Mars Pathfinder có 2 robot là Rover và
Hình 2.8 Robot Rover và Sojourner
− Năm 1999: Sony giới thiệu Aibo, một robot có khả năng đi lại, quan sát… Robot điều khiển từ xa dùng cho quân sự PackBot cũng được giới thiệu
Giới thiệu về robot dịch vụ
2.2.1 Cơ cấu di động phổ biến trong robot dịch vụ
Robot dịch vụ với cơ cấu di động thường có cấu hình của robot di động trên bánh xe (cơ cấu hai bánh vi sai) do thuận lợi trong việc điều khiển Với cơ cấu này, robot dễ dàng di chuyển trên nền gạch phẳng trong nhà như nhà hàng, khách sạn, siêu thị Turtle Bot là loại robot phổ biến với cấu hình này
TurtleBot là một robot nền tảng ROS (Robot Operation System) tiêu chuẩn Turtle có nguồn gốc từ Robot Turtle, được điều khiển bởi ngôn ngữ lập trình máy tính giáo dục Logo vào năm 1967 Kể từ đó TurtleBot đã trở thành nền tảng tiêu chuẩn của ROS, nền tảng phổ biến nhất giữa các nhà phát triển và sinh viên TurtleBot được thiết kế để dễ dàng dạy những người mới làm quen với ROS thông qua TurtleBot
Hình 2.13 Cấu hình Turte Bot
Với cơ cấu truyền động vi sai hai bánh xe, việc điều khiển robot như sau:
− Điều khiển robot chạy thẳng: điều khiển hai động cơ cùng tốc độ
− Điều khiển robot quay quanh tâm trục: điều khiển hai động cơ quay ngược chiều, cùng tốc độ
− Điều khiển robot di chuyển một cung tròn: điều khiển hai động cơ khác tốc độ
Cơ cấu đơn giản nhất như:
Hình 2.14 Minh hoạ cơ cấu truyền động hai bánh vi sai
2.2.2 Công nghệ được sử dụng trong robot dịch vụ
Hình 2.15 Các thành phần phổ biến của robot dịch vụ về công nghệ có sẵn
Hệ thống công nghệ của robot dịch vụ phải giải quyết môi trường không được kiểm soát và lựa chọn sự kết hợp thông minh của các cảm biến trong nỗ lực tích hợp để hoàn thành nhiệm vụ robot được yêu cầu nhằm đảm bảo tích hợp sâu với con người Bên dưới là ba thành phần chính của robot: các lớp phần mềm, ngữ cảnh hóa và giao diện người - robot Các lớp phần mềm chịu trách nhiệm chính trong việc tích hợp thiết bị Robot, kết nối và thiết lập hệ thống giao tiếp tiêu chuẩn cho mọi thành phần Trí tuệ nhân tạo là một thành phần quan trọng của các hệ thống robot này; các công cụ như TensorFlow hoặc PyTorch thực thi các thuật toán học máy và các tác vụ liên quan Hệ thống robot cần biết chúng đang ở đâu và phản ứng thích hợp dựa trên vị trí của chúng, nghĩa là nhận thức được bối cảnh không gian của môi trường Chức năng này đạt được thông qua nội địa hóa và cảm biến Cuối cùng, một số giao diện người - robot thực hiện tích hợp của nó với quy trình làm việc của con người nói chung Trang web, nhận dạng giọng nói, màn hình cảm ứng hoặc thậm chí các ứng dụng trên thiết bị di động đều bật các giao diện này
Tuỳ vào ứng dụng cụ thể mà các công nghệ được sử dụng phù hợp trong các robot dịch vụ Trong đề tài, nhóm tác giả sử dụng camera để đáp ứng được mục tiêu là xác định được đâu là người, hướng phát triển sau xa hơn nữa là khả năng phân biệt được nhiều người, để robot chỉ bám theo người được phát hiện đầu tiên
2.2.3 Cơ cấu chuyển động của bánh xe Mobile Robot [24] Để có cơ sở thiết kế theo mục tiêu của luận văn chúng ta cần có cơ sở lý thuyết cơ bản sau:
Bánh xe là cơ cấu chuyển động được sử dụng rộng rãi nhất trong công nghệ robot tự hành, vấn đề cân bằng thường không phải là vấn đề được chú ý nhiều trong robot di chuyển bằng bánh Ba bánh là kết cấu có khả năng duy trì cân bằng nhất, tuy nhiên kết cấu 2 bánh cũng có thể cân bằng đuợc Khi robot có số bánh nhiều hơn 3 thì thông thuờng người ta phải thiết kế hệ thống treo để duy trì sự tiếp xúc của tất cả các bánh xe với mặt đất vấn đề của robot loại di chuyển bằng bánh là lực kéo, độ ổn định và khả năng điều khiển chuyển động,…
Các loại bánh xe cơ bản dùng cho robot tự hành
− Bánh xe tiêu chuẩn: 2 bậc tự do, có thể quay quanh trục bánh xe và điểm tiếp xúc
− Bánh lái: 2 bậc tự do, có thể quay xung quanh khóp lái
− Bánh Swedish: 3 bậc tự do, có thể quay đông thời xung quanh trục bánh xe, trục lăn và điểm tiếp xúc
Hình 2.16 Các loại bánh xe cơ bản dùng cho robot tự hành
Sơ đồ sắp xếp bánh xe của robot tự hành 2 bánh, 3 bánh, 4 bánh và 6 bánh được liệt kê trong bảng dưới đây:
Bảng 2.1 Sơ đồ các dạng bánh xe của Mobile Robot
STT Sắp xếp Mô tả
1 Hai bánh truyền động với trọng tâm ở bên dưới trục bánh xe
2 Hai bánh truyền động ở giữa và có điểm thứ ba tiếp xúc
3 Hai bánh truyền động độc lập ở phía sau và một bánh lái ở phía trước
4 Hai bánh truyền động được nối với trục ở phía sau, một bánh lái ở phía trước
Hai bánh truyền động được nối với trục ở phía giữa thân, một bánh lái ở phía trước và một bánh lái ở phía sau
(đây là hình thức bố trí bánh xe mà nhóm lựa chọn)
Ba bánh Swedisk được đặt ở các đỉnh của một tam giác đều, kết cấu này cho phép robot di chuyển theo đa hướng
7 Hai bánh chủ động ở phía sau, hai bánh lái ở phía trước
9 Bốn bánh vừa là truyền động vừa là bánh lái
Bảng 2.2 Ký hiệu các loại bánh xe sử dụng trong các mô hình
Bánh đa hướng không truyền động
Bánh truyền động Swedish (đa hướng)
Bánh quay tự do tiêu chuẩn
Bánh truyền động tiêu chuẩn
Bánh vừa truyền động vừa là bánh lái
Xử lý dữ liệu từ cảm biến – Xử lý ảnh
2.3.1 Khái niệm và quá trình xử lý ảnh
Xử lý ảnh là quá trình chụp ảnh, phân tích nhận dạng ảnh và đưa ra các tín hiệu điều kiện hợp lý Quá trình xử lý ảnh bao gồm:
Hình 2.17 Sơ đồ khối mô tả quá trình xử lý ảnh
− Kết nối Camera với máy tính, cũng có thể sử dụng một Webcam
− Sử dụng các chương trình sẵn có để thực hiện công việc chụp và lưu ảnh
Quá trình tiền xử lý dữ liệu ảnh:
Trước khi áp dụng các chức năng của thị giác ảnh, chúng ta cần xử lý ảnh để đảm bảo rằng ảnh sẽ thoả mãn một vài giả thiết nào đó Ví dụ như sau:
− Lấy mẫu lại để đảm bảo hệ thống toạ độ là đúng Nếu 2 ảnh lấy liên tiếp nhau có sự sai khác quá nhiều thì chúng ta có thể loại bỏ ảnh đó vì tư thế của robot lúc chụp không được ổn định
− Loại bỏ nhiễu để giảm thiểu khả năng xuất hiện các thông tin sai
− Tăng độ tương phản để đảm bảo sẽ xác định được các thông tin cần thiết
Phân tích hình ảnh (xác định đường, góc, cạnh, khối,…): Đặc trưng của ảnh ở những mức phức tạp khác nhau sẽ được trích xuất từ ảnh, như là các đường, cạnh, góc
Việc trích xuất các đặc trưng này từ ảnh giúp chúng ta hiểu và mô tả các đặc điểm quan trọng của ảnh, cung cấp thông tin cần thiết cho các bước xử lý và phân tích tiếp theo
Tại một vài điểm ảnh chúng ta chọn ra một tập các điểm ảnh hoặc các vùng ảnh phù hợp với các thao tác xử lý Ví dụ:
− Chọn các điểm ảnh có màu trùng với màu của mục tiêu
− Phân ra các vùng ảnh có khả năng chứa mục tiêu
− Phân ngưỡng và định vị các vật cản có thể có
Xử lý nâng cao: Đến bước này thì dữ liệu đầu vào chỉ là một phần của dữ liệu ban đầu, đó có thể là tập các điểm ảnh hoặc một vùng ảnh có khả năng chứa một đối tượng đặc biệt nào đó Quá trình xử lý sẽ qua các bước sau:
− Thẩm định lại dữ liệu có phù hợp với các yêu cầu cơ bản và đặc biệt
− Ước lượng các tham số đặc biệt
− Phân lớp đối tượng xác định được
IoU (Intersection of Union) là tỷ lệ giữa diện tích phần giao (Area of Overlap) và phần hợp (Area of Union) của predicted bounding box và ground truth Trong một bài toán sẽ chọn ra một ngưỡng IoU nhất định
Hình 2.18 Mô tả công thức IoU
Precision là độ chính xác của phần dự đoán đúng so với tất cả dự đoán
Recall được hiểu là số bounding box dự đoán đúng so với tất cả bounding box đúng
Hình 2.19 Mô tả công thức Precision và Recall
− True Positive (TP) là phần dự đoán chính xác bounding box đó thuộc đúng lớp Nếu IoU của bounding box đó lớn hơn ngưỡng sẽ là TP
− False Positive (FP) là phần dự đoán đúng lớp đó nhưng IoU nhỏ hơn ngưỡng
− False Negative (FN) là ở vị trí đó có ground truth bounding box của một đối tượng nhưng mô hình đã không dự đoán
Khi một mô hình có Recall lớn nhưng Precision nhỏ, mô hình đó phát hiện đúng hầu hết vị trí bounding box của đối tượng nhưng có nhiều bounding box phát hiện sai vị trí
Ngược lại, khi mô hình có Precision lớn nhưng Recall nhỏ, mô hình đó chính xác khi phân loại một bounding box của một đối tượng nhưng có số bounding box phát hiện được ít hơn
Average Precision (AP) là độ chính xác trung bình của mỗi nhãn trong một mô hình được lấy làm số liệu đánh giá phổ biến cho các mô hình bài toán object detection Tiến hành tính AP bằng phương pháp nội suy 11 điểm:
Phương pháp nội suy 11 điểm là lấy các giá trị precision trung bình ở 11 điểm recall r (0.1, 0.2, 0.3, … 1) Giá trị precision ở đây được tính theo công thức: [9]
Trong đó: P’ là giá trị precision nội suy r là giá trị recall level trong khoảng [0:1] r’ là giá trị recall được tính theo công thức ở Hình 2.19 Để tính P’ tại recall level thứ r, ta duyệt tất cả các detection mà giá trị r’ của nó lớn hơn r, sau đó lấy giá trị precision lớn nhất của các detection đó Giá trị AP sẽ được tính theo công thức: [9]
Mean Average Precision (mAP) là giá trị trung bình của các giá trị AP của tất cả các nhãn khác nhau trong một mô hình Object Detection
2.3.3 Giới thiệu về thị giác máy tính 2D
Thị giác máy (Computer Vision) là một lĩnh vực trong Trí tuệ nhân tạo (Artificial Intelligence) và Khoa học máy tính (Computer Science)
Thị giác máy tính giúp máy tính thu nhận hình ảnh, xử lý và phân tích hình ảnh tương tự như các cơ chế hoạt động của thị giác con người (quan sát bằng mắt, xử lý qua hệ thần kinh thị giác và cuối cùng là phân tí
Hình 2.20 Hệ thống thị giác của con người và hệ thống thị giác của máy tính
Giới thiệu về ảnh 2D Đầu tiên cần phải tìm hiểu về hệ màu RGB RGB viết tắt là Red (đỏ), Green (xanh lục), Blue (xanh lam), là ba màu chính của ánh sáng khi tách ra từ lăng kính Khi trộn ba màu trên theo tỉ lệ nhất định có thể tạo thành các màu khác nhau
Hình 2.21 Cách phối màu từ ba màu cơ bản
Khi chọn một màu thì sẽ ra một bộ ba số tương ứng (R, G, B) Với mỗi bộ 3 số
R, G, B nguyên trong khoảng [0, 255] sẽ cho ra một màu khác nhau
Pixel (hay điểm ảnh) là một khối màu rất nhỏ và là đơn vị cơ bản nhất để tạo nên một bức ảnh kỹ thuật số 2D Ảnh màu là một ma trận các pixel mà mỗi pixel biểu diễn một điểm màu Mỗi điểm màu được biểu diễn bằng bộ 3 số (R, G, B) Để tiện lưu trữ và xử lý sẽ tách mỗi giá trị màu trong mỗi pixel ra một ma trận riêng Mỗi ma trận được tách ra được gọi là một channel (kênh màu) nên ảnh màu được gọi là ảnh có ba kênh: kênh đỏ, kênh xanh lá, kênh xanh nước, kênh xanh lam [4]
Tương tự ảnh màu, ảnh xám cũng là một ma trận các pixel, tuy nhiên mỗi pixel trong ảnh xám chỉ cần biểu diến bằng một giá trị nguyên trong khoảng từ [0, 255] thay vì (R, G, B) như trong ảnh màu Giá trị 0 là màu đen, 255 là màu trắng và giá trị pixel càng gần 0 thì càng tối và càng gần 255 thì càng sáng
Một số phương pháp Deep Learning phát hiện người:
Tính toán động học
2.4.1 Động học thuận robot di động hai bánh vi sai
Hình 2.25 Robot trong hệ trục tọa độ
Hình minh họa cho thấy hệ động học truyền động vi sai của Mobile Robot Các biến thể hiện bằng ký hiệu được giải thích dưới Bảng 2.3 như sau:
Bảng 2.3 Giải thích các ký hiệu của hệ thống truyền động vi sai robot
Kí hiệu Giải thích x, y Hệ tọa độ toàn cục x B , y B Hệ tọa độ cục bộ
Hướng của robot đối với hệ tọa độ toàn cục
L Chiều rộng của robot r Bán kính của bánh xe d Khoảng cách từ ICC đến tâm của robot
ICC Tâm quay tức thời v L Tốc độ tiếp xúc mặt đất của bánh xe trái v R Tốc độ tiếp xúc mặt đất của bánh xe phải
L Vận tốc góc bánh trái
R Vận tốc góc bánh phải
Hệ trục tọa độ không gian thực là x w , y w và hệ tọa độ robot là x y r , r
Vận tốc tại điểm B trên tọa độ tọa robot sang hệ tọa độ không gian thực: cos sin sin cos w r u
Hệ động học chung của robot 2 bánh vi sai:
Khi robot không đi ngang:
Suy ra hệ động học của robot:
Giả định bánh xe không trượt, tất cả các điểm trong một trường quay có vận tốc trực giao với khoảng cách tới ICC, ta có thể thu được vận tốc hai bánh xe:
Giải quyết hai phép tính trên sẽ cho ra kết quả của và R:
Dựa vào vận tốc góc, vận tốc tức thời V B của điểm giữa hai bánh robot được tính theo công thức:
Mà vận tốc bánh trái v L và vận tốc bánh phải v R còn có thể được tính như sau:
Thay công thức (2.13) và (2.14) vào (2.11) ta tính được hệ động học robot: cos 0 1 1 sin 0 2 2
2.4.2 Động nghịch robot di động hai bánh vi sai
Trong tình huống vận tốc V và vận tốc góc được đưa ra làm dữ liệu đầu vào, và vận tốc góc của bánh bên trái L , bánh bên phải R được dùng để điều khiển thì ta cần biến đổi công thức (2.14) và (2.15) thay vào công thức (2.12) Từ đó, đạt được:
Từ kết quả vận tốc góc R và L , ta tính được số vòng quay của từng động cơ:
Bộ điều khiển vi tích phân tỉ lệ (PID)
Bộ điều khiển PID (Proportional Integral Derivative) được gọi với tên đầy đủ là bộ điều khiển vi tích phân tỷ lệ, là một cơ chế điều khiển có phản hồi (điều khiển vòng kín) được sử dụng rộng rãi trong các hệ thống điều khiển công nghiệp Điều khiển PID chỉ áp dụng cho hệ SISO (hệ một ngõ vào, một ngõ ra)
Trong các lĩnh vực điều khiển mà ở đó ta cần điều khiển đầu ra theo mong muốn hoặc cần sự ổn định, chúng ta cần một thuật toán điều khiển ví dụ như điều khiển động cơ, nhiệt độ, áp suất, tốc độ hay các biến khác trong các ứng dụng khác nhau
Thuật toán PID là một trong những thuật toán phổ biến được giới thiệu để giải quyết các bài toán về điều khiển Lợi thế lớn nhất của bộ điều khiển này là không bắt buộc phải biết về động lực học của hệ mà dựa trên cách tiếp cận thử sai của bộ điều khiển Phương pháp này xác định sai số giữa giá trị mong muốn và giá trị thực tế bằng công thức
Với Error là độ lệch giữa giá trị mong muốn Setpoint và giá trị thực tế Feedback
Hình 2.26 Sơ đồ khối của bộ điều khiển PID
− Setpoint là giá trị đầu vào mong muốn
− Output là đại lượng vật lý cần điều khiển
− Error là sai số giữa giá trị ở ngõ ra được phản hồi về và giá trị đặt
− u(t) là đầu ra sau khi đi qua bộ điều khiển
Luật điều khiển PID sẽ được định nghĩa như sau: t
Hoặc có thể viết lại như sau: t
Trong quá trình điều khiển tốc độ cho động cơ, nhóm quyết định chỉ sử dụng bộ điều khiển PI thay vì bộ điều khiển PID là do không muốn gây ra các dao động không mong muốn cũng như gây ra nhiễu điều đó sẽ khiến tốc độ khi di chuyển không được mượt mà Vậy bộ điều khiển PID sau khi được đổi lại thành bộ điều khiển PI thì được trình bày lại như sau: t
Trong đó: K P là hệ số khuếch đại (Proportional gain), K i là hệ số tích phân (Integral gain)
Các tác động của các hệ số trong quá trình hiệu chỉnh bộ điều khiển PID:
− Khâu tỉ lệ: Khi K P càng nhỏ thì sai số xác lập lớn, khi tăng K P lên thì sai số xác lập càng nhỏ Nếu hệ thống chưa vọt lố thì thời gian xác lập nhanh Còn khi đã có vọt lố thì thời gian xác lập rất lâu Và khi K P quá lớn hệ thống sẽ mất ổn định
− Khâu tích phân: Khi tăng K i thì e xl sẽ giảm dần về 0 nhưng t xl sẽ càng tăng và nếu càng tăng K i thì độ vọt lố cũng tăng dần Và nếu K I tăng quá nhiều thì hệ sẽ mất ổn định
Tham khảo PID rời rạc trong [13] từ trang 294-296, ta tiến hành thiết kế bộ điều khiển PI trong chương trình của nhóm như sau:
Output = Pre_Out + P_part + I_part
Vài ứng dụng có thể yêu cầu chỉ sử dụng một hoặc hai khâu tùy theo hệ thống Điều này đạt được bằng cách thiết đặt độ lợi của các đầu ra không mong muốn về 0 Một bộ điều khiển PID sẽ được gọi là bộ điều khiển PI, PD, P hoặc I nếu vắng mặt các tác động bị khuyết Bộ điều khiển PI khá phổ biến, do đáp ứng vi phân khá nhạy đối với các nhiễu đo lường, trái lại nếu thiếu giá trị tích phân có thể khiến hệ thống không đạt được giá trị mong muốn.
Bộ lọc thông thấp (Low-pass Filter)
2.6.1 Giới thiệu bộ lọc thông thấp
Bộ lọc thông thấp là một thành phần hoặc mạch điện tử cơ bản được thiết kế để cho phép truyền tín hiệu tần số thấp trong khi làm suy giảm hoặc chặn các thành phần tần số cao hơn Bộ lọc cho phép các tần số thấp hơn đi qua một cách có chọn lọc trong khi giảm hoặc loại bỏ các tần số cao hơn Loại bộ lọc này được sử dụng rộng rãi trong các ứng dụng khác nhau, bao gồm hệ thống âm thanh, viễn thông, xử lý hình ảnh và hệ thống điều khiển Trong các hệ thống âm thanh, bộ lọc thông thấp được sử dụng để loại bỏ tiếng ồn tần số cao, giúp tái tạo âm thanh rõ hơn Chúng cũng được sử dụng để kiểm soát băng thông của tín hiệu trong viễn thông, đảm bảo truyền và nhận thông tin hiệu quả Trong xử lý hình ảnh, bộ lọc thông thấp giúp làm mịn hình ảnh và giảm nhiễu tần số cao, giúp cải thiện chất lượng và độ rõ nét Ngoài ra, các bộ lọc thông thấp đóng một vai trò quan trọng trong các hệ thống điều khiển bằng cách loại bỏ các nhiễu tần số cao có thể ảnh hưởng đến sự ổn định và hiệu suất của hệ thống Nhìn chung, bộ lọc thông thấp là một công cụ không thể thiếu trong điện tử và xử lý tín hiệu, giúp chúng ta có thể thao tác và tối ưu hóa tín hiệu theo yêu cầu cụ thể
2.6.2 Phương trình sai phân bộ lọc thông thấp
Cách phổ biến nhất để mô tả đáp ứng tần số của mạch là tìm hàm truyền biến đổi
H s = V s Lấy phép biến đổi Laplace của phương trình vi phân của chúng ta và giải cho H s( ) ta có:
Do hệ robot là hệ rời rạc nên hàm truyền phải chuyển từ miền (s) sang miền (z):
− Biến đổi song tuyến tính: 2 1 1 1
Vì vậy, hàm truyền rời rạc là:
Nhân phân phối tử số:
Chia cả tử và mẫu cho (t 0 +2)z:
Phương trình chênh lệch hệ số không đổi
Từ công thức (2.26) và (2.27) ta có:
Bộ điều khiển vi tích phân tỉ lệ sau khi thêm bộ lọc thông thấp được thể hiện qua Hình 2.27 dưới đây:
Hình 2.27 Bộ điều khiển PID sau khi thêm bộ lọc thông thấp
Hệ điều hành robot (ROS)
2.7.1 Giới thiệu về hệ điều hành robot (ROS)
Robot Operation System (ROS) là hệ điều hành robot cung cấp các thư viện và các công cụ để giúp các nhà phát triển phần mềm tạo ra các ứng dụng cho robot Nó không chỉ cung cấp các dịch vụ hệ điều hành tiêu chuẩn (trừu tượng hóa phần cứng, quản lý tranh chấp, quản lý quy trình) mà còn cung cấp các chức năng cấp cao (cơ sở dữ liệu tập trung, hệ thống cấu hình robot,…) ROS là gói công cụ được cài đặt trên
Ubuntu Như tên đầy đủ, ROS là một hệ điều hành dành cho robot Tương tự như hệ điều hành cho máy tính, ROS là một hệ điều hành đầy đủ cho robot dịch vụ Nó là một bộ thư viện phần mềm mã nguồn mở miễn phí giúp người dùng phát triển các ứng dụng robot Trước năm 2007, năm phát hành ROS, các kỹ sư robot không có kiến trúc phần mềm nhúng tiêu chuẩn Đó là lý do tại sao ROS là một bước tiến lớn ROS được phát triển và duy trì bởi một công ty ở California, Willow Garage, được thành lập vào năm
2006 bởi Scott Hassan, một trong những nhân viên đầu tiên của Google [14]
Hình 2.28 bên dưới mô tả hoạt động của ROS gồm các phần chính là các tệp tin được bố trí từ trên xuống theo thứ tự hoạt động như sau: Metapackages, Packages, Packages manifest, Misc, Messages, Services và Codes
2.7.2 Lợi ích của ROS cho robot
Các nhà nghiên cứu hoặc kỹ sư sử dụng ROS không còn dành thời gian để tạo ra một hệ sinh thái mới cho mỗi dự án robot mới Điều này cũng thể hiện một khoản lợi nhuận tài chính Một lợi ích khác của hệ điều hành robot như ROS là kết hợp chuyên môn từ các lĩnh vực khác nhau Trên thực tế, thiết kế và lập trình một robot có nghĩa là:
− Quản lý phần cứng bằng cách viết trình điều khiển
− Quản lý bộ nhớ và các quy trình
− Quản lý đồng thời, song song và hợp nhất dữ liệu
− Cung cấp các thuật toán suy luận trừu tượng, tận dụng trí tuệ nhân tạo một cách hiệu quả
− Cung cấp cho người dùng những công cụ hữu ích để phát triển phần mềm và có cộng đồng user rất lớn mạnh
− ROS có thể được dùng bất cứ ứng dụng nào (từ đơn giản tới phức tạp) cần phải giao tiếp với hoặc điều khiển các sensor (cảm biến) hay actuator (thiết bị truyền động)
Do đó, chế tạo robot đòi hỏi những bộ kỹ năng rất khác nhau, thường nằm ngoài phạm vi của một cá nhân ROS hạ thấp mức độ kỹ thuật cần thiết để làm việc trong các dự án robot Điều này có thể giúp nhiều công ty dễ dàng bắt đầu công việc chế tạo người máy hoặc thiết kế các hệ thống phức tạp nhanh chóng hơn
2.7.3 Các khái niệm cơ bản trong ROS
Hình 2.29 Cấu trúc chương trình ROS
Packages: là khái niệm rất quan trọng, chúng ta có thể nói rằng các gói chính là các nguyên tử cơ bản nhất tạo nên ROS Trong một gói gồm có: ROS node, datasets, configuration files, source files, tất cả được gói lại vào trong một “gói” Tuy nhiên mặc dù có nhiều thành phần, nhưng để làm việc, ta chỉ cần quan tâm đến 2 thành phần, đó là src folder, chứa source code của chúng ta, và file CmakeLists.txt, đây là nơi ta khai báo những thư viện cần thiết để thực thi chương trình (compile code)
Node: Trong ROS, một node là một thể hiện của một tệp thực thi Một node có thể tương đương với cảm biến, động cơ, thuật toán xử lý hoặc giám sát,… Mọi node bắt đầu chạy đều khai báo chính nó với Master Nhờ hệ thống node, các chức năng cơ bản có thể được chuẩn hóa, và các khối xây dựng công nghệ có thể được phát triển nhanh chóng và dễ dàng tái sử dụng, sửa đổi hoặc cải tiến
Master: là một dịch vụ khai báo và đăng ký node, giúp các node có thể tìm thấy nhau và trao đổi dữ liệu
Topic: là một hệ thống truyền tải dữ liệu dựa trên một hệ thống đăng ký hoặc xuất bản Một hoặc nhiều nút có thể xuất bản dữ liệu cho một chủ đề và một hoặc nhiều nút có thể đọc dữ liệu về chủ đề đó Tức một node có thể xuất bản hoặc đăng kí nhiều chủ đề khác nhau
Message: Các node giao tiếp với nhau thông qua Message Một Message đơn giản là một cấu trúc dữ liệu, bao gồm các kiểu dữ liệu như integer, float, boolean,… Message có thể bao gồm các kiểu cấu trúc và mảng lồng nhau (giống kiểu struct trong C) Chúng ta cũng có thể tự phát triển kiểu message dựa trên các Message chuẩn
Subcriber: là bên nhận dữ liệu, một subciber có thể nhận dữ liệu với nhiều topic khác nhau
Publisher: là bên gửi dữ liệu, một publisher có thể gửi với nhiều topic khác nhau
Roscore: là một dịch vụ cung cấp thông tin kết nối đến các node để chúng có thể truyền thông điệp cho nhau Mỗi node kết nối với roscore khi khởi động để đăng ký thông tin chi tiết về luồng thông báo mà nó xuất bản và các luồng mà nó muốn đăng ký Khi một node mới xuất hiện, roscore cung cấp cho nó thông tin cần thiết để tạo kết nối ngang hàng trực tiếp với các node khác xuất bản và đăng ký các chủ đề thông báo tương tự Mọi hệ thống ROS đều cần một roscore, vì không có nó, các nút không thể tìm thấy các nút khác
Cấu trúc giao tiếp của ROS được phát triển thông qua các node, các node được đóng gói trong các packages khác nhau theo từng nhiệm vụ Hoạt động giao tiếp giữa các node dưới dạng Topic, Messages, Service được minh họa như trong Hình 2.29.
Lựa chọn mô hình trích xuất đặc trưng
Việc nhận dạng lại người thông qua kết nối camera để theo dõi và giám sát, với một số đặc trưng, chẳng hạn như màu sắc quần áo, dáng đi, chiều cao và khung xương… đã được đề cập rất nhiều trong các bài báo trước đây Trong trường hợp của Mobile Robot, đặc trưng tiêu chuẩn nhất để nhận dạng lại người là hình thức bên ngoài Tuy nhiên, các hầu hết các phương pháp truyền thống cho Mobile Robot đều sử dụng các đặc điểm ngoại hình cơ bản, chẳng hạn như Haar-like features, Local Binary Patterns (LBP), edge features trên màu sắc và độ sâu của hình ảnh Chúng không phải là các đặc trưng dành riêng cho việc nhận dạng lại người và có thể không phân biệt được giữa những người mặc quần áo giống nhau
Gần đây, Deep Neural Networks đã được ứng dụng thành công trong việc nhận dạng lại người và phương pháp Convolutional Neural Network (CNN) thì cho ra kết quả vượt trội so với các phương pháp truyền thống khác
Thuật toán CNN được cấu thành từ các giai đoạn như Hình 2.30:
Hình 2.30 Tổng quan về cấu trúc của thuật toán CNN
Hình 2.31 Quá trình tích chập mạng 2 chiều
Hình 2.31 được giải thích cụ thể như sau:
(a): Thể hiện giá trị hình ảnh đầu vào, với mỗi một ô tượng trưng cho một pixel
(b): Có kích thước là hình vuông MxM (với M chỉ có thể số lẻ 3,5,7,…Lý do là vì khi chọn kích thước lớp kernel là số lẻ, chúng ta có một ý tưởng rằng điểm trung tâm của kernel nên nằm trực tiếp trên một pixel của ảnh Khi đó, kernel sẽ có thể tạo ra một đầu ra chính xác tại vị trí đó, bởi vì điểm trung tâm của kernel sẽ trùng với vị trí của đối tượng hoặc đặc trưng quan trọng mà chúng ta muốn tìm kiếm nhằm đảm bảo tính chính xác và hiệu quả của quá trình tích chập) được dùng trong thuật toán Convolution có tên gọi là Kernel Kích thước của lớp Kernel do người dùng tùy chỉnh dựa vào độ chính xác sau khi Train Giá trị pixel trong lớp Kernel là con số được chọn qua thực nghiệm, những số trong một bộ số đó có công dụng là khi chập vô ảnh đầu vào sẽ cho ra các giá trị trong
(a) (b) (c) hình kết quả nhằm xác định những đường biên, đường viền của các bộ phận của ảnh đầu vào Những giá trị có có thể chọn bằng cách tìm kiếm những bộ thông số đã được cung cấp sẳn thông qua kinh nghiệm tuy nhiên trong quá trình thiết kế và làm phần này trước đó người ta đều chọn ngẫu nhiên thông số cho lớp Kernel nhưng vẫn có tỷ lệ đạt được hiểu quả tương tự
Vậy Convolution là lấy lớp Kernel chập vào tấm hình đầu vào để có được giá trị đầu ra sau khi chập Dùng ví dụ ở hình trên để giải thích thì cụ thể như sau: Lấy lớp Kernel 3x3 chập vào các giá trị pixel đầu tiên của ảnh đầu vào tương ứng sẽ cho ra kết quả đầu tiên của tấm hình đầu ra bằng cách lấy từng giá trị pixel ở ảnh đầu vào nhân với từng giá trị pixel ở lớp Kernel sau cùng lấy tất cả các giá trị đã tính trước đó cộng lại để được một giá trị duy nhất
(c): Kết quả và vì phép tích chập đầu tiên được bắt đầu từ góc trái trên nên giá trị đầu tiên sẽ được đặt ở góc trên cùng bên trái
Sau khi có được giá trị đầu tiên cho hình kết quả thì công việc tiếp theo là lặp lại các bước trên để tính ra giá trị tiếp theo cho hình kết quả bằng cách dời lớp Kernel sang một cột tiếp theo của ảnh đầu vào để tính tổng các tích số tương ứng tiếp theo Cứ lặp cho công việc cho đến hết lớp Kernel không thể dời sang cột tiếp theo của ảnh đầu vào được nữa thì ta bắt đầu dời xuống 1 hàng và tiếp tục bắt đầu lại với giá trị đầu tiên của hàng mới Công việc kết thúc khi lớp Kernel đã quét hết hàng và cột của ảnh đầu vào và cho ra đủ kết quả pixel tương tương ứng với từng ô của hình kết quả
Kích thước của ảnh kết quả sau khi tích chập được tính bằng cách, do kích thước của hình ảnh đầu vào không nhất thiết là hình vuông nên công thức được chia ra như sau:
Chiều rộng của ảnh kết quả=chiều rộng của ảnh đầu vào – chiều rộng của lớp Kernel + 1 Chiều dài của ảnh kết quả=chiều dài của ảnh đầu vào – chiều dài của lớp Kernel + 1
Hình 2.32 Thêm đường viền ngoài cho ảnh đầu vào
Do khi tích chập ảnh đầu vào và lớp Kernel các ô giá trị pixel ở ngoài biên, các góc chỉ được tinh toán một lần, còn các ô giá trị pixel bên trong thì được tính toán đến vài ba lần Để đồng đều và tăng số lần tính toán các giá trị ngoài biên lên người ta thường thêm 1 đến 2 viền ô bao quanh bên ngoài ảnh đầu vào
− Stride (bước nhảy khi chập)
Bình thường khi tich chập thì lớp Kernel chỉ nhảy mỗi lần 1 bước Nhưng với Stride thì ta có thể cho lơp Kernel nhảy mỗi lần nhiều hơn 1 bước Do đó, kích thước của ảnh kết quả (lấy số nguyên) sẽ có sự thay đổi và được tính toán lại như sau:
Chiều rộng của ảnh kết quả = (chiều rộng của ảnh đầu vào – chiều rộng của lớp Kernel) / Stride + 1
Chiều dài của ảnh kết quả = (chiều dài của ảnh đầu vào – chiều dài của lớp Kernel) / Stride + 1
Các giá trị pixel của ảnh kết quả sau khi tích chập không nên có giá trị âm nên sau khi tích chập người ta cho qua phép Activation Relu để loại bỏ hết các giá trị âm và giữ lại các gia trị dương Hình ảnh kết quả sau khi qua convolution và relu không nhất thiết phải đẹp mà chỉ trích xuất ra các đặc trưng nổi bật của hình ảnh đầu vào
Hình 2.33 Hàm kích hoạt ReLU
( ) max(0, ) '( ) 0 0 = 1 0 = indefined at 0 g z z g z if z if z z
Gần giống như Relu, các giá trị dương vẫn được giữ nguyên nhưng các giá trị âm thì vẫn giữ lại một chút ít để trích xuất ra các đặc trưng không quá nổi bật
Hình 2.34 Hàm kích hoạt Leaky ReLU
( ) max(0, ) '( ) 0.01 0 = 1 0 = indefined at 0 g z z g z if z if z z
Hình 2.35 Chọn các giá trị tối đa và gộp dữ liệu
Dùng ví dụ từ hình trên thì hình bên trái là hình sau khi thực hiện Convolution và Relu, hình bên phải là hình sau khi chập vùng chứa trống 2x2 gọi là max pooling là 2x2 và vì có pool là 2x2 nên mỗi lần dời để chọn ra giá trị max từ Hình 2.35 sẽ là 2 bước Kích thước vùng chưa không cos quy định nên được chọn tự do Do chỉ chọn ra số lớn nhất phụ thuộc vào kích thước vùng chứa nên có thể gây ra mất mát thông tin rất nhìu nhưng đồng thời cũng trích xuất đặc trưng được tốt hơn
Kích thước của hình sau khi thực hiện Max Pooling (số nguyên) cũng có sự thay đổi và được tính toán lại như sau:
Chiều dài hình MaxPooling = chiều dài hình sau khi thực hiện Convolution và Relu / Pooling size
Chiều rộng hình MaxPooling = chiều rộng hình sau khi thực hiện Convolution và Relu / Pooling size
Có thể lặp lại quy trình từ bước Convolution đến relu và Max Pooling với số lần tùy thuộc vào người dùng
• Flatten (trải thẳng/ làm phẳng dữ liệu thành 1 chiều)
Hình 2.36 Quá trình trải thẳng dữ liệu thành 1 chiều
Flatten layer trong CNN có công dụng chuyển đổi đầu vào có kích thước nhiều chiều thành một vector 1 chiều, chuẩn bị cho fully connected layers và giảm kích thước đầu vào
Hình 2.37 Liên kết các phân lớp đầy đủ
Fully Connected Layer trong CNN đóng vai trò kết hợp các đặc trưng, thực hiện phân loại và tích hợp thông tin toàn cục vào quá trình dự đoán
Hình 2.38 Tạo ra xác suất dự đoán cho từng lớp
Công dụng chính của Softmax layer là tạo ra các xác suất dự đoán cho từng lớp, cho phép xác định xem đối tượng trong ảnh thuộc lớp nào với mức độ tin cậy Tuy vậy, một số đề tài có áp dụng phương pháp CNN cho Mobile Robot lại đưa ra các hạn chế về tài nguyên tính toán như việc không đủ hiệu năng GPU để thực thi công việc Hơn nữa, khi không có phương pháp học trực tuyến (Online), đôi khi rất khó cho việc phân biệt mục tiêu với đối tượng khác ngay cả khi có CNN Mặc dù, vẫn có các phương pháp để cập nhật trực tuyến, nhưng đi song với đó thì các phương pháp này rất tốn kém và không khả thi trên Mobile Robot
Mô hình OpenPose
2.9.1 Tìm hiểu mô hình OpenPose
Mô hình Human Pose Estimation là một thuật toán máy học sử dụng để xác định vị trí và hướng của các phần của cơ thể con người trong hình ảnh hoặc video Nhiệm vụ của mô hình này là phân tích và nhận dạng các điểm mốc quan trọng trên cơ thể như các khớp xương, như đầu gối, cổ tay, mắt, v.v., và từ đó xây dựng được tư thế chính xác của cơ thể
Mô hình OpenPose đã đạt được sự chú ý lớn trong cộng đồng máy học và thị giác máy tính trong những năm gần đây Có nhiều phương pháp và mô hình khác nhau đã được phát triển để giải quyết bài toán này, trong đó có những phương pháp truyền thống sử dụng các kỹ thuật xử lý ảnh và các thuật toán tìm kiếm cục bộ, cũng như các phương pháp hiện đại sử dụng Deep Learning và mạng Nơ-ron.Các mô hình OpenPose dựa trên Deep Learning thường sử dụng kiến trúc mạng nơ-ron sâu, chẳng hạn như Convolutional Neural Networks (CNNs) hoặc Recurrent Neural Networks (RNNs), để học cách phân tích các đặc trưng trên cơ thể con người và dự đoán tư thế Các mô hình này thường được huấn luyện trên các bộ dữ liệu lớn, trong đó các tư thế đã được gán nhãn trước để đảm bảo tính chính xác và độ tin cậy của dự đoán
2.9.2 Tầm quan trọng của mô hình OpenPose Ước tính tư thế con người là một nhiệm vụ rất khó khăn và có nhiều yếu tố góp phần vào việc này Vấn đề đầu tiên là con người có thể thực hiện vô số chuyển động khiến máy tính khó phân biệt được tất cả các chuyển động đó Ví dụ, có hàng trăm cách khác nhau để bạn có thể cúi xuống và chạm vào ngón chân của mình! Một thách thức khác là cơ thể con người có một mức độ thay đổi lớn về hình dáng bên ngoài từ người này sang người khác; điều này khiến máy móc khó hiểu và dự đoán chuyển động của con người
Thuật toán ước tính tư thế con người đầu tiên được phát triển vào cuối những năm 1990, nhưng mãi đến gần đây, các nhà nghiên cứu thị giác máy tính mới có thể áp dụng các phương pháp học máy để giải quyết vấn đề này Trong nhiều năm, phát hiện người là trọng tâm thảo luận chính cho các ứng dụng phát hiện đối tượng Với những tiến bộ gần đây trong thuật toán máy học, giờ đây máy tính có thể nhận ra ngôn ngữ cơ thể con người bằng cách phát hiện và theo dõi tư thế của con người
Cải thiện hiệu suất và độ chính xác của công nghệ phần cứng đã giúp cho việc sử dụng ước tính tư thế con người cho nhiều ứng dụng trong thế giới thực trở nên khả thi về mặt thương mại Ước tính tư thế con người đã bắt đầu tác động đáng kể đến nhiều ngành công nghiệp, từ an ninh, quốc phòng và kinh doanh thông minh, đến chơi game, giải trí và sức khỏe
Ví dụ: việc sử dụng tính năng phát hiện và theo dõi tư thế con người theo thời gian thực đã giúp máy tính dự đoán hành vi của người đi bộ một cách nhất quán hơn— một bước phát triển quan trọng đối với ngành công nghiệp lái xe tự hành
Khung xương của con người là đại diện cho định hướng của một người trong một định dạng đồ họa Về cơ bản, nó là một tập hợp các tọa độ có thể được kết nối để mô tả tư thế của người đó Mỗi liên kết của từng đoạn xương được gọi là một phần (khớp, hoặc một điểm then chốt) Một kết nối hợp lệ giữa hai phần gọi là một cặp (hoặc một chi) Một số phương pháp tiếp cận với ước lượng dáng người đã được giới thiệu (truyền thống) thường ước tính tư thế của một người trong một hình ảnh chỉ có một người bắt đầu Các phương pháp này thường xác định các phần riêng lẻ trước, sau đó hình thành các kết nối giữa chúng để tạo tư thế
Hình 2.39 Kết quả phương pháp OpenPose a) Keypoint cho bộ xương người b) Kết xuất bộ xương người
Hình 2.40 Định dạng keypoint COCO Ước lượng tư thế nhiều người khó hơn so với trường hợp một người vì không xác định được vị trí và số người trong một khung ảnh Thông thường, chúng ta có thể giải quyết vấn đề trên bằng một trong hai cách tiếp cận:
− Cách tiếp cận đơn giản là kết hợp máy dò người trước, sau đó là ước tính các bộ phận và sau đó tính toán tư thế cho mỗi người Phương pháp này được gọi là phương pháp từ trên xuống
− Một cách tiếp cận khác là phát hiện tất cả các bộ phận trong hình ảnh (tức là các bộ phận của mỗi người), tiếp theo là liên kết/nhóm các bộ phận thuộc về những người khác biệt Phương pháp này gọi là phương pháp từ dưới lên
OpenPose là một trong những cách tiếp cận từ dưới lên phổ biến nhất để ước lượng tư thế của nhiều người Cũng như nhiều cách tiếp cận từ dưới lên, trước tiên OpenPose phát hiện các phần (điểm chính) thuộc về mỗi người trong ảnh, sau đó là gán các phần cho các cá nhân riêng biệt Hình 2.41 là kiến trúc của mô hình OpenPose
Hình 2.41 Sơ đồ khối của kiến trúc OpenPose
Mạng OpenPose [18] bắt đầu với việc trích xuất các đặc trưng có trong hình ảnh bằng cách sử dụng một vài lớp tích chập đầu tiên (VGG-19 trong Hình 2.41) Các đặc trưng sau đó được đưa vào hai nhánh song song của các lớp tích chập Nhánh đầu tiên dự đoán một bộ gồm 18 bản đồ độ tin cậy, với mỗi bản đồ đại diện cho một phần cụ thể của bộ xương người Nhánh thứ hai dự đoán một bộ gồm 38 trường có ái lực phần (PAFs), là các vector hướng được dùng để kết nối các điểm mốc cơ thể với nhau
Mỗi điểm mốc trong cơ thể (ví dụ: vai, cổ tay, đầu gối) có một PAF tương ứng, được sử dụng để xác định hướng và mối quan hệ vị trí giữa các điểm mốc, đại diện cho mức độ liên kết giữa các phần
Mỗi giai đoạn trong nhánh đầu tiên dự đoán bản đồ tin cậy S t , và mỗi giai đoạn trong nhánh thứ hai dự đoán PAFs L t Sau mỗi giai đoạn, dự đoán từ hai nhánh, cùng với các tính năng hình ảnh, được nối cho giai đoạn tiếp theo Ở giai đoạn đầu tiên, mạng tạo ra một tập hợp các bản đồ độ tin cậy phát hiện
S (F) và một tập hợp các trường ái lực bộ phận L 1 1 (F), trong đó 1 , 1 là các CNN để suy luận ở Giai đoạn 1 Trong mỗi giai đoạn tiếp theo, các dự đoán từ cả hai nhánh trong giai đoạn trước giai đoạn vious, cùng với các tính năng hình ảnh ban đầu F, được nối và sử dụng để tạo ra các dự đoán tinh chỉnh
L F S L t (2.33) trong đó 1 , 1 là các CNN để suy luận ở Giai đoạn t
Hình 2.42 Các bước ước tính tư thế con người bằng phương pháp OpenPose
TÍNH TOÁN VÀ THIẾT KẾ PHẦN CỨNG
Yêu cầu thiết kế
Những yêu cầu kỹ thuật ban đầu để tính toán thiết kế, cơ khí như sau: Địa hình hoạt động: trên mặt phẳng, không dốc nghiêng
Kích thước robot: kích thước phần đế robot (dài x rộng) khoảng 0.5 x 0.4m Tổng khối lượng của cả robot và tải trọng là khoảng 30kg
Tốc độ tối đa của robot là 5.4 km/h = 1.5 m/s.
Sơ đồ khối hệ thống điều khiển
Hình 3.1 Sơ đồ khối hệ thống
Hệ thống của cả robot gồm 7 khối:
• Khối 1 là khối nguồn cấp cho cả hệ thống: o Nguồn 12VDC từ Pin Lithium Polymer cấp cho board Jetson AGX Xavier o Nguồn 24VDC từ Pin Li-Ion cấp cho động cơ, encoder và mạch H- Bridge điều khiển 2 động cơ
• Khối 2 là khối xử lý dữ liệu chính, có thể được xem là bộ não của robot: Board NVIDIA Jetson AGX Xavier tính toán, xử lý dữ liệu từ camera và truyền tham số điều khiển (tốc độ động cơ) cho khối 4
• Khối 3 là khối xử lý ảnh, có thể được xem là cặp mắt của robot: HBVCamera thu dữ liệu hình ảnh từ môi trường và được xử lý trên Board Jetson AGX Xavier
• Khối 4 là khối điều khiển, gồm vi điều khiển Arduino Mega 2560, driver H-Bridge điều khiển 2 động cơ DC Servo Arduino Mega nhận lệnh vận tốc được tính toán từ Jetson AGX Xavier gửi xuống qua UART và thực hiện PID điều khiển tốc độ 2 động cơ
• Khối 5 là khối cơ cấu chấp hành gồm 2 động cơ DC Planet
• Khối 6 là khối tác động gồm 3 nhấn
• Khối 7 là khối cảm biến gồm 2 cảm biến siêu âm để phát hiện vật cản.
Tính toán lựa chọn thiết bị
Tính toán công suất lớn nhất mỗi động cơ Pdc:
• Thông số đầu vào: o Tổng khối lượng xe và tải trọng tối đa: m0kg o Tốc độ lớn nhất của xe: v = 5.4 km/h = 1.5 m/s o Chọn bánh xe dẫn động có đường kính dxe5mm=0.145m (r=0.0725m) o Xe có hai dộng cơ dẫn động ở hai bánh sau, 2 bánh trước và sau tự do để điều hướng
• Tính công suất cần thiết của động cơ ct lv mm
P P +P (3.1) với:P lv là công suất làm việc của động cơ
P mm là công suất mất mát qua bộ truyền
Hình 3.2 Các lực chính tác dụng lên xe
Theo định luật 2 Newton: F k −F ms =ma (3.2) Trong đó:
F k : tổng lực kéo để xe có thể di chuyển
=0.01: hệ số ma sát lăn, chọn theo bảng tham khảo bên dưới
Hình 3.3 Hệ số ma sát lăn tham khảo [15]
Lực ma sát gia tốc: F a =ma
Lực ma sát lăn: F ms =mg=2.94( )N
Tính gia tốc lớn nhất a khi tăng tốc từ v0=0 lên vmax=1.5m/s trong 2s:
Công suất đủ để kéo xe: P xe =F v k %.44 1.5 38.16(W) Công suất làm việc mỗi động cơ là: 38.16 19.08(W)
Tính công suất mất mát: P ct P lv +P mm (3.4)
= đ ol là hiệu suất chung
= : hiệu suất bộ truyền đai ol 0.99
= : hiệu suất một cặp ổ lăn ol 0.94
Từ (3.3) và (3.4) Công suất cần thiết mỗi động cơ: P ct 19.08 1.22+ 3(W)
Công suất lớn nhất của mỗi động cơ: P dc P ct 3( )W (3.6)
Tính tốc độ quay lớn nhất của động cơ ndc:
Tốc độ quay tối đa của bánh xe:
= = Tốc độ quay tối đa của động cơ: n dc = u n bx 7.685(rpm) với u=1
Tính moment xoắn lớn nhất của động cơ:
F k 0.0725(m) r xe • Moment xoắn lớn nhất của động cơ:
= n = = Bảng 3.1 Thông số tính toán lựa chọn động cơ
Từ (3.5), (3.6), chọn động cơ Planet 24VDC 60W 320rpm, thỏa mãn các yêu cầu trên
Hình 3.4 Động cơ Planet 24VDC 60W 320rpm
− Trục động cơ: 8mm (có rảnh then)
− Tốc độ động cơ: 6000 vòng/phút
− Tốc độ qua giảm tốc: 320 vòng/phút
Hình 3.5 Kích thước thực tế của động cơ
Bánh xe có vai trò quan trọng, đảm bảo robot có thể di chuyển và hoạt động chính xác, hiệu quả, ngoài ra còn phải đảm bảo được khả năng chịu tải của cả robot Do địa hình hoạt động chủ yếu là mặt bằng phẳng nên bánh xe không cần phải có khoảng sáng gầm quá lớn Từ những yếu tố đã nêu trên, cùng với động cơ đã được chọn thì nhóm em đề xuất lựa chọn bánh xe nhôm 145mm trục 10mm
Hình 3.6 Bánh xe nhôm 145mm, lỗ trục 8 mm
− Trục bánh có thể lắp trực tiếp với các loại động cơ giảm tốc có đường kính trục từ 8 đến 24 mm
− Bánh xe được đúc bằng nhôm có độ bền cao, vỏ được bọc cao su mềm có nhiều rảnh nên có độ bám cao
Bánh xe tự lựa (hay bánh xe điều hướng) là một phần quan trọng trong hệ thống điều khiển của xe tự hành Bánh xe tự lựa có khả năng tự điều chỉnh góc hướng một cách linh hoạt, cho phép xe tự hành thực hiện các phương pháp điều khiển như lái xe, thay đổi làn đường và quay đầu xe Dựa trên không gian làm việc và khả năng chịu tải của robot từ 5-10 kg, nhóm đã quyết định chọn bánh xe tự lựa có kích thước70mm, bề rộng 25mm và chịu tải được 100kg
Hình 3.7 Bánh xe tự lựa
− Chất liệu: cao su + thép si niken
− Kích thước bánh xe: 70*50*20 (mm)
− Kích thước gá đỡ: 40*33 (mm)
− Chống gỉ, bền, êm và chắc chắn
Với việc nhóm sử dụng máy tính nhúng Jetson AGX Xavier sử dụng nguồn 9-20VDC, cao hơn so với Jetson Nano thường hay sử dụng, ngoài ra còn rất nhiều phần ngoại vi khác nên nhằm đảm bảo tính ổn định, dòng không bị quá tải, cũng như không phải dùng mạch hạ áp Nhóm quyết định sử dụng 2 loại nguồn riêng biệt để cung cấp cho các thiết bị sử dụng trong robot Một nguồn 24VDC để cấp cho động cơ, đèn báo tín hiệu Còn lại là Jetson, nút nhấn, Arduino Mega, Relay
Các thiết bị sử dụng nguồn 24VDC:
- Động cơ Planet 24VDC công suất 60W, dòng tiêu thụ có tải tối đa 5A
- Đèn báo AD16-22DS dòng tiêu thụ 20mA
- Với tổng dòng sử dụng: 2*5A + 3*0.02 ~ 11A
→ Với tổng dòng tiêu thụ khoảng 11A, nhóm quyết định sử dụng nguồn Li-ion 24VDC – 40A max (khối pin được đóng từ 18 cell pin 18650)
Hình 3.8 Khối pin 6S 24VDC 6.000mAh, xả max 40A
Các thiết bị sử dụng nguồn 12VDC:
- Jetson AGX Xavier 9-20VDC và 4,5-10A, vì là nguồn 12VDC nên dòng sẽ nằm ở ngưỡng 7A
- Với tổng dòng sử dụng: 7+1
→ Với tổng dòng tiêu thụ khoảng 8A, nhóm quyết định sử dụng nguồn Li-Po (Lithium Polymer) 12VDC – 65A max (khối pin được đóng từ 3 cell super Lipo)
Hình 3.9 Khối pin 3S 12VDC 15.000mAh, xả max 65A
Những ứng dụng phổ biến của HBVCam:
− Drone (máy bay không người lái)
− Ngoại vi cho máy tính
− Môi trường sử dụng: Trong nhà hoặc ngoài trời
− Khoảng cách hoạt động lí tưởng của camera: 1 – 4m
− Tỷ lệ khung hình RGB: 30 fps
− Độ phân giải khung hình: 1920×1080P/640×480P 30F
− Kích thước: 38 mm × 38 mm × 24 mm
− Độ phân giải cảm biến RGB: 2 MP
− Chế độ lấy nét: lấy nét thủ công
Mạch cầu H là một trong những mạch công suất cơ bản và được ứng dụng rộng rãi trong điều khiển động cơ điện DC Có nhiều loại cầu H trên thị trường, tuỳ vào ứng dụng thực tế cần quan tâm các yếu tố về dòng điện, thông số áp điều khiển, tần số,…
Hình 3.11 Cấu tạo đơn giản H-Bridge
Mạch cầu H điều khiển 2 động cơ XY-160D
− Dòng tối đa cho mỗi cầu H là: 7A
− Điện áp đầu vào: 6.5 - 27VDC
− Có chức năng phanh động cơ khi 2 đầu vào đều mức 0 (IN1, IN2 hoặc IN3, IN4)
− Thả tự do nếu 2 đầu vào đều mức 1 (IN1, IN2 hoặc IN3, IN4)
Việc sử dụng 2 động cơ Planet 24VDC 60W 320rpm, mỗi động cơ sử dụng 5A, mà cầu
H XY-160D có khả năng tải dòng tối đa là 7A Nên nhóm sử dụng cầu H XY-160D
Nút dừng khẩn cấp có tên gọi là Emergency Stop hoặc Emergency Stop Button, nút nhấn dừng khẩn cấp Nó là 1 thiết bị được sử dụng trong trường hợp cấp bách, khẩn cấp cần dừng máy Nút được thiết kế dạng nút nhấn với đầu nút bằng nhựa và có kích thước lớn hơn Khi có sự cố, người dùng sẽ tác động dễ dàng hơn Khi tác động nhấn lực tay vào nút dừng duy trì trạng thái thì điện sẽ ngắt và hệ thống sẽ ngừng ngay, muốn ở lại trạng thái ban đầu thì người kỹ thuật phải xoay nút nhấn theo chiều mũi tên
− Điện áp định mức: 380VAC 50hz, 220VDC
− Chất liệu vỏ: nhựa chống cháy ở nhiệt độ cao
Hình 3.13 Nút dừng khẩn cấp
Do tổng tải tiêu thụ của tải 24VDC là 11A nên cần có một nút dừng khẩn cấp có dòng là 15A, nên nhóm quyết định sử dụng loại nút nhấn khẩn cấp này
Nút nhấn là một khí cụ dùng để đóng ngắt từ xa các thiết bị điện, thường được đặt trên bảng điều khiển, tủ điện, hộp nút nhấn,… Khi thao tác sẽ cần có sự dứt khoác để mở và đóng điện
Nút nhấn có cấu tạo gồm hệ thống lò xo, hệ thống các tiếp điểm thường hở và thường đóng, có vỏ bảo vệ Khi tác động vào nút nhấn, các tiếp điểm chuyển trạng thái và khi không còn tác động, các tiếp điểm trở lại trạng thái ban đầu
Dựa vào chức năng, trạng thái hoạt động, hình dạng thì sẽ có nhiều loại nút nhấn khác nhau: nút nhấn đơn, nút nhấn kép, nút nhấn loại hở, nút nhấn loại bảo vệ, nút nhấn loại chống nước và chống bụi,…
Nên để phù hợp với thiết kế của mô hình, nhóm em đã lựa chọn loại nút nhấn đơn không có đèn báo và thường hở
Hình 3.14 Nút nhấn đơn loại LA38-11D Đèn: Đèn báo thường được sử dụng để báo trạng thái trong các mạch điện, tủ điện và trạng thái vận hành của máy móc trong công nghiệp Đèn có thiết kế nhỏ gọn, đẹp mắt, tuổi thọ cao, dễ dàng sử dụng
− Dòng điện làm việc: < 20mA
− Đường kính lỗ lắp đặt: 22 mm
− Đường kính đèn báo: 28.3 mm
Hình 3.15 Đèn báo AD16-22DS
Cảm biến siêu âm SRF05 là một thiết bị dùng để đo khoảng cách từ đối tượng đến cảm biến bằng cách sử dụng sóng siêu âm Cảm biến này hoạt động bằng cách phát ra sóng siêu âm từ một bộ phát, sau đó đo thời gian cần để sóng siêu âm quay trở lại sau khi chúng phản xạ từ đối tượng Có thể sử dụng với các nền tảng nhúng như Arduino để xây dựng các dự án điện tử như xe tự lái, cửa tự động mở đóng, hoặc hệ thống theo dõi khoảng cách
Một số ứng dụng của cảm biến siêu âm SRF05 gồm: đo khoảng cách trong các ứng dụng xe tự động như hệ thống đỗ xe tự động, phát hiện vật cản trên đường đi; theo dõi vật thể trong không gian như robot hoặc drone để tránh va chạm; đo lường mức nước trong bể chứa, hoặc mức nước trong các hệ thống thoát nước để giám sát mức độ đầy; sử dụng trong các hệ thống bảo mật như hệ thống phát hiện chuyển động
− Điện áp hoạt động: 5VDC
− Tín hiệu giao tiếp: TTL
− Chân tín hiệu: Echo, Trigger (thường dùng) và Out (ít dùng)
− Tần số phát sóng: 40Khz
− Khoảng cách đo được: 2~450cm
− Kích thước: 43mm x 20mm x 17mm
Hình 3.16 Cảm biến siêu âm HC SRF-05
Với độ chính xác và độ phân giải cao, nhóm em chọn cảm biến siêu âm SRF05 cho đồ án của mình
− Sử dụng điện áp nuôi DC 5V
− Relay mỗi Relay tiêu thụ dòng khoảng 80mA
− Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A
− Có đèn báo đóng ngắt trên mỗi Relay
Do đèn báo sử dụng là đèn 24VDC cần phải thông qua 1 relay trung gian, mà ở đây nhóm sử dụng 3 đèn nên cần sử dụng 3 relay Mỗi đèn sẽ sử dụng 20mA, nên nhóm lựa chọn Relay 5V 80mA
3.3.10 Máy tính nhúng Jetson AGX Xavier
Máy tính nhúng (Embedded Computer) là một hệ thống máy tính nằm gọn trong một con chip hoặc một bo mạch nhỏ, được thiết kế để phục vụ một yêu cầu, một ứng dụng hay một chức năng nào đó Ví dụ như Raspberry Pi, Jetson,… Ưu điểm của máy tính nhúng là nhỏ gọn nhưng tích hợp điều nhiều tính năng,
Thiết kế mô hình
Với yêu cầu kĩ thuật như trên, robot cần di chuyển linh động Nhóm đã lựa chọn cấu hình robot dạng hai bánh truyền động vi sai gồm hai động cơ dẫn động hai bánh xe chính, một bánh xe xoay 360 độ dẫn hướng và thêm một bánh xe xoay 360 độ để xe cân bằng tốt hơn Cấu hình này cũng được sử dụng phổ biến trong các loại robot dịch vụ có khả năng di động mà nhóm đã trình bày ở Chương 2 báo cáo
Hình 3.21 Cấu hình robot cơ bản của nhóm lựa chọn
Hình trên là cơ cấu mà nhóm tác giả thấy phù hợp nhất cho đề tài, nó thuận lợi trong việc điều khiển và thiết kế cơ khí Việc điều khiểu robot như sau:
• Chuyển động thẳng: điều khiển 2 động cơ cùng tốc độ
• Chuyển động xoay một cung: điều khiển 2 động cơ khác tốc độ (một bánh nhanh, một bánh chậm)
• Xoay quay tâm trục robot: điều khiển hai động cơ cùng tốc độ nhưng ngược chiều nhau
Thiết kế 3D kết cấu Robot:
Sau khi lên ý tưởng, tìm được phương án thiết kế kết cấu robot Nhóm tiến hành thiết kế 3D robot
Bánh tự lựa trước Bánh dẫn động phải
Hình 3.22 Hệ thống cơ khí 3D
Hệ thống cơ khí của robot được xây dụng gồm 2 khối chính (các chi tiết được tô màu để dễ hình dung):
• Khối 1 là phần đế: bố trí cơ cấu truyền động, khung chịu lực chính, mạch điện
• Khối 2 là phần chứa hàng hoá: bố trí 2 thanh kết nối chữ L (chịu được tải trọng tối đa đến 70kg) kết nối giữa phần đế và phần chứa hàng, bố trí bảng điều khiển để người dụng dễ thao tác Việc bố trí thanh chữ L như vậy để khung gian bảo trì hệ thống điện bên trong được dễ dàng, thuận lợi hơn
Thiết kế 3D tấm đế robot:
Thiết kế tấm đế dày 3mm bằng vật liệu thép SS400, với chất liệu cứng cáp, độ bền cao, giá thành rẻ phù hợp cho việc lắp đặt động cơ, phần chịu lực nhiều nhất của cả robot, là phần kết nối phần động cơ và bánh xe với khung xe
Hình 3.23 Tấm đế thép của robot
Dưới đây là chi tiết bản vẽ trên SolidWork của phần đế thép:
Hình 3.24 Bản vẽ tấm đế robot
Sau khi đã có phần đế bằng thép, tiến hành kết nối nhôm định hình, động cơ và bánh xe, chúng ta sẽ có phần khung đế của robot như Hình 3.25 dưới đây
Thiết kế 3D phần vỏ bọc ngoài:
Ngoài phần khung đế ra, còn có phần bỏ bọc bên ngoài của robot, trong quá trình làm thử nghiệm, nhóm đã tính toán phần vỏ bọc sẽ in 3D nhưng vì tốn kém và không khả thi nên nhóm quyết định thiết kế phần vỏ bọc bên ngoài bằng mica Việc vỏ bọc làm bằng mica sẽ giúp cho robot nhẹ hơn, tiết kiệm chi phí, dễ dàng cải tiến thêm nếu muốn, ngoài ra nếu có hư hỏng thì cũng có thể dễ dàng thay thế với chi phí không cao
Hình 3.26 Vỏ bọc robot được làm bằng mica
Bản vẽ phần vỏ bọc ngoài:
Phần vỏ bọc bên ngoài của robot sẽ gồm nhiều phần ghép lại: hai tấm bên hông trái và phải, một tấm chắn trước, một tấm chắn trên và cuối cùng là một tấm chắn phía trên
Hình 3.27 Bản vẽ tấm chắn hông trái và phải
Hình 3.28 Bản vẽ tấm chắn trước
Hình 3.29 Bản vẽ tấm chắn sau
Hình 3.30 Bản vẽ tấm chắn trên
Thiết kế 3D thanh đỡ hàng:
Hình 3.31 Thanh kết nối phần khung đế và tấm đỡ hàng
Tấm đỡ hàng được thiết kế bằng mica dày 5mm
Bản vẽ thanh đỡ hàng:
Hình 3.32 Bản vẽ thanh đỡ hàng
Thiết kế 3D tấm đỡ hàng Được kết nối với phần đế thông qua thanh đỡ hàng, tiến hành thiết một tấm phẳng có thể chứa hàng hóa có cân nặng từ 5-10kg và với chi phí hợp lý nhóm quyết định chọn vật liệu mica với độ dày 5mm cho tấm đỡ hàng
Bản vẽ tấm đỡ hàng:
Hình 3.34 Bản vẽ tấm đỡ hàng
Và sau khi đã thi công xong phần thanh kết nối phần khung đế, thanh đỡ hàng, tấm đỡ hàng lại với nhau, chúng ta sẽ có mô hình như sau:
Hình 3.35 Mô hình sau khi kết nối phần đế và tấm đỡ hàng
Thiết kế hộp điều khiển robot bằng in 3D, giúp hộp điều khiển trông đẹp hơn, chắc chắn hơn so với việc sử dụng mica, khối hộp này bao gồm các nút nhấn và đèn báo màu đỏ tương đương với lệnh robot dừng, vàng tương đương với lệnh reset hệ thống, xanh tương đương với lệnh robot chạy, nút nguồn bật tắt ON/OFF, nút dừng khẩn cấp và quan trọng nhất là camera
Hình 3.36 Hộp điều khiển robot
Phần khung đế và vỏ bọc
Sau khi thi công tất cả các bộ phận lại, thì Hình 3.37 là hình ảnh hoàn chỉnh nhất về mô hình robot di động vận chuyển hàng mà nhóm đã thực hiện
Hình 3.37 Mô hình robot hoàn chỉnh
Bản vẽ mô hình hoàn chỉnh:
Hình 3.38 Bản vẽ mô hình hoàn chỉnh
Sơ đồ mạch điện
Hình 3.39 Mô tả mạch điều khiển của hệ thống hoàn chỉnh
Như đã trình bày ở mục 3.2, sơ đồ điều khiển của hệ thống sẽ bao gồm 7 khối, cụ thể nhiệm vụ của từng khối như sau:
Nhiệm vụ của khối vi điều khiển: gồm Arduino Mega 2560, driver H-Bridge điều khiển hai động cơ DC Servo Arduino Mega sẽ nhận lệnh vận tốc được tính toán từ Jetson AGX Xavier gửi xuống thông qua giao tiếp UART và thực hiện PID điều khiển tốc độ hai động cơ, đọc tín hiệu từ cảm biến HC SRF-05 và đọc xung từ Encoder
Hình 3.40 Khối vi điều khiển
Nguồn 12VDC cấp cho Jetson AGX Xavier
Nguồn 24VDC cấp cho động cơ
Nhiệm vụ của khối driver: nhận xung và từ khối vi điều khiển để điều khiển động cơ
Nhiệm vụ của khối cảm biến: xác định khoảng cách vật cản
Nhiệm vụ của khối nút nhấn: đưa ra tín hiệu bắt đầu và dừng cho robot
Nhiệm vụ của khối đèn: thông báo trạng thái của robot
Nhiệm vụ của khối nguồn: cấp nguồn hoạt động cho 2 thiết bị chính là Jetson
AGX Xavier và hai động cơ DC Servo
THIẾT KẾ PHẦN MỀM
Tổng quan phần mềm
Yêu cầu thiết kế phần mềm:
− Xây dựng thuật toán nhận dạng các vị trí khớp người
− Xây dựng thuật toán xác định đối tượng mà robot cần theo dõi
− Xây dựng thuật phân biệt đối tượng theo dõi với các đối tượng khác
− Xây dựng thuật toán giữ khoảng cách 1m giữa người và robot khi di chuyển
− Xây dựng thuật toán dừng robot khi gặp vật cản
4.1.2 Nguyên lý vận hành robot
Khi người dùng nhấn nút xanh (Start), robot sẽ bắt đầu hoạt động quá trình xác định đối tượng theo dõi
Hình 4.1 Nhấn nút xanh (Start) để bắt đầu xác định đối tượng
Sau khi nhấn nút xanh, người dùng cần đứng cách robot một khoảng là 2m và giơ tay phải lên để robot xác định người nhấn nút là đối tượng mà robot sẽ theo dõi
Hình 4.2 Người dùng giơ tay phải để robot tiến hành nhận diện Để nhận biết quá trình xác định đối tượng đã hoàn thành, người dùng sẽ quan sát đèn xanh Khi nào đèn xanh chuyển từ trạng thái sáng nháy sang trạng thái sáng hẳn, thì quá trình xác định và trích xuất đặc trưng của mục tiêu đã hoàn thành Robot sẽ bắt đầu di chuyển khi khoảng cách giữa người và robot lớn hơn 1m
Hình 4.3 Robot di chuyển bám theo người dùng và duy trì khoảng cách hơn 1m
Khi người dùng nhấn nút đỏ (Stop), quá trình theo dõi đối tượng sẽ kết thúc và đèn đỏ sẽ sáng
Khoảng cách giữa người dùng và Robot là >1m
Lưu đồ tổng quát phần mềm:
Hình 4.4 Lưu đồ tổng quát phần mềm
Hiệu chỉnh ảnh
Ảnh nhận được từ camera bị biến dạng xuyên tâm (biến dạng cầu) Do đó, ảnh nhận được cần xử lý hiệu chỉnh (calibration) trước khi áp dụng các thuật toán xử lý ảnh Thực hiện hiệu chỉnh máy ảnh với bàn cờ có kích thước 8x6, kích thước mỗi ô là 0.038x0.038 (m) Nhóm thực hiện hệu chỉnh camera theo hướng dẫn trên trang ROS.org, với thư viện ROS hỗ trợ câu lệnh:
“rosrun camera_calibration cameracalibrator.py –size 8x6 –square 0.038 image:=/top_front_camera/image_raw camera:=/top_front_camera”
Khi hiệu chỉnh ta cần để bàn cờ nhiều góc chụp khác nhau và quan sát các thanh x, y, size, skew như Hình 4.5 chuyển sang màu xanh, ta có thể tìm được các thông số biến dạng là ma trận D và ma trận thông số của máy ảnh [3x3] là ma trận K như dưới:
Với 2 ma trận biến dạng của ảnh và ma trận thông số của máy ảnh, sử dụng câu lệnh cv2.undistort để xử lý biến dạng xuyên tâm, thu được kết quả là một ảnh phẳng (không bị biến dạng) a) Ảnh trước khi hiệu chỉnh b) Ảnh sau khi hiệu chỉnh Hình 4.5 Ảnh trước và sau khi hiệu chỉnh
Lựa chọn tần số cắt
Để xác định được tần số cắt của động cơ, nhóm tiến hành thu thập dữ liệu tốc độ của hai động cơ sau khi qua bộ điều khiển PID, dữ liệu sau khi được thu thập nhóm tiến hành vẽ biểu đồ độ phân giải tần số với câu lệnh [pxx,f] = pspectrum(xTable), sử dụng hàm pspectrum được hỗ trợ trong matlab để xác định tần số cắt của hai động cơ
Hình 4.6 Độ phân giải tần số của động cơ 1
Hình 4.7 Độ phân giải tần số của động cơ 2
Dựa trên 2 số liệu trên, ta thấy hệ thống bắt đầu dao động tại tần số là 1.3Hz
Thay thế tham số bằng f s =1.3Hz, =t 0.003 ,s 0 =2f s vào công thức (2.29), ta có:
Với b 0 =0.0121,b 1 =0.0121,a 1 = −0.9758, thay vào công thức (2.28), ta được:
Nhận dạng đối tượng sử dụng OpenPose
Trong đề tài này, nhóm sử dụng mô hình OpenPose để phát hiện người Như đã đề cập trong chương 2, mô hình OpenPose sử dụng mạng tích chập để trích xuất thông tin vị trí các khớp Đầu tiên, đọc ảnh từ webcam, chuyển ảnh từ hệ màu BGR sang RGB Ảnh sau khi chuyển đổi hệ màu sẽ được đưa vào mô hình OpenPose để trích xuất thông tin vị trí các khớp Trong các thông tin vị trí các khớp trả về, nhóm sẽ lưu và sử dụng thông tin 18 vị trí của:
BODY PARTS Nose Neck RShoulder RElbow
"RHand": 4,"LShoulder": 5,"LElbow": 6,"LWrist": 7,"RHip": 8,"RKnee": 9,
"RAnkle":10,"LHip":11,"LKnee":12,"LAnkle":13,"REye":14,"LEye":15,
Các thông tin vị trí các khớp sẽ được dùng trong việc ước lượng chiều cao đối tượng, khoảng cách và góc lệch giữa người và robot Trong quá trình ước lượng tư thế cơ thể người của OpenPose, các điểm đặc trưng trên cơ thể như các khớp xương và các điểm mô tả tư thế như đầu, vai, cổ tay, chân
Các khớp xương, bao gồm các khớp nối như cổ tay, cổ chân, cổ đùi và khớp vai, cung cấp thông tin về sự di chuyển và tư thế của cơ thể người Các điểm mô tả tư thế như đầu, vai, cổ tay và chân cũng có vai trò quan trọng trong việc định vị và phân loại các tư thế và hành động của con người Các mối liên kết giữa chúng còn được sử dụng trong quá trình phân biệt giữa các đối tượng
Lưu đồ trích xuất thông tin vị trí các khớp:
Hình 4.8 Lưu đồ trích xuất thông tin vị trí các khớp sử dụng OpenPose model
Thiết lập đối tượng theo dõi
a) Vị trí của 18 keypoint b) Vị trí keypoint 1,3 và 4 để robot xác định mục tiêu Hình 4.9 Vị trí các khớp theo tọa độ pixel gồm 18 keypoint
Sau khi ảnh thu được từ camera, ảnh đi qua OpenPose model thì sẽ trả về vị trí các khớp theo tọa độ pixel gồm 18 keypoint như Hình 4.9a) Để robot có thể xác định được đối tượng cần theo dõi là ai Nhóm sử dụng các tọa độ của keypoint các khớp ở keypoint 1 và 4 theo Hình 4.9b), các keypoint này tương ứng là cánh tay phải của người
Khi tọa độ pixel theo trục v trong không gian ảnh ở keypoint 4 nhỏ hơn tọa độ pixel ở keypoint 1 như Hình 4.9, thì robot sẽ xác định người đấy là mục tiêu mà robot cần theo dõi Sau khi robot đã xác định được mục tiêu, mục tiêu sẽ được gán một biểu tượng hình tam giác trên đầu, để có thể phận biệt được đâu là mục tiêu theo dõi trong khung ảnh Đồng thời, robot sẽ lưu 10 ảnh đầu tiên của mục tiêu để sử dụng cho quá trình trích xuất đặc trưng thông qua CCF model tạo thành các vector đặc trưng, các vector đặc trưng này được sử dụng trong quá trình phân biệt đối tượng theo dõi với các đối tượng khác
Lưu đồ giải thuật thiết lập đối tượng:
Hình 4.10 Lưu đồ giải thuật thiết lập đối tượng theo dõi
Theo dõi đối tượng
4.6.1 Kiến trúc mạng thần kinh sâu cho việc nhận dạng đối tượng
Nhóm sử dụng mạng của Ahmed [22] cho việc nhận dạng lại người dựa trên cơ sở của Convolutional Channel Features (CCF) – bao gồm số ít lớp tích chập được đào tạo từ Convolutional Neural Network (CNN) để tận dụng được các lợi thế từ những đặc trưng được trích xuất thay vì lấy các đặc trưng truyền thống sử dụng cho mobile robot như: color histograms, haar-like, and edge features Và sử dụng 2 bộ lọc tích chập đầu tiên của mạng để trích xuất đặc trưng cho nhận dạng người trực tuyến
Hình 4.11 Kiến trúc mạng thần kinh sâu cho việc nhận dạng đối tượng
❖ Kiến trúc mạng nhận dạng lại người
Mạng của Ahmed lấy một cặp hình ảnh người làm đầu vào, sau đó áp dụng các bộ lọc tích chập để trích xuất các bản đồ đặc trưng cho mỗi ảnh đầu vào Các bản đồ đặc trưng được trích xuất được so sánh với nhau bằng cách lấy sự khác biệt giữa từng pixel trong bản đồ đặc trưng và các pixel lân cận của pixel tương ứng trong bản đồ khác Sau đó, nó áp dụng các bộ lọc tích chập một lần nữa cho bản đồ khác biệt và thông qua một lớp tuyến tính (Fully connected + Softmax), mạng sẽ đánh giá xem các hình ảnh đầu vào có phải là cùng một người hay không Hệ thống sử dụng mạng này với số bộ lọc tích chập ở cả lớp thứ nhất và lớp thứ hai là 10
Hình 4.12 Kiến trúc mạng nhận dạng lại người
Các mạng này đã được đào tạo bằng bộ dữ liệu được cung cấp sẵn bao gồm CUHK01 và CUHK03 [22] Với CUHK01 và CUHK03 là một tập dữ liệu nhận dạng người được tạo ra tại Đại học Chinese University of Hong Kong (CUHK) Trong đó, CUHK01 là một tập dữ liệu nhận dạng người nổi tiếng trong lĩnh vực nhận dạng khuôn mặt Tập dữ liệu này chứa các hình ảnh của 971 người được chụp từ 2 góc nhìn khác nhau (góc trên và góc dưới) Mỗi người trong tập dữ liệu có từ 2 đến 4 hình ảnh CUHK01 được sử dụng rộng rãi trong nghiên cứu để đánh giá hiệu suất của các phương pháp nhận dạng khuôn mặt Và CUHK03 là tập dữ liệu này bao gồm hình ảnh của 1.467 người được chụp từ nhiều góc nhìn và điều kiện ánh sáng khác nhau Mỗi người trong tập dữ liệu có từ 2 đến 6 hình ảnh CUHK03 cung cấp một tập dữ liệu phong phú để nghiên cứu nhận dạng người và các vấn đề liên quan Các tổng số danh tính trong tập dữ liệu là khoảng 2300, và số lượng hình ảnh là khoảng 17000 Phương pháp này đã sử dụng hết 9/10 của tập dữ liệu cho đào tạo và phần còn lại dùng cho việc kiểm tra độ chính xác về nhận dạng của bộ thử nghiệm
Mỗi bước thực hiện trong Hình 4.12 sẽ được trình bày cụ thể sau đây:
− Với cặp ảnh đầu vào được nhận từ camera (có thể là cùng một người hoặc khác và ở nhiều góc nhìn khác nhau)
− Lớp Convolution, ReLu, Max pooling: Hai lớp đầu tiên trong mạng là các lớp tích chập được sử dụng để tính toán các đặc trưng (màu sắc và đường biên) cao hơn trên từng hình ảnh đầu vào riêng biệt Để các đặc trưng giữa hai hình có thể được so sánh ở các lớp sau, hai lớp đầu tiên của mạng ở cả hai hình sẽ thực hiện bước tích chập với cùng một số lượng bộ lọc để trích xuất các đặc trưng Sau đó, các bản đồ đặc trưng thu được sẽ chuyển qua bước tổng hợp tối đa (max pooling) để lấy ra các đặc trưng khác Và bước trên được thực hiện hai lần trước khi qua lớp tiếp theo của mạng
− Lớp Cross-Input Neighborhood Differences: Sau khi qua hai lớp tích chập liên tiếp ở đầu của mỗi hình ảnh đầu vào đã cung cấp cho cả hai các bản đồ đặc trưng –
H R kí hiệu lần lượt f i và g i (với số lượng i bản đồ đặc trưng), từ đó có thể tìm hiểu mối quan hệ giữa chúng Lớp na tính toán sự khác biệt về giá trị đặc trưng trên cả đầu vào của các bản đồ đặc trưng và cả vùng lân cận xung quanh của từng vị trí đặc trưng, từ đó tạo ra một tập hợp gồm các bản đồ khác biệt vùng lân cận, ta gọi nó K i
Sau đó, ta đảo vị trí của hình ảnh mục tiêu f i (gallery image) – tập hình ảnh chứa các bước ảnh của người được lưu trữ trước đó trong cơ sở dữ liệu với vị trí của hình ảnh nguồn gi (query image) – hình ảnh mới mà chúng ta muốn xác mình và so sánh với các hình ảnh mục tiêu đã biết, trong công thức tạo ra được các bản đồ khác biệt vùng lân cận mới , gọi là K i ' (phần bù của K i ) Và tiếp tục chuyển các bản đồ khác biệt vùng lân cận này qua một hàm kích hoạt phi tuyến (ReLu)
+ f x y i ( , )là ma trận n n của ma trận toàn 1
+ 1 ( , ) n n n n là ma trận n n của ma trận toàn 1
+ g x y i ( , ) n n là giá trị vùng lận cận với kích thước n n của g i với trung tâm tại (x,y)
+ n là kích thước ma trận
+ i là số lượng bản đồ đặt trưng
− Lớp Patch Summary Features: Trong lớp trước, đã tính toán được mối quan hệ sơ bộ giữa các đặc trưng từ hai hình ảnh đầu vào dưới dạng bản đồ đặc trưng khác biệt vùng lân cận Lớp Patch Summary Features giúp tóm tắt các bản đồ đặc trưng khác biệt vùng lân cận này bằng cách tạo ra một đại diện tổng thể về sự khác biệt trong mỗi khối nhỏ trong lớp Cross-Input Neighborhood Differences Điều này được thực hiện bằng cách tích chập các bản đồ đặc trưng khác biệt vùng lân cận ở trước với số lượng bộ lọc có kích thước nhỏ hơn tương ứng, với bước nhảy (stride) là một số tùy chọn cố định Bằng cách ghép (matching) chính xác bước nhảy (stride) với độ rộng của các ô vuông nhỏ trong Ki, các vector đặc trưng tại các vị trí (x, y) của L sẽ được tính toán và cho ra bản tóm tắt các biểu diễn đặc trưng cao hơn Làm tương tự cho Ki’ thì ta sẽ có được L’ Chú ý rằng bộ lọc giúp bản đồ K → L và K’
→ L’, đây là các ma trận trọng số được sử dụng trong quá trình tính toán vectơ đặc trưng tại mỗi vị trí trên bản đồ đặc trưng, là khác nhau Cả L và L’ này đều được chuyển qua hàm kích hoạt phi tuyến (ReLu)
− Lớp Across-Patch Features: Cho đến lớp này, thì ta đã thu được biểu diễn cao hơn về sự khác biệt trong một vùng lân cận cục bộ Trong lớp này, thực hiện tích chập bản đồ L và L’ với số lượng bộ lọc tương ứng với kích thước nhỏ hơn và bước tiến là 1 Các đặc trưng kết quả sẽ được được chuyển qua max pooling để giảm chiều cao và chiều rộng – lần lượt được kí hiệu là M và M’ Bộ lọc giúp bản đồ L→ M và L’→M’ không bị ràng buộc
− Higher-Order Relationships: Sau cùng là áp dụng một lớp fully connected cho
M và M’ Trong lớp này giúp ta nắm bắt các mối quan hệ phức tạp hơn giữa các đặc trưng bằng kết hợp thông tin từ M với thông tin từ M’ Kết quả thu được là một vector đặc trưng được truyền qua một hàm kích hoạt phi tuyến ReLu Sau đó tiếp tục được chuyển đến một lớp fully connected khác chứa thêm 2 đơn vị softmax, đại diện cho xác suất của cặp hình ảnh đầu vào là của cùng một người hoặc những người khác nhau
• Trực quan về các đặc trưng
Hình 4.13 đưa ra hình ảnh trực quan về các phản hồi đặc trưng ở mỗi lớp từ L1 đến L6 của mạng Bên trái và bên phải của hình lần lượt hiển thị các phản hồi đối với cặp đầu vào giống nhau và khác nhau
Các bản đồ phản hồi có L1 cho cặp giống nhau hiển thị phản hồi của một trong
10 đặc trưng sau lớp chập đầu tiên Đặc trưng này phản ứng mạnh mẽ với các vùng màu trắng sáng của hình ảnh, làm nổi bật các vùng áo của người đó trong cả hai chế độ xem Các bản đồ có L1 cho cặp khác nhau hiển thị phản hồi của một trong số 10 đặc trưng lớp đầu tiên khác Đặc trưng này phản hồi mạnh mẽ với các vùng màu đen, làm nổi bật áo của người trong chế độ xem 1 và quần của người trong chế độ xem 2
L2 biểu thị các phản hồi đặc trưng sau lớp chập thứ hai, hiển thị một cặp bản đồ đặc trưng fi và gi Đặc trưng L2 được hiển thị cho cặp giống nhau ghi lại các vùng màu da, mang lại phản hồi cao hơn cho chân, tay và mặt của người đó Vì đây là một cặp giống nhau nên các phần tương tự của hình ảnh được đánh dấu ở cả hai chế độ xem Ngược lại, đặc trưng L2 cho cặp khác nhau hiển thị các phần khác nhau của hình ảnh trên hai chế độ xem: chân (quần đùi màu hồng và da hơi hồng) của người ở chế độ xem
1 so với thân (áo hồng và cánh tay hơi hồng) của người ở chế độ xem 2
Các hình ảnh có L3 là phản hồi của một đặc trưng từ lớp Cross-Input Neighborhood Differences Lớp này tính toán sự khác biệt của các bản đồ đặc trưng trên hai chế độ xem trong một vùng lân cận Sau đó, bản đồ khác biệt về đặc trưng thu được sẽ được chuyển qua ReLu, hàm kích hoạt này sẽ cắt tất cả các phản hồi tiêu cực (phần âm) về 0 Đối với một cặp giống nhau, lý tưởng nhất là bản đồ chênh lệch vùng lân cận phải gần bằng không Các giá trị khác không phải nhỏ và tương đối đồng đều trên bản đồ, chủ yếu là do hai bản đồ đặc trưng được so sánh rất giống nhau Điều này được minh họa trong bản đồ L3 ở bên trái trong cặp giống nhau (một trong các bản đồ Ki), có các giá trị nhỏ nhưng khác 0 được phân phối trên toàn bản đồ Hình bên phải của nó, là phần bù Ki’ của nó, có các giá trị hoàn toàn bằng không hoặc gần bằng không Đối với cặp khác nhau, Ki phản hồi mạnh mẽ đối với chân nhưng bằng 0 hoặc gần bằng 0 ở những nơi khác, trong khi Ki’ chỉ phản hồi đối với thân của người đó Một kết quả tương tự được quan sát thấy trong lớp Patch Summary Features được gán L4 Phản hồi của các bản đồ khác biệt của vùng lân cận được tóm tắt càng rõ ràng trên trong L5 – lớp Across- Patch Features Cuối cùng, L6 hiển thị các đặc trưng sau lớp fully connected
Hình 4.13 Trực quan hóa các đặc trưng được học bởi kiến trúc
❖ Phương pháp tăng cường bộ phân loại trực tuyến – Online Boosting
Điều hướng robot
Để điều khiển robot di chuyển theo mục tiêu trong không gian thực, robot cần phải xác định được vị trí của mục tiêu bao gồm khoảng cách và góc lệch giữa mục tiêu và xe trong không gian từ đó robot có thể tăng tốc hoặc giảm tốc độ để có thể duy trì bám đối tượng và giữ khoảng cách là 1m
Hình 4.23 Vị trí người so với robot trong không gian thực
4.7.1 Xác định khoảng cách giữa người và robot Để xác định khoảng cách giữa người và robot, nhóm sử dụng mô hình camera như Hình 4.24 mô hình này dựa vào tiêu cự (f) của máy ảnh, kích thước người và độ lớn của pixel mà từ đó robot có xác định được khoảng cách với đối tượng theo dõi
Hình 4.24 Mô hình ước lượng khoảng cách giữa người và robot
− w là chiều cao của đối tượng trong ảnh (px)
− W là chiều cao của đối tượng thực thế (m)
− d là khoảng cách giữa robot và đối tượng (m)
Hình 4.25 Vị trí các khớp của mục tiêu khi qua mô hình OpenPose trong khung ảnh
− A (u , v ) A A (px) là tọa độ điểm ảnh cổ của mục tiêu
− B(u , v ) A B (px) là tọa độ điểm ảnh giữa 2 mắt cá chân của mục tiêu Để ước lượng khoảng cách giữa người và mục tiêu nhóm cần phải xác định được tiêu cự của máy ảnh, nhóm thực hiện bằng cách cho đối tượng đứng cách một khoảng d0 là 2m trước camera của robot Giả sử, chiều cao của đối tượng sẽ được tính từ vị trí cổ đến giữa 2 mắt các chân Với độ lớn W(m) được tính từ cổ của đến giữa 2 mắt cá chân được đo bằng cách thước dây, độ lớn w(px) được tính từ điểm A là vị trí cổ (vị trí
1) đến diểm B là vị trí giữa mắt cá chân (vị trí 10 và 13) của đối tượng thông qua các vị trí khớp được trả về từ mô hình OpenPose như Hình 4.25, sau khi tính toán giá trị tiêu cự của máy ảnh là 494.5395px Giá trị tiêu cự của máy sẽ là cố định không thay đổi
Hình 4.26 Khoảng cách ban đầu giữa người và robot d0 là 2m
Trong thực tế, thì để xác định được chiều cao W(cm) của đối tượng, ta không thể sử dụng thước dây để đo, do đó nhóm thực hiện việc ước lượng chiều cao thông qua công thức (4.18) Với tiêu cự (f) của máy ảnh là không đổi, đối tượng sẽ đứng trước máy ảnh với khoảng d0 là 2m như Hình 4.26 Để giảm sai số ước lượng chiều cao W(cm), do sai số của độ lớn w(px).Vì vậy, nhóm sẽ sử dụng 10 ảnh đầu tiên được lưu trữ mà robot xác định mục tiêu theo dõi được đề cập ở mục 4.5, từ 10 ảnh này robot sẽ ước lượng chiều cao và lấy kết quả trung bình của 10 lần ước lượng
Sau khi có được tiêu cự của máy ảnh là 494.5395px và kết quả ước lượng chiều cao thực tế của người là W(m), nhóm tính được khoảng cách giữa người và robot như Hình 4.24 theo công thức (4.19), khoảng cách ước lượng giữa người và robot sẽ phụ thuộc vào độ lớn của pixel w(px)
4.7.2 Xác định góc lệch giữa người và robot Để xác định được góc lệnh giữa người và robot, nhóm sử dụng tọa độ cổ (vị trí
1), giả sử tọa độ cổ có giá trị là A(uA,vA) px trong không gian ảnh như Hình 4.27
Hình 4.27 Đối tượng ở giữa khung hình với góc lệch giữa người và xe là 0 rad
Khi robot và người lệch nhau là 0 rad, với ảnh có kích thước sau khi hiệu chỉnh là 960x540 (px), dựa vào tọa độ cổ (vị trí 1) nhóm xác định được khi robot và người lệch nhau một góc 0 rad thì tọa độ cổ (vị trí 1) sẽ có tọa độ là A(480,vA) px
Hình 4.28 Đối tượng di chuyển sang trái với góc lệch giữa người và xe là α (rad)
Trong không gian ảnh, khi người di chuyển sang phải (hoặc sang trái) thì tọa độ điểm ảnh của vị trí cổ sẽ thay đổi từ điểm A(uA,vA) px thành điểm A’(uA’,vA) px Theo Hình 4.27 ta đã biết, khi người ở giữa khung ảnh thì điểm A sẽ có tọa độ là (480,vA) px, do đó khi người và robot lệch nhau là (rad) thì sẽ có độ lớn pixel giữa điểm A và A’ sẽ là 480-uA’(px)
Trong không gian thực, khi đối tượng di chuyển sang phải (hoặc sang trái) so với robot là y(m) như Hình 4.23, sẽ tạo thành một góc lệch (rad) Từ độ lớn pixel giữa điểm A và A’ trong không gian ảnh, ta nhân độ lớn pixel này với pixel_width là 0.004(m/px) để chuyển thành độ lớn theo phương y trong không gian thực giữa người so với robot là y(m) y(m) = (480-uA’).pixel_width
Với pixel_width là 0.004(m/px)
Sau khi ước lượng vị trí người so với robot, theo Hình 4.23 ta tính được góc lệch là arctan y
(rad) Trong đó y(m) là độ lệch giữa người và robot theo phương y, x(m) là khoảng cách (d) giữa người và robot theo phương x
Theo yêu cầu thiết kế, người và robot sẽ cách nhau một khoảng là 1(m), nên từ giá trị khoảng cách d(m) và góc lệch (rad) giữa người và robot đã được xác định ở trên, ta sẽ được tính vận tốc tuyến tính V (m/ s) x và vận tốc góc V a (rad/ s) bằng công thức (4.20) và (4.21) Với giá trị gain V_ x =0.35 và gain V_ a =0.78, nhóm dùng phương pháp thử sai để chọn sao cho phù hợp mà robot có thể di chuyển bám người
4.7.3 Điều khiển chuyển động robot
Việc dẫn hướng robot là điều khiển robot bám theo người và duy trì một khoảng cách cố định 1m giữa người và robot Người đi thẳng thì robot đi thẳng bám theo người đến khi nào khoảng cách giữa người và robot khoảng 1m thì robot dừng lại và họ có thể lại gần robot bỏ hàng vào
Người rẽ trái thì robot chuyển động một cung sang trái với tốc độ góc nhanh chậm tuỳ vào độ lớn góc lệch Người rẽ phải thì robot chuyển động một cung sang phải với tốc độ góc nhanh chậm tuỳ vào độ lớn góc lệch Việc dẫn hướng robot như trên được xây dựng thành một node và được đặt tên là Serrial_node để arduino có thể giao tiếp với jetson thông qua các topics:
• Subcribe topics:”/cmd_vel” o “/v_x”: vận tốc tuyến tính o “/v_a”: vận tốc góc
Lưu đồ tổng quát điều khiển robot
Hình 4.29 Lưu đồ tổng quát điều khiển robot
Lưu đồ con nút nhấn Start và Stop a) Lưu đồ nút nhấn Start b) Lưu đồ nút nhấn Stop
Hình 4.30 Lưu đồ nút nhấn Start và Stop
Lưu đồ con ngắt Timer1
Hình 4.31 Lưu đồ ngắt Timer1
Lưu đồ con Robot control
Hình 4.32 Lưu đồ con robot control
Phương pháp điều khiển robot (điều khiển vị trí) bám theo người như sau:
Dựa vào sự thay đổi của biến khoảng cách (d) và góc lệch ( ) để xác định vị trí của robot so với người Từ đó điều khiển robot bám theo người và duy trì khoảng cách 1m so với người, khoảng cách giới hạn trong khoảng 1 - 4m và tốc độ lớn nhất khi robot và người cách nhau xa nhất là 1.5(m/s) Để gửi vận tốc tuyến tính( v x ) và vận tốc góc ( v a ) từ Jetson tới Arduino, Arduino cần thực hiện đăng ký (Subcribe) đến topic (/cmd_vel) để lấy giá trị v x và v a , từ kết quả của bài toán động học được trình bày ở chương 2, dựa vào công thức (2.18) ta có thể tính được tốc độ cần thiết cho mỗi động cơ là n R và n L
Xét trường hợp người đi thẳng và robot chạy thẳng theo người Trong trường hợp này, khi góc lệch giữa người và robot − 4 0 4 0 thì robot chạy thẳng theo người với tốc độ nhanh, chậm tùy thuộc vào khoảng cách
Xét trường hợp người rẽ trái, rẽ phải và robot rẽ theo người, do góc quét camera vào khoảng −45 0 45 0 nên nhóm quy định, robot rẽ trái một cung khi góc lệch
KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ
Kết quả thi công
5.1.1 Kết quả thi công phần cơ khí
Sau khi tìm hiểu và lưa chọn được thiết bị phù hợp, nhóm tiến hành thi công và kết nối các phần lại với nhau, cụ thể là phần chuyển động gồm bánh xe và đông cơ, phần khung bằng nhôm định hình
− Phần chuyển động: gồm phần bánh xe kết nối với động cơ và một tấm pat được CNC để cố định vào tấm đế thép
Hình 5.1 Phần chuyển động sau khi đã kết nối
− Phần khung: được bằng nhôm định hình 30x30 được kết nối với nhau thông qua ke góc 30x30 một cách rất chắc chắn để có thể kết nối và chịu được tải trọng nặng
− Hộp điều khiển: tiến hành in 3D, thi công phần nút nhấn, đèn báo cho nút nhấn, nút dừng khẩn cấp, nút ON/OFF nguồn điện và đi dây điện thì phần hộp điều khiển tương đối là hoàn chỉnh
Hình 5.3 Hộp điều khiển sau khi đã thi công
Và sau cùng, sau khi đã thi công được những phần quan trọng, nhóm tiến hành thi công mô hình hoàn chỉnh, dưới đây là Hình 5.4 là mô hình Mobile Robot mà nhóm đã thi công
Hình 5.4 Robot hoàn chỉnh sau khi đã thi công và kết nối các phần cứng với nhau
5.1.2 Kết quả thi công phần điện
Sau khi đã có được mô hình, tiến hành thi công mạch điện với các thiết bi đã được lựa chọn và tính toán phù hợp như đã trình bày ở Chương 3
Hình 5.5 Mạch điện sau khi tiến hành kết nối và đi dây các thiết bị lại với nhau
Kết quả các thuật toán
5.2.1 Kết quả bộ điều khiển vi tích phân tỉ lệ (PID)
Thông số bộ điều khiển PID của động cơ và thời gian lấy mẫu T là 3ms:
Kết quả thực nghiệm bộ điều khiển PID điều khiển tốc độ động cơ, với bộ điều khiển PID điều khiển tốc độ động cơ mà nhóm xây dựng được, robot có thể chạy thẳng được với tốc độ hoạt động ổn định của robot tối đa 0.7m/s Kết quả thực nghiệm cho thấy robot có thể bám theo người với tải trọng tối đa lấy an toàn là 10kg Ở các hình đồ thị bên dưới cho robot đi thẳng, mà vận tốc bánh trái (LeftSpeed) thể hiện vận tốc âm là do động cơ bên trái khi cấp nguồn 24VDC động cơ lại quay ngược chiều so với động cơ bên phải, nên để hai động cơ quay cùng chiều thì nhóm cấp xung âm cho động cơ bánh trái khi đó robot sẽ di chuyển thẳng
Kết quả thực nghiệm PID khi chưa qua bộ lọc thông thấp:
Hình 5.6 Kết quả thực nghiệm PID khi chưa qua bộ lọc thông thấp
Thông qua đồ thị Hình 5.6 ta có thể thấy biên độ dao động của động cơ rất lớn, như vậy lâu ngày sẽ ảnh hưởng tới tuổi thọ của động cơ, gây hao mòn, hư hỏng
Kết quả thực nghiệm PID khi qua bộ lọc thông thấp:
− Kết quả thực nghiệm không tải hàng hoá (chỉ xét khối lượng robot 21.5kg) của từng động cơ được biểu diễn như đồ thị Hình 5.7 bên dưới:
Hình 5.7 Kết quả thực nghiệm bộ PID không tải từng động cơ
− Kết quả thực nghiệm có tải hàng hoá (Xét khối lượng robot 21.5kg và tải trọng hàng hoá 10kg) của từng động cơ được biểu diễn như đồ thị Hình 5.8 Kết quả thực nghiệm bộ PID có tải 10kg từng động cơ 10kg bên dưới:
Hình 5.8 Kết quả thực nghiệm bộ PID có tải 10kg từng động cơ
5.2.2 Kết quả ước lượng vị trí mục tiêu Để xác định được chiều cao đối tượng, khoảng cách giữa người và xe, nhóm đã sử dụng mô hình camera và tọa độ của các khớp được đề cập ở mục 4.6 để ước lượng, quá trình ước lượng phụ thuộc vào chất lượng ảnh mà camera thu được và khoảng cách ban đầu của đối tượng đứng trước robot có thể sai lệch một ít so với khoảng cách mà nhóm quy định ban đầu là 2m trong quá trình ước lượng nên sẽ có sai số
2m a) Chiều cao thực tế là 1m53 b) Khoảng cách thực tế giữa mục tiêu và robot là 2m
Hình 5.9 Chiều cao và khoảng cách thực tế của mục tiêu
Sau khi chạy mô hình ước lượng, nhóm đã thu được kết quả ước lượng chiều cao là 1m513 và kết quả ước lượng khoảng cách đến mục tiêu là 2m1 như Hình 5.10 Từ kết quả thu được so với kích thước thực tế Hình 5.9 là có sai số, trong đấy sai số ước lượng chiều cao là 1.7 cm và sai số ước lượng khoảng cách đến mục tiêu là 10 cm
Hình 5.10 Kết quả ước lượng chiều cao và khoảng cách đến mục tiêu
5.2.3 Kết quả thuật toán xử lý ảnh
Sau khi chạy mô hình, nhóm thu được các kết quả trong 2 môi trường cùng với các trường hợp khác nhau nhằm đánh giá chất lượng mô hình và hiệu suất của phương pháp mà nhóm đang sử dụng
Nhóm đã thử nghiệm mô hình trong nhiều trường hợp khác nhau nhằm đánh giá tính linh hoạt và ổn định của phương pháp Các trường hợp này bao gồm đa dạng về độ sáng, góc nhìn, kích thước đối tượng và tốc độ di chuyển
Với hai môi trường được xét bao gồm: trong nhà và ngoài trời
• Trong nhà: điều kiện về ánh sáng ổn định, độ bằng phẳng của lối đi, điều kiện thời tiết không bị ảnh hưởng quá nhiều cũng như mật độ về đối tượng gây nhiễu không cao nhưng lại gặp nhiều vật cản gây che khuất tầm nhìn
− Chỉ có một mình người mục tiêu: Khi chỉ có một người thì robot nhận diện đối tượng khá dễ dàng và ổn định, khoảng cách giữa người và robot được duy trì khá tốt khi tốc độ di chuyển của mục tiêu không thay đổi liên tục a) Toàn cảnh hướng di chuyển của robot khi bám theo mục tiêu b) Tầm nhìn của robot khi bám theo mục tiêu di chuyển
Hình 5.11 Robot di chuyển bám theo mục tiêu và không có đối tượng gây nhiễu
− Gồm người mục tiêu cùng các đối tượng gây nhiễu:
+ Mục tiêu và các đối tượng khác cùng đi thẳng: Mặc dù đã có thêm nhiều đối tượng trong khung hình nhưng robot vẫn nhận dạng ra mục tiêu và tiếp tục di chuyển không bị gián đoạn a) Toàn cảnh hướng di chuyển của robot khi bám theo mục tiêu cùng các đối tượng gây nhiễu b) Tầm nhìn của robot khi có nhiều đối tượng trong một khung hình nhưng vẫn xác định được mục tiêu
Hình 5.12 Robot di chuyển bám theo mục tiêu khi có nhiều đối tượng gây nhiễu
+ Mục tiêu và các đối tượng khác đi theo nhiều hướng khác nhau: Khi có thêm đối tượng gây nhiễu, robot vẫn làm tốt công việc nhận dạng mục tiêu và bám theo đúng tuyến đường mà mục tiêu di chuyển a) Toàn cảnh hướng di chuyển của mục tiêu và của đối tượng gây nhiễu b) Robot vẫn nhận dạng chính xác và di chuyển theo đúng quỹ đạo di chuyển của mục tiêu
Hình 5.13 Robot di chuyển bám theo tuyến đường di chuyển của mục tiêu trong khi đối tượng gây nhiễu đi theo hướng khác
− Mục tiêu và đối tượng có vẻ ngoài gần như tương đồng nhau: Trong đa số trường hợp mục tiêu và đối tượng gây nhiễu có nhiều sự tương đồng về vóc dáng thì đa phần robot vẫn có thể nhận dạng ra mục tiêu được theo dõi nhưng cũng có một phần không nhỏ khi 2 người quá giống nhau thì robot có thể không nhận dạng được gây mất đối tượng làm robot không tiếp tục di chuyển hoặc gây ra việc nhận dạng sai mục tiêu a) Toàn cảnh robot bám theo mục tiêu b) Tầm nhìn của robot cho thấy việc phân biệt và nhận dạng đúng mục tiêu
Hình 5.14 Robot di chuyển bám theo mục tiêu khi có một đối tượng gây có vóc dáng tương đồng đi cùng
− Mục tiêu thay đổi trang phục trong quá trình chạy mô hình: Trong quá trình di chuyển theo mục tiêu được khóa trước đó thì người mục tiêu có thay đổi trang phục nhưng nhờ vào Online Boosting cập nhật nhanh chóng các đặc trưng mới của mục tiêu giúp robot không bị mất mục tiêu và vẫn ổn định trong quá trình di chuyển a) Mục tiêu trước khi thay đổi trang phục b) Tầm nhìn của robot khi theo dõi mục tiêu trước khi thay đổi trang phục c) Mục tiêu sau khi thay đổi trang phục d) Tầm nhìn của robot khi vẫn theo dõi được mục tiêu sau khi mục tiêu thay đổi trang phục
Hình 5.15 Theo dõi mục tiêu khi có sự thay về trang phục
• Ngoài trời: điều kiện về ánh sáng không được ổn định, lối đi có thể bị gồ gề gây rung lắc, điều kiện thời tiết ảnh hưởng nhiều đến mô hình, về mật độ đối tượng gây nhiễu thì có nhiều chỗ có mật độ đi lại đông cản trở quá trình di chuyển cũng như phát hiện mục tiêu, nhưng bù lại thì ta được không gian thông thoáng giúp robot không bị che khuất quá nhiều tầm nhìn
− Chỉ có một mình người mục tiêu: Tuy nhiều lúc ở ngoài trời điều kiện về ánh sáng không được ổn định nhưng nhìn chung việc theo dõi mục tiêu khi không có nhiễu vẫn khá tốt a) Toàn cảnh robot di chuyển bám theo mục tiêu b) Tầm nhìn của robot khi nhận dạng mục tiêu
Hình 5.16 Robot di chuyển bám theo mục tiêu và không có đối tượng gây nhiễu khi ở ngoài trời
− Gồm người mục tiêu cùng các đối tượng gây nhiễu: