Đặt vấn đề Khởi nguồn vào cuối tháng 12 năm 2019 người dân trên khắp thế giới đã chứng kiến sự bùng nổ và lây lan đến mức không thể kiểm soát của đại dịch Covid 19. Đại dịch đã và đang gây thiệt hại nặng nề cả về con người lẫn vật chất và ảnh hưởng đến mọi mặt của đời sống. Cùng với việc chạy đua để tạo các loại vaccine thì nhiều mô hình robot khử khuẩn ra đời nhầm hỗ trợ con người chống lại đại dịch Covid 19. Trong đó phải kể đến việc ứng dụng tia UV kết hợp với robot, sự kết hợp đó đã tạo nên một robot có khả năng di chuyển theo mọi hướng và phát ra tia UV tiêu diệt các mầm bệnh ở những nơi khó khử trùng bằng nước hoặc hóa chất như thiết bị điện tử và thiết bị y tế, đồng thời sử dụng tia UV để khử trùng có thể tiết kiệm chi phí khử trùng, giảm việc sử dụng hóa chất và giảm công sức của con người.
Từ nhu cầu thực tiễn và cấp thiết, cá nhân em đã tìm hiểu và nghiên cứu để thiết kế nên robot khử khuẩn bằng tia UV tự hành.2 Mục tiêu của đề tài Thiết kế một Robot UV có khả năng: - Thu thập dữ liệu môi trường thực tế để xây dựng và ghi nhớ bản đồ 2D. - Có thể tự định hướng, xác định vị trí hiện tại dựa trên bản đồ đã xây dựng. - Tự điều hướng tránh vật cản và điều khiển để robot đi theo đúng quỹ đạo của đường đi mà ta sẽ vẽ. - Có thể điều hướng tự động hoặc điều hướng trực tiếp bằng điều khiển từ xa.
- Đồng thời phát ra tia UV để tiêu diệt virus SARS-CoV-2 cũng như các loại vi khuẩn, nấm mốc và những mầm bệnh khác ở nơi cần diệt khuẩn.3 Đối tượng và phạm vi nghiên cứu - Thiết kế robot có thể mang được hệ thống đèn UV và máy tính nhúng cùng với cảm biến Lidar để hoạt động trong môi trường trong nhà. - Áp dụng thuật toán hoạch định đường đi ngắn nhất Dijkstra và di chuyển tránh vật cản dựa theo đường đi đã hoạch định và bản đồ đã xây dựng DWA. - Thiết lập và xây dựng ứng dụng dựa trên các gói phần mềm có sẵn trên cộng đồng ROS để phù hợp với yêu cầu bài toán của luận văn đưa ra.4 Các bước thực hiện đề tài - Tìm hiểu hệ điều hành ROS. - Thiết lập hệ điều hành Ubuntu 18.04 Mate và ROS Melodic trên máy tính nhúng Raspberry Pi 3 model B plus.
- Thiết lập hệ điều hành Ubuntu 18.04 Destop và ROS Melodic trên laptop và giao tiếp ROS với máy tính nhúng Raspberry Pi 3. 1 Luận văn tốt nghiệp: Robot diệt khuẩn bằng tia UV tự hành 12/01/2021 - Đọc cảm biến RPLIDAR A1M8 và giao tiếp với ROS. - Thiết kế phần cứng cơ khí – hệ truyền động cho Robot UV. - Thiết kế hệ thống đèn UV.
- Thiết kế mạch điều khiển trung tâm với vi điều khiển MSP430G2554, hệ thống mạch nguồn và mạch công suất cho hệ thống đèn UV. - Kết nối, giao tiếp Raspberry với vi điều khiển MSP430G2553. - Tích hợp hệ thống để xây dựng bản đồ và điều hướng Robot UV dựa trên bản đồ đã được xây dựng. - Hiệu chỉnh các thông số trong ROS để đạt được kết quả vận hành tốt nhất.
2 Luận văn tốt nghiệp: Robot diệt khuẩn bằng tia UV tự hành 12/01/2021 CHƯƠNG 2 TỔNG QUAN VỀ ROS 2.1 Giới thiệu về Robot Operating System Robot Operating System – ROS là hệ điều hành mã nguồn mở dành cho robot, là một framework được dùng rất rộng rãi trong lĩnh vực robotic với nhiều ưu điểm. Nó tạo ra một nền tảng phần mềm có thể hoạt động trên rất nhiều robot khác nhau mà không cần sự thay đổi quá nhiều trong chương trình phần mềm. ROS được bắt đầu với ý tưởng tạo ra sự thuận tiện là có thể chia sẻ dễ dàng và có thể được sử dụng lại trên những phần cứng robot khác nhau mà không cần phải xây dựng lại từ đầu. Việc xây dựng lại từ đầu cho một nền tảng robot riêng biệt sẽ tốn rất nhiều thời gian và công sức.
Từ những lợi ích của ROS mang lại, những tổ chức nghiên cứu phát triển trên thế giới về ROS góp phần mang lại nguồn thông tin dồi dào về cả phần cứng lẫn phần mềm. Trên thế giới, cũng có rất nhiều công ty và tổ chức đã bắt đầu ứng dụng nền tảng này vào ứng dụng của họ để tạo ra những sản phẩm có chất lượng tốt hơn. Nhờ vào đó, hiện nay trên thế giới có rất nhiều thiết bị được hỗ trợ framework này. ROS là một hệ điều hành mã nguồn mở nên thu hút sự quan tâm của cộng đồng, đồng nghĩa với các công cụ, thư viện sẽ được xây dựng và phát triển phong phú.
Hiện nay, mô hình robot đã và đang được xây dựng trên hệ điều hành này với nhiều ứng dụng có tính thực tiễn cao. Hiện nay, ROS chỉ chạy trên nền tảng Unix. Các phần mềm được chạy trên ROS chủ yếu được thử nghiệm trên hệ điều hành Ubuntu và Mac OS X. Bên cạnh đó, thông qua cộng đồng này, nó còn đang được xây dựng để hỗ trợ cho các nền tảng khác như Fedora, Gentoo, Arch Linux và các nền tảng Linux khác.
Chương trình cốt lõi của ROS, các công cụ tiện ích và các thư viện cũng được phát hành các phiên bản mới được gọi là ROS Distribution. Những Distribution này giống như Linux Distribution và đồng thời cung cấp chuỗi các phần mềm tương thích. Hình 2-1: Một số phiên bản của ROS 3 Luận văn tốt nghiệp: Robot diệt khuẩn bằng tia UV tự hành 12/01/2021 2.2 Cấu trúc ROS Kiến trúc ROS có ba cấp khái niệm: Filesystem, Computation Graph và Community. Cấp thứ nhất – Filesystem: giải thích về các dạng hình thức bên trong, cấu trúc thư mục và các tập tin tối thiểu để ROS hoạt động.
Nó chủ yếu là các tài nguyên của ROS và được thực hiện trên đĩa cứng. Cấp thứ hai – Computation Graph: nơi giao tiếp giữa các quá trình và hệ thống. Trong cấp khái niệm này, ta sẽ phải thiết lập hệ thống, quản lý các quá trình, giao tiếp giữa nhiều máy tính với nhau,. Cấp thứ ba – Community: giải thích/ hướng dẫn các công cụ và các khái niệm để chia sẻ kiến thức, thuật toán chương trình từ bất kỳ nhà phát triển nào.
Đây là cấp độ quan trọng vì nó ảnh hưởng đến sự phát triển lớn mạnh của cộng đồng ROS.1 Cấp thứ nhất – Filesystem Filesystem chủ yếu là các nguồn tài nguyên ROS được thực thi trên bộ nhớ lưu trữ hệ thống, bao gồm: Package: là đơn vị chính để tổ chức phần mềm trên ROS. Một package có thể chứa các nodes (ROS runtime processes), các thư viện đặc thù của ROS, các file cài đặt hoặc bất cứ file nào cho việc tổ chức. Mục đích của package là để tạo ra tập hợp chương trình có kích thước nhỏ nhất để có thể dễ dàng sử dụng lại. Package Package Node Messeges Node Services Messeges Services Hình 2-2: Package trong ROS Message type: là mô tả của một thông điệp được gửi qua lại giữ các quá trình, được lưu trữ dưới dạng my_package/msg/MyMessageType.
Message định nghĩa cấu trúc dữ liệu cho các thông điệp được gửi đi. Trong ROS, có rất nhiều loại message tiêu chuẩn phục vụ cho quá trình giao tiếp giữa các node với nhau. Ngoài ra, ta cũng có thể tự định nghĩa lại một kiểu message theo nhu cầu sử dụng của chúng ta. Stack: khi chúng ta kết hợp các package với nhau với một vài chức năng thì được gọi là Stack.
Trong ROS, có rất nhiều stack với công dụng khác nhau. 4 Luận văn tốt nghiệp: Robot diệt khuẩn bằng tia UV tự hành 12/01/2021 2.2 Cấp thứ hai – Computation Graph Computation Graph là một mạng nơi các quy trình trong ROS được kết nối với nhau. Bất kỳ một node nào trong hệ thống cũng có thể truy cập vào mạng này, tương tác với các node khác, trao đổi các dữ liệu nằm trong mạng. Các khái niệm cơ bản của Computation Graph là Node, Master, Parameter Server, Message, Service và topics.
Node: là một quy trình dùng để tính toán, điều khiển. Một node có thể được tạo ra khi biên dịch một package thành công và trong cùng một package có thể tạo nhiều node. Khi một node muốn giao tiếp, tương tác các node khác thì bản thân node đó phải được kết nối với mạng ROS. Trong một hệ thống, mỗi node sẽ có một chức năng khác nhau.
Master: ROS Master cung cấp một tên đăng ký và tra cứu phần còn lại của Computation Graph. Nếu không có ROS Master thì các node không thể tìm thấy nhau, trao đổi các message hay gọi các service. Parameter Server: Parameter Server cho phép dữ liệu được lưu trữ bởi các từ khóa trong một vị trí trung tâm. Nó là một phần của Master.
Với các biến này, nó có thể được cấu hình các node trong khi nó đang hoạt động hoặc để thay đổi hoat động của node. Message: các node giao tiếp với nhau thông qua messages. Một message đơn giản là một cấu trúc dữ liệu, bao gồm các trường được định nghĩa như integer, floating point, boolean,… Message có thể bao gồm các kiểu cấu trúc và mảng lồng nhau (giống kiểu struct trong C). Topic: messages được định tuyến thông qua hệ thống vận chuyển, trong đó được phân loại thành publish và subscribe.
Một node sẽ gửi một messages bằng việc publishing message đó lên một topic định trước. Topic chỉ là một cái tên để nhận dạng nội dung của message. Một node chỉ có thể subscribe một topic có tên và kiểu dữ liệu được khai báo. Trong cùng một thời điểm, có thể nhiều publishers và subscribers cùng truy cập vô cùng một topic, và một node có thể publish và subscribe nhiều topic.
Nhìn chung, publishers và subscriber sẽ không thể nhận thức được sự tồn tại của nhau. Service: mô hình publish/subscribe thì rất linh hoạt trong việc giao tiếp nhưng đặc điểm là truyền được đa đối tượng và một chiều. Nhưng đôi khi lại không thích hợp cho việc truyền theo dạng request/reply, thường được dùng trong kiểu hệ thống phân bổ. Do đó, việc truyền nhận theo dạng request/reply được dùng thông qua services.
Service được định nghĩa một cặp cấu trúc dữ liệu: một cho request và một cho reply. Một node cung cấp một service thông qua một thuộc tính name, và một client sử dụng service bằng việc gửi một request message và đợi phản hồi. Tương tự như message, service phải cần có một tên duy nhất trong mạng ROS để tránh những lỗi không mong muốn xảy ra. 5 Luận văn tốt nghiệp: Robot diệt khuẩn bằng tia UV tự hành 12/01/2021 2.