Tiếp là hệ điều khiển tự động nghĩa là rô bốt sẽ lấy chương trình mà người dùng đã thiết lập từ trước đọc theo từng dòng lệnh, kiểm tra điều kiện và thao thác từ đầu đến cuối - Cơ cấu ch
Tổng quan hệ thống Rô bốt lưu kho tự động
Rô bốt công nghiệp
Thuật ngữ “Rô bốt” khởi đầu có ý nghĩa là công việc tạp dịch Đầu thập kỷ
Các công ty Mỹ như AMF đã giới thiệu các loại máy tự động vạn năng, tiêu biểu là “Người máy công nghiệp” nhằm đáp ứng nhu cầu gia công các chi tiết trong ngành chế tạo máy bay Sự phát triển của các máy công cụ điều khiển số đã mở ra bước tiến lớn trong gia công chính xác và hiệu quả Trong những năm gần đây, khả năng hoạt động của rô bốt không ngừng được nâng cao nhờ việc trang bị đa dạng cảm biến để nhận biết môi trường xung quanh, cùng thành tựu trong lĩnh vực tin học - điện tử Rô bốt công nghiệp ngày càng giữ vị trí quan trọng trong các dây chuyền sản xuất hiện đại, giúp thay thế sức lao động con người, nâng cao tính tự động hoá, giảm thiểu tác động của yếu tố con người và tăng năng suất Đặc biệt, rô bốt có khả năng làm việc bền bỉ trong thời gian dài, chống chịu môi trường độc hại, phóng xạ, và nhạy bén hơn con người nhờ hệ thống cảm biến tiên tiến.
Rô bốt công nghiệp là cơ cấu chuyển động có thể lập trình và lặp đi lặp lại các chương trình trên các trục tọa độ nhằm đối chiếu với nhiệm vụ và chức năng công việc khác nhau Khả năng định vị và định hướng các đối tượng theo các chu trình lập trình giúp robot thực hiện các nhiệm vụ một cách chính xác và hiệu quả Rô bốt công nghiệp là thành phần không thể thiếu trong các hệ thống sản xuất hiện đại nhờ tính linh hoạt và khả năng tự động hóa cao.
Bậc tự do của rô bốt đề cập đến số khả năng chuyển động của các cơ cấu, bao gồm chuyển động quay hoặc tịnh tiến, giúp robot có thể dịch chuyển một vật thể trong không gian một cách linh hoạt và chính xác Việc hiểu rõ bậc tự do là yếu tố quan trọng để thiết kế hệ thống robot phù hợp với các nhiệm vụ công nghiệp hoặc thực hiện các hoạt động phức tạp trong môi trường đa dạng Bậc tự do càng cao, khả năng linh hoạt và phạm vi hoạt động của robot càng lớn, đáp ứng tốt các yêu cầu về dịch chuyển và thao tác vật thể.
Hệ toạ độ: Mỗi rô bốt thường bao gồm nhiều khâu liên kết với nhau qua các khớp, tạo thành một xích động học xuất phát từ một khâu cơ bản đứng yên Hệ toạ độ trung gian khác gắn với các khâu động gọi là hệ toạ độ suy rộng
Hình 1.1 - Toạ độ suy rộng của rô bốt O0 đến On
Hệ cấu trúc cơ bản của rô bốt công nghiệp gồm 2 phần chính là hệ thống điều khiển và cơ cấu chấp hành
- Hệ thống điều khiển tiếp nhận điều khiển từ tay cầm xử lý dựa trên thao tác của người dùng tác động lên bảng điều khiển Tiếp là hệ điều khiển tự động nghĩa là rô bốt sẽ lấy chương trình mà người dùng đã thiết lập từ trước đọc theo từng dòng lệnh, kiểm tra điều kiện và thao thác từ đầu đến cuối
Hệ thống cơ cấu chấp hành bao gồm các cảm biến giám sát để gửi tín hiệu về bộ điều khiển, giúp thực thi các lệnh trong chương trình một cách chính xác Cụm truyền động cơ khí chủ yếu sử dụng các động cơ servo có công suất và mô men phù hợp để đảm bảo hoạt động hiệu quả Phần công tác được thực hiện bởi các tool gắn trên rô bốt, đồng thời hệ thống còn bao gồm các tính toán bù từ môi trường như nhiệt độ, lực và mô men bên ngoài nhằm nâng cao độ chính xác và độ bền của quá trình sản xuất.
Hình 1.2 - Cấu trúc cơ bản của rô bốt công nghiệp
Kho hàng tự động
Trước đây, việc ra vào kho phụ thuộc chủ yếu vào sức lao động của con người, dẫn đến việc không tận dụng tối đa không gian và sức chứa kho hàng Điều này khiến việc quản lý kho diễn ra kém hiệu quả, tốn nhiều thời gian và nhân lực, đồng thời chiếm dụng nhiều diện tích để làm nhà kho chứa Hiện nay, thế giới đã phát triển nhiều hệ thống lưu trữ hàng hóa đa dạng, phù hợp với các loại thiết bị vận chuyển, cách thức thực hiện và nhu cầu sử dụng khác nhau Tuy nhiên, các hệ thống này vẫn còn một số điểm yếu cần khắc phục để tối ưu hóa hiệu quả quản lý kho hàng.
- Sử dụng nhiều diện tích
- Hàng hoá không phân loại làm mất thời gian khi xuất, nhập kho
- Khi có lượng hàng lớn sẽ chồng chất
- Lượng hàng vào ra rất khó để có thể kiểm soát số lượng
Các hệ thống kho hàng của các hãng lớn trên thế giới hiện nay nổi bật nhờ tích hợp công nghệ tự động hóa, đặc biệt là hệ thống rô bốt và hệ thống quản lý giám sát thực tế Những giải pháp này giúp tăng cường hiệu quả vận hành, tối ưu hóa quá trình lưu trữ và vận chuyển hàng hóa Việc áp dụng công nghệ tự động hóa không chỉ nâng cao độ chính xác mà còn giảm thiểu sai sót trong kho hàng Các hệ thống này còn cung cấp khả năng giám sát thời gian thực, giúp các doanh nghiệp kiểm soát và quản lý kho hàng một cách hiệu quả hơn Nhờ đó, các hãng lớn có thể duy trì quy trình lưu kho tối ưu, đáp ứng nhanh chóng nhu cầu của thị trường toàn cầu.
Hình 1.3 - Rô bốt vận chuyển hàng trong kho của Amazon
Hình 1.4 - Kho hàng tự động ASRS Cấu trúc chung của hệ thống tự động gồm 3 phần chính o Hệ thống vận chuyển o Hệ thống xuất nhập o Hệ thống lưu trữ
Phần quan tâm chính ở đây là hệ thống vận chuyển với rô bốt đã được trình bày phần trên, và hệ thống cơ sở lưu trữ dữ liệu Hệ thống vận chuyển trong kho rất đa dạng, tùy theo yêu cầu công nghệ, về hàng hóa, hình thức xuất nhập… mà có những phương thức vận chuyển hàng trong kho tương ứng Hiện nay hệ thống vận chuyển trong kho tự động ở các nước đã có áp dụng như: băng tải, rô bốt, xe tự hành, máy nâng, máy xếp dỡ…
Các rô bốt và xe tự hành là những thành phần không thể thiếu trong hệ thống kho tự động, giúp tối ưu hóa quy trình vận chuyển hàng hóa Chúng hoạt động linh hoạt trong diện tích kho theo ba trục chính, đảm nhiệm nhiệm vụ vận chuyển hàng từ cổng nhập kho tới các ô trống và lấy hàng từ các ô chứa để đưa ra cổng xuất Việc sử dụng các thiết bị tự động này giúp nâng cao hiệu suất làm việc, tăng độ chính xác và giảm thiểu sai sót trong quá trình vận hành kho hàng.
Tổng quan hệ thống xử lý hình ảnh
Tổng quan và ứng dụng mã QR code
QR code (Quick response code) là mã code phản hồi nhanh được ra đời ở Nhật Bản nhằm phục vụ cho ngành sản xuất ô tô Mã QR chứa thông tin theo cả hướng dọc và ngang đồng thời có thể chứa được lượng thông tin lớn hơn nhiều so với mã vạch barcode Có bốn chuẩn mã hoá khác nhau gồm: Số, chữ số, mã nhị phân và chữ Kanji nhằm lưu trữ dữ liệu hiệu quả hơn
Từ năm 1952 đến 1994, quá trình phát triển mã QR code đã dẫn đến sự ra đời của mã QR do công ty Denso Wave (Toyota) phát triển nhằm hỗ trợ việc theo dõi xe và các bộ phận một cách nhanh chóng và hiệu quả hơn Đến năm 2004, khoảng 80-90% trong số 500 công ty hàng đầu tại Hoa Kỳ đã sử dụng mã vạch để tối ưu hóa quản lý hàng hóa và quá trình kiểm soát kho.
Tính năng của mã QR là lưu trữ lượng thông tin lớn lên đến vài chục đến vài nghìn chữ số và ký tự (7089 ký tự trong một mã QR code) Mã QR có khả năng xử lý nhiều loại dữ liệu phức tạp, chẳng hạn như các ký tự số và chữ, Kanji, Hiragana, chữ Khmer, chữ Hán, ký hiệu và mã nhị phân
Hình 1.5 - Mã vạch và mã QR code Một tính năng khác vượt trội của mã QR mà khi mã QR bị bẩn hoặc hư hại một phần nhẹ thì vẫn có thể khôi phục và đọc được dữ liệu Bởi vì mỗi mã QR sẽ có một mức sửa lỗi nhất định (Sử dụng thuật toán sửa lỗi Reed-Solomon) để đảm bảo cho dữ liệu không bị mất đi Mức này càng cao thì lượng thông tin chứa trên mã QR sẽ bị giảm đi Từ đó người dùng có thể tuỳ biến chỉnh sửa mã QR để phù hợp với các mục đích sử dụng khác nhau
Sơ lược về thuật toán sửa lỗi Reed-Solomon:
Trong quá trình gửi dữ liệu qua đường truyền, các bit có thể bị sai lệch do nhiễu trên kênh truyền Để đảm bảo dữ liệu không bị lỗi, ta cần thêm các bit giám sát vào trong dữ liệu gửi đi Việc gửi thêm các bit này giúp phát hiện và khôi phục các bit bị sai lệch, đảm bảo tính toàn vẹn của thông tin khi truyền qua kênh truyền.
Dù nằm ở vị trí nào dù ngược - xuôi ngang - dọc thì việc đọc mã vẫn dễ dàng mà không cần xoay chỉnh thiết bị đọc mã cho đúng định dạng Khả năng này có được chủ yếu nhờ cấu trúc của mã QR có các văn định vị nên mã QR có thể được đọc ở 360 0
Hình 1.6 - Cấu tạo mã QR Code Dấu vị trí (Find pattern): Biểu thị hướng khi in mã QR
Ký hiệu căn chỉnh (Alignment pattern: Đây là phần bổ sung giúp cho máy quét xác định dễ dàng hơn khi mã QR có kích thước lớn
Mẫu thời gian (Timing pattern): Những dòng này giúp máy quét xác định chính xác độ lớn của dữ liệu
Thông tin phiên bản (Version information): Quy định về phiên bản mà mã
QR đang sử dụng trong 40 phiên bản đang có hiện nay (21x21, 25x25 đến 177x177)
Thông tin định dạng (Format information): chứa thông tin về mặt nạ dữ liệu và khả năng chịu lỗi của mã giúp cho việc quét mã được dễ dàng
Dữ liệu và phím sửa lỗi (Data): Là phần chứa dữ liệu thực tế
Khu vực tĩnh (Quiet zone): Vạch phân cách giúp cho các thiết bị quét phân biệt được mã QR với các môi trường ngoài mã
Tính năng Cấu trúc phụ thêm (Structured Append) cho phép mã QR chia thành nhiều vùng dữ liệu riêng biệt, giúp truyền tải thông tin hiệu quả hơn Ngược lại, các dữ liệu lưu trữ trong nhiều biểu tượng mã QR có thể được hợp nhất, tái tạo thành một ký hiệu duy nhất để đơn giản hóa quá trình quét và xử lý Tính năng này tối ưu hoá khả năng quản lý thông tin và nâng cao hiệu suất sử dụng mã QR trong các ứng dụng đa dạng.
1.2.1.2 Ứng dụng của mã QR code trong sản xuất và đời sống
Kiểm kê hàng hóa, thông tin sản phẩm
- Thông tin cá nhân: trên card visit, số tài khoản ngân hàng
- Lưu trữ URL: điện thoại chỉ việc đọc mã QR để lấy URL, sau đó tự động mở trình duyệt
- Sử dụng tại siêu thị: để biết được thông tin, hướng dẫn nấu ăn cũng như hàm lượng dinh dưỡng của những thức ăn cần mua
- Sử dụng tại các buổi hội thảo, thuyết trình, tổ chức sự kiện: người tham gia có thể sử dụng mã QR thay cho Business Card của mình
Mã QR ngày càng được sử dụng trong truyền thông quảng cáo để thay thế các hình thức quảng cáo in ấn và phát tờ rơi truyền thống Đặc biệt, mã QR sẽ đính kèm thông tin thương hiệu trên các ấn phẩm marketing, bảng hiệu cửa hàng và các bảng quảng cáo lớn như billboard, giúp nâng cao nhận diện thương hiệu một cách hiệu quả và tiện lợi.
Tổng quan đo kích thước vật thể
Khi nhập hàng vào kho thì các hộp hàng sẽ có kích thước khác nhau để có thể thuận lợi cho quá trình phân loại tránh được tốn diện tiện tích khi hộp nhỏ để vào gian hàng lớn hoặc là hộp hàng quá lớn không đặt vừa gian hàng nhỏ thì trước khi nhập hàng ta có thể tích hợp hệ thống nhận diện đo kích thước của hộp hàng từ đó sẽ tối ưu được diện tích của kho hàng
Thêm vào đó xác định thêm góc lệch của hàng so với hệ toạ độ gốc và gửi độ lệch để rô bốt có định hướng gắp chuẩn hàng từ băng tải đặt chính xác vào kho Theo logic thông thường muốn đo kích thước vật thể trong ảnh ta phải biết được các yếu tố: khoảng cách từ camera đến vật, tiêu cự của camera, góc chụp
Hình 1.7 - Thông số cần để đo kích thước cây
Như trên hình 1.7 cần biết khoảng cách x, góc chụp đến ngọn cây và mỗi pixel tương ứng sang mm của ảnh Và cần hiệu chỉnh camera ước tính các thông số ống kính và cảm biến hình ảnh của máy ảnh
Phương pháp đo kích thước vật thể thứ hai sử dụng vật tham chiếu, bao gồm việc chọn một vật tham chiếu rõ ràng trong ảnh và đặt cùng với vật cần đo để xác định quy ước về số pixel tương ứng với một đơn vị đo lường cụ thể Từ đó, ta có thể tính kích thước thật của vật bằng cách nhân số pixel của vật trong ảnh với giá trị pixel đã xác định Tuy nhiên, phương pháp này có thể gặp sai số do ảnh chụp ở góc nghiêng hoặc do độ lồi, lõm của thấu kính camera ảnh hưởng đến độ chính xác; do đó, cần thực hiện hiệu chỉnh camera phù hợp cho các hệ thống yêu cầu cao về độ chính xác kích thước.
Hình 1.8 - Đo vật thể với OpenCV bằng đối tượng tham chiếu Với đo độ lệch của vật thể thì từ bốn điểm xác định được của hình chữ nhật bao quanh vật thể sẽ tính được góc lệch của vật so với trục Ox hoặc là Oy của hệ tuỳ theo quy ước đặt trên rô bốt Toạ độ tâm của vật thì sẽ được sử dụng tích phân đề tính trọng tâm của hình chữ nhật bao quanh sẽ thu được toạ độ và gửi cả
3 thông số (x, y) và góc lệch T về để rô bốt bù độ lệch và gắp vật thể Phương pháp cụ thể trình bày trong chương 3
Hình 1.9 - Mô tả xác định độ lệch điểm và góc của khối Rubik
Nhận diện QR code và đo vật thể với thư viện OpenCV
OpenCV (Open Source Computer Vision Library): được phát hành dưới giấy phép BSD và do đó nó miễn phí cho cả việc sử dụng học thuật và thương mại
OpenCV hỗ trợ các ngôn ngữ lập trình như C++, Python và Java để phù hợp với nhiều nhu cầu phát triển phần mềm Thư viện này tương thích với các nền tảng phổ biến như Windows, Linux, Mac OS, iOS và Android, đáp ứng đa dạng môi trường hoạt động Thiết kế của OpenCV tập trung vào hiệu quả tính toán cao và tối ưu cho các ứng dụng thời gian thực, giúp xử lý hình ảnh và video nhanh chóng và chính xác Viết bằng ngôn ngữ C/C++, thư viện tận dụng tối đa lợi thế của chế biến đa lõi để nâng cao hiệu suất xử lý Ngoài ra, với khả năng bật mở với OpenCL, OpenCV có thể tận dụng tăng tốc phần cứng của các nền tảng tính toán không đồng nhất, mang lại hiệu quả tối ưu trong các ứng dụng đòi hỏi xử lý mạnh mẽ.
- Image/video I/O, xử lý, hiển thị (core, imgproc, highgui)
- Phát hiện các vật thể (objdetect, feature2d)
- Chụp ảnh điện toán (photo, video)
- Machine learning & thu thập dữ liệu (ml, flann)
- Tăng tốc CUDA (GPU) Ứng dụng của OpenCV rất rộng rãi gồm:
- Hình ảnh khung cảnh đường phố
- Kiểm tra và giám sát tự động
- Rô bốt và xe tự hành
- Phân tích hình ảnh y tế
- Tìm kiếm phục hồi ảnh, video
Với các chức năng và sự hỗ trợ của thư viện OpenCV sẽ là công cụ chính để xử lý ảnh nhận diện giải mã và tạo mã QR code cũng như xử lý nhận diện và đo kích thước, độ lệch của vật thể trong để tài
Tổng quan Internet of Things
Khái niệm IoT
Internet of Things (IoT) là công nghệ kết nối tất cả các vật thể xung quanh chúng ta như máy móc, thiết bị, điện thoại di động, ô tô và các thành phố thông qua internet, giúp chúng giao tiếp và chia sẻ dữ liệu một cách liền mạch Các thiết bị IoT được tích hợp với các thành phần định danh rõ ràng, phần mềm thông minh và cảm biến để nâng cao hiệu quả vận hành và khả năng tự động hóa Nhờ đó, cuộc sống hàng ngày trở nên thuận tiện, an toàn và hiệu quả hơn, đồng thời mở ra nhiều cơ hội phát triển cho các thành phố thông minh và các ngành công nghiệp.
- Cảm biến: Thu thập dữ liệu
- Bộ định danh: định nghĩa các nguồn dữ liệu (bao gồm các cảm biến và các thiết bị thu thập dữ liệu khác)
- Phần mềm: Phân tích dữ liệu thu được
- Kết nối mạng: Giao tiếp truyền thông dữ liệu thu được và dữ liệu đã phân tích lên mạng
Hệ thống IoT bắt đầu từ việc các máy tính kết nối với nhau, sau đó mở rộng thành mạng lưới máy tính toàn cầu, tạo ra một web rộng khắp gần như khắp mọi nơi trên thế giới Ý tưởng chính là sử dụng internet để kết nối con người và các thiết bị công nghệ, giúp mọi thứ trở nên kết nối liên tục và dễ dàng truy cập Nhờ vào sự phát triển của hạ tầng internet hiện có, con người ngày càng kết nối không chỉ với nhau mà còn với các đồ vật, và cuối cùng, các đồ vật cũng có thể kết nối với nhau để tạo thành hệ sinh thái IoT thông minh và tích hợp.
Hình 1.11 - Con người kết nối với các thiết bị giám sát
Sự phát triển của IoT đang thu hút ngày càng nhiều vốn đầu tư, thể hiện tầm quan trọng của công nghệ này trong lĩnh vực kinh doanh Các doanh nghiệp hàng đầu đang tiên phong trong việc ứng dụng các giải pháp IoT để nâng cao năng suất và tối ưu hóa hoạt động kinh doanh Có ba cách chính mà IoT giúp doanh nghiệp tăng hiệu quả kinh doanh, bao gồm cải thiện quy trình vận hành, tối ưu hóa chuỗi cung ứng và nâng cao trải nghiệm khách hàng.
1) giảm chi phí hoạt động
2) tăng hiệu quả lao động
3) phát triển các thị trường mới hoặc phát triển các sản phẩm mới.
Các ứng dụng và thách thức của IoT
- Đời sống: Kiểm soát thiết bị thông minh trong nhà (Smart home), tối ưu hoá năng lượng của thiết bị sử dụng
- Sản xuất quản lý kho: Theo dõi sản phẩm trong kho, kiểm soát tồn kho
- Y học: Thiết bị đeo giám sát sức khoẻ, đồng hồ thông minh
- Quản lý Ô tô: bãi đỗ xe thông minh, theo dõi lưu lượng giao thông, chống trộm
- Môi trường: Dự báo thời tiết, Kiểm soát độ bụi, chất lượng không khí
- Nông nghiệp: Giám sát quá trình mùa vụ, độ ẩm, nhiệt độ
- Rất nhiều chuẩn công nghệ khác nhau nên khó đồng bộ hệ thống
Vấn đề bảo mật mạng chưa được đảm bảo tốt khiến hệ thống dễ bị tấn công trên internet, dẫn đến các thiết bị hoạt động sai chức năng hoặc bị đánh cắp dữ liệu quan trọng Việc tăng cường các biện pháp bảo mật mạng là cần thiết để giảm thiểu các rủi ro về an ninh thông tin và bảo vệ dữ liệu của tổ chức Các lỗ hổng bảo mật hiện tại đang đặt ra mối đe dọa lớn, gây ảnh hưởng tiêu cực đến hoạt động kinh doanh và uy tín của doanh nghiệp Chính vì vậy, việc nâng cao nhận thức về an toàn mạng và áp dụng các giải pháp bảo vệ phù hợp là điều cấp thiết để đảm bảo an ninh mạng toàn diện.
- Công nghệ đổi mới quá nhanh chính phủ không quản trị kịp về các vấn đề quyền riêng tư, bảo mật không có cơ quan quản lý điều hành chung.
Các nghiên cứu về lĩnh vực liên quan
Cùng đề tài liên quan đến hệ thống lưu kho tự động ứng dụng IoT em đã tham khảo các tài liệu liên quan về các công nghệ sử dụng ở nước ngoài trong thời đại ngày nay từ đó có thể cập nhật cho mô hình hệ thống của mình được tối ưu theo
Nghiên cứu của Guoqing Zhang và cộng sự tập trung vào hệ thống tích hợp IoT giúp tối ưu hóa quá trình lưu trữ hàng hóa trong kho, đặc biệt trong các công ty thực phẩm có nhiều mặt hàng nhưng không gian hạn chế Hệ thống này kết hợp kế hoạch sản xuất với chính sách sắp xếp lưu trữ ngẫu nhiên, sử dụng mô hình ILP động để phân công hàng hóa qua nhiều giai đoạn nhằm tận dụng khả năng hiển thị và truy xuất nguồn gốc của IoT Một thuật toán kinh nghiệm được phát triển để tìm giải pháp gần tối ưu cho các vấn đề thực tế quy mô lớn, giúp giảm đáng kể tổng chi phí (lên đến 16,84%) và tăng khả năng sử dụng không gian kho (lên đến 26,1%), qua đó nâng cao hiệu quả trong quản lý lưu trữ kho bãi trong các ngành công nghiệp lớn.
Hình 1.13 - Giải thuật kinh nghiệm cho hệ thống lưu kho Trong bài báo horizontal automated storage and retrieval system [10] của tác giả Jacek S Tutak xuất bản trên tạp chí nghiên cứu khoa học và công nghệ Vol
Bài báo trình bày hệ thống xuất nhập kho tự động theo phương ngang dựa trên Raspberry Pi, tập trung vào việc lựa chọn các phần tử kết cấu và cơ cấu chấp hành phù hợp Hệ thống được phát triển bằng thuật toán tối ưu phối hợp với Raspberry Pi và tích hợp giao diện màn hình cảm ứng thân thiện người dùng Đặc điểm nổi bật của hệ thống là tính mô đun cao, giúp dễ dàng mở rộng và tùy chỉnh theo nhu cầu kho vận Công nghệ này mang lại giải pháp quản lý kho hiệu quả, giảm thiểu sai sót và nâng cao năng suất vận hành.
Máy lưu trữ dễ dàng thích ứng với các thay đổi về thể tích và không gian phù hợp với từng kho hàng khác nhau Hệ thống điều chỉnh theo chiều dọc bằng cách thay đổi số lượng đường cong dựa trên chiều rộng và chiều cao, đồng thời điều chỉnh theo chiều ngang bằng cách xác định kích thước thùng chứa theo chiều rộng và chiều sâu Ngoài ra, hệ thống còn điều chỉnh cả chiều ngang và chiều dọc bằng cách xác định số lượng thùng chứa theo chiều rộng và chiều sâu, cùng với các module chịu trách nhiệm lưu trữ theo chiều cao Máy lưu trữ cung cấp 3 chế độ hoạt động trên màn hình cảm ứng: thêm sản phẩm mới, xóa mục đã chọn và lấy sản phẩm từ kho, giúp tối ưu hóa quy trình lưu trữ và truy xuất hàng hóa.
Các hệ kho chứa vật liệu đặc biệt được thiết kế tối ưu để lưu trữ và truy xuất, đảm bảo hiệu quả hoạt động của hệ thống Bài viết đã phân tích sâu về thiết kế cấu hình và tối ưu hóa hệ lưu trữ và truy xuất tự động (AS/RS), đồng thời đề xuất thuật toán NIGA kết hợp với mô hình lập trình xếp chồng kép hai đầu (TDSM) để điều chỉnh cấu trúc thuật toán phù hợp với mật độ giá trị và tối ưu hóa đường đi của bộ xếp chồng Trong TDSM, nguyên tắc chống va chạm nâng cao được phát triển nhằm tránh va chạm giữa hai bộ xếp chồng, cùng với cơ chế kiểm tra ranh giới chống va chạm tối ưu để xác định vị trí làm việc tốt nhất cho các bộ xếp chồng Thuật toán di truyền cải tiến mới (NIGA) được sử dụng để phân bổ khu vực làm việc hiệu quả, và kết quả mô phỏng cho thấy NIGA hoạt động tốt hơn so với thuật toán di truyền truyền thống (GA) trong hầu hết các trường hợp, chứng tỏ đây là một phương pháp hiệu quả cho hệ thống AS/RS.
Nội dung nghiên cứu của luận văn
Trong luận văn này, tôi nghiên cứu ứng dụng IoT và xử lý hình ảnh để phát triển hệ thống kho hàng tự động, giúp quản lý hàng hóa dễ dàng trên các thiết bị di động, laptop hoặc PC kết nối mạng Hệ thống cho phép kiểm soát trạng thái kho hàng từ xa, đồng thời sử dụng thuật toán xử lý hình ảnh để đo kích thước hộp hàng và in mã QR Code nhằm phân loại hàng theo kích thước và loại, tăng tốc quá trình xuất nhập hàng theo yêu cầu Cơ sở thiết kế dựa trên ngôn ngữ lập trình C để điều khiển Arduino MEGA thông qua module điều khiển động cơ và cơ cấu chấp hành robot vận hành lấy và trả hàng tự động Thuật toán QREncode và QRDecode được áp dụng để tạo và giải mã mã QR, kết hợp với thuật toán xử lý hình ảnh bằng Python và thư viện OpenCV để đo kích thước và độ lệch của hộp hàng so với hệ tọa độ gốc Ngoài ra, hệ thống còn xây dựng webserver IoT sử dụng framework PHP Laravel để giám sát dữ liệu và quá trình vận hành của kho hàng theo thời gian thực.
Hệ thống xử lý ảnh là công nghệ sử dụng các phương pháp tự động phân tích và kiểm tra hình ảnh Ứng dụng của công nghệ này bao gồm kiểm tra tự động, phân loại sản phẩm, điều khiển quá trình và dẫn hướng cho robot công nghiệp Nhờ vào hệ thống xử lý ảnh, các quá trình sản xuất trở nên chính xác và hiệu quả hơn, đồng thời giảm thiểu sai sót trong kiểm tra chất lượng Đây là một công nghệ tiên tiến đóng vai trò quan trọng trong tự động hóa sản xuất hiện đại.
Hệ thống kho hàng tự động có chức năng
- Chụp sản phẩm cần nhập kho
- Xử lý ảnh đo kích thước diện tích và độ lệch của hộp hàng
- In mã QR code để phân loại cho sản phẩm
- Rô bốt nhập hàng vào kệ theo từng loại với dữ liệu đã quy ước trước đó trên cơ sở dữ liệu
- Gửi dữ liệu lên hệ thống Web và hiển thị trên một trang Web có thể truy cập bằng Internet
- Nhập hàng trên web hoặc trên ứng dụng điều khiển để rô bốt xuất hàng từ kho ra theo thứ tự, loại sản phẩm trong đơn hàng của khách
Thông số kỹ thuật của kho hàng gồm mô hình lưu trữ 3x3x2, với tổng cộng 18 hộp, mỗi bên chứa 9 hộp hàng Các hộp có kích thước đa dạng từ 40x40x50 cm đến 40x60x70 cm, tối ưu hóa không gian lưu trữ Kho hàng được vận hành bởi một người duy nhất, người này thao tác trên chương trình quản lý và giám sát lượng hàng hóa xuất nhập kho để đảm bảo hoạt động diễn ra hiệu quả.
CHƯƠNG.2 THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN
Hệ thống cơ cấu chấp hành
Nguyên lý hoạt động của kho hàng
Hệ thống cơ khí cơ bản của một nhà kho tự động là một rô bốt hoạt động tự động thông qua bộ điều khiển và di chuyển theo đường dẫn hướng dọc theo giá hàng để mang hàng từ chỗ sản xuất sắp xếp vào kho hoặc mang từ kho xuất ra ngoài đến bộ phận đóng gói Số lượng robot sử dụng trong một nhà kho ít hay nhiều hoàn toàn phụ thuộc vào đặc tính của nhà kho đó Nếu một nhà kho tự động cần khả năng lưu trữ cao nhưng tốc độ thấp thì số lượng rô bốt không nhiều và hệ thống băng chuyền không quá phức tạp Nhưng nếu một nhà kho cần khả năng lưu trữ cao với tốc độc cao thì số lượng rô bốt rất lớn di chuyển trên các ray độc lập, theo đường cong hoặc chuyển ray dẫn đến hệ thống băng chuyền để phân phối cho các rô bốt này rất phức tạp
Phạm vi ứng dụng của kho hàng tự động cũng vô cùng rộng, từ nhà máy chế tạo máy chế tạo vi mạch, chíp bán dẫn, dây chuyền lắp ráp ô tô Ngoài ra, kho hàng tự động còn được dùng cho các doanh nghiệp bán lẻ, siêu thị cần giảm diện tích và thời gian lưu kho, phân phối tự động cho các dãy bày hàng Nó cũng hữu ích trong việc lưu, cấp các hóa chất rủi ro cao cho con người trong các nhà máy hóa chất, xưởng chế tạo vũ khí, đạn dược.
Cấu tạo và nguyên lý hoạt động của rô bốt
Rô bốt trong kho hàng được thiết kế gồm ba cơ cấu chính: cơ cấu di chuyển trên đường ray ngang với hệ thống đai răng, puly và động cơ bước điều khiển, giúp xác định vị trí chính xác dựa trên số xung tương ứng với khoảng cách các ô hàng Cơ cấu nâng hàng theo phương thẳng đứng cũng sử dụng hệ thống đai puly và động cơ bước để đảm bảo quá trình nâng, hạ diễn ra linh hoạt và chính xác Ngoài ra, hệ thống lấy trả hàng được thực hiện bằng thanh trượt và hệ xích bánh xích, đảm bảo truyền chuyển động hiệu quả Các cơ cấu này có thể hoạt động độc lập hoặc phối hợp nhằm tối ưu hóa hiệu suất toàn hệ thống hoạt động trong kho hàng.
Hàng hóa được đưa về vị trí ô hàng, nơi cơ cấu đai puly đảm nhiệm lấy sản phẩm đầu vào Hệ thống di chuyển vận chuyển hàng chính xác đến đúng vị trí yêu cầu bằng cách điều khiển động cơ bước cấp xung để quay động cơ truyền chuyển động Quá trình tự động này giúp nâng cao hiệu suất và đảm bảo độ chính xác trong quá trình vận chuyển hàng hóa.
24 cấu chấp hành đẩy hàng vào giá Cuối cùng hệ quay lại vị trí ban đầu chờ để lấy hàng tiếp theo cho đến khi kho hàng đầy
Hình 2.1 - Mặt cắt mô hình 3D của kho hàng
Hệ thống di chuyển: Để di chuyển ra vào trên đường ray đã được thiết kế sẵn thì cần đến motor gắn vào puly để truyền chuyển động cho đai trung gian còn có thêm phanh điện từ để hãm chuyển động, xe dừng ngay lập tức khi đến điểm theo vị trí xung từ mạch điều khiển cấp cho động cơ bước
Hình 2.2 - Sơ đồ motor lắp với puly và cụm puly đai răng
Hình 2.3 - Cụm hệ puly đai răng chuyển động ngang
Hàng được sắp xếp trong khung nâng và di chuyển theo phương thẳng đứng nhờ hệ thống puly – đai răng, được điều khiển chính xác bằng động cơ bước Hệ thống này đảm bảo việc nâng hạ hàng hóa linh hoạt và an toàn, nhờ vào motor được trang bị phanh điện từ giúp cố định vị trí khi cần thiết, đáp ứng yêu cầu về độ chính xác cao trong quá trình vận hành.
Hình 2.4 - Cụm hệ puly đai răng chuyển động thẳng đứng
Hệ thống lấy trả hàng:
Hệ thống đưa hàng vào và lấy hàng từ kệ hoạt động nhờ motor quay qua hệ xích bánh xích, giúp vận hành linh hoạt và chính xác Cơ cấu này kết hợp với thanh trượt để thực hiện chức năng lấy và trả hàng một cách dễ dàng và hiệu quả Được điều khiển bằng động cơ bước thông qua driver, hệ thống đảm bảo quá trình vận hành chính xác, tối ưu hóa hiệu suất kho hàng.
Hình 2.5 - Cụm xích bánh xích chuyển động lấy trả hàng
Chọn các thành phần của hệ thống cơ khí
Thanh trượt: Chọn ray trượt bi 2 tầng phù hợp cho tải trọng nhẹ của hệ thống
Hình 2.6 - Ray trượt bi Theo phương Y: N=PN
Chọn động cơ 2W Để đạt được tốc độ trên ta chọn động cơ có gắn với hộp giảm tốc để điều chỉnh tốc độ trả hàng
Loại động cơ : Động cơ bước 28BYJ - 48 Điện áp : 5V
Hình 2.7 - Động cơ bước 28BYJ và driver ắ Cơ cấu nõng hạ
Hệ nâng sử dụng động cơ bước gắn với hệ puly đai răng có nhiệm vụ nâng và hạ hàng theo các tầng của giá nhà kho
Yêu cầu: Nhanh, nhẹ nhàng, ổn định
Hệ cần nâng và hệ trả hàng có khối lượng 3kg, vận tốc nâng từ 0,1-0,2m/s Để đạt được tốc độ mong muốn, ta lựa chọn động cơ kết hợp với hộp giảm tốc nhằm điều chỉnh nhanh chóng và chính xác tốc độ trả hàng Việc sử dụng động cơ phù hợp giúp đảm bảo hoạt động ổn định và hiệu quả của hệ thống nâng hạ.
Chọn động cơ: Động cơ bước size 42
Góc bước: 1,8 độ/bước Điện áp: 12V
Hình 2.8 - Động cơ bước size 42 trục nâng hạ
Hình 2.9 - Thông số kích thước động cơ ắ Cơ cấu hệ di chuyển của cả rụ bốt
Xe sẽ chạy trên ray được thiết kế sẵn với động cơ gắn vào puly và truyền chuyển động qua đai để truyền chuyển động cho hệ di chuyển
Tính toán động lực học của hệ
Yêu cầu: Tìm động cơ có thể truyền chuyển động cho hệ khoảng 6kg với vận tốc chạy 0,1-0,2 m/s
=>Công suất cần của hệ là P= F.Q = 46,8.0,2= 9,36W
Từ những thông số tính toán ta chọn động cơ bước size 42
Chọn động cơ: Động cơ bước size 42
Góc bước: 1,8 độ/bước Điện áp: 12V
Thiết kế kích cỡ khung hàng
Nhôm định hình dễ dàng ghép nối, mang lại tính thẩm mỹ cao và chi phí phù hợp cho kết cấu mô hình kho hàng Vật liệu nhôm định hình được chọn để xây dựng khung bao quanh kho hàng nhờ vào những ưu điểm vượt trội như dễ thi công, độ bền cao và khả năng tùy chỉnh linh hoạt Thiết kế khung kho hàng có kích thước nhỏ gọn giúp giảm thiểu chi phí, phù hợp với các dự án cần giải pháp hiệu quả về mặt kinh tế và thẩm mỹ.
Kích cỡ các hộp hàng (dài x rộng x cao)
Từ kích thước các hộp hàng theo yêu cầu ta thiết kế khung hàng với các kích thước như sau:
Hình 2.10 - Kích cỡ và hình chiếu đứng 3D của khung hàng
30 Để hệ thống kho tự động thực hiện việc kiểm soát, giám sát và điều khiển, ta thiết lập sơ đồ bố trí mặt bằng cơ bản của kho như hình 2.14 Kho gồm một dãy để khung hàng và một cạnh khung hàng là đường ray cho rô bốt chở hàng chạy P băng chuyền và I, II là các kệ hàng
Hình 2.11 - Sơ đồ mặt bằng kho hàng
Hệ thống điều khiển
Phân tích lựa chọn các thành phần của hệ thống điều khiển
2.2.1.1 Giới thiệu tổng quát về Arduino
Arduino là một board mạch vi xử lý phổ biến giúp xây dựng các ứng dụng tương tác với môi trường một cách đơn giản và dễ tiếp cận, phù hợp với người dùng ở mọi trình độ Thiết bị này đã tham gia vào nhiều dự án lớn nhỏ và ứng dụng đa dạng nhờ vào phần mềm dễ sử dụng, linh hoạt và đa chức năng, có thể chạy trên hệ điều hành MAC, Windows hoặc Linux Arduino là chìa khóa mở ra thế giới sáng tạo và đóng góp vào sự phát triển của khoa học kỹ thuật, với phần cứng nguồn mở dựa trên nền tảng vi xử lý AVR Atmel 8bit hoặc ARM Atmel 32-bit Các Model hiện tại của Arduino được trang bị cổng USB, 6 chân analog, và 14 chân I/O kỹ thuật số, phù hợp để mở rộng và nghiên cứu với chi phí thấp.
31 nhau Arduino có một số ưu điểm đó là: rẻ, tương thích được với nhiều hệ điều hành, chương trình lập trình đơn giản, rõ ràng, dễ sử dụng, sử dụng mã nguồn mở và có thể kết hợp với nhiều module khác nhau
Arduino Mega 2560 là một bo mạch điều khiển mạnh mẽ với nhiều tính năng nổi bật, phù hợp cho các dự án yêu cầu nhiều tín hiệu vào ra Thiết bị này lý tưởng để điều khiển mô-đun động cơ bước, giúp điều khiển robot một cách chính xác và hiệu quả Ngoài ra, Arduino Mega 2560 còn hỗ trợ truyền dữ liệu từ máy tính, làm tăng khả năng ứng dụng trong các dự án tự động hóa và điều khiển phức tạp.
Hình 2.12 - Arduino Mega 2560 Cấu tạo chính của Arduino Mega 2560 x 54 chân digital (15 có thể được sử dụng như các chân PWM) x 16 đầu vào analog, x 1 cổng kết nối USB,
Sơ đồ chân kết nối trong Arduino Mega 2560:
Hình 2.13 - Sơ đồ kết nối chân
Một số chân thông dụng trên Arduino Mega 2560:
VIN Cung cấp điện áp (7-12V)
Nguồn 5V Đối với nguồn cung cấp thiết bị phần cứng bên ngoài Nguồn 3.3V Đối với thiết bị phần cứng điện áp thấp bên ngoài
Chân số 14 - 53 có thể dùng làm đầu vào hoặc đầu ra cho các thiết bị điều khiển bằng các hàm như Mode(), digitalWrite() và digitalRead() Trong khi đó, các chân số từ 0 đến 13 được sử dụng làm đầu ra PWM thông qua hàm analogWrite(), cho phép điều chỉnh mức độ PWM từ 0 đến 255 để kiểm soát tốc độ hoặc cường độ thiết bị một cách linh hoạt.
Các chân từ A0 đến A15 trên bo mạch, hoạt động ở chế độ analog, có thể được sử dụng như chân đầu vào tương tự cho bộ ADC Để thiết lập các chân này, người dùng cần khai báo bằng hàm pinMode() và đọc giá trị tín hiệu analog bằng hàm analogRead(), giúp chuyển đổi tín hiệu analog thành giá trị kỹ thuật số để xử lý Ứng dụng của các chân này bao gồm điều khiển tốc độ động cơ, điều chỉnh độ sáng đèn, và các hệ thống điều khiển PID, mang lại khả năng tích hợp linh hoạt trong các dự án điều khiển và đo lường tự động.
Chân này được sử dụng để truyền thông nối tiếp giữa bo mạch và máy tính hoặc hệ thống khác nhằm chia sẻ và ghi dữ liệu hiệu quả Trong đó, hàm Serial.begin() giúp thiết lập tốc độ truyền dữ liệu, còn Serial.println() dùng để in mảng ký tự (char) ra thiết bị nhận Ứng dụng phổ biến của chân serial là trong các bộ điều khiển truyền thông và kết nối với máy tính, đảm bảo quá trình trao đổi dữ liệu diễn ra chính xác và ổn định.
AVR 2560 là vi điều khiển chính được sử dụng để lập trình và điều phối hoạt động của hệ thống Đây đóng vai trò như "bộ não" của hệ thống điều khiển, giúp quản lý và điều khiển tất cả các thiết bị khác trên mạch một cách chính xác và hiệu quả.
Trong các hệ thống kho hàng tự động người ta thường sử dụng các loại động cơ servo để truyền chuyển động cho các cơ cấu chấp hành vì có encoder phản hồi lại giá trị đáp ứng được độ chính xác cao và tính ổn định trong sản xuất công nghiệp Tuy nhiên với mô hình thử nghiệm sẽ sử dụng động cơ bước để giảm chi phí đáp ứng cho nhu cầu thử nghiệm và kiểm tra tính năng của hệ thống xử lý ảnh và IoT
Cấu tạo của động cơ bước
Là một động cơ đồng bộ dùng để biến đổi các tín hiệu điều khiển dưới dạng xung điện rời rạc kế tiếp nhau thành các chuyển động góc quay Nó là động cơ không có chổi than có thể chia một vòng quay đầy đủ ra thành nhiều bước Nếu góc bước của động cơ càng nhỏ thì số bước trên mỗi vòng quay của nó lại càng lớn và độ chính xác đối với vị trí thu được cũng càng lớn Các góc bước của động cơ có thể lớn tới 90 độ và nhỏ nhất đến 0,72 độ Tuy nhiên, các góc bước thường được sử dụng nhiều nhất là 1,8 độ và 2,5 độ hoặc 7,5 độ và 15 độ
Hình 2.14 - Nguyên lý làm việc của động cơ bước nam châm vĩnh cửu
Các cực cùng dấu đẩy nhau và các cực khác dấu hút nhau Khi được cấp điện, các cuộn dây của Stator sẽ trở thành nam châm điện và chiều của dòng điện chạy qua cuộn dây thay đổi thì cực tính của nam châm điện cũng thay đổi theo, khi đó người ta chỉ cần thay đổi thứ tự và chiều dòng điện trong các cuộn dây theo một quy tắc nhất định thì sẽ tạo ra chuyển động xoay tròn của động cơ bước Ứng dụng: Động cơ bước thường sử dụng trọng máy công cụ và thiết bị sản xuất tự động, máy CNC, máy in 3D
Phương pháp điều khiển: có 4 phương pháp điều khiển động cơ bước là điều khiển dạng sóng (wave), điều khiển bước đủ (full step), điều khiển nửa bước (half step) và điều khiển vi bước (microstep)
Các thiết bị đi kèm động cơ bước gồm có hộp giảm tốc để đảm bảo độ chính xác và độ bền trên tỷ lệ giảm tốc 1:5 hoặc 1:10 Phanh từ được lắp ở đuôi động cơ nhằm dừng chính xác và giữ vị trí trong trường hợp mất nguồn điện Encoder là thiết bị phản hồi tín hiệu về driver điều khiển, giúp cấp đúng số xung để đảm bảo hoạt động chính xác và không bị mất bước trong quá trình vận hành Động cơ gắn encoder, còn gọi là động cơ lai (hybrid), vận hành với tốc độ cao và độ chính xác vượt trội, đòi hỏi driver riêng biệt để điều khiển hiệu quả.
2.2.1.3 Module điều khiển động cơ TB6660
Mạch driver động cơ bước TB6600 4A 42V sử dụng IC TB6600HQ/HG, phù hợp cho các loại động cơ bước 42/57/86 2 pha hoặc 4 dây có dòng tải tối đa 4A và điện áp 42V DC Ứng dụng của driver TB6600 bao gồm trong các dự án máy CNC, máy laser và các hệ thống tự động hóa, giúp điều khiển chính xác và ổn định động cơ bước Thông số kỹ thuật nổi bật của driver TB6600 là điện áp điều khiển từ 9 đến 42V, đảm bảo khả năng hoạt động linh hoạt trong nhiều ứng dụng khác nhau.
Dòng tối đa: 4,5A mỗi pha
Cài đặt và ghép nối:
DC+: Nối với nguồn điện từ 9 - 40VDC
DC-: Điện áp (-) âm của nguồn
A+ và A -: Nối vào cặp cuộn dây của động cơ bước
B+ và B-: Nối với cặp cuộn dây còn lại của động cơ
PUL+: Tín hiệu cấp xung điều khiển tốc độ (+5V) từ BOB cho M6600 PUL-: Tín hiệu cấp xung điều khiển tốc độ (-) từ BOB cho M6600
DIR+: Tín hiệu cấp xung đảo chiều (+5V) từ BOB cho M6600
DIR-: Tín hiệu cấp xung đảo chiều (-) từ BOB cho M6600
ENA+ và ENA -: khi cấp tín hiệu cho cặp này động cơ sẽ không có lực mô men giữ và quay nữa
Hình 2.15 - Drive điều khiển động cơ TB6600
2.2.1.4 Cảm biến khoảng cách Để phát hiện hàng đã được lấy ta sử dụng một cảm biến khoảng cách E18- D80NK
- Điều chỉnh khoảng cách bằng biến trở tinh chỉnh sau cảm biến
Hình 2.16 - Cảm biến khoảng cách E18-D80NK
Sơ đồ các điểm di chuyển của rô bốt
Khung hàng có 3 cột, do đó nên lựa chọn phương án sử dụng động cơ bước để điều khiển chuyển động chính xác Các điểm đã được lập trình trước gồm X0, X1, X2, X3 tương ứng trên đường ray, giúp đảm bảo hoạt động ổn định và chính xác của hệ thống Áp dụng động cơ bước trong điều khiển khung hàng tối ưu hóa hiệu suất và dễ dàng lập trình các vị trí chuẩn xác trên đường ray.
- X0 là điểm được đặt tại vị trí ban đầu của xe
- X1, X2, X3 là các vị trí điểm đặt tương ứng với các vị trí các cột 1, 2, 3
2.2.2.6 Trục Y (Di chuyển nâng hạ)
Trục điều khiển nâng hạ của robot sử dụng 7 điểm Y0, Y1, Y2, Y3, Y4, Y5, Y6 dọc theo trục vít me đai ốc, đảm bảo hoạt động chính xác trong việc thao tác với giá hàng theo phương thẳng đứng.
Sơ đồ bố trí các vị trí điểm của động cơ bước cho trục X và trục Y được mô tả như hình 2.17
Hình 2.17 - Các điểm thao tác trên trục X và Y
2.2.2.7 Trục Z (Ra vào lấy hàng)
Với tay ra vào lấy hàng cần 2 điểm vị trí xác định vị trí ban đầu và vị trí thao tác lấy hàng
Hình 2.18 - Điểm thao tác của trục Z
Hình 2.19 - Sơ đồ nối dây Arduino với động cơ qua module TB6600
Sơ đồ thuật toán
Nguyên lý hoạt động của hệ thống: được điều khiển bởi các tín hiệu thông qua Arduino Khi có dữ liệu thông tin hàng hoá và tín hiệu lấy hàng theo vị trí được gửi từ chương trình chính C#, có 2 chu trình sẽ được thực hiện tuỳ theo mục đích xuất hàng ra hay là nhập hàng vào kho
1 Xuất hàng ra: Từ đơn hàng có số lượng loại hàng đã nhập từ hệ thống các động cơ sẽ di chuyển tới đúng các vị trị đã được lập trình trước đó để hoàn thành việc lấy hàng sau đó đưa lên vị trí băng tải đã được cố định nhằm cung cấp cho hệ thống đóng hộp và phân loại sản phẩm tiếp theo
2 Nhập hàng vào: với những thông số mã ID sản phẩm và độ lệch kích thước hàng sẽ được phân loại và rô bốt thao tác để đưa sản phẩm vào kho theo phân loại của chương trình chính
Mô tả quy trình lấy trả hàng:
Khi nhận vị trí ô hàng cần lấy (loại hàng I, II, II hoặc vị trí từ 1 - 9) từ chương trình chính gửi xuống Arduino kí tự ô hàng cần lấy dưới dạng mã ASCII
Arduino nhận tín hiệu giả sử ô hàng cần lấy ở hàng m cột n (m, n = 1, 2, 3) Arduino sẽ điều khiển rô bốt theo 3 quá trình:
Trục X tiến đến vị trí điểm cột n thì dừng lại sau đó động cơ điều khiển trục
Y nâng cao khi đến vị trí điểm hàng Ym và dừng lại Tiếp đến động cơ trục Z tiến đến khi chạm vị trí Z1 thì dừng lại và động cơ trục Y nâng lên đến vị trí Ym+1 Lúc này hàng đã trên tay đỡ của rô bốt, kết thúc quá trình lấy hàng
Quá trình 2: đưa hàng về vị trí ban đầu
Khi quá trình di chuyển kết thúc, động cơ trục Z lùi về vị trí Z0, sau đó động cơ trục Y hạ xuống về vị trí Y0 và cuối cùng động cơ trục X di chuyển về vị trí X0 Quá trình này giúp đảm bảo hàng hóa được sắp xếp chính xác trước khi chuyển lên băng tải.
Đầu tiên, động cơ trục Y nâng cao đến vị trí Y1 để chuẩn bị cho quá trình tiếp theo Sau đó, động cơ Z tiến về phía Z1, đưa hàng hóa vào vị trí chính xác Tiếp theo, động cơ Y hạ xuống đến vị trí Y0, khi đó hàng đã được đặt lên mặt phẳng nghiêng và trượt xuống băng tải, đảm bảo quá trình vận chuyển diễn ra trôi chảy Cuối cùng, động cơ Z lùi về vị trí ban đầu để chuẩn bị cho chu trình tiếp theo, tối ưu hóa hiệu quả vận hành.
Z0 Hoàn thành quy trình lấy trả hàng
Hình 2.20- Sơ đồ thuật toán cho Rô bốt
2.2.4 Xây dựng chương trình chính để điều khiển và giám sát kho hàng
Windows Forms là công cụ mạnh mẽ để tạo ra các ứng dụng Windows dễ sử dụng, giúp người dùng và máy tính kết nối một cách trực quan Với sự kết hợp của ngôn ngữ lập trình C# và framework NET, Windows Forms cung cấp các công cụ phù hợp để phát triển các chương trình chính hiệu quả Đây là nền tảng lý tưởng để xây dựng giao diện người dùng thân thiện, tối ưu hóa quá trình điều khiển và vận hành ứng dụng Windows.
Sau khi tạo các chức năng của hệ thống bằng Toolbox, dưới đây là giao diện giám sát cho mô hình kho hàng tự động:
Hình 2.21 - Giao diện kho hàng tự động
Cụm kết nối board Arduino gồm các thành phần chính như mục lựa chọn cổng kết nối của máy tính với Arduino, nhãn hiển thị trạng thái kết nối để dễ dàng kiểm tra, và nút nhận chức năng kết nối hoặc ngắt kết nối nhanh chóng Thiết kế này giúp người dùng dễ dàng thiết lập và quản lý kết nối giữa máy tính và Arduino một cách tiện lợi và hiệu quả.
Cụm Interface Vision là giao tiếp socket qua IP và Port với hệ thống Vision, nhằm truyền nhận dữ liệu sau xử lý ảnh Dữ liệu bao gồm mã ID code, kích thước, độ lệch và loại hàng, giúp hệ thống kiểm tra và phân loại sản phẩm chính xác Việc sử dụng interface này đảm bảo kết nối linh hoạt và hiệu quả giữa phần cứng và phần mềm thị giác máy tính trong quá trình kiểm tra chất lượng sản phẩm.
Cụm Import bao gồm các thông số quan trọng như mã ID sản phẩm, loại hàng, số vị trí đặt hàng và độ lệch x, y, T để định hướng gắp hàng cho robot Sau khi đã thu thập đầy đủ thông tin, nút nhấn sẽ gửi tín hiệu thao tác cho robot để thực hiện việc gắp hàng và cập nhật trạng thái của nhãn “STATUS EQUIP”.
- Cụm Dữ liệu kho hàng: Giám sát vị trí hàng và loại hàng hiện tại trong kho
- Cụm Export: gồm phần nhập số lượng loại hàng cần lấy sau khi nhấn nút export thì hiển thị ô hàng sẽ lấy, mã ID code và trạng thái của rô bốt
Cụm lịch sử dữ liệu là phần mềm giúp lưu trữ toàn bộ thông tin và thời gian liên quan đến việc nhập và xuất kho hàng hoá, giúp quản lý kho hiệu quả và chính xác hơn Việc kết nối Arduino với máy tính qua Winforms cho phép tự động hoá quá trình thu thập dữ liệu, nâng cao hiệu quả theo dõi lịch sử kho hàng và tối ưu hóa quy trình lưu trữ Tích hợp này không chỉ giúp giảm thiểu sai sót trong quản lý mà còn tạo ra giải pháp linh hoạt, dễ dàng mở rộng trong hệ thống quản lý kho hiện đại.
Việc điều khiển Arduino bằng máy tính thông qua chương trình Windows Forms Application được tạo ra là rất phổ biến trong các bài toán lập trình với
Arduino giúp đơn giản hóa các sơ đồ mạch điện và giảm thiểu số lượng thiết bị phần cứng kết nối, làm cho quá trình phát triển linh hoạt hơn Ví dụ, bạn có thể tạo các nút nhấn trong ứng dụng Winforms và truyền dữ liệu đến Arduino khi nhấn nút mà không cần phải kết nối nút nhấn vật lý trực tiếp với Arduino Điều này mở ra nhiều ứng dụng sáng tạo và tiện ích trong các dự án điện tử và tự động hóa.
Nguyên lý hoạt động: Arduino giao tiếp với máy tính thông qua giao thức UART Việc kết nối giữa Arduino và máy tính thông qua việc ta chọn đúng board và đúng cổng COM khi kết nối Arduino vào máy tính trên màn hình của phần mềm Arduino IDE và từ đó có thể nạp chương trình xuống Arduino Sau đó trên chương trình Windows Forms ta vừa tạo ra ta kết nối với cổng COM của Arduino khi được kết nối với máy tính Từ đó có thể giao tiếp và truyền nhận dữ liệu với Arduino bằng chương trình winform viết trên nền tảng ngôn ngữ C# Trên chương trình chính sẽ tạo ra một “serial port” với cổng COM đã chọn trùng với kết nối với mạch điều khiển Arduino qua cổng UART, sau đó mở cổng kết nối và chờ tín hiệu để gửi hoặc nhận xuống mạch điều khiển bằng hàm System.IO.ports.Write(); Về phía mạch điều khiển sẽ chạy vòng lặp chờ có tín hiệu gửi xuống qua cổng COM sẽ check và so sánh chuỗi để thực thi điều khiển
Thuật toán xử lý mã QR Code
Mã hoá QR code
Hình 3.1 - Sơ đồ quy trình tạo mã QR Code
Chuẩn QR sở hữu bốn chế độ mã hóa văn bản bao gồm số, chữ số, nhị phân và chữ Kanji, giúp tối ưu hóa quá trình mã hóa dữ liệu Mỗi chế độ mã hóa hoạt động như một chuỗi nhị phân (1 và 0), sử dụng các phương pháp khác nhau để chuyển đổi văn bản thành mã nhị phân, nhằm giảm độ dài của chuỗi mã hóa Các chế độ mã hóa này được thiết kế để tối ưu hóa việc mã hóa dữ liệu với chuỗi ngắn nhất có thể, đảm bảo hiệu quả và tiết kiệm không gian lưu trữ Các ký tự chính trong bốn chế độ này giúp QR code có khả năng mã hóa đa dạng nội dung một cách linh hoạt và hiệu quả.
- Chế độ số dành cho các chữ số thập phân từ 0 – 9
- Chế độ chữ và số dành cho các số thập phân từ 0 – 9 cũng như các chữ hoa và các ký hiệu $, %, *, +, -, , / và khoảng trắng
- Chế độ Byte theo mặc định dành cho các ký tự từ bộ ký tự ISO-8859-1
Chế độ Kanji dành cho các ký tự 2 Byte từ bộ Shift JIS giúp tối ưu hóa việc mã hóa các ký tự Kanji, vì JIS chỉ sử dụng 2 Byte, mang lại hiệu quả cao hơn so với UTF-8 (cần 3-4 Byte để mã hóa) Để chọn chế độ mã hóa hiệu quả nhất trong mã QR, cần kiểm tra các ký tự trong chuỗi nhập, bao gồm số, chữ, Byte hoặc Kanji, từ đó xác định chế độ tối ưu nhất để mã hóa nội dung một cách hiệu quả và chính xác.
Thuật toán Reed-Solomon là phương pháp mã hóa giúp chỉnh sửa lỗi hiệu quả trong truyền thông số Khi gửi dữ liệu qua kênh truyền, các bit có thể bị sai lệch do nhiễu gây ra, do đó cần bổ sung các bit giám sát vào dữ liệu ban đầu Bộ mã hóa sẽ thêm các bit kiểm tra này để đảm bảo dữ liệu có thể khôi phục chính xác, trong khi bộ giải mã sau đó sẽ xử lý và phục hồi dữ liệu ban đầu, nâng cao độ tin cậy của quá trình truyền tải.
Cụ thể Mã Reed-Solomon được đặc tả là RS (n, k), với mỗi ký tự được cấu tạo từ s-bit Nghĩa là bộ mã hoá sẽ nhận được k ký tự, sau đó thêm vào các ký tự kiểm tra để tạo ra codeword có độ lớn n ký tự Số ký tự kiểm tra là (n-k), và sô ký tự có thể sửa tối đa là (n-k)/2
Mỗi chế độ mã hóa được thiết kế nhằm tạo ra chuỗi bit ngắn nhất có thể cho các ký tự được sử dụng trong chế độ đó Các phương pháp mã hóa khác nhau được áp dụng để chuyển đổi văn bản đầu vào thành các chuỗi dạng bit tối ưu nhất, giúp đảm bảo hiệu quả nén dữ liệu và tiết kiệm không gian lưu trữ.
1 Chọn mức sửa lỗi: mã QR dùng thuật toán sửa lỗi Reed-Solomon Có 4 cấp sửa lỗi là L-7%, M-15%, Q-25%, H-30% (% dữ liệu được khôi phục) mức độ sửa lỗi cao yêu cầu nhiều byte hơn vì vậy mã QR sẽ phải lớn hơn
2 Xác định phiên bản nhỏ nhất cho dữ liệu: có 40 phiên bản mã hoá Tuỳ vào mục đích hãy đếm sô ký tự được mã hoá và mức sửa lỗi mong muốn
3 Thêm chỉ báo chế độ: dùng 4 Byte đầu để xác định chế độ đang sử dụng
4 Thêm chỉ báo số lượng ký tự
5 Mã hoá bằng chế độ đã chọn và chia nhỏ thành các mã 8 Byte và thêm byte đệm nếu cần thiết
Ví dụ để mã hoá 1 chuỗi số ở chế độ số 8675309 Đầu tiên tách thành các nhóm 3 số 867 530 9
Chuyển thành mã nhị phân
Và kết thúc bước mã hoá
Bước 3 trong quá trình quét mã QR là sử dụng mã hóa sửa lỗi để giúp máy quét đọc chính xác thông tin Công nghệ này sử dụng thuật toán Reed-Solomon để phát hiện và sửa lỗi trong mã QR một cách hiệu quả Khi quét, máy sẽ so sánh dữ liệu đã đọc và nếu phát hiện lỗi, có thể tự động sửa dựa trên cấp độ sửa lỗi đã thiết lập ở bước 2, đảm bảo quá trình đọc mã QR diễn ra chính xác và tin cậy.
Các dữ liệu mã hóa và sửa lỗi cần được sắp xếp theo thứ tự tích hợp để đảm bảo quá trình quét và giải mã mã QR diễn ra chính xác Đặc biệt với các mã QR có kích thước lớn, việc tổ chức dữ liệu và mã hiệu chỉnh lỗi một cách hợp lý là yếu tố quan trọng để duy trì khả năng đọc hiểu của mã QR trong mọi điều kiện.
43 được tạo ra các khối, và các khối này phải được xen kẽ theo các mã QR specifications
Bước 5: Module placement in matrix
Mã QR phải bao gồm các function patterns Đây là những hình dạng phải đặt trong những khu vực cụ thể trong mã QR để đảm bảo rằng máy quét mã có thể xác định chính xác và định hướng để giải mã
Hình 3.2 - Các function pattern và vị trí của nó Finder pattern là 3 khối ở 3 góc của mã QR
Separator là các vùng khoảng trắng viền của finder pattern
Alignment pattern giống như finder pattern nhưng nhỏ hơn và được đặt bên trong mã QR, phụ thuộc vào từng phiên bản mã QR từ phiên bản 2 trở lên Trong khi đó, timing pattern là các đường kết nối giữa các finder pattern giúp xác định chính xác các mô-đun trong mã QR.
Dark module là 1 module luôn đặt ở vị trí cố định
Các bước tạo Module placement in Matrix
1 Thêm finder pattern: Đầu tiên đưa các finder pattern vào ma trận finder pattern bao gồm 1 hình vuông đen 7 module và hình vuông màu trắng bên trong 5 module trong cùng là hình vuông đen 3 module
Hình 3.3 thể hiện kích thước của Finder pattern được thiết kế để trở thành mẫu cố định trên mã QR Chiều rộng của Finder pattern tuân theo tỷ lệ 1:1:3:1:1, giúp máy quét mã QR dễ dàng xác định các điểm chuẩn trên mã Nhờ vào tỷ lệ này, máy quét có thể nhận dạng chính xác các finder pattern, xác định hướng đúng của mã QR để thực hiện quá trình giải mã hiệu quả.
Mẫu Finder luôn được đặt tại góc trên cùng bên trái, góc trên cùng bên phải và góc dưới cùng bên trái của mã QR, bất kể phiên bản nào đang được sử dụng, giúp dễ dàng xác định và quét mã nhanh chóng.
Hình 3.4 - Phiên bản 1 và phiên bản 18
2 Thêm Separator: Là các module màu trắng rộng 1 module được đặt bên cạnh các finder pattern để tách chúng khỏi phần còn lại của mã QR
3 Thêm Alignment pattern: Mã QR phiên bản 2 trở lên bắt buộc phải có các Alignment pattern, nó bao gồm 1 hình vuông có 5 module màu đen bên
45 trong là hình vuông 3 module màu trắng và trong cùng là hình vuông màu đen 1 module
Các vị trí của alignment pattern cần được xác định trong bảng tiêu chuẩn để đảm bảo độ chính xác Các số trong bảng sẽ được sử dụng làm tọa độ cho cả hàng và cột của các alignment pattern Tuy nhiên, các alignment pattern phải được đặt vào ma trận sau khi đã xác định vị trí của finder pattern và separator, đồng thời không được chồng lên các phần này.
Ví dụ phiên bản 2 có các số 6 và 18 dưới đây là cách đặt alignment pattern sai và đúng
Hình 3.7 - Cách đặt Alignment pattern
Giải mã QR code
Hình 3.13 - Sơ đồ quy trình giải mã code
Không gian màu RGB là một trong những không gian màu phổ biến nhất được sử dụng trong đồ hoạ máy tính và các thiết bị kỹ thuật số Nó được xây dựng dựa trên sự kết hợp của ba màu cơ bản: đỏ (R), xanh lục (G) và xanh lam (B), giúp mô tả mọi màu sắc khác một cách chính xác.
Một ảnh số được mã hóa bằng 24 Bit, nghĩa là mỗi kênh màu R, G, B sử dụng 8 Bit, với giá trị từ 0 đến 255, cho phép tạo ra hơn 16,6 triệu màu sắc khác nhau Mỗi giá trị của các kênh màu kết hợp với nhau sẽ tạo ra một màu sắc duy nhất, giúp hình ảnh hiển thị chân thực và sống động Trong khi đó, ảnh xám (Gray image) hay còn gọi là ảnh đơn sắc (Monochromatic), mỗi điểm ảnh (Pixel) trong ma trận điểm ảnh mang giá trị từ 0 đến 255, thể hiện mức độ sáng tối của ảnh.
Cách chuyển không gian màu từ RGB sang ảnh xám (gray):
I(x, y)= 0,2126*Red(x, y) + 0 ,7152*Green(x, y) + 0,0722*Blue(x, y) (3.1) Trong đó:
I(x, y): cường độ sáng tại điểm ảnh (x, y) của ảnh xám
Red(x, y): giá trị của kênh màu đỏ tại điểm ảnh (x, y)
Green(x, y): giá trị của kênh màu xanh lá cây tại điểm ảnh (x, y)
Blue(x, y): giá trị của kênh màu xanh lục tại điểm ảnh (x, y)
2 Tách hình ảnh mã QR ra khỏi ảnh gốc
Image (unsigned width = 0, unsigned height = 0, const std::string & format = "", const void *data = NULL, unsigned long length = 0)
Width – Height: chiều rộng ảnh – chiều cao ảnh
Format: kiểu dữ liệu của QR code
Data: Kiều dữ liệu ảnh
Length: độ lớn bộ dữ liệu
Trước khi tích hợp hình ảnh vào bộ giải mã QR code, cần cấu hình bộ giải mã sử dụng thư viện Zbar bằng cách gọi hàm zbar_image_scanner_set_config(scanner, symbol, ZBarConfig.CFG_ENABLE, 0) Việc này giúp thiết lập các thông số cần thiết cho bộ giải mã QR code hoạt động chính xác và hiệu quả Đảm bảo cấu hình đúng cách là bước quan trọng để tối ưu hóa quá trình quét và nhận diện mã QR trong ứng dụng của bạn.
Scanner: ảnh đầu vào giải mã symbol: Loại dữ liệu cần giải mã
ZBarConfig: Cấu hình cho bộ giải mã ắ Hàm giải mó barcode.data.decode('utf-8')
Trong đó: Image là ma trận ảnh đầu ra của bước 3
- Ta tìm vị trí của các finder pattern để xác định đúng vị trí mã QR
- Xác định mask pattern và mức độ sửa lỗi
- Giải mã ngược lại của mask pattern đọc và thu được các bit dữ liệu.
Thuật toán đo kích thước và độ lệch
Những phương pháp xử lý hình ảnh và hiệu chỉnh camera
ắ Gray Đẻ chuyển ảnh màu về ảnh xám với một ma trận số hai chiều duy nhất sẽ dễ dàng hơn rất nhiều trong quá trình tính toán
Hình 3.14 - Chuyển đổi ảnh màu sang ảnh xám
Làm mờ hình ảnh đóng vai trò quan trọng trong xử lý ảnh, giúp giảm nhiễu và làm mượt mà ảnh, đồng thời làm giảm sắc nét của các cạnh Trong bước tiền xử lý, thường sử dụng hai phép biến đổi chính là cân bằng sáng và làm mờ để tối ưu hóa chất lượng ảnh Kích thước của bộ lọc phải là số nguyên dương lẻ, nhằm đảm bảo có một pixel ở trung tâm kernel để xử lý chính xác Việc chọn kích thước bộ lọc thường dựa trên kích thước ảnh đầu vào và kinh nghiệm thực tế, phù hợp để đạt hiệu quả mong muốn Quá trình xử lý làm mờ ảnh sử dụng toán tử tích chập để áp dụng bộ lọc lên ảnh gốc, trong đó có ba loại bộ lọc làm mờ giảm nhiễu phổ biến nhất là bộ lọc mờ trung bình, bộ lọc Gaussian và bộ lọc trung vị màu, mang lại hiệu quả tối ưu trong xử lý ảnh nhiễu.
Hình 3.15 trình bày về các loại bộ lọc Gaussian cho ảnh, gồm ảnh gốc và các bộ lọc kích thước khác nhau như kernel 21x21 σ=3,5 và kernel 43x43 σ=7, giúp làm mờ và làm mịn hình ảnh Bộ lọc mờ trung bình hoạt động bằng cách đặt mỗi giá trị bằng 1/(W*H), phù hợp để giảm nhiễu muối tiêu trong ảnh, trong khi bộ lọc Gaussian cho phép thiết lập thêm các tham số sigma X và sigma Y, xác định độ lệch chuẩn theo trục x và y để nâng cao hiệu quả làm mờ Bộ lọc trung vị là kỹ thuật lấy giá trị trung vị sau sắp xếp dãy số, giúp loại bỏ nhiễu nhỏ, đặc biệt phù hợp để xử lý nhiễu dạng muối tiêu trong ảnh Ngoài ra, thuật toán Canny được sử dụng để phát hiện cạnh trong ảnh bằng cách xử lý gồm 4 bước chính, nhằm tách rõ các thành phần như vệt trơn, gấp khúc và nhiễu cạnh.
Trong quá trình xử lý ảnh, bước giảm nhiễu bằng bộ lọc Gaussian giúp làm mờ ảnh để loại bỏ nhiễu không mong muốn Tiếp theo, tính gradient của ảnh sử dụng bộ lọc Sobel X và Sobel Y (3x3) để xác định hướng gradient và độ lớn đạo hàm Gx và Gy Ở bước lọc pixel không phải cực đại, ta áp dụng filter 3x3 lần lượt cho các pixel trong ảnh gradient, so sánh pixel trung tâm với hai pixel lân cận theo hướng gradient để giữ lại các điểm khả năng là cạnh Các pixel có độ lớn gradient vượt ngưỡng tối đa (maxVal) chắc chắn là cạnh, trong khi các pixel có gradient nhỏ hơn ngưỡng tối thiểu (minVal) sẽ bị loại bỏ, giúp tối ưu hóa quá trình phát hiện cạnh chính xác hơn.
Dilation, hay còn gọi là phép mở rộng, là phương pháp trong hình học toán học được ứng dụng trong xử lý ảnh nhị phân nhằm nối liền các khu vực bị đứt nét Phương pháp này giúp làm nổi bật các đối tượng bằng cách làm các pixel nhiễu xung quanh trở thành viền của đối tượng, từ đó tăng cường độ rõ nét và giúp đối tượng nổi bật hơn trong ảnh.
Hình 3.17 - Sử dụng giải thuật dilation
Erode, còn gọi là phép mở rộng nhỏ, là phép toán cơ bản trong hình thái học, tương tự dilation, thường được áp dụng trong xử lý hình ảnh nhị phân Mục đích chính của phép Erode là loại bỏ các pixel nhiễu cô lập để làm mịn viền của đối tượng, giúp cải thiện độ chính xác trong phân đoạn hình ảnh Ngoài ra, nó còn giúp loại bỏ lớp viền cạnh của đối tượng, làm cho đối tượng trở nên nhỏ hơn và biến các pixel viền thành lớp nền của đối tượng, từ đó nâng cao hiệu quả phân tích hình ảnh.
Hình 3.18 - Phép erosion ắ Threshold: là phộp biến đổi ảnh thành nhịn phõn chỉ cú 2 giỏ trị là 0 hoặc
Ảnh nhị phân đóng vai trò quan trọng trong phân đoạn ảnh, là bước tiền xử lý hiệu quả trong các thuật toán nhận diện chữ viết và ký tự OCR Việc nhị phân hoá giúp tạo mặt nạ ROI (Region of Interest), cho phép xử lý các phép biến đổi ảnh chỉ tập trung vào vùng quan tâm, nâng cao độ chính xác và hiệu quả của quá trình phân tích hình ảnh.
Các bước nhị phân hoá:
Chuyển ảnh màu sang ảnh xám giúp đơn giản hóa quá trình phân tích hình ảnh Thiết lập ngưỡng cắt từ 0 đến 255 giúp xác định các đặc điểm quan trọng trong ảnh Contour là tập hợp các điểm liên tục tạo thành đường cong kín, được biểu diễn bằng danh sách các điểm có màu sắc hoặc cường độ sáng giống nhau Công cụ này rất hữu ích trong việc phân tích hình dạng, phát hiện và nhận dạng đối tượng trong xử lý ảnh.
Hình 3.19 - Viền contour màu xanh lá bao quanh vật thể
Thuật toán nhận diện và đo kích thước
3.2.2.1 Phương pháp hiệu chỉnh camera
Hiệu chỉnh hình học camera là quá trình điều chỉnh các thông số của lens và cảm biến hình ảnh để cải thiện độ chính xác của hình ảnh Các thông số này giúp sửa độ lệch ống kính, đo kích thước vật thể theo đơn vị tiêu chuẩn, từ đó tăng độ chính xác trong các ứng dụng thị giác máy tính Việc hiệu chỉnh này quan trọng trong việc phát hiện, đo lường đối tượng, định vị vật thể và tái tạo cảnh 3D chính xác.
Hình 3.20 minh họa hình ảnh trước và sau khi hiệu chỉnh camera do ảnh hưởng của lens Các thông số của máy ảnh bao gồm hệ số nội hàm, ngoại lai và hệ số biến dạng, cần thiết để mô tả chính xác hình học của máy ảnh Để ước tính các thông số này, cần có các điểm 3D trên vật thể và các điểm ảnh 2D tương ứng, thường sử dụng bàn cờ làm mẫu hiệu chuẩn để tính toán các thông số máy ảnh một cách chính xác Sau khi hiệu chỉnh, các thông số máy ảnh được đánh giá bằng cách vẽ đồ thị vị trí tương đối của máy ảnh so với mẫu hiệu chuẩn, từ đó tính toán các lỗi hình chiếu lại và xác định tham số ước tính lỗi để nâng cao độ chính xác của quá trình hiệu chỉnh.
Các tham số bên ngoài của máy ảnh bao gồm phép quay R và phép tịnh tiến t, đóng vai trò quan trọng trong việc xác định vị trí và hướng của máy trong không gian Gốc của hệ tọa độ của máy ảnh đặt tại tâm quang học, giúp dễ dàng xác định vị trí của máy trong không gian 3D Trục x và y của hệ tọa độ xác định mặt phẳng hình ảnh, góp phần vào quá trình xử lý và phân tích hình ảnh thu nhận được.
Các thông số nội tại: bao gồm tiêu cự, quang tâm Ma trận nội tại của máy ảnh được định nghĩa là
K = ݂ ௫ Ͳ ܿ ௫ Ͳ ݂ ௬ ܿ ௬ Ͳ Ͳ Ͳ ൩ Độ lệch pixel được định nghĩa: Với Cx, Cy là tâm quang học và fx, fy là tiêu cự tính theo pixel
Trong máy ảnh thực tế với ống kính thì có 2 biến dạng phổ biến
Biến dạng xuyên tâm là hiện tượng tia sáng uốn cong gần các cạnh của thấu kính hơn so với trung tâm quang học, gây ra hiện tượng méo hình ảnh Độ méo xuyên tâm càng lớn khi ống kính có kích thước nhỏ hơn, làm giảm chất lượng hình ảnh thu được Hiểu rõ về biến dạng xuyên tâm giúp cải thiện thiết kế và sử dụng các loại ống kính để đạt hiệu quả quang học tối ưu.
Hình 3.21 - Biến dạng xuyên tâm a Không méo, b Biến dạng xuyên tâm dương, c Biến dạng xuyên tâm âm
Biến dạng tiếp tuyến xảy ra khi thấu kính và mặt phẳng ảnh không song song, gây ra hiện tượng biến dạng hình ảnh Các hệ số biến dạng tiếp tuyến giúp mô hình hóa loại biến dạng này một cách chính xác, hỗ trợ trong quá trình chỉnh sửa và cải thiện chất lượng ảnh Hiểu rõ về biến dạng tiếp tuyến là yếu tố quan trọng để tối ưu hóa các phép chỉnh sửa ảnh và đảm bảo hình ảnh phản ánh trung thực và rõ nét.
Hình 3.22 minh họa quá trình hiệu chuẩn camera bằng thư viện OpenCV với hàm calibrateCamera() Chức năng chính của hàm này là chiếu các điểm 3D lên mặt phẳng hình ảnh dựa trên các thông số nội tại và bên ngoài đã cho, cũng như tính toán các tham số bên ngoài dựa trên các tham số nội tại đã xác định Ngoài ra, hàm calibrateCamera() còn ước tính các tham số nội tại và bên ngoài của camera từ một tập hợp các mẫu hình ảnh có hiệu chuẩn đã biết, giúp đảm bảo độ chính xác khi xử lý hình ảnh.
3.2.2.2 Thuật toán đo kích thước
Khi nhập hàng vào kho, các gói hàng có kích thước khác nhau nhằm thuận tiện cho quá trình phân loại và tối ưu diện tích lưu trữ Việc sử dụng các kích thước đa dạng giúp tránh lãng phí không gian, hạn chế tình trạng hộp nhỏ không đủ chứa các mặt hàng lớn hoặc hộp quá lớn không phù hợp với không gian kho nhỏ Điều này đảm bảo quá trình tổ chức hàng hóa diễn ra hiệu quả, dễ dàng kiểm soát và sắp xếp phù hợp với từng loại sản phẩm.
55 khi nhập hàng ta có thể tích hợp hệ thống nhận diện đo kích thước của hộp hàng từ đó sẽ tối ưu được diện tích của kho hàng
Việc đo kích thước các đối tượng trong hình ảnh giống như tính toán tỷ lệ pixels trên ảnh chuyển đổi sang đơn vị mm Để xác định chính xác kích thước của đối tượng, cần hiệu chỉnh camera dựa trên đối tượng tham chiếu, qua đó xác định tỷ lệ pixel trên mm cho camera Đối tượng tham chiếu phải có hai đặc tính quan trọng để đảm bảo độ chính xác trong quá trình đo lường.
1 Kích thước của vật tham chiếu phải được xác định rõ ràng và chính xác về chiều dài và chiều rộng theo đơn vị đo lường
2 Đối tượng tham chiếu được tìm thấy dễ dàng trong hình ảnh và có nhận dạng đặc trưng như là vị trí sẽ luôn xuất hiện ở góc trên bên trái của hình ảnh, có màu sắc, hình dạng đặc biệt khác với tất cả các đối tượng cần đo Thuật toán xử lý ảnh nhận dạng và đo kích thước vật thể:
Hình 3.23 - Sơ đồ thuật toán đo kích thước vật
1 Tiền xử lý hình ảnh Đọc ảnh từ camera và chuyển đổi sang ảnh xám
Làm mờ hình ảnh sử dụng Gaussian Kernel để loại bỏ những cạnh nhiễu Tìm cạnh của vật thể sử dụng thuật toán tìm cạnh Canny trong OpenCV
Sử dụng phép dilate để nối liền các nét thiếu sau đó phép erode để làm mỏng cạnh viền của vật thể
Tìm đường viền cho vật lấy và lấy diện tích hình chữ nhật tối thiểu cho các đường bao ắ Biến đổi phối cảnh
Trong quá trình đo kích thước vật thể bằng camera, việc loại bỏ sự nghiêng do chéo là bước quan trọng để đảm bảo độ chính xác Đầu tiên, cần điều chỉnh hình ảnh để đưa về phối cảnh góc nhìn thẳng đứng, giúp cho việc đo kích thước trở nên chính xác hơn Áp dụng kỹ thuật chỉnh sửa hình ảnh nhằm loại bỏ sự lệch nghiêng giúp tăng độ chính xác trong quá trình đo đạc kích thước bằng camera.
Hình 3.24 - Chuyển đổi phối cảnh ảnh Để chuyển đổi ảnh cần xác định 4 điểm theo quy ước 1 Trên bên trái, 2 Trên bên phải, 3 Dưới bên phải, 4 Dưới bên trái
Use the getPerspectiveTransform(src, dst, solveMethod=None) function to obtain the transformation matrix Then, apply the warpPerspective(src, M, dsize) function to convert the image to a frontal perspective, ensuring the image appears from a straight-on viewpoint.
Vẽ các điểm tâm và đường nối các điểm của hình chữ nhật giới hạn ắ Vẽ đường viền bao cho vật thể
Sử dụng vòng lặp để xử lý từng đường viền riêng lẻ giúp nâng cao hiệu quả phát hiện cạnh Nếu đường viền vượt quá kích thước giới hạn, hệ thống sẽ loại bỏ vùng đó, coi nó như nhiễu trong quá trình phân tích Điều này đảm bảo độ chính xác cao hơn trong việc xác định các đối tượng trong hình ảnh.
Đối với các vùng có diện tích đường bao đủ lớn, tiến hành tính toán để xác định 4 điểm theo thứ tự chiều kim đồng hồ, sau đó xoay ảnh để đưa về góc nhìn thẳng đứng Tiếp theo, vẽ đường bao quanh vật thể và đánh dấu các đỉnh của hình chữ nhật bằng các điểm màu đỏ, giúp đảm bảo quá trình phân tích và nhận diện trở nên chính xác hơn.
Dựa trên các quy ước điểm theo chiều kim đồng hồ được sắp xếp theo thứ tự phù hợp, công thức toán học có thể tính ra số pixel trên mỗi cạnh của vật thể Bằng cách nhân số pixel này với giá trị pixel ban đầu từ vật tham chiếu, ta có thể xác định kích thước gần chính xác của vật thể dựa trên đối tượng tham chiếu Đây là phương pháp hiệu quả để đo lường kích thước vật thể trong xử lý hình ảnh và thị giác máy tính.
3 Lấy đường viền từ đối tượng tham chiếu đã có sẵn kích thước và từ đó tính ra tỷ lệ Pixel trên mỗi mm
4 Tính toán và in kích thước của hình chữ nhật giới hạn của vật thể dựa trên kích thước của đối tượng tham chiếu
Hình 3.25 - Đo kích thước vật thể a Hình gốc, b Hình sau khi xử lý
3.2.2.3 Xác định độ lệch của vật thể
Thuật toán xử lý ảnh đo độ lệch của vật thể
Hình 3.26 - Sơ đồ thuật toán đo độ lệch vật
Phần đo kích thước của vật thể bắt đầu bằng việc xử lý ảnh, trong đó chuyển đổi ảnh sang ảnh xám nhằm đơn giản hóa dữ liệu Tiếp theo, ảnh được làm mờ bằng kernel kích thước 5x5 để giảm nhiễu và nâng cao độ chính xác của quá trình phân đoạn Sau đó, kỹ thuật thresholding được sử dụng để phân ngưỡng ảnh thành dạng đen trắng, giúp xác định rõ ràng đường viền bao quanh vật thể Kết quả cuối cùng là xác định được đường viền bao quanh vật thể cùng 4 đỉnh của hình, hỗ trợ chính xác trong đo kích thước và phân tích hình dạng.