Hồ Chí Minh, tháng 6/2024 THIẾT KẾ VÀ LẬP TRÌNH ROBOT TỰ HÀNH KẾT HỢP MANG CÁNH TAY ROBOT 6 BẬC TỰ DO ỨNG DỤNG ROBOT OPERATING SYSTEM VÀ DEPTH CAMERA... HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ
TỔNG QUAN
Lý do chọn đề tài
Trong bối cảnh công nghệ, khoa học và kỹ thuật không ngừng phát triển, vai trò của Robot ngày càng quan trọng trong nhiều lĩnh vực Đặc biệt, Robot tự hành (AMR - Autonomous Mobile Robot và AGV - Autonomous Guided Vehicle) đã trở thành yếu tố thiết yếu, cung cấp hỗ trợ đáng kể cho con người trong các ngành công nghiệp.
Hiện nay, nhiều nhà máy đang phải đối mặt với thực trạng cắt giảm lao động thủ công và áp lực nâng cao năng suất sản xuất Để đáp ứng yêu cầu này, các nhà máy đang tìm kiếm các giải pháp hiệu quả nhằm giảm thiểu lao động thủ công và tối ưu hóa quy trình sản xuất.
Nhu cầu nâng cấp hệ thống và tự động hóa trong quy trình sản xuất ngày càng gia tăng, buộc các nhà máy phải áp dụng công nghệ robot hiện đại Việc này không chỉ giúp tự động hóa nhiều công đoạn mà còn giảm thiểu sai sót và chi phí nhân công, nâng cao hiệu quả sản xuất.
Trong lĩnh vực nghiên cứu và học thuật, xu hướng phát triển Robot di động đang hướng tới sự tự động hoàn toàn, không còn phụ thuộc vào môi trường Đặc biệt, trong lĩnh vực Robot tự hành, có sự chuyển mình từ mô hình AGV (Robot tự dẫn) sang AMR (Robot di động tự hành).
Tốc độ tăng trưởng của thị trường robot di động AGV và AMR đang diễn ra mạnh mẽ, nhờ vào ứng dụng đa dạng của robot tự hành trong nhiều lĩnh vực như công nghiệp sản xuất, logistics, giao hàng, y tế và nông nghiệp.
Trong môi trường sản xuất, robot tự hành không chỉ thay thế con người trong việc vận chuyển và di chuyển vật phẩm, mà còn có khả năng thực hiện nhiều nhiệm vụ phức tạp khác Sự phát triển của công nghệ này giúp tối ưu hóa quy trình sản xuất, nâng cao hiệu suất làm việc và giảm thiểu rủi ro cho người lao động Việc ứng dụng robot tự hành trong sản xuất đang trở thành xu hướng tất yếu, mang lại lợi ích kinh tế và cải thiện chất lượng sản phẩm.
Robot tự hành có khả năng lập trình linh hoạt, cho phép tùy chỉnh để thực hiện chu trình công việc hiệu quả Chúng chuyển linh kiện quan trọng nhanh chóng và chính xác giữa các bước sản xuất, tối ưu hóa quy trình để đảm bảo sự liên tục và giảm thiểu thời gian hoàn thành sản phẩm Việc sử dụng robot tự hành không chỉ giúp nâng cao hiệu suất mà còn cải thiện chất lượng sản phẩm, đồng thời giảm thiểu nguy cơ tai nạn lao động.
Trong lĩnh vực logistics và giao hàng, robot tự hành đóng vai trò quan trọng trong việc tối ưu hóa chuỗi cung ứng Chúng tự động di chuyển và vận chuyển hàng hóa trong kho hoặc nhà máy, nâng cao độ chính xác và tốc độ giao hàng, đồng thời giảm thiểu sự can thiệp của con người Khi kết hợp với hệ thống quản lý kho tự động, robot tự hành tạo ra môi trường làm việc hiệu quả hơn, giảm bớt sự phụ thuộc vào nhân lực.
Lĩnh vực y tế đang khai thác tiềm năng của robot tự hành để nâng cao chất lượng chăm sóc sức khỏe và quản lý tài nguyên Tại các bệnh viện, robot tự hành vận chuyển thuốc, dụng cụ y tế và mẫu xét nghiệm, giúp giảm nguy cơ lây nhiễm và tăng hiệu quả quản lý tài nguyên Ngoài ra, robot có thể được lập trình để theo dõi tình trạng bệnh nhân, ghi nhận dấu hiệu quan trọng và cung cấp thông tin kịp thời cho nhân viên y tế, từ đó tối ưu hóa quy trình chăm sóc.
Robot tự hành trong nông nghiệp đã cách mạng hóa việc thu thập thông tin về môi trường và phát triển cây trồng Với cảm biến hiện đại, chúng có khả năng đo lường độ ẩm, nhiệt độ và độ pH của đất, từ đó cung cấp dữ liệu quan trọng cho nông dân trong việc quản lý và tối ưu hóa sản xuất nông nghiệp.
Dữ liệu này cung cấp thông tin quý giá để tối ưu hóa quản lý cây trồng, bao gồm điều chỉnh lượng nước và phân bón, kiểm soát sâu bệnh và côn trùng Việc sử dụng robot tự hành không chỉ nâng cao năng suất và chất lượng nông sản mà còn giảm lãng phí tài nguyên và hóa chất trong sản xuất nông nghiệp.
Robot tự hành không chỉ thay thế con người trong các công việc cụ thể mà còn tối ưu hóa hiệu quả và tiết kiệm tài nguyên trong nhiều lĩnh vực Trong nghiên cứu Robot di động, định vị và tìm đường là những vấn đề quan trọng đang được phát triển các giải pháp hiệu quả Xác định đường đi ngắn nhất cho Robot là một thách thức lớn, với các phương pháp truyền thống như lập trình thủ công có thể dẫn đến đường dẫn không chính xác, đặc biệt trên các bản đồ phức tạp.
Một giải pháp thay thế hiệu quả là sử dụng các thuật toán tự động, cho phép robot xác định chính xác lộ trình đến vị trí mục tiêu với tốc độ xử lý được xác định bởi thuật toán Phương pháp này giúp tìm ra con đường ngắn nhất một cách hiệu quả, nhưng yêu cầu phải có thông tin chi tiết về bản đồ Bên cạnh việc tìm đường, robot di động cũng cần giải quyết vấn đề bản đồ hóa để đáp ứng yêu cầu của bài toán.
Đề tài “Thiết kế và lập trình Robot tự hành kết hợp mang cánh tay Robot 6 bậc tự do ứng dụng Robot Operating System và Depth Camera” nghiên cứu và phát triển Robot tự hành di động, giúp tự động vận chuyển hàng hóa trong môi trường nhà máy Sự kết hợp giữa Robot AMR (Autonomous Mobile Robot) và cánh tay Robot cộng tác này nhằm nâng cao hiệu suất sản xuất, tiết kiệm thời gian và gia tăng năng suất làm việc Việc sử dụng robot AMR không chỉ loại bỏ công việc vận chuyển hàng hóa bằng tay mà còn giảm nguy cơ sai sót và nâng cao tính an toàn trong môi trường làm việc.
Ngoài ra, việc ứng dụng AMR Robot kết hợp cánh tay Robot vào sản xuất còn có những lợi ích khác như:
- Có thể thay thế con người trong việc di chuyển các loại hàng hóa nặng nề, cồng kềnh và lặp đi lặp lại
- Giúp cắt giảm chi phí vận hành, đặc biệt là chi phí liên quan đến đào tạo và sử dụng lao động
- Độ chính xác và ổn định cao giúp duy trì sự liên tục trong quá trình sản xuất
- Giảm thiểu thời gian cần thiết để vận chuyển hàng hóa.
Mục tiêu nghiên cứu
Đề tài "Thiết kế và lập trình Robot tự hành kết hợp cánh tay Robot 6 bậc tự do" nghiên cứu nhằm tích hợp ưu điểm của Robot tự hành và sự linh hoạt của cánh tay Robot Sản phẩm cuối cùng là một Robot tự hành (AMR) được trang bị cánh tay Robot 6DoF, cho phép thực hiện các tác vụ lấy hàng từ trạm và di chuyển đến vị trí đích một cách hiệu quả.
Cách tiếp cận và phương pháp nghiên cứu
Nghiên cứu các phần mềm và công cụ mã nguồn mở là rất quan trọng trong lĩnh vực công nghệ Việc sử dụng các công cụ tính toán và mô phỏng như Matlab kết hợp với các phần mềm mã nguồn mở như ROS và Gazebo giúp tối ưu hóa quy trình phát triển robot Các thư viện liên quan cũng đóng vai trò quan trọng trong việc nâng cao hiệu quả và khả năng mô phỏng.
Nghiên cứu các bài báo khoa học uy tín về Robot tự hành, Robot AGV, Robot AMR và các loại Robot di động khác là rất quan trọng để hiểu rõ hơn về công nghệ và ứng dụng của chúng Những nghiên cứu này cung cấp cái nhìn sâu sắc về sự phát triển, tính năng và tiềm năng của các loại robot trong ngành công nghiệp hiện đại Việc tham khảo các nguồn tài liệu đáng tin cậy giúp nâng cao kiến thức và kỹ năng trong lĩnh vực robot tự động, đồng thời hỗ trợ việc áp dụng các giải pháp công nghệ tiên tiến vào thực tiễn.
- Kết hợp việc mô phỏng và việc xây dựng hệ thống phần cứng để thử nghiệm các chức năng của Robot
1.3.2 Phương pháp nghiên cứu Đề tài sử dụng tổng hợp các phương pháp nghiên cứu sau:
- Phương pháp nghiên cứu lý thuyết
Giới hạn đề tài
Chúng tôi chỉ thiết kế và thi công cho một Robot, bao gồm một Robot tự hành AMR kết hợp với một cánh tay Robot 6 bậc tự do Do đó, đề tài này không đề cập đến việc phối hợp hoạt động giữa nhiều Robot hoặc lập trình vận hành "bầy đàn" cho các Robot.
Hiện tại, hệ thống chưa có giao diện người dùng (GUI) hoàn chỉnh cho toàn bộ, mà chỉ có các GUI riêng biệt Cụ thể, có một GUI điều khiển cho Robot tự hành, cho phép người dùng thiết lập mục tiêu, và một GUI riêng cho cánh tay Robot, đóng vai trò như một Teach Pendant để học lệnh cho cánh tay Robot.
Giới hạn về động lực học cho cánh tay Robot 6 bậc tự do đã được thiết kế và thi công hoàn thiện, với việc ước tính tải trọng và lực chịu đựng của các khâu và khớp Mặc dù có nghiên cứu về động học, nhưng chưa có nghiên cứu chi tiết về động lực học và tĩnh học cho cánh tay Robot này.
Nội dung nghiên cứu
Đề tài nghiên cứu “Thiết kế và lập trình Robot tự hành kết hợp mang cánh tay Robot
6 bậc tự do ứng dụng Robot Operating System và Depth Camera” có thể được chia làm
3 phần nội dung lớn như sau:
Nội dung 1: Về cánh tay Robot 6 bậc tự do
- Thiết kế phần cứng cánh tay Robot 6 bậc tự do
- Thiết kế mạch điều khiển cho cánh tay Robot
- Tìm hiểu các chuẩn giao tiếp, truyền thông như RS-485, UART, SPI, I2C,…
- Nghiên cứu truyền thông giữa ESP32 và các Driver trong hệ thống cánh tay Robot 6 bậc tự do
- Tính toán phần động học cánh tay Robot 6 bậc tự do
- Lập trình điều khiển cánh tay Robot 6 bậc tự do
- Thiết kế và lập trình giao diện HMI – Teach Pendant cho cánh tay Robot
Nội dung 2: Về Robot tự hành – AMR
- Thiết kế phần cứng Robot tự hành
- Tìm hiểu về hệ điều hành dành cho Robot (Framework: ROS)
- Tìm hiểu về rospy và roscpp
- Lập trình phần điều khiển Robot tự hành, lập trình phần navigation, xây dựng bản đồ cho Robot
Nội dung 3: Về phần kết hợp giữa cánh tay Robot 6 bậc tự do và Robot tự hành
- Thiết kế phần cứng – phần thân trung gian của cánh tay Robot 6 bậc tự do và Robot tự hành AMR
- Tìm hiểu về ảnh Depth và các Depth Camera được sử dụng
- Nghiên cứu xử lý ảnh và tác vụ pose estimation bằng ArUco Marker
- Tìm hiểu các chuẩn giao tiếp, truyền thông như RS-232, TCP/IP,…
Lập trình tác vụ gắp hàng bằng cánh tay Robot sử dụng Depth Camera Microsoft Azure Kinect, kết hợp với việc điều chỉnh tư thế Robot tự hành thông qua Depth Camera Microsoft Kinect V2 – Xbox One, mang lại hiệu quả cao trong việc tự động hóa quy trình.
- Lập trình phối hợp hoạt động giữa Robot tự hành và cánh tay Robot 6 bậc tự do
- Chạy thử nghiệm và hiệu chỉnh phần cứng, phần mềm cho Robot.
Bố cục báo cáo
Chương 1 Tổng quan: Chương này giới thiệu tổng quan về đề tài sẽ nghiên cứu, bao gồm trình bày những vấn đề đang tồn đọng trong việc kết hợp Robot tự hành và cánh tay Robot 6 bậc tự do, những phương pháp nghiên cứu, mục tiêu nghiên cứu, nội dung nghiên cứu và những giới hạn trong phạm vi của đề tài được thực hiện
Chương 2 Cơ sở lý thuyết: Phần cơ sở lý thuyết đề cập đến các nội dung lý thuyết, kiến thức, phần cứng quan trọng và các chuẩn giao tiếp chính mà đề tài được sử dụng Đặc biệt là lý thuyết về hệ thống Robot Operating System và các thuật toán SLAM/AMCL và tổng quan về mã ArUco Marker được sử dụng để Pose Estimation, lý do chọn ArUco thay vì những phương pháp khác để ước tính tư thế vật thể
Chương 3 Thiết kế hệ thống: Chương này sẽ trình bày toàn bộ quá trình thiết kế và lập trình Robot Do đề tài gồm nhiều phần nội dung độc lập nhau cũng như có nhiều tác vụ cần lập trình riêng cho 2 Robot rồi mới đến giai đoạn kết hợp nên em chia Chương
3 ra làm 3 phần chính gồm:
Cánh tay Robot 6 bậc tự do được thiết kế với quy trình cơ khí và mạch điều khiển tỉ mỉ, bao gồm thiết kế nguyên lý và layout mạch Giao diện HMI được phát triển để hoạt động như Teach Pendant, cho phép người dùng thực hiện các lệnh JOG và điều khiển hoạt động của cánh tay Chương trình điều khiển cho cánh tay Robot được lập trình trên vi điều khiển ESP32 – WROOM – 32U, giúp tối ưu hóa hiệu suất và khả năng học lệnh.
Mục 3.2 tập trung vào robot tự hành, bao gồm quá trình thiết kế cơ khí và hệ thống điện cho robot Bài viết cũng trình bày lưu đồ hoạt động của hệ thống robot tự hành và ứng dụng hệ thống ROS trong việc điều khiển Ngoài ra, các giai đoạn như SLAM, điều hướng và xây dựng bản đồ cho robot cũng được đề cập chi tiết.
Mục 3.3 trình bày quá trình kết hợp cánh tay Robot 6 bậc tự do với Robot tự hành, sau khi đã hoàn thành các nội dung độc lập ở mục 3.1 và 3.2 Giai đoạn này tập trung vào thiết kế phần cứng, trong đó phần thân không chỉ là cấu trúc chính mà còn đóng vai trò như tủ điện liên kết giữa hai Robot.
Robot tự hành bao gồm cánh tay Robot và trải qua giai đoạn lập trình với các tác vụ chính như hiệu chỉnh máy ảnh (Camera Calibration) bằng bàn cờ (Chessboard) và căn chỉnh ảnh Depth với Color (Depth Alignment) Tiếp theo, quá trình điều chỉnh tư thế Robot tự hành diễn ra khi gần đến trạm lấy hàng, cùng với tác vụ ước tính tư thế của vật thể thông qua ArUco Marker Cả hai tác vụ này đều sử dụng Depth Camera.
Chương 4 Kết quả: Chương này trình bày về kết quả thi công phần cứng, kết quả giao diện phần mềm điều khiển Robot tự hành và cánh tay Robot, các ảnh và ma trận thu được từ các giai đoạn xử lý ảnh và ước tính tư thế Chương này cũng sẽ trình bày về kết quả thực nghiệm Robot ở 3 điều kiện hoạt động gồm không có vật cản, có vật cản tĩnh và có vật cản động, cũng như là kết quả của các tác vụ điều chỉnh tư thế Robot tự hành và lấy hàng bằng cánh tay Robot
Chương 5 Kết luận và hướng phát triển: Trong chương này sẽ trình bày về những kết luận từ các kết quả đạt được sau khi nghiên cứu và đưa ra các hướng phát triển tiếp theo trong tương lai của đề tài
CƠ SỞ LÝ THUYẾT
Lý thuyết về Robot tự hành
2.1.1 Các loại Robot tự hành phổ biến trong công nghiệp
Robot tự hành trong lĩnh vực công nghiệp có thể được phân thành hai loại chính như sau:
AGV, viết tắt của Automated Guided Vehicles, là những robot công nghiệp được lập trình để di chuyển trên các tuyến đường cố định, có nhiệm vụ chuyên chở hàng hóa trong nhà máy, kho bãi và các môi trường sản xuất, lưu trữ khác Mặc dù công nghệ AGV đã xuất hiện từ lâu, nhưng nó vẫn đóng vai trò quan trọng trong việc tối ưu hóa quy trình logistics và nâng cao hiệu quả sản xuất.
AMR, viết tắt của Autonomous Mobile Robots, là robot công nghiệp hiện đại sử dụng cảm biến và bộ xử lý tích hợp để tự động vận chuyển vật liệu mà không cần tuyến đường cố định Công nghệ AMR, mới xuất hiện trong vài năm gần đây, đang dần thay thế công nghệ AGV lạc hậu.
Hình 2.1 Sự khác nhau về công nghệ giữa AMR Robot và AGV Robot [4]
Robot tự hành AGV (Xe tự hành có hướng dẫn tự động) và AMR (Robot di động tự động) là những công nghệ tiên tiến đóng vai trò quan trọng trong các môi trường công nghiệp như kho bãi và nhà máy sản xuất Chúng giúp tối ưu hóa quy trình vận chuyển hàng hóa, nâng cao hiệu suất làm việc và cải thiện hiệu quả sản xuất.
Cả hai loại robot tự động hóa vận chuyển đều nhằm mục đích chung là tối ưu hóa quy trình, nhưng mỗi loại có những đặc điểm riêng về công nghệ, tính linh hoạt và chi phí, phục vụ cho các nhu cầu đa dạng của doanh nghiệp công nghiệp hiện đại.
Về hệ thống điều hướng:
AGV sử dụng các hệ thống hướng dẫn cố định như dẫn đường từ dưới đất, dải hoặc cảm biến từ trường để xác định vị trí và di chuyển trong không gian nhà máy Chúng có khả năng thực hiện các nhiệm vụ vận chuyển một cách chính xác và an toàn nhờ vào các cảm biến an toàn giúp tránh va chạm với các vật thể xung quanh Tuy nhiên, hạn chế của AGV là chỉ có thể di chuyển theo các đường đi đã được lập trình sẵn và không thể thích ứng linh hoạt với các thay đổi trong môi trường làm việc.
AMR sử dụng công nghệ tiên tiến như cảm biến LiDAR, bản đồ hóa và học máy để tự định vị và điều hướng mà không cần cơ sở hạ tầng cố định Điều này giúp AMR tự động thích ứng với điều kiện mới và tìm đường tránh vật cản, tối ưu hóa quy trình sản xuất và vận hành nhà xưởng So với AGV, AMR có tính linh hoạt cao hơn nhờ khả năng điều hướng và thích ứng với sự thay đổi về hàng hóa, bố cục và không gian làm việc.
Hình 2.2 Sự khác nhau về điều hướng giữa AMR Robot và AGV Robot [3]
Về tính linh hoạt và chi phí:
AGV thường bị giới hạn về tính linh hoạt do phải tuân theo các lộ trình đã được lập trình sẵn, khiến việc thay đổi hoặc mở rộng không gian làm việc trở nên tốn kém và mất thời gian Ngược lại, AMR nổi bật với khả năng linh hoạt, cho phép chúng dễ dàng thích ứng và điều hướng trong môi trường sản xuất thay đổi, từ đó giảm thiểu thời gian ngừng máy và nâng cao hiệu quả sản xuất.
Sự lựa chọn giữa AGV và AMR phụ thuộc vào nhu cầu cụ thể của từng doanh nghiệp Các công ty với môi trường làm việc ổn định và đường đi đã được xác định thường ưu tiên AGV, trong khi những doanh nghiệp cần tính linh hoạt và khả năng thích ứng nhanh chóng sẽ chọn AMR Công nghệ robot tự hành đang phát triển mạnh mẽ, hứa hẹn mang lại nhiều lựa chọn và tiềm năng cho các mô hình sản xuất thông minh trong tương lai, không chỉ dừng lại ở AGV hay AMR.
2.1.2 Các cơ cấu dẫn động của Robot tự hành
Cơ cấu dẫn động cho Robot tự hành được chia thành hai loại chính: loại sử dụng truyền động vi sai với hai bánh chủ động và loại sử dụng các cơ cấu bánh xe đa hướng.
Dẫn hướng bằng truyền động vi sai có ưu điểm là thiết kế đơn giản, dễ lập trình và chi phí thấp Tuy nhiên, nhược điểm của nó là thiếu tính linh hoạt trong di chuyển so với các cơ cấu sử dụng bánh đa hướng.
Hình 2.3 AMR Robot dùng cơ cấu truyền động vi sai [5]
Loại dẫn hướng bằng bánh xe đa hướng:
Hiện nay có một số dạng cơ cấu bánh đa hướng phổ biến như bánh đa hướng Omni, bánh đa hướng Mecanum,…
Cấu trúc của Robot Omni 3 bánh:
Robot Omni 3 bánh có thiết kế độc đáo với ba bánh quay độc lập, được bố trí cân đối xung quanh trục chính Mỗi bánh có khả năng xoay tự do nhờ vào hệ thống động cơ và bánh răng tích hợp, cho phép robot di chuyển linh hoạt trong nhiều hướng và xoay quanh trục giữa Đặc biệt, các trục bánh được sắp xếp lệch nhau 120 độ, tạo ra khả năng điều khiển chính xác và hiệu quả.
Hình 2.4 Bản vẽ Robot Omni 3 bánh [6]
Cấu trúc của Robot Omni 4 bánh:
Robot Omni 4 bánh sở hữu cấu trúc với bốn bánh quay độc lập, được bố trí đối xứng xung quanh trục chính Mỗi bánh được trang bị động cơ và bánh răng, cho phép chúng xoay một cách độc lập Đặc biệt, các bánh đối xứng trong cùng một cặp có khả năng quay cùng chiều hoặc ngược chiều, tạo ra sự linh hoạt trong di chuyển Cấu trúc này giúp robot có khả năng xoay quanh trục giữa một cách dễ dàng, với mỗi trục bánh lệch nhau 90 độ.
Hình 2.5 Bản vẽ cơ khí của bánh xe đa hướng Omni [6]
Hình 2.6 Robot Omni 4 bánh thực tế [7]
Sơ đồ vecto biểu diễn chiều di chuyển của Robot Omni
Hình 2.7 Vecto di chuyển của Robot Omni 4 bánh [8]
- Tiến thẳng: Bánh 1 và 4 quay cùng chiều kim đồng hồ, bánh 2 và 3 quay ngược chiều kim đồng hồ
- Lùi thẳng: Bánh 2 và 3 quay cùng chiều kim đồng hồ, bánh 1 và 4 quay ngược chiều kim đồng hồ
- Dịch sang trái: Bánh 2 và 4 quay cùng chiều kim đồng hồ, bánh 1 và 3 quay ngược chiều kim đồng hồ
- Dịch sang phải: Bánh 1 và 3 quay cùng chiều kim đồng hồ, bánh 2 và 4 quay ngược chiều kim đồng hồ
- Dịch chéo về phía trước theo trục bánh 1: Bánh 1 và 2 đứng yên, bánh 3 quay cùng chiều kim đồng hồ, bánh 4 quay ngược chiều kim đồng hồ
- Dịch chéo về phía trước theo trục bánh 2: Bánh 1 và 2 đứng yên, bánh 3 quay cùng chiều kim đồng hồ, bánh 4 quay ngược chiều kim đồng hồ
- Dịch chéo về phía trước theo trục bánh 3: Bánh 3 và 4 đứng yên, bánh 1 quay cùng chiều kim đồng hồ, bánh 2 quay ngược chiều kim đồng hồ
- Dịch chéo về phía trước theo trục bánh 4: Bánh 3 và 4 đứng yên, bánh 2 quay cùng chiều kim đồng hồ, bánh 1 quay ngược chiều kim đồng hồ
- Xoay tại chỗ: qua phải (bánh 1, 2, 3, 4 quay theo chiều kim đồng hồ), qua trái (bánh 1, 2, 3, 4 quay ngược chiều kim đồng hồ)
Cơ cấu bánh Mecanum là một loại bánh Omni với bánh xe có rãnh đặc biệt được bố trí ở các góc khác nhau Mỗi bánh xe được trang bị các con lăn chéo, giúp tối ưu hóa khả năng di chuyển trên mặt phẳng Khi các bánh xe quay theo các hướng khác nhau, lực từ bánh xe tạo ra lực lên và lực ngang, cho phép robot di chuyển linh hoạt theo nhiều hướng và thực hiện các phép quay xung quanh trục trung tâm của nó.
Hình 2.8 Bản vẽ cơ khí Robot Mecanum [9]
Hình 2.9 Robot Mecanum trong công nghiệp
Cơ cấu Swerve là một hệ thống đa hướng phức tạp, sử dụng hai động cơ cho mỗi cụm bánh xe, bao gồm cơ cấu lái và cơ cấu dẫn động riêng biệt Việc thiết kế và lập trình cho cơ cấu này yêu cầu độ phức tạp cao hơn so với các cơ cấu khác Mặc dù chi phí đầu tư cho bánh Swerve trên robot khá lớn, nhưng nó cung cấp sự linh hoạt tối ưu trong di chuyển, đặc biệt là trong các không gian hẹp.
Hình 2.10 Cụm cơ cấu bánh Swerve với cơ cấu lái và dẫn động riêng
Hình 2.11 Robot tự hành sử dụng cơ cấu bánh Swerve trong thực tế
2.1.3 Lý thuyết động học của Robot truyền động vi sai Động học thuận của Robot
Robot được nghiên cứu trong đề tài này không sử dụng trong không gian quá hẹp nhằm tiết kiệm chi phí phần cứng Để đạt được mục tiêu này, tôi đã chọn nghiên cứu và áp dụng cơ cấu dẫn hướng vi sai với 2 bánh chủ động Cấu trúc của cơ cấu vi sai bao gồm 2 bánh lái và 2 bánh đa hướng, giúp cải thiện khả năng di chuyển và linh hoạt của Robot Các thành phần toán học liên quan đến truyền động vi sai của Robot cũng được xem xét kỹ lưỡng để tối ưu hóa hiệu suất hoạt động.
Hình 2.12 Robot truyền động vi sai
Hình 2.13 Hệ trục Robot tự hành
Bảng D-H của robot tuân theo quy tắc bàn tay phải về cách đặt hệ trục tọa độ cho các khớp bánh xe như sau:
Bảng 2.1 D-H Robot 2 bánh vi sai i αi-1 ai-1 di θi
Lý thuyết về cánh tay Robot
2.2.1 Các loại cánh tay Robot phổ biến trong công nghiệp
Cấu tạo chung của các loại cánh tay Robot công nghiệp phổ biến hiện nay
Hình 2.15 Cấu tạo chung của cánh tay Robot công nghiệp [11]
Bộ điều khiển là phần quan trọng nhất của robot, đóng vai trò như "đầu não" cung cấp bộ nhớ và khả năng xử lý cần thiết để thực hiện các hoạt động một cách hiệu quả.
Cảm biến: Các cảm biến giúp robot nhận diện và thu thập thông tin từ môi trường xung quanh, hoạt động được ví như tai và mắt của robot
Robot hoạt động nhờ vào các bộ truyền động điện, khí nén, thủy lực hoặc các loại khác, giúp chuyển đổi năng lượng cần thiết cho các chức năng của chúng.
Cánh tay robot được thiết kế để mô phỏng cánh tay con người, bao gồm nhiều đoạn liên kết với nhau qua các khớp nối Các khớp này có thể là khớp gấp, khớp tịnh tiến, hoặc khớp xoay, và chúng có khả năng được lập trình để thực hiện các chuyển động theo yêu cầu.
Dụng cụ cuối cánh tay, hay còn gọi là dụng cụ thao tác, là các thiết bị gắn vào cuối cánh tay robot để thực hiện những nhiệm vụ cụ thể Những công cụ này có thể bao gồm tay gắp, tay kẹp, camera, và đầu hàn, giúp nâng cao hiệu quả và độ chính xác trong các ứng dụng công nghiệp.
Có các loại cánh tay Robot phổ biến sau:
Cánh tay robot có khớp nối
Cánh tay robot hay còn gọi là Articulated Robot Arm, được thiết kế giống như cánh tay con người, cho phép chuyển động linh hoạt và cấu hình cơ học đa dạng Đây là một trong những loại cánh tay robot phổ biến nhất hiện nay, với ứng dụng rộng rãi trong lĩnh vực tự động hóa công nghiệp Cánh tay này bao gồm một cánh tay cơ khí duy nhất được gắn vào đế thông qua khớp xoắn, mang lại khả năng hoạt động hiệu quả.
Robot công nghiệp với khớp nối, thường từ bốn đến sáu trục, là loại robot phổ biến nhất nhờ vào khả năng chuyển động linh hoạt Chúng có khả năng tự động hóa nhiều ứng dụng khác nhau như hàn hồ quang, hàn điểm, sơn, lắp ráp, loại bỏ và xử lý vật liệu, cũng như xếp hàng.
Hình 2.16 Cánh tay Robot dạng nối khớp
Cánh tay robot tọa độ Descartes, hay còn gọi là robot tuyến tính, hoạt động trên ba trục (X, Y, Z) theo hệ tọa độ Descartes, cho phép di chuyển theo đường thẳng trên ba hướng khác nhau Loại robot này được ưa chuộng trong ngành công nghiệp và sản xuất nhờ tính linh hoạt cao trong cấu hình Chúng cung cấp khả năng điều chỉnh về tốc độ, độ chính xác, độ dài hành trình và kích thước, thường được ứng dụng cho máy CNC và in 3D.
Hình 2.17 Cánh tay robot Descartes
Cánh tay robot hình trụ
Robot hình trụ là một loại cánh tay robot có thiết kế đơn giản, với khả năng di chuyển lên xuống theo chiều dọc Chúng được trang bị khớp quay ở đế và khớp lăng trụ để kết nối các liên kết, mang lại sự linh hoạt trong hoạt động Với kích thước nhỏ gọn, robot hình trụ rất thích hợp cho các nhiệm vụ như lắp ráp, chăm sóc máy, và ứng dụng sơn phủ Loại cánh tay này sử dụng trục quay và cánh tay có thể mở rộng, hỗ trợ các chuyển động thẳng đứng và trượt một cách hiệu quả.
Hình 2.18 Cánh tay robot hình trụ
Cánh tay robot Delta, hay "cánh tay robot song song," gồm ba cánh tay kết nối với một đế duy nhất, hoạt động hiệu quả trong không gian làm việc Với khả năng vận hành ở tốc độ cao, chúng tự động hóa các quy trình, nhờ thiết kế hình vòm độc đáo cho phép chuyển động tinh tế và chính xác Cánh tay robot Delta rất phù hợp cho các ứng dụng trong ngành thực phẩm, dược phẩm và điện tử.
Hình 2.19 Cánh tay robot Delta
Cánh tay robot SCARA (Selective Compliance Assembly Robot Arm) có khả năng chuyển động linh hoạt với ba trục (X, Y và Z) cùng chuyển động quay, giúp tối ưu hóa hiệu suất trong các ứng dụng So với robot Descartes, robot SCARA thể hiện hiệu quả vượt trội trong các chuyển động ngang, di chuyển nhanh hơn và dễ dàng tích hợp vào quy trình sản xuất Loại robot này thường được sử dụng rộng rãi trong các lĩnh vực y sinh, xếp hàng và lắp ráp.
Hình 2.20 Cánh tay robot Scara
2.2.2 Lý thuyết động học của cánh tay Robot
Bậc tự do (Degree of Freedom - DoF) của cánh tay robot là số lượng chuyển động độc lập mà nó có thể thực hiện Mỗi bậc tự do tương ứng với một cách thức di chuyển hoặc xoay của robot Cánh tay robot với nhiều bậc tự do sẽ có khả năng thực hiện các chuyển động phức tạp và linh hoạt hơn.
Các loại chuyển động trong bậc tự do:
Chuyển động tịnh tiến (Translational motion):
X-Axis: Di chuyển theo trục X (trái-phải)
Y-Axis: Di chuyển theo trục Y (lên-xuống)
Z-Axis: Di chuyển theo trục Z (trước-sau)
Chuyển động quay (Rotational motion):
Ví dụ về bậc tự do:
Cánh tay robot với 3 bậc tự do cho phép di chuyển trong không gian ba chiều, nhưng chỉ thực hiện được các chuyển động tịnh tiến theo ba trục X, Y và Z.
Cánh tay robot 6 bậc tự do thường được sử dụng trong công nghiệp, cho phép di chuyển linh hoạt theo ba trục tịnh tiến (X, Y, Z) và thực hiện ba chuyển động quay (Yaw, Pitch, Roll) Để xác định số bậc tự do của robot, có thể áp dụng một công thức cụ thể.
Trong không gian ta có:
Hoặc trên mặt phẳng ta có:
Trong đó: n là số khâu trong hệ thống m là số khớp trong hệ thống f j là số bậc tự do bị giới hạn bởi khớp nối thứ i
Giả sử động học của tay máy Robot có n khâu, khâu thứ i nối khớp thứ i với khớp thứ i+1
Hình 2.21 Biểu diễn các thông số động học theo quy tắc Denavit-Hartenberg [12]
Theo quy tắc Denavit-Hartenberg thì hệ toạ độ được gắn lên các khâu, khớp là
• Đặt trục toạ độ z j dọc theo trục của khớp sau (thứ i+1)
• Đặt gốc toạ độ O i , tại giao điểm giữa z i và pháp tuyến chung của trục z i và z i − 1
Quy tắc Denavit-Hartenberg có một số trường hợp đặc biệt, cho phép đơn giản hoá thủ tục tính toán:
• Đối với hệ toạ độ gốc chỉ có phương của trục z 0 là xác định Gốc 0, 1 và trục x j có thể chọn tuỳ ý
• Đối với hệ thứ n, có phương của trục z i là xác định Trục z i có thể chọn tuỳ ý
• Khi 2 khớp liền nhau có trục song song, vị trí của pháp tuyến chung có thể lấy bất kỳ
• Khi trục của 2 khớp liền nhau có trục cắt nhau, phương của trục x i có thể chọn bất kỳ
• Khi khớp thứ i là khớp trượt thì chỉ có phương của trục z i j − là xác định
• Đặt trục tọa độ x i theo phương pháp tuyến chung giữ z i j − và z i hướng từ khớp thứ i đến khớp thứ i+1
• Trục y i vuông góc với x i và z i theo quy tắc bàn tay phải
Sau khi được thiết lập, vị trí của 2 hệ O i và O i − 1 được hoàn toàn xác định bởi các thông số sau:
1 a i − là khoảng cách giữa 2 khớp liên tiếp theo phương x i d i là khoảng cách giữa 2 khớp liên tiếp theo phương z i − 1
i − là góc xoay quanh trụcx 1 , giữa z i − 1 và z 1
i là góc xoay quanh trục z i − 1 giữa x i − 1 và x 1
Sau khi thực hiện các phép tịnh tiến, phép quay ta được ma trận biến đổi thuần nhất giữa 2 hệ i và i+1 như sau:
1 cos sin cos sin sin cos sin cos cos cos sin sin
Giới thiệu về hệ thống Robot Operating System – ROS
2.3.1 Khái niệm về ROS Framework
ROS là một framework mạnh mẽ cho các ứng dụng robot, cung cấp các tính năng của một hệ điều hành như thực hiện tác vụ đồng thời, giao tiếp và quản lý dữ liệu Nó đi kèm với các thư viện và công cụ hỗ trợ vẽ đồ thị, lưu trữ dữ liệu và hiển thị mô hình 3D của robot Thiết kế module của ROS cho phép các nhóm nghiên cứu tập trung vào các lĩnh vực cụ thể như vẽ bản đồ hoặc định vị, đồng thời xây dựng hệ thống robot hoàn chỉnh bằng cách tái sử dụng các module đã phát triển trước đó Tôi đã chọn ROS để phát triển robot với khả năng vẽ bản đồ và định vị nhờ vào những ưu điểm vượt trội của nó.
- ROS cung cấp nhiều module cho phép người dùng tùy biến để phù hợp với yêu cầu của từng loại robot
- Các module hoạt động độc lập và trao đổi thông tin thông qua các gói dữ liệu, giúp dễ dàng phát hiện và sửa lỗi cho từng module
ROS là một nền tảng mã nguồn mở, được phát triển bởi cộng đồng nghiên cứu robot Với số lượng người dùng đông đảo, hệ thống ROS ngày càng phong phú về tính năng và dữ liệu Bên cạnh đó, cộng đồng cũng nhanh chóng hỗ trợ xử lý các lỗi phát sinh trong quá trình sử dụng.
ROS hỗ trợ nhiều chuẩn giao tiếp khác nhau, bao gồm giao tiếp đồng bộ qua RPC thông qua dịch vụ (services), truyền dữ liệu không đồng bộ qua các chủ đề (topics), và lưu trữ dữ liệu trên Parameter Server.
Hình 2.22 Các bản phân phối của ROS [13]
Trong ROS2, khái niệm Node master đã được loại bỏ, cho phép xây dựng một hệ thống hoàn toàn phân tán Các Node hoạt động độc lập, không còn phụ thuộc vào một Node toàn cục Điều này có nghĩa là mỗi Node có khả năng tự giao tiếp với các Node khác, bao gồm tự động khởi động, kết nối và ngắt kết nối mà không cần thông qua Node master.
Các đặc điểm nổi bật của ROS2 bao gồm:
- Không có tham số toàn cục, mỗi Node phải khai báo các tham số cụ thể và các tham số này được truy xuất thông qua lệnh gọi lại
Dịch vụ hoạt động không đồng bộ trong ROS2 cải thiện tính linh hoạt của hệ thống bằng cách sử dụng chức năng gọi lại (callback) Khác với phiên bản cũ của ROS, nơi yêu cầu từ client có thể bị kẹt lại nếu không nhận được phản hồi từ server, ROS2 cho phép tự động kích hoạt callback khi server phản hồi, giúp quá trình giao tiếp diễn ra mượt mà và liên tục hơn.
- Mỗi hành động (action) trong ROS2 đều có lệnh gọi riêng, cho phép gửi mục tiêu hành động trực tiếp đến server từ thiết bị đầu cuối
- Tính năng kiểm soát chất lượng service trong ROS2 giúp giải quyết vấn đề mất dữ liệu khi kết nối mạng bị gián đoạn đột ngột
Bảng 2.2 So sánh một số điểm khác nhau giữa ROS1 và ROS2
Sử dụng giao thức ROS TCP, một phiên bản tùy chỉnh của TCP/IP
Sử dụng giao thức DDS (Data Distribution System) cho việc truyền thông
Cơ chế tập trung thông qua Rosmaster, cho phép khám phá và đăng ký các nodes Nếu Rosmaster gặp sự cố, giao tiếp giữa các nodes sẽ thất bại
Cơ chế phân tán, cung cấp các API để lấy thông tin từ các nodes, giúp hệ thống linh hoạt hơn
Chỉ chạy trên Ubuntu Hỗ trợ nhiều hệ điều hành, bao gồm
Chỉ sử dụng CMake để biên dịch Hỗ trợ nhiều cơ chế biên dịch khác ngoài CMake
Roslaunch sử dụng định dạng XML để khai báo cấu hình
Roslaunch viết bằng Python, cho phép cấu hình linh hoạt hơn
Sử dụng ROS_PACKAGE_PATH để quản lý package, mesages Có thể khai báo lúc compile time
Cài đặt môi trường sau khi khai báo source code
Cài đặt môi trường sau khi khai báo source code
Các package có thể cài đặt mà không cần devel
Cần cài đặt devel trước khi cài đặt package
Không hỗ trợ viết code real time Hỗ trự viết code realtime
Mô hình giao tiếp DDS
ROS2 sử dụng kiến trúc DDS (Data Distribution Service) để hỗ trợ các hệ thống thời gian thực, cho phép mở rộng và trao đổi dữ liệu theo thời gian thực thông qua mô hình DCPS (Data-Centric Publish-Subscribe) Chuẩn DDS đã được áp dụng rộng rãi trong nhiều lĩnh vực, bao gồm hệ thống giao thông, xe tự hành và hàng không vũ trụ.
Hình 2.23 Mô hình giao tiếp DDS [14]
Các thành phần trong mô hình DDS bao gồm:
- Participant: Mô tả mỗi Publisher và Subscriber trong hệ thống (được gọi là nhân tố tham gia)
- Publisher: Nơi truyền dữ liệu (có thể kết hợp với DataWriter) để gửi các thông điệp của một hoặc nhiều chủ đề (topics)
- Subscriber: Nơi thực thi việc nhận dữ liệu (có thể kết hợp với nhiều DataReader) và lắng nghe các thông điệp của một hoặc nhiều chủ đề (topics)
- DataWriter: Là thành phần ứng dụng tầng trên, nơi cập nhật các đối tượng dữ liệu cho Publisher để truyền đi
- DataReader: Là ứng dụng tầng trên, đọc dữ liệu từ Subscriber
- Topic: Là một thể hiện có thể lưu trữ lịch sử thông điệp trong chủ đề đó Mỗi topic phải được khai báo tên và cấu trúc dữ liệu
Chất lượng dịch vụ (QoS) kiểm soát mọi khía cạnh của cơ chế giao tiếp với tầng dưới, tập trung vào các yếu tố như thời gian, độ tin cậy, tính liên tục và lịch sử, nhằm đáp ứng yêu cầu dữ liệu của người dùng trong các tình huống khác nhau.
Hình 2.24 Kiến trúc của ROS2 [15]
ROS được xây dựng dựa trên ba khái niệm chính: Filesystem, Computation Graph và Community
- Filesystem (Cấp thứ nhất): Quản lý cấu trúc thư mục và các tập tin cần thiết để
Đồ thị tính toán (Cấp thứ hai) là công cụ quản lý giao tiếp giữa các quá trình xử lý và hệ thống, giúp kết nối các nút trên cùng một hoặc nhiều máy tính.
Cộng đồng (Cấp thứ ba) cung cấp các công cụ và tài nguyên thiết yếu nhằm chia sẻ kiến thức, phát triển thuật toán và chương trình, đồng thời hỗ trợ mạnh mẽ cho cộng đồng nhà phát triển ROS.
ROS File System (Hệ thống tệp tin của ROS) lưu trữ các tài nguyên trên bộ nhớ hệ thống, bao gồm các thành phần sau [16]:
Các gói trong ROS bao gồm các nodes, thư viện phụ thuộc, dữ liệu, file cấu hình và các tài nguyên cần thiết cho hệ thống.
- Manifests (manifests.xml): Cung cấp thông tin cơ bản về một package, bao gồm giấy phép (license), các cờ biên dịch và thông tin khác
Stacks (Ngăn xếp) là sự kết hợp của nhiều packages để tạo ra một chức năng hoàn chỉnh Mỗi stack có những chức năng riêng biệt, phục vụ cho các nhu cầu khác nhau trong phát triển phần mềm.
- Stack Manifests (stack.xml): Cung cấp thông tin chi tiết về một stack, bao gồm giấy phép và các thông số phụ thuộc vào các stack khác
- Message (msg): Định nghĩa cấu trúc dữ liệu cho việc truyền nhận thông điệp trong ROS
- Service (srv): Định nghĩa cấu trúc dữ liệu cho các lệnh yêu cầu (request) và các phản hồi (response) của các dịch vụ trong ROS
Hình 2.25 Mô hình ROS File System [16]
Lược đồ tính toán, hay còn gọi là Computation Graph, là một mạng kết nối các quy trình trong ROS, cho phép các node trong hệ thống truy cập và tương tác với nhau Cấu trúc này tạo điều kiện cho việc trao đổi dữ liệu thông qua các thành phần khác nhau.
Các node là những thực thể thực hiện các tác vụ tính toán và xử lý dữ liệu, được thiết kế để đáp ứng các yêu cầu cụ thể của hệ thống Chúng có thể đảm nhiệm nhiều nhiệm vụ như điều khiển cảm biến, quản lý động cơ, và hỗ trợ định vị cũng như lập kế hoạch đường đi cho robot.
- Master: Đây là trung tâm đăng ký và tra cứu các phần tử trong Computation
Graph Nếu thiếu ROS Master, các node không thể tìm thấy, giao tiếp hay sử dụng các dịch vụ của nhau
- Parameter Server: Là nơi lưu trữ các thông số cấu hình mà các node có thể truy xuất để thay đổi hành vi hoặc cấu hình của chính chúng
Các node trong hệ thống giao tiếp với nhau thông qua các thông điệp Những thông điệp này có thể chứa các cấu trúc dữ liệu đơn giản như số nguyên, số thực, và boolean, cũng như các cấu trúc phức tạp hơn.
Dịch vụ cung cấp một cơ chế trao đổi dữ liệu theo mô hình yêu cầu/đáp ứng, tạo ra một phương pháp hiệu quả trong các hệ thống phân tán Phương pháp này giúp cải thiện khả năng truyền thông và đáp ứng các yêu cầu cụ thể.
Các giao thức, chuẩn truyền thông được sử dụng
UART (Bộ nhận phát không đồng bộ phổ quát) là một giao thức truyền thông phần cứng cho phép giao tiếp nối tiếp không đồng bộ với khả năng điều chỉnh tốc độ truyền dữ liệu Chức năng chính của UART là truyền tải thông tin theo phương thức nối tiếp.
Truyền thông nối tiếp đồng bộ (synchronous transmission) yêu cầu cả bên gửi và bên nhận phải được đồng bộ bằng tín hiệu xung clock Các giao thức phổ biến như I²C (dây SCL), SPI (dây SCK), RS-232, FireWire, Ethernet và USB đều áp dụng phương pháp này để đảm bảo tính chính xác và hiệu quả trong việc truyền dữ liệu.
Truyền thông bất đồng bộ (asynchronous transmission) không sử dụng xung clock để đồng bộ hóa, mà thay vào đó áp dụng bit bắt đầu (start bit) và bit kết thúc (stop bit) để quản lý quá trình truyền dữ liệu Ngoài ra, bit chẵn lẻ (parity bit) được sử dụng để đảm bảo tính toàn vẹn của dữ liệu cùng với các quy ước phần cứng giữa hai phía truyền và nhận.
Hình 2.32 Cấu trúc Frame truyền của UART [20]
SPI (Serial Peripheral Interface) là một giao thức giao tiếp nối tiếp đồng bộ, phổ biến trong việc kết nối vi điều khiển với các thiết bị ngoại vi như cảm biến, bộ nhớ và màn hình Được phát triển bởi Motorola vào cuối những năm 1980, SPI hiện nay được ứng dụng rộng rãi trong các hệ thống nhúng.
Cấu Trúc và Hoạt Động: SPI bao gồm 4 đường tín hiệu chính:
MOSI (Master Out Slave In): Dữ liệu từ master đến slave
MISO (Master In Slave Out): Dữ liệu từ slave đến master
SCK / SCK (Serial Clock): Xung nhịp do master tạo ra để đồng bộ hóa việc truyền dữ liệu
SS / CS (Slave Select): Chọn slave nào sẽ được giao tiếp
Trong cấu hình cơ bản, thiết bị master có khả năng giao tiếp với nhiều thiết bị slave Master sẽ đảm nhiệm vai trò điều khiển xung nhịp và lựa chọn thiết bị slave cần giao tiếp thông qua tín hiệu SS.
Dữ liệu được truyền theo dạng bit nối tiếp, đồng bộ với xung nhịp SCK Mỗi chu kỳ truyền dữ liệu bao gồm một byte từ master gửi đến slave qua MOSI và một byte từ slave gửi đến master qua MISO.
Hình 2.33 Cơ chế thanh ghi dịch của SPI [21]
I2C, short for Inter-Integrated Circuit, is a widely used serial communication protocol in embedded systems Developed by Philips Semiconductor, now known as NXP Semiconductors, in 1982, I2C facilitates efficient data transfer between multiple integrated circuits.
Một số tính chất đặc trưng của I2C là
- Chỉ yêu cầu 2 bus lines: Một đường truyền dữ liệu nối tiếp (SDA) và một đường xung nhịp nối tiếp (SCL)
- Cho phép nhiều master và nhiều slave trên cùng một đường truyền
- Mỗi slave được định danh bởi một địa chỉ đơn nhất
2.4.4 Chuẩn truyền thông TCP/IP
Modbus-TCP/IP là phiên bản Modbus sử dụng giao thức Ethernet và mô hình TCP/IP cho việc truyền thông Đây là một mạng Ethernet công nghiệp mở, được phát triển bởi tổ chức Modbus-IDA User Organization.
Modbus TCP/IP sử dụng phương thức truyền thông Master-Slave tương tự như các loại Modbus khác, nhưng được triển khai trên nền tảng Ethernet với giao thức TCP trên IP Việc này đã làm thay đổi định nghĩa truyền thống của mô hình Master-Slave, nhờ vào khả năng giao tiếp ngang hàng mà Ethernet cung cấp Trong mạng TCP, các thiết bị có thể giao tiếp trực tiếp mà không cần phải thông qua một Master duy nhất.
Slave có khả năng chủ động gửi thông tin đến các thiết bị quản lý trung tâm (Master) bằng cách sử dụng địa chỉ IP của Master Điều này cho phép quản lý tập trung thông qua phần mềm hiệu quả.
Modbus TCP/IP được sử dụng rộng rãi trong các mạng TCP/IP hiện đại và có hai loại triển khai:
- Modbus RTU qua TCP, chỉ đơn giản sử dụng TCP làm lớp vận chuyển cho các thông điệp RTU
- Modbus TCP bình thường, với một số thay đổi trong định dạng tin nhắn
Nhờ truyền trên nền TCP/IP, tốc độ truyền của Modbus TCP/IP cao hơn nhiều so với Modbus RTU, đáp ứng yêu cầu thời gian thực hiệu quả
RS485 là phương thức truyền thông phổ biến trong ngành công nghiệp, viễn thông và POS, nổi bật với khả năng hoạt động hiệu quả trong môi trường có nhiều nhiễu Phương thức này cho phép truyền tín hiệu ở khoảng cách xa và qua các dây cáp dài, làm cho nó trở thành lựa chọn lý tưởng cho các ứng dụng trong hệ thống máy tính, điều khiển, PLC và cảm biến thông minh.
Chuẩn giao tiếp RS485 cho phép kết nối tối đa 32 thiết bị qua một cặp dây đơn và hệ thống nối đất, với khoảng cách truyền lên đến 1200 mét Dữ liệu được truyền qua hai dây xoắn, tăng khả năng chống nhiễu và cải thiện chất lượng tín hiệu Trong mạng RS485, có hai cấu hình chính: cấu hình 2 dây (hệ thống bán song công) và cấu hình 4 dây (hệ thống song công toàn phần).
Hình 2.34 Sơ đồ cấu hình kết nối 2 dây của chuẩn RS-485 [22]
RS232 là một phương thức truyền thông kết nối giữa thiết bị đầu cuối dữ liệu (DTE) như máy tính và thiết bị truyền thông dữ liệu (DCE) Kỹ thuật ghép nối qua cổng RS232 được sử dụng rộng rãi để kết nối các thiết bị ngoại vi với máy tính.
Một số đặc điểm của RS232 bao gồm:
- Thiết bị ngoại vi có thể được tháo rời hoặc kết nối lại ngay cả khi máy tính đang hoạt động
- Cung cấp nguồn điện qua cổng nối tiếp
- Mức logic 1 có điện áp từ -3V đến -12V, và mức logic 0 từ ±3V đến 12V
- Các đầu vào phải có điện dung dưới 2500pF
- Trở kháng tải phải lớn hơn 3000 Ω nhưng không vượt quá 7000 Ω
- Chiều dài cáp nối giữa hai thiết bị sử dụng chuẩn RS232 không vượt quá 15 mét.
Lý thuyết bộ điều khiển PID
Hình 2.35 Sơ đồ của giải thuật PID [23]
Giải thuật điều khiển PID (Proportional-Integral-Derivative) là một phương pháp điều khiển tự động hiệu quả, được áp dụng rộng rãi để điều chỉnh và duy trì giá trị đầu ra mong muốn trong hệ thống điều khiển.
Cơ bản, PID bao gồm ba thành phần chính: tỷ lệ (Proportional), tích phân (Integral) và vi phân (Derivative)
• Phản ứng tỷ lệ với sai số giữa giá trị đầu ra hiện tại và giá trị đầu ra mong muốn
• Độ lớn của tác động điều khiển tỷ lệ Kp với sai số
• Cải thiện đáp ứng nhanh và độ chính xác của hệ thống
• Phản ứng tỷ lệ với tổng tích phân của sai số theo thời gian
• Tạo ra một tác động điều khiển dựa trên sai số tích phân
• Giúp khắc phục sai số tĩnh do điều kiện ban đầu và sai số hệ thống dẫn đến tích tụ theo thời gian
• Phản ứng tỷ lệ với sự thay đổi của sai số theo thời gian
• Điều chỉnh tác động điều khiển dựa trên tốc độ thay đổi của sai số
• Giảm thiểu hiện tượng dao động và cải thiện ổn định của hệ thống
Hình 2.36 Đồ thị đáp ứng PID [24]
Sơ lược về dòng Fastech Ezi – Servo
Dòng EZI-SERVO của FASTECH là hệ thống servo đa chức năng tiên tiến, được thiết kế để đáp ứng nhu cầu kiểm soát chuyển động trong các ứng dụng công nghiệp với độ chính xác và độ tin cậy cao.
Dòng EZI-SERVO mang đến sự đa dạng về công suất và kích thước với các mô-đun servo, phù hợp cho nhiều ứng dụng khác nhau Từ các mô-đun nhỏ gọn cho những hệ thống hạn chế không gian đến các mô-đun mạnh mẽ cho các hệ thống công suất lớn, EZI-SERVO đáp ứng nhu cầu sử dụng đa dạng của khách hàng.
Dòng EZI-SERVO, với các thuật toán kiểm soát tiên tiến và động cơ servo chất lượng cao, mang lại hiệu suất vượt trội và độ chính xác cao trong quá trình vận hành, là lựa chọn lý tưởng cho các ứng dụng yêu cầu chuyển động mềm mại và chính xác.
Hệ thống điều khiển EZI-SERVO được thiết kế với tính năng lập trình và cấu hình dễ dàng, giúp người dùng thuận tiện trong việc sử dụng FASTECH cung cấp phần mềm điều khiển đồ họa (GUI) cùng với các công cụ cấu hình, hỗ trợ tích hợp và điều khiển hệ thống một cách hiệu quả.
Dòng EZI-SERVO nổi bật với khả năng tương thích mạnh mẽ với nhiều loại truyền thông công nghiệp như Modbus RTU, CANopen, và RS-485, cho phép kết nối và tích hợp dễ dàng với các hệ thống tự động hóa hiện tại Đặc biệt, dòng sản phẩm này hỗ trợ truyền thông EtherCAT và RS485, mang lại sự linh hoạt cho các ứng dụng trong ngành công nghiệp.
Hình 2.37 Một số dòng Servo của FASTECH
Sơ lược về dòng vi điều khiển Espressif ESP32
ESP32 là vi điều khiển tích hợp WiFi và Bluetooth dual-mode, nổi bật với chi phí và tiêu thụ năng lượng thấp Sử dụng vi xử lý Tensilica Xtensa LX6, ESP32 có hai phiên bản: lõi kép và lõi đơn, cùng với nhiều thành phần tích hợp.
42 công tắc antenna tích hợp, RF balun, bộ khuếch đại công suất, bộ khuếch đại thu nhiễu thấp, bộ lọc, và module quản lý năng lượng
ESP32, được phát triển bởi công ty Espressif Systems tại Thượng Hải, Trung Quốc, là phiên bản nâng cấp của vi điều khiển ESP8266 Việc sản xuất chip này được thực hiện bởi TSMC với công nghệ 40 nm.
Hình 2.39 Sơ đồ chân ESP32 [26]
Các loại mã marker phổ biến
Trong lĩnh vực thị giác máy tính và robot học, việc phát hiện và xác định vị trí các đối tượng trong không gian 3D thường được thực hiện thông qua việc sử dụng các loại Marker Phương pháp này giúp tăng cường độ chính xác, sự ổn định và độ tin cậy so với các kỹ thuật khác.
Sử dụng các Marker mang lại lợi thế về tính đa năng và khả năng tái sử dụng, giúp tiết kiệm thời gian mà không cần phải viết lại chương trình hay huấn luyện lại mô hình như các phương pháp AI khác trong việc nhận dạng và ước tính tư thế của vật thể.
Có thể kể đến một vài loại Marker phổ biến như: ArUco Marker, AprilTag, QR Code, Data Matrix, Fiducial Markers, ARToolKit, ChromaTag, WhyConTag,…
AprilTag là một loại marker nhị phân tương tự như ArUco, được thiết kế để nhận diện dễ dàng trong hình ảnh Với khả năng chống nhiễu và sai số thấp, AprilTag cải thiện độ chính xác trong quá trình nhận diện Loại marker này thường được ứng dụng trong các hệ thống robot, định vị và điều hướng.
QR Code là mã 2D chứa thông tin được mã hóa dưới dạng ô vuông đen-trắng, có khả năng lưu trữ nhiều thông tin hơn so với ArUco hoặc AprilTag Tuy nhiên, việc phát hiện và ước tính tư thế bằng QR Code thường chậm và kém chính xác hơn do dung lượng dữ liệu lớn.
Fiducial markers là những dấu hiệu hoặc hình ảnh được thiết kế để dễ dàng nhận diện và định vị trong hình ảnh, bao gồm các hình dạng đơn giản như hình tròn, hình vuông và các mẫu hình học phức tạp hơn.
Hình 2.40 Một số loại Marker thường được dùng trong thị giác máy tính [27]
ArUco Marker là mã phổ biến trong thị giác máy tính và robot học, giúp phát hiện và xác định vị trí đối tượng trong không gian 3D Những marker này có hình dạng vuông, dễ nhận diện và chứa thông tin quan trọng, thường được ứng dụng trong các lĩnh vực cần định vị chính xác.
Hình 2.41 Các thành phần của ArUco Marker
Hình 2.42 Sơ đồ nhận dạng và mã hóa mã ArUco Maker [28]
45 Đặc điểm của ArUco Marker:
ArUco Markers là các hình vuông đen-trắng có mẫu nhị phân độc đáo bên trong, bao gồm các ô vuông đen và trắng được sắp xếp trong một ma trận, và được bao quanh bởi một viền trắng.
- Tính đa dạng: Mỗi ArUco Marker có một mã nhị phân duy nhất, giúp dễ dàng xác định và phân biệt từng marker trong một tập hợp
Các marker này được thiết kế để dễ dàng phát hiện và xác định trong hình ảnh, ngay cả khi đối mặt với điều kiện ánh sáng phức tạp hoặc nhiễu.
Hình 2.43 Sơ đồ mô hình hóa nhận dạng ArUco Marker [29]
THIẾT KẾ HỆ THỐNG
Cánh tay Robot 6 bậc tự do
3.1.1 Thiết kế cơ khí cánh tay Robot
Các servo sử dụng cho cánh tay Robot
Động cơ EZI – Servo vượt trội hơn các dòng động cơ step hoặc step hybrid truyền thống về độ chính xác Một ưu điểm nổi bật của EZI – Servo là khả năng truyền thông qua RS485, giúp việc điều khiển Servo trở nên dễ dàng và tiết kiệm chân điều khiển so với phương pháp điều khiển truyền thống sử dụng hai chân xung và chiều.
Em chọn dòng EZI – Servo để giảm chi phí cho mô hình và tận dụng nguồn điện 24V, giúp phát triển các tác vụ di động như tích hợp vào AGV, AMR mà không cần sử dụng nguồn điện lưới.
EZI – Servo cung cấp nhiều kích thước động cơ khác nhau, bao gồm EzM – 20, EzM – 28, EzM – 35, EzM – 42, EzM – 56, EzM – 60 và EzM – 86 Trong đó, "xx" trong mã EzM – xx đại diện cho kích thước mặt bích của động cơ Mỗi kích thước mặt bích sẽ có các quy chuẩn về chiều dài động cơ, bao gồm các kích thước S, M, L và XL.
Do kích thước 86mm quá lớn không phù hợp với thiết kế của Robot, tôi đã quyết định sử dụng kích thước 60L cho 4 khâu đầu tiên và kích thước 60M cho 2 khâu cuối cùng.
Bảng 3.1 Các kích thước Servo của dòng Ezi – Servo Plus – R
Bảng 3.2 Các loại kích thước servo sử dụng trong Robot
Khâu 1 FASTECH EZI-Servo Plus-R 60L
Khâu 2 FASTECH EZI-Servo Plus-R 60L
Khâu 3 FASTECH EZI-Servo Plus-R 60L
Khâu 4 FASTECH EZI-Servo Plus-R 60L
Khâu 5 FASTECH EZI-Servo Plus-R 60M
Khâu 6 FASTECH EZI-Servo Plus-R 60M
Hình 3.1 FASTECH EZI-Servo Plus-R 60L và 60M
Các phanh từ ở khâu 2 và 3 phải chịu trọng lực lớn hơn so với các khâu khác, dẫn đến nguy cơ trôi các khớp khi tắt servo Khi bật servo, khâu này cũng phải chịu lực lớn để giữ ổn định lâu dài, gây hại cho servo Để khắc phục tình trạng này, tôi đã sử dụng thêm 2 phanh từ cho khâu 2 và 3, loại phanh được sử dụng là MIKI PULLEY BXW-02-10-52.
Bảng 3.3 Loại phanh từ được sử dụng
Khâu 2 Phanh từ MIKI PULLEY BXW-02-10-52 0.70NM
Khâu 3 Phanh từ MIKI PULLEY BXW-02-10-52 0.70NM
Hình 3.2 Phanh từ và động cơ khi được lắp phanh từ
Các hộp số sử dụng cho cánh tay Robot
Do kích thước và trọng lượng lớn của robot, mỗi khớp cần chịu lực mạnh và truyền tải momen từ động cơ đến khâu Vì vậy, không thể chỉ sử dụng cơ cấu pulley – dây đai để truyền động Mỗi động cơ phải đi qua hộp số tương ứng và kết hợp với cơ cấu pulley – dây đai để tăng tỉ số truyền, đảm bảo đủ momen để quay các khâu và kéo tải.
Có 6 loại hộp số từ các hãng khác nhau, được thiết kế với tỉ số truyền phù hợp với nhu cầu sử dụng, giúp người tiêu dùng dễ dàng tìm mua hơn.
Bảng 3.4 Các loại hộp số được sử dụng
Vị trí Tên Tỉ số truyền
Khâu 4 HD HarmonicDrive CSF-14-100-GH-F0BCD 100
Khâu 6 Harmonic M504 100 Ở khâu 2 và khâu 5, em có dùng thêm cơ cấu pulley – dây đai tỉ số 2.4:1 và 2:1
Hình 3.3 Các hộp số Robot a) Khớp 1 b) Khớp 2 c) Khớp 3 d) Khớp 4 e) Khớp 5 f) Khớp 6
Thiết kế và gia công khung nhôm CNC
Sử dụng phần mềm Solidworks để thiết kế 22 chi tiết robot bằng nhôm và 3 chi tiết bằng mica tấm 5mm, áp dụng các phương pháp gia công như CNC và tiện.
Hình 3.4 Các chi tiết thiết kế trên SolidWorks
Bảng 3.5 Các chi tiết và các file step để gia công
Bảng 3.6 Các cảm biến để xác định vị trí home trên Robot
Bảng 3.7 Các chi tiết cho dây đai và puly
Thư mục Loại nhôm PP STT File
Nhôm tấm CNC bao gồm nhiều thành phần quan trọng như: Nhôm tấm CNC 1 De - Tam de, Nhôm tấm CNC 2 De - Tam tren, Nhôm tấm CNC 3 De - Tam truoc, Nhôm tấm CNC 4 De - Tam phai, Nhôm tấm CNC 5 De - Tam trai, Nhôm tấm CNC 6 De - Tam sau, và Nhôm tấm CNC 7 Khau 1 - Pad gan Servo và Gearbox Bên cạnh đó, Nhôm tấm CNC 8 Khau 1 - Pad Gearbox cũng đóng vai trò quan trọng trong cấu trúc tổng thể.
Trụ nhôm 14mm Tiện 9 Khau 1 - Truc noi Gearbox.STEP Nhôm tấm CNC 10 Khau 1 - Tam duoi.STEP
Khâu 2 Nhôm tấm CNC 11 Khau 2.STEP
Nhôm tấm CNC 12 Khau 3 - Pad gan Gearbox, Nhôm tấm CNC 13 Khau 3 - Pad gan Gearbox, Nhôm tấm CNC 14 Khau 3 - Pad gia co phan 1 va 2, và Nhôm tấm CNC 15 Khau 4 - Pad 1 là các sản phẩm nhôm tấm CNC chất lượng cao, được thiết kế để đáp ứng nhu cầu trong ngành công nghiệp chế tạo máy và cơ khí.
Nhôm tấm CNC 16 Khau 4 - Pad 2.STEP Nhôm tấm CNC 17 Khau 4 - Pad.STEP Trụ nhôm 14mm Tiện 18 Khau 4 - Truc noi Gearbox.STEP Trụ nhôm 70mm Tiện 19 Khau 4 - Tru tron.STEP
Nhôm tấm CNC 20 Khau 5 - Pad 1.STEP Nhôm tấm CNC 21 Khau 5 - Pad 2.STEP Khâu 6 Nhôm tấm CNC 22 Khau 6 - Pad co cau chap hanh.STEP Đế
STT Vị trí Tên Khoảng cách Loại
1 Khâu 1 Cảm biến tiệm cận LJ8A3-2-Z 2mm NPN
2 Khâu 2 Cảm biến tiệm cận LJ8A3-2-Z 2mm NPN
3 Khâu 3 Cảm biến tiệm cận PR08-1.5DN 1.5mm NPN
4 Khâu 4 Cảm biến tiệm cận LJ8A3-2-Z 2mm NPN
5 Khâu 5 Cảm biến tiệm cận PR08-1.5DN 1.5mm NPN
6 Khâu 6 Cảm biến tiệm cận PR08-1.5DN 1.5mm NPN
STT Tên Nội dung Thông số SL
1 684ZZ Bạc đạn căng đai 684ZZ D = 8mm 12
2 2GT bản 10mm Dây đai 2GT 210mm bản 10mm bước 2mm L !0mm 1
3 2GT bản 10mm Dây đai 2GT 240mm bản 10mm bước 2mm L $0mm 1
4 Puly 20 răng Puly sơ cấp bản đai 10mm D = 8mm 1
5 Puly 60 răng Puly thứ cấp bản đai 10mm D mm 1
6 Puly 20 răng Puly sơ cấp bản đai 10mm D = 8mm 1
7 Puly 40 răng Puly thứ cấp bản đai 10mm D = 14mm 1
Puly sơ cấp khâu 1 Dây đai khâu 5
CƠ CẤU TRUYỀN ĐỘNG DÂY ĐAI
Cơ cấu căng đai khâu 1 và khâu 5 Dây đai khâu 1
Puly thứ cấp khâu 1Puly sơ cấp khâu 5 (Dự phòng)Puly thứ cấp khâu 5
Hình 3.5 Vị trí các file trên bản thiết kế
Hình 3.6 Bản thiết kế Robot trên SolidWorks
Hình 3.7 Các chi tiết sau khi gia công
Hình 3.8 Quá trình lắp ráp Robot
3.1.2 Thiết kế mạch điều khiển cánh tay Robot
Hệ thống được cấu thành từ các thành phần chính, với ESP32 là vi điều khiển chủ yếu điều khiển Robot thông qua các Driver và tương tác với các thiết bị ngoại vi như Module thẻ SD và Module RS-232.
Hình 3.9 Sơ đồ phần điện Robot
Sử dụng Driver dòng Plus-R của FASTECH với độ phân giải tối đa 10000ppr Bao gồm
4 Driver mã EzS – NDR – 60L – A – D cho motor size 60L và 2 Driver mã EzS – NDR – 60M – A – D cho motor size 60M
Hình 3.10 Dòng Ezi – Servo Plus – R và hướng dẫn đấu dây [30]
Sau khi hoàn thành sơ đồ tổng quát của mạch điều khiển, bước tiếp theo là thiết kế block nguyên lý cho mạch này Để thực hiện thiết kế nguyên lý và layout PCB, phần mềm Altium Designer sẽ được sử dụng.
Hình 3.11 Sơ đồ block cho thiết kế nguyên lý
Với sơ đồ block như trên thì có thể chia làm 10 Sheet nguyên lý bao gồm:
Hình 3.12 Các sheet trong nguyên lý
[1] MICROCONTROLLER.SchDoc: là sheet cho vi điều khiển chính ESP32-
WROOM-32U để ra chân thành các label để tiện cho việc kết nối và phân khối trong nguyên lý
Hình 3.13 Sheet nguyên lý MICROCONTROLLER.SchDoc
[2] INPUT.SchDoc: là sheet cho các linh kiện khối đầu vào gồm 14 đầu vào 5-24V có thể chọn kiểu đầu vào NPN hoặc PNP
Hình 3.14 Sheet nguyên lý INPUT.SchDoc
[3] OUTPUT.SchDoc: là sheet cho các linh kiện khối đầu ra gồm 8 đầu ra Relay thường hở (NO) và 4 đầu ra Mosfet tốc độ cao
Hình 3.15 Sheet nguyên lý OUTPUT.SchDoc
[4] RS232 & CAN.SchDoc: là sheet cho module RS-232 gồm 2 port RS-232 và 2 port
CAN (tùy chọn qua các switch ở sheet EXPANSION.SchDoc)
Hình 3.16 Sheet nguyên lý RS232 & CAN.SchDoc
RS485.SchDoc là tài liệu hướng dẫn cho module RS-485, được sử dụng để giao tiếp với các Ezi-Servo Driver trong việc điều khiển servo Khối RS485 được thiết kế với tính năng cách ly nguồn và cách ly tín hiệu, đảm bảo hiệu suất và độ tin cậy trong quá trình truyền dữ liệu.
Hình 3.17 Sheet nguyên lý RS485.SchDoc
[6] ETHERNET.SchDoc: là sheet cho module Ethernet sử dụng giao tiếp SPI cùng bus
SPI với sheet SD CARD.SchDoc 2 sheet ETHERNET.SchDoc dùng chân CS là 4 và sheet SD CARD.SchDoc dùng chân CS là 5
Hình 3.18 Sheet nguyên lý ETHERNET.SchDoc
[7] SD CARD.SchDoc: là sheet cho module thẻ nhớ Micro SD, module này để lưu dữ liệu Robot gồm các trạng thái của Robot, các dữ liệu học lệnh,…
Hình 3.19 Sheet nguyên lý SD CARD.SchDoc
[8] POWER.SchDoc: là sheet cho phần phân phối nguồn cho toàn bộ mạch
Hình 3.20 Sheet nguyên lý POWER.SchDoc
[9] EXPANSION.SchDoc: là sheet cho các module mở rộng khác, như mở rộng I/O, khối tùy chọn các chế độ giao tiếp cho các bộ UART sang RS-485 hay RS-232,…
Hình 3.21 Sheet nguyên lý EXPANSION.SchDoc
[10] PROG & BOOT.SchDoc: là sheet cho module nạp chương trình, auto boot và debug qua port UART0,…
Hình 3.22 Sheet nguyên lý PROG & BOOT.SchDoc
Hình 3.23 Bố trí linh kiện trên PCB
Sau khi hoàn thành thiết kế nguyên lý và layout PCB, bước đầu tiên là sắp xếp và bố trí các linh kiện theo từng khối chức năng riêng biệt, nhằm tạo điều kiện thuận lợi cho việc đi dây.
Do số lượng linh kiện, mật độ linh kiện và yêu cầu độ chống nhiễu cao nên em layout mạch điều khiển sử dụng mạch 4 lớp Với thứ tự:
• Lớp 1 – Lớp cho dây signal
• Lớp 2 – Lớp cho dây GND
• Lớp 3 – Lớp cho dây PWR
• Lớp 4 – Lớp cho dây signal
Sau khi bố trí linh kiện, tiến hành thiết lập Layer Stack Manager với tổng độ dày khoảng 1.6mm Sử dụng 4 lớp dây bằng vật liệu CF-004 với trọng lượng 1oz, lớp core trung gian Dielectric là Core-035 với độ dày 0.4572mm Để tiết kiệm chi phí, toàn bộ via trong mạch được sử dụng là dạng Through Via.
Hình 3.24 Cấu hình Layer Stack Manager
Sau khi đã cấu hình đầy đủ các thông số, tiến hành layout mạch:
Hình 3.26 Mạch sau khi layout – All Layer
Hình 3.27 Mạch sau khi layout – Signal Layer
Hình 3.28 3D của mạch sau khi render
3.1.3 Tính toán động học cánh tay Robot
Các thông số cơ khí Robot bao gồm:
Bảng 3.8 Các thông số cơ khí Robot
Thông số Độ dài (mm)
Các ma trận đồng nhất
0 cos 0 sin cos sin 0 cos sin
1 2 cos sin 0 cos sin cos 0 sin
2 3 cos 0 sin cos sin 0 cos sin
Phương trình động học thuận tổng quát:
Các phương trình động học thuận
Từ công thức (3.7) ta có ma trận động học thuận tổng quát có dạng
Có thể chia ma trận trên thành 2 ma trận, 1 ma trận 3x3 mô tả phép xoay từ hệ 0 đến hệ
6 và 1 ma trận 3x1 mô tả phép tịnh tiến từ hệ 0 đến hệ 6:
(3.10) Trong đó, các phần tử trong ma trận trên là các phương trình mô tả động học thuận cho cánh tay Robot 6 bậc tự do.
Robot tự hành
3.2.1 Thiết kế cơ khí Robot tự hành
Robot tự hành được thiết kế trên phần mềm Solidworks 2021 sử dụng khung sắt vuông 30x30mm dày 2mm được hàn và sơn phủ bề mặt
Robot tự hành có kích thước dài x rộng x cao tương ứng là 1.03m x 0.53m x 0.35m (tính từ mặt đất)
Hình 3.45 Các hình chiếu của Robot tự hành a) Mặt bên d) Mặt trên b) Mặt sau c) Mặt trước
Hình 3.46 Khung Robot tự hành thiết kế trên Solidwork
Hình 3.47 Khung Robot tự hành
3.2.2 Thiết kế phần điện Robot tự hành
3.2.2.1 Các thành phần trong hệ thống
Hệ thống Robot tự hành (AMR) bao gồm nhiều thành phần quan trọng Khi chưa tích hợp cánh tay Robot, cấu hình của hệ thống này chủ yếu tập trung vào khả năng di chuyển và nhận diện môi trường xung quanh.
Các tính năng của LiDAR:
• Phạm vi quét tối đa: 0.05 – 10m
• Góc quét tối đa: 270 độ
• Nguồn ánh sáng: Infrared (bước sóng 850 nm)
1 x Ethernet, chuẩn giao tiếp TCP/IP, 4-pin M12
Hình 3.50 Tầm hoạt động của LiDAR SICK TIM551 [31]
Depth Camera Microsoft Xbox One Kinect
Hình 3.51 Microsoft Xbox One Kinect
• Loại cảm biến chiều sâu – depth: Time of Flight (ToF)
• Độ phân giải ảnh màu: 1920x1080, 30fps
• Độ phân giải ảnh hồng ngoại: 512x424, 30fps
• Góc nhìn của ảnh màu: 84.1 độ x 53.8 độ
• Góc nhìn ảnh depth: 70 độ x 60 độ
90 Động cơ servo OrientalMotor DGM130R-AZMK và Driver AZD-KD
Hình 3.52 OrientalMotor DGM130R-AZMK và Driver AZD-KD
• Độ phân giải (Resolution Setting: 2000 P/R): 36000 P/R (0.01º)
• Tốc độ tối đa: 1200º/sec (200 r/min)
Máy tính nhúng công nghiệp Advantech ARK-1123
• Intel® Atom™ E3825 Dual Core 1,33 GHz SoC
• 1 x 2,5" SATA HDD / SSD Bay & 1 x VGA
• 2 x GbE cho nhiều đường truyền Internet
• 1 x MiniPCIe full-size (Module WLAN hoặc WWAN)
• Hỗ trợ SUSIAccess và Embedded Software APIs
Depth Camera Microsoft Azure Kinect
Camera Depth Azure Kinect, được phát triển bởi Microsoft, là một sản phẩm trong dòng Azure, nhằm cung cấp giải pháp AI và IoT cho các ứng dụng trong công nghiệp, y tế, robot và nhiều lĩnh vực khác.
Hình 3.54: Depth Camera Azure Kinect Bảng 3.15: Các thông số kỹ thuật của Azure Kinect [32]
Feature Type Azure Kinect DK
Audio Details 7-mic circular array
Motion sensor Details 3-axis accelerometer 3-axis gyro
RGB Camera Details 3840 x 2160 px @30 fps
Data USB3.1 Gen 1 with type USB-C
Power External PSU or USB-C
Synchronization RGB & Depth internal, external device-to- device
Mounting One ẳ-20 UNC Four internal screw points
Hình 3.55: FoV của Depth Camera Azure Kinect Bảng 3.16: Các cấu hình hoạt động của Azure Kinect [32]
Mode Resolution FoI FPS Operating range
NFOV unbinned 640x576 75°x65° 0, 5, 15, 30 0.5 - 3.86 m 12.8 ms NFOV 2x2 binned (SW) 320x288 75°x65° 0, 5, 15, 30 0.5 - 5.46 m 12.8 ms
WFOV unbinned 1024x1024 120°x120° 0, 5, 15 0.25 - 2.21 m 20.3 ms Passive IR 1024x1024 N/A 0, 5, 15, 30 N/A 1.6 ms
Trong bài viết này, tôi sử dụng Azure Kinect ở chế độ WFOV unbinned để thu được hình ảnh Depth với góc nhìn rộng nhất, cho phép đo thông tin chiều sâu trong khoảng gần nhất có thể từ 0.25m đến 2.21m.
3.2.2.2 Sơ đồ hệ thống điện Robot
Robot sử dụng nguồn điện từ 2 Acquy 12V-30Ah, lắp nối tiếp 2 Acquy được Acquy 24V-30Ah Với sơ đồ phân phối nguồn và các kết nối như sau:
Hình 3.56 Sơ đồ hệ thống điện Robot tự hành
3.2.3 Lập trình điều khiển Robot tự hành
3.2.3.1 Lưu đồ điều khiển Robot tự hành
Hình 3.57 Lưu đồ điều khiển Robot trên ROS
Robot được lập trình để nhận tín hiệu điều khiển từ ROS, bao gồm vận tốc thẳng và vận tốc xoay Dựa trên tín hiệu này, cần chuyển đổi thành vận tốc riêng cho bánh trái và bánh phải, đảm bảo thực hiện chính xác lệnh từ ROS Điều này giúp robot di chuyển đúng theo vận tốc và hướng yêu cầu tại tâm xe.
Vận tốc riêng của từng bánh xe:
Thông tin từ các encoder sau khi được xử lý trong Node ta thu được vận tốc của bánh trái v l và vận tốc của bánh phải v r
Từ hai vận tốc riêng này ta tính được vận tốc góc quay của robot bằng: l r encoder v v
Từ cảm biến IMU ta thu được tín hiệu có độ lớn 16bit, sau khi qua hàm scale cho ra vận tốc góc quay của robot imu
Từ hai thông tin vận tốc góc quay encoder và imu ta cho qua bộ filter khi đó được tính theo công thức:
L là khoảng cách giữa hai bánh xe (m) l , r v v lần lượt là vận tốc tịnh tiến của bánh trái và bánh phải của robot (m/s)
là vận tốc góc robot (rad/s) v là vận tốc tịnh tiến robot (m/s) encoder
là vận tốc góc theo encoder (rad/s)
imu là vận tốc góc theo IMU (rad/s)
3.2.3.2 Tích hợp hệ thống Robot Operating System – ROS Để thực hiện vẽ bản đồ môi trường trong ROS gồm 4 bước:
Bước 1: Tiến hành cho LiDAR quét môi trường xung quanh
Hình 3.58 Khởi động LiDAR trên Rviz
Sau khi Rviz sử dụng Hector SLAM để nội suy tất cả các điểm ảnh, các giá trị tương ứng sẽ được hiển thị trên bản đồ đã được lập sẵn.
Hình 3.59 Bản đồ được vẽ trên Rviz lấy dữ liệu từ LiDAR
Quá trình Scan Matching trong bước 3 sẽ tối ưu hóa các liên kết giữa các điểm đã vẽ và các điểm mới được quét, nhằm giảm thiểu giá trị chiếm dụng.
Hình 3.60 Dùng Scan matching để mở rộng bản đồ
Bước 4: Thực hiện di chuyển Lidar dựa vào sự tính toán của các quá trình trên ta sẽ thu được một bản đồ của môi trường cần quét
Hình 3.61 Bản đồ sau khi vẽ
Bài viết mô tả cách thức mà các file ảnh thể hiện không gian trong môi trường Theo tiêu chuẩn, pixel màu trắng đại diện cho khoảng không gian trống, pixel màu đen biểu thị các vật thể đã có mặt (như tường và vật cản), trong khi pixel màu xám cho biết những khu vực mà robot chưa khám phá.
Tệp YAML chứa các thông tin quan trọng về bản đồ, bao gồm đường dẫn đến ảnh với trường "image: mymap.pgm", độ phân giải bản đồ được xác định bởi "resolution: 0.050000" (m/pixel), và tọa độ của pixel ở góc dưới bên trái với "origin: [-51.224998, -51.2244998, 0.000000]" Ngoài ra, "occupied_thresh: 0.65" là ngưỡng để xác định xem một pixel có bị chiếm dụng hay không, trong khi "free_thresh: 0.196" là ngưỡng để đánh giá xem một pixel có thuộc không gian trống hay không.
Tạo lập các thông tin trên bản đồ ảo: nhằm mục đích định vị vị trí của robot như: map, odom, base footprint, laser
• map là vị trí khởi tạo ban đầu của bản đồ ảo
• odom là vị trí khơi tạo ban đầu của robot trên bản đồ ảo
• base footprint là vị trí robot đang di chuyển hiện tại so với odom
• laser là vị trí của cảm biến lidar so với base footprint
• Để khởi tạo các vị trí trên, em sử dụng bộ chuyển đổi tf_static (chuyển đổi tĩnh) và tf (chuyển đổi động) bằng ngôn ngữ python
Thiết lập các thống số cho move_base
Thiết lập costmap_common_params.yaml obstacle_range: 3.0 ; raytrace_range: 3.0 frootprint: [[-0.105, -0.105], [-0.105, 0.105], [0.041, 0.105], [0.041, -0.105]] inflation_radius: 0.5 observation_sources: scan scan:{sensor_frame: laser, date_type: LaserScan, topic: scan, marking: true, clearing: true}
Thiết lập global_costmap_params.yaml global_frame: map robot_base_frame: base_footprint update_frequency: 5.0 publish_frequency: 5.0
Để thiết lập tệp local_costmap_params.yaml, chúng ta cần cấu hình các thông số như staticmap_, map: false, rolling_window: true, width: 1.5, height: 1.5 và resolution: 0.05 Để tương thích với move_base, chỉ cần thiết lập vận tốc thẳng theo trục x và vận tốc xoay, trong khi vận tốc thẳng theo trục y được đặt bằng 0 Các thông số gia tốc, vận tốc tối đa và tối thiểu phụ thuộc vào đặc tính của robot và môi trường hoạt động, do đó cần phải điều chỉnh trong quá trình thực nghiệm để đạt hiệu quả tối ưu Hai thông số quan trọng là yaw_goal_tolerance và xy_goal_tolerance, giúp xác định khi nào robot đã đến đích Việc lựa chọn các thông số này hợp lý là rất cần thiết để robot có thể đến đúng vị trí mong muốn với sai số nhỏ nhất về vị trí và hướng Nếu thiết lập các thông số này quá nhỏ, robot sẽ chính xác hơn nhưng không thể nhận diện đã đến đích do sai số từ cảm biến hoặc độ trượt Ngược lại, nếu các thông số này quá lớn, robot có thể tự nhận đã đến đích trước khi thực sự đạt được vị trí mong muốn.
Hình 3.62 Bản đồ sau khi quét tại Công ty I&C
Kết hợp cánh tay Robot 6 bậc tự do lên Robot tự hành
3.3.1 Thiết kế cơ khí phần tủ liên kết giữa 2 Robot
Thiết kế phần thân kết nối giữa Robot tự hành và cánh tay Robot trên phần mềm Solidworks 2021 đóng vai trò quan trọng, không chỉ là khung liên kết mà còn là tủ điện cho toàn bộ hệ thống.
Sử dụng nhôm định hình kích thước 80x40mm, bài viết đề cập đến tổng cộng 23 đoạn với các kích thước cụ thể: 2 đoạn dài 1000mm, 4 đoạn dài 240mm, 9 đoạn dài 360mm, 2 đoạn dài 400mm, 2 đoạn dài 560mm, 2 đoạn dài 200mm và 2 đoạn dài 720mm.
Hình 3.63 Các hình chiếu của khung liên kết 2 Robot
Hình 3.64 Thiết kế phần thân liên kết 2 robot
Hình 3.65 Quá trình gia công phần thân liên kết
Hình 3.66 Quá trình lắp ráp kết hợp 2 robot
3.3.2 Thiết kế phần điện Robot kết hợp
3.3.2.1 Sơ đồ phân phối nguồn toàn hệ thống
Hệ thống sử dụng nguồn Acquy 24V-30Ah, được tạo thành từ 2 Acquy 12V-30Ah nối tiếp Nguồn điện được phân phối qua công tắc có khóa, nút dừng khẩn và MCB tổng đến 3 MCB Honeywell.
MCB Honeywell 20A để bật tắt nguồn cho cánh tay Robot bao gồm mạch điều khiển và 6 Driver EZI-Servo Plus-R
MCB Honeywell 5A để bật tắt nguồn hệ thống máy tính và các mạch giảm áp cho camera, router,…
MCB Honeywell 5A được nối tiếp thêm 1 nút dừng khẩn cấp để bật tắt nguồn cho 2 Driver AZD-KD điều khiển 2 servo cho việc dẫn động Robot tự hành
Hình 3.67 Sơ đồ phân phối nguồn hệ thống
3.3.2.2 Sơ đồ truyền thông toàn hệ thống
Hệ thống có thể chia làm 2 phần:
Phần 1: AMR Robot Đây là phần chứa máy tính chạy ROS và giao tiếp với các depth camera thông qua 3.0 để thực hiện các tác vụ xử lý ảnh Để dẫn động Robot thì các Driver giao tiếp với máy tính thông qua module chuyển đổi USB to RS485 Cho việc SLAM và Navigation có IMU được chuyển đổi từ I2C sang USB nhờ module chuyển đổi, LiDAR truyền thông TCP/IP được kết nối đến Switch Ethernet, tại Switch này đồng thời được cắm dây Ethernet của Máy tính và từ Router để phục vụ cho việc điều khiển và giao tiếp qua mạng cục bộ
Phần 2: ARM Robot Đây là phần cánh tay Robot 6 bậc tự do Các ngõ vào như cảm biến, đầu ra relay, mosfet để điều khiển các đèn báo, thiết bị gắn tại cơ cấu chấp hành đều được kết nối đến board điều khiển Board điều khiển sẽ nhận lệnh điều khiển cánh tay Robot từ máy tính thông qua cổng RS-232 hoặc cũng có thể chạy JOG độc lập
Hình 3.68 Sơ đồ truyền thông và giao tiếp trong hệ thống
3.3.3 Lập trình kết hợp cánh tay Robot 6 bậc tự do và Robot tự hành
Hình 3.69: Nguyên lý hệ thống
3.3.3.2 Hiệu chỉnh máy ảnh – Camera Calibration bằng Chessboard Để hiệu chỉnh camera do hiện tượng biến dạng ống kính, cần thực hiện một quá trình gọi là hiệu chỉnh camera (camera calibration) Quá trình này giúp xác định các tham số camera như ma trận camera và các hệ số méo để khử méo hình ảnh chụp từ camera
Bước đầu tiên trong quá trình thu thập dữ liệu là chụp nhiều bức ảnh của bảng hiệu chỉnh hoặc bảng kiểm tra, chú ý đến các điểm đặc biệt Đảm bảo rằng bảng đen hoặc các điểm trên bảng được phân tán đều trong khung hình Có nhiều loại bảng để lựa chọn, bao gồm Chessboard và ArUcoChessboard (ChArUco).
Hình 3.70 Bảng cho quá trình hiệu chỉnh
Bước 2: Tiến hành hiệu chỉnh máy ảnh bằng thư viện OpenCV, sử dụng hàm findChessboardCorners để xác định các góc trên bảng Sau đó, hàm calibrateCamera được áp dụng để tính toán ma trận camera và các hệ số méo, bao gồm hai loại biến dạng chính: biến dạng xuyên tâm và biến dạng tiếp tuyến.
Biến dạng xuyên tâm có thể biểu diễn như sau [33]:
Hiện tượng méo tiếp tuyến xuất hiện khi thấu kính chụp ảnh không được căn chỉnh song song hoàn hảo với mặt phẳng tạo ảnh, dẫn đến một số khu vực trong ảnh có thể trông gần hơn so với dự kiến Mức độ biến dạng tiếp tuyến có thể được biểu diễn một cách chính xác.
Vậy 5 tham số (hệ số) biến dạng cần được cho bởi [33]:
Ngoài các hệ số biến dạng, cần có thêm thông tin về các thông số bên trong và bên ngoài của máy ảnh, bao gồm tiêu cự (f x , f y ) và tâm quang học (c c x , c y) Ma trận này là duy nhất cho mỗi camera.
Hình 3.71 Quá trình Camera Calibration
Sau khi thực hiện calib cho 2 camera trong hệ thống thu được các thông số sau: Đối với Camera Microsoft Azure Kinect:
(3.58) Đối với Camera Microsoft Kinect V2 – Xbox One:
3.3.3.3 Ước tính tư thế – 6DoF Pose Estimation bằng ArUco Marker Để có thể lấy được vật trên trạm lấy hàng cần phải xác định được hướng và vị trí của đối tượng cần lấy, để giải quyết bài toán này việc ước tính tư thế là cần thiết Uớc tính tư thế 6DoF (6 Degrees of Freedom Pose Estimation) là quá trình xác định vị trí và định hướng của một đối tượng trong không gian ba chiều 6DoF bao gồm ba dịch chuyển (thường là theo các trục x, y, z) và ba góc xoay (quanh các trục x, y, z), tổng cộng là sáu thông số tự do
Có nhiều phương pháp để ước tính tư thế, nhưng chủ yếu có hai cách chính: sử dụng marker hoặc áp dụng trí tuệ nhân tạo (AI) Trong bài viết này, tôi chọn sử dụng marker vì một số lý do cụ thể.
ArUco Marker giúp ước tính tư thế đối tượng một cách ổn định nhờ vào việc chỉ xử lý trên ảnh xám đơn giản và ít bị ảnh hưởng bởi sự thay đổi của môi trường xung quanh.
Hệ thống có khả năng tái sử dụng linh hoạt, cho phép người dùng dễ dàng thay đổi hàng hóa chỉ bằng cách đổi mã mà không cần can thiệp sâu vào hệ thống hoặc thực hiện quá nhiều sửa đổi trong chương trình.
Hình 3.73 Ma trận chuyển vị từ Camera đến ArUco Marker
Hình 3.74: Nguyên lý quá trình Pose Estimation
3.3.3.4 Căn chỉnh ảnh Depth và Color – Depth Alignment
Do giới hạn phần cứng, Depth camera và RGB camera không thể được đặt trùng khít, dẫn đến sự lệch giữa chúng Khi đọc ảnh từ camera RGB và ánh xạ pixel qua Depth, vị trí thông tin chiều sâu không chính xác Do đó, cần thực hiện bước căn chỉnh giữa ảnh Depth và Color (RGB) để đảm bảo đồng nhất về góc nhìn và kích thước ảnh.
Hình 3.75 Độ lệch giữa Depth camera và RGB camera trên Azure Kinect [35]
KẾT QUẢ
Kết quả phần cứng
Hệ thống phần cứng hoàn thiện bao gồm hai Robot kết hợp: một cánh tay Robot 6 bậc tự do được thiết kế và gia công bằng CNC, kết hợp với một Robot tự hành có khung sắt 30x30mm dày 2mm Hai Robot này được liên kết thông qua phần thân giữa làm từ nhôm định hình 80x40mm Mặt trước của thiết bị được trang bị màn hình điều khiển cùng một số nút nhấn để thao tác dễ dàng.
Hình 4.1 Tổng thể Robot sau khi hoàn thiện
Trạm lấy hàng bằng gỗ ép có kích thước 56cm chiều dài, 42cm chiều rộng và 62cm chiều cao Mặt bên của trạm được dán ArUco Marker với ID riêng biệt để dễ dàng phân biệt.
Hình 4.2 Robot và trạm lấy hàng
Hình 4.3 Tủ điện Robot trong quá trình đấu dây và thử nghiệm
Hình 4.4 Tủ điện Robot sau khi đóng máng nhựa
Kết quả phần mềm
4.2.1 Giao diện Teach Pendant điều khiển cánh tay Robot
Các giao diện điều khiển Robot được chạy trên màn hình Nextion 7 inches cảm ứng điện dung và được thiết kế giao diện trên phần mềm Nextion Editor
Hình 4.7 Trang Kinematic Encoder Mode
Hình 4.8 Trang Kinematic Slider Mode
Hình 4.9 Trang chọn hướng khâu chấp hành
Hình 4.12 Trang chế độ giao tiếp với Robot tự hành qua RS-232
4.2.2 Giao diện phần mềm Rviz điều khiển Robot tự hành
Sau khi điều khiển Robot di chuyển trong khu vực hoạt động, quá trình SLAM với Hector SLAM sẽ bắt đầu xây dựng và khởi tạo bản đồ phục vụ cho việc điều hướng.
Hình 4.15 Bản đồ đã khởi tạo
Hình 4.16 Giao diện Rviz thể hiện bản đồ cho việc Navigation
4.2.3 Kết quả các chương trình xử lý ảnh và ước tính tư thế
Sau khi thu thập ảnh RGB và ảnh Depth từ Camera Depth, bước tiếp theo là thực hiện căn chỉnh ảnh Depth (Depth Alignment) để đồng bộ hóa góc nhìn của hai camera Điều này giúp cho việc xử lý ảnh và ước lượng vị trí (pose estimation) trên ảnh RGB khớp với thông tin chiều sâu từ ảnh Depth Kết quả cuối cùng là ảnh RGB và ảnh RGB kết hợp với chiều sâu (RGBD).
Hình 4.17 Ảnh RGB và ảnh RGB to Depth (RGBD) sau khi đã căn chỉnh
Sau khi đồng bộ hóa hình ảnh RGB và Depth, chúng ta tiến hành xác định các hệ số biến dạng và ma trận của camera thông qua phương pháp hiệu chỉnh camera sử dụng bàn cờ (Chessboard) trong quá trình hiệu chỉnh camera.
Hình 4.18 Quá trình hiệu chỉnh Camera
124 Để biết được vị trí và hướng của vật thể trong không gian, em sử dụng ArUco Marker để ước tính tư thế (Quá trình Pose Estimation)
Hình 4.19 Kết quả quá trình Pose Estimation trên ArUco Marker
Hình 4.20 Kết quả của các quá trình từ Depth Alignment đến Pose Estimation
Kết quả thu được có dạng:
Hình 4.21 Các thông số thu được sau quá trình xử lý ảnh
ID là mã số của ArUco Marker, trong khi X và Y đại diện cho tọa độ pixel của marker trên ảnh Các vectơ tvec và rvec chỉ định vị trí và hướng của marker, tương ứng Ma trận xoay được chuyển đổi từ vectơ rvec, trong khi Depth cung cấp thông tin độ sâu tại pixel có marker.
Thực nghiệm
4.3.1 Tự động di chuyển đến đích khi không có vật cản
Hình 4.22 Tự động di chuyển đến đích khi không có vật cản
Hình 4.23 Điểm xuất phát của robot
4.3.2 Tự động di chuyển đến đích khi có vật cản Đối với vật cản tĩnh:
Hình 4.24 Tự động di chuyển đến đích khi có vật cản phát sinh
Hình 4.25 Robot khi gặp vật cản
Robot sẽ nhận diện con người như một vật cản tĩnh và tự động di chuyển để tránh, nhưng nếu vật cản vẫn di chuyển và cản trở đường đi của Robot, nó sẽ dừng lại trong 30 giây Nếu vật cản không di chuyển sau thời gian đó, Robot sẽ tìm một lối đi mới Tuy nhiên, nếu sau 2 phút mà không tìm được đường mới do không đủ không gian hoặc không còn lối đi phù hợp, Robot sẽ hủy tác vụ và gửi cảnh báo.
4.3.3 Kết quả điều chỉnh tư thế Robot tự hành khi đến trạm Để điều chỉnh tư thế Robot khi đến trạm lấy hàng, trên trạm hàng được dán mã ArUco nhằm để phân biệt trạm và để ước tính tư thế của marker tại trạm so với robot từ đó tìm ra 3 góc lệch Roll, Pitch, Yaw Chỉ lấy góc Roll để so sánh góc lệch của mặt trước Robot so với mặt trước của trạm lấy hàng
Hình 4.26 Điều chỉnh tư thế Robot bằng ArUco Marker
Hình 4.27 Thông tin trả về từ Pose Estimation để tìm góc Roll
Kết quả thử nghiệm cho thấy khi sai số góc tối đa là 10 độ và sai số khoảng cách tối đa là 30 cm, hiệu suất điều chỉnh tư thế của Robot tự hành được ghi nhận trong Bảng 4.1.
Lần thử Thông số Chương trình Thực tế Độ chính xác (%)
Góc lệch (độ) -5.687 -5 87.9 Độ chính xác góc: 81.9%, Độ chính xác khoảng cách: 93.6%
Độ chính xác về khoảng cách đạt 93.6%, nhờ vào việc sử dụng Depth Camera để thu thập thông tin độ sâu kết hợp với vectơ tvec từ Pose Estimation bằng ArUco Marker, tăng cường độ tin cậy Tuy nhiên, độ chính xác về góc chỉ đạt 81.9% do gặp phải vấn đề nhiễu hạt trong điều kiện ánh sáng yếu và thuật toán chưa được tối ưu hóa.
4.3.4 Kết quả lấy hàng tại trạm bằng cánh tay Robot
Việc lấy hàng tại trạm diễn ra sau khi Robot tự hành hoàn tất việc điều chỉnh tư thế Cánh tay Robot được trang bị Depth Camera Microsoft Azure Kinect, giúp ước tính chính xác tư thế của khay chứa hàng hóa trên trạm.
Hình 4.29 Pose Estimation marker dán trên khay để hàng khi ánh sáng đầy đủ
Hình 4.30 Pose Estimation marker dán trên khay để hàng khi ánh sáng yếu
Hình 4.31 Robot lấy hàng thành công trường hợp marker ánh sáng đầy đủ
Hình 4.32 Robot lấy hàng thành công trường hợp marker ánh sáng yếu
Bảng 4.2 Kết quả thử nghiệm 10 lần lấy hàng với điều kiện ánh sáng khác nhau
Lần thử Điều kiện ánh sáng
Góc lệch giữa tool với khay hàng (độ)
1 Bình thường (ánh sáng tự nhiên) 3 Thành công
2 Bình thường (ánh sáng tự nhiên) 9 Thành công
3 Mạnh (có đèn chiếu) - Thất bại
4 Bình thường (ánh sáng tự nhiên) 6 Thành công
5 Mạnh (có đèn chiếu) 3 Thành công
6 Yếu (tắt đèn trần) 8 Thành công
7 Bình thường (ánh sáng tự nhiên) 4 Thành công
8 Mạnh (có đèn chiếu) 10 Thành công
9 Yếu (tắt đèn trần) - Thất bại
10 Bình thường (ánh sáng tự nhiên) 5 Thành công
Ánh sáng có ảnh hưởng lớn đến tỷ lệ lấy hàng thành công, như thể hiện qua bảng kết quả Mặc dù góc lệch giữa công cụ và khay hàng hóa chỉ ảnh hưởng ít đến tỷ lệ này, nhưng độ lệch trung bình khoảng 6 độ vẫn cần được lưu ý Độ lệch này có thể xuất phát từ việc hiệu chỉnh camera chưa chính xác Tuy nhiên, với độ lệch này, việc Robot tự động di chuyển và đặt hàng hóa lên xe vẫn có thể chấp nhận được, vì hàng hóa sẽ bị lệch đôi chút trong quá trình di chuyển.