ROS 1 Tổng quan về hệ điều hành dành cho robot – ROS 2 Cấu trúc của ROS 2 1 ROS Filesystem Level 2 2 ROS Computation Graph Level 2 3 ROS Community Level Tìm hiểu về SLAM 1 SLAM là gì? 1 1 Khái niệm 1.
ROS Tổng quan hệ điều hành dành cho robot – ROS Cấu trúc ROS 2.1 ROS Filesystem Level 2.2 ROS Computation Graph Level 2.3 ROS Community Level Tìm hiểu SLAM SLAM gì? 1.1 Khái niệm 1.2 Lịch sử SLAM 1.3 Các loại cảm biến phục vụ cho SLAM Tìm hiểu ROS Tổng quan hệ điều hành dành cho robot – ROS Robot Operating System – ROS hệ điều hành mã nguồn mở dành cho robot, framework dùng rộng rãi lĩnh vực robotic với nhiều ưu điểm Nó tạo tảng phần mềm hoạt động nhiều robot khác mà không cần thay đổi nhiều chương trình phần mềm ROS bắt đầu với ý tưởng tạo thuận tiện chia sẻ dễ dàng sử dụng lại phần cứng robot khác 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 tảng robot riêng biệt tốn nhiều thời gian công sức; bên cạnh đó, việc ứng dụng lại thành việc nghiên cứu trước để xây dựng thuật tốn cao gặp nhiều khó khăn Từ lợi ích ROS mang lại, tổ chức nghiên cứu phát triển giới ROS góp phần mang lại nguồn thông tin dồi phần cứng lẫn phần mềm Trên giới, có nhiều công ty tổ chức bắt đầu ứng dụng tảng vào ứng dụng họ để tạo sản phẩm có chất lượng tốt Nhờ vào đó, giới có nhiều thiết bị hỗ trợ framework Một số robot chế tạo tảng ROS ROS cung cấp, hỗ trợ dịch vụ (services) hệ điều hành phần cứng trừu tượng (hardware abstraction), kiểm soát thiết bị cấp thấp (low-level device control), thực thi (implementation) chức phổ biến, tin nhắn (message) qua lại q trình, quản lý gói Ngồi ra, cung cấp nhiều cơng cụ thư viện cho việc tham khảo, biên dịch, viết chạy chương trình nhiều máy khác Việc chạy chuỗi quy trình (processes) dựa ROS thể kiến trúc graph, biểu diễn mối quan hệ thành phần hệ điều hành ROS thực thi số loại giao tiếp khác giao tiếp kiểu RPC dạng đồng thông qua services, truyền liệu bất đồng thông qua topics lưu trữ liệu Parameter Server ROS framework thời gian thực, thơng qua ta viết chương trình thời gian thực ROS hệ điều hành mã nguồn mở nên thu hút quan tâm cộng đồng, đồng nghĩa với công cụ, thư viện xây dựng phát triển phong phú Hiện nay, mơ hình robot xây dựng hệ điều hành với nhiều ứng dụng có tính thực tiễn cao Hiện nay, ROS chạy tảng Unix Các phần mềm chạy ROS chủ yếu thử nghiệm hệ điều hành Ubuntu Mac OS X Bên cạnh đó, thơng qua cộng đồng này, cịn xây dựng để hỗ trợ cho tảng khác Fedora, Gentoo, Arch Linux tảng Linux khác Chương trình cốt lõi ROS, cơng cụ tiện ích thư viện phát hành phiên gọi ROS Distribution Những Distribution giống Linux Distribution đồng thời cung cấp chuỗi phần mềm tương thích Khi ROS ứng dụng cho robotic khối lượng cơng việc kỹ thuật giảm, bên cạnh khối lượng công việc dành cho xây dựng hệ thống tăng cách đáng kể Do đó, dành thời gian cho việc nghiên cứu ứng dụng chuyên sâu, đạt hàm lượng khoa học cao dự án Cấu trúc ROS Kiến trúc ROS có ba cấp khái niệm: Filesystem, Computation Graph Community Cấp thứ – Filesystem: giải thích dạng hình thức bên trong, cấu trúc thư mục tập tin tối thiểu để ROS hoạt động Nó chủ yếu tài nguyên ROS thực đĩa cứng Cấp thứ hai – Computation Graph: nơi giao tiếp trình hệ thống Trong cấp khái niệm này, ta phải thiết lập hệ thống, quản lý trình, giao tiếp nhiều máy tính với nhau, Cấp thứ ba – Community: giải thích/ hướng dẫn cơng cụ khái niệm để chia sẻ kiến thức, thuật tốn chương trình từ nhà phát triển Đây cấp độ quan trọng ảnh hưởng đến phát triển lớn mạnh cộng đồng ROS 2.1 ROS Filesystem Level Filesystem chủ yếu nguồn tài nguyên ROS thực thi nhớ lưu trữ hệ thống, bao gồm: Packages: đơn vị để tổ chức phần mềm ROS Một package chứa nodes (ROS runtime processes), thư viện đặc thù ROS, file cài đặt file cho việc tổ chức Mục đích package để tạo tập hợp chương trình có kích thước nhỏ để dễ dàng sử dụng lại Cấu trúc package ROS Metapackages: package chuyên biệt, dùng để phục vụ cho việc thể mối quan hệ nhóm package khác với Metapackage thường dùng nơi để giữ tương thích ngược cho việc chuyển đổi sang rosbuild Stacks Package Manifests: bảng mô tả package tên, version, mô tả, thông tin license, …Manifests quản lý file tên manifests.xml Stacks: kết hợp package với với vài chức gọi Stack Trong ROS, có nhiều stack với công dụng khác Tương tự Package, nơi chứa thông tin stack gọi Stack Manifests Mục tiêu việc dùng Stack để đơn giản hóa cho trình chia sẻ chương trình ứng dụng Cấu trúc Stack ROS Message types: mô tả thông điệp gửi qua lại trình, lưu trữ dạng my_package/msg/MyMessageType.msg Message định nghĩa cấu trúc liệu cho thông điệp gửi Trong ROS, có nhiều loại message tiêu chuẩn phục vụ cho trình giao tiếp node với Ngồi ra, ta tự định nghĩa lại kiểu message theo nhu cầu sử dụng Service types: mô tả service, lưu trữ dạng my_package/msg/MyServiceType.srv Service định nghĩa cấu trúc liệu request response node ROS Để gọi service, ta cần phải sử dụng tên service với tên package chứa service Mơ hình Server – Client ROS 2.2 ROS Computation Graph Level Computation Graph mạng nơi quy trình ROS kết nối với Bất kỳ node hệ thống truy cập vào mạng này, tương tác với node khác, trao đổi liệu nằm mạng Các khái niệm Computation Graph nodes, Master, Parameter Server, messages, services, topics bags Nodes: quy trình dùng để tính tốn, điều khiển Một node tạo biên dịch package thành cơng package tạo nhiều node Khi node muốn giao tiếp, tương tác node khác thân node phải kết nối với mạng ROS Trong hệ thống, node có chức khác Để tạo dễ dàng quản lý chuyên biệt hóa chương trình, nên tạo nhiều node với node có chức riêng biệt; không nên để node quản lý nhiều tác vụ gây khó khăn lập trình bảo trì Master: ROS Master cung cấp tên đăng ký tra cứu phần lại Computation Graph Nếu khơng có ROS Master node khơng thể tìm thấy nhau, trao đổi message hay gọi service Parameter Server: Parameter Server cho phép liệu lưu trữ từ khóa vị trí trung tâm Nó phần Master Với biến này, cấu hình node hoạt động để thay đổi hoat động node Messages: node giao tiếp với thông qua messages Một message đơn giản cấu trúc liệu, bao gồm trường định nghĩa integer, floating point, boolean, … Messages bao gồm kiểu cấu trúc mảng lồng (giống kiểu struct C) Chúng ta tự phát triển kiểu message dựa message chuẩn Topics: messages định tuyến thông qua hệ thống vận chuyển, phân loại thành publish subscribe Một node gửi messages việc publishing message lên topic định trước Topic tên để nhận dạng nội dung message Một node subscribe topic có tên kiểu liệu khai báo Trong thời điểm, nhiều publishers subscribers truy cập vơ topic, node publish subscribe nhiều topic Nhìn chung, publishers subscriber nhận thức tồn Ý tưởng xây dựng trao đổi thông tin ROS nhằm tách rời nguồn tạo thông tin nơi sử dụng thông tin Tên topic phải để tránh vấn đề xung đột topic có tên với Services: mơ hình publish/subscribe linh hoạt việc giao tiếp đặc điểm truyền đa đối tượng chiều Nhưng đơi lại khơng thích hợp cho việc truyền theo dạng request/reply, thường dùng kiểu hệ thống phân bổ Do đó, việc truyền nhận theo dạng request/reply dùng thông qua services Service định nghĩa cặp cấu trúc liệu: cho request cho reply Một node cung cấp service thông qua thuộc tính name, client sử dụng service việc gửi request message đợi phản hồi Tương tự message, service phải cần có tên mạng ROS để tránh lỗi không mong muốn xảy Bags: định dạng để lưu trữ phát lại liệu message ROS Bags chế quan trọng cho việc lưu trữ liệu; ví dụ giá trị cảm biến khó để thu thập cho nghiên cứu, phát triển kiểm tra thuật tốn Vì việc dùng bags quan trọng việc phát triển robot, đặc biệt robot mang tính phức tạp cao 2.3 ROS Community Level Các khái niệm ROS Community Level nguồn tài nguyên ROS cộng đồng người dùng trao đổi với phần mềm kiến thức Các nguồn tài nguyên là: Distributions: tổng hợp phiên stack mà cài đặt ROS Distributions có vai trò tương tự Linux Distributions Một số phiên ROS giai đoạn khác Respositories: nguồn tài nguyên dựa cộng đồng mạng lưới tổ chức khác phát triển phát hành mơ hình riêng họ The ROS Wiki: gồm nhiều tài liệu ROS Bất chia sẻ tài liệu, cung cấp cập nhật, viết hướng dẫn,… tài khoản mà họ đăng ký Tìm hiểu SLAM Giới thiệu SLAM gì? 2.1 Khái niệm Simultaneous Localization And Mapping (SLAM) công nghệ sử dụng thông tin ảnh thu từ camera để tái tạo môi trường bên ngồi cách đưa thơng tin mơi trường vào map (2D 3D), từ thiết bị (robot, camera, xe) định vị (localization) đâu, trạng thái, tư map để tự động thiết lập đường (path planning) môi trường 2.2 Lịch sử SLAM Đồng thời định vị tái tạo môi trường (SLAM) vấn đề biết đến phổ biến với ứng dụng liên quan đến điều khiển tự động (bao gồm xe tự hành, thiết bị robot thông minh, thiết bị bay tự động) Các cảm biến cung cấp liệu để xây dựng hình ảnh xung quanh chúng vị trí chúng mơi trường Từ đó, thiết bị (robot, xe) định vị đâu, trạng thái, tư mơi trường để tự động tìm đường mơi trường Ban đầu hai vấn đề định vị tái tạo môi trường nghiên cứu độc lập, nhiên nhận thấy mối liên quan hai vấn đề này: ● Định vị: cần xác định vị trí thiết bị dựa đồ tái tạo ● Tái tạo đồ: cần xác định vị trí đối tượng đồ để xây dựng đồ xác sai số Trong giai đoạn 1985 – 1990, Raja Chatila Jean-Paul Laumond (1985) Randall Smith (1990) đề xuất gộp hai vấn đề với để nghiên cứu Một thời gian sau đó, SLAM đời 2.3 Các loại cảm biến phục vụ cho SLAM Được chia thành loại: Cảm biến ngoại vi (exteroceptive sensor): có nhiệm vụ nhận đo thông tin thành phần môi trường xung quanh Một số cảm biến ngoại vi phổ biến nay: Cảm biến siêu âm LiDAR Cảm biến hình ảnh - Cảm biến siêu âm thiết bị sử dụng sóng âm với tần số cao để dị tìm xác định vị trí đối tượng - Cảm biến phát ánh sáng phạm vị (LiDAR) thiết bị sử dụng tia laser để xác định khoảng cách đến đối tượng, phương pháp sử dụng phổ biến bắn chùm tia laser đến đối tượng đo thời gian phản xạ lại từ đối tượng nơi bắn tia laser - Cảm biến hình ảnh thu thập hình ảnh từ mơi trường xung quanh Cảm biến nội vi (proprioceptive sensor): cảm biến giúp cho thiết bị đo tốc độ, thay đổi vị trí gia tốc thiết bị Một số cảm biến nội vi Gyroscope Encoder Accelerometers - Bộ mã hóa vịng quay (encoder) thiết bị sử dụng phổ biến hệ thống điều khiển tự động để báo vận tốc - Cảm biến gia tốc (accelerometer) thiết bị để đo gia tốc ba chiều x, y, z - Con quay hồi chuyển (gyroscope) thiết bị để đo trì phương hướng Các bước để xây dựng hệ thống SLAM Xây dựng đồ: Trong bước này, kỹ sư cần cho AGV di chuyển thủ cơng quanh kho xưởng để lidar qt tồn khu vực lập đồ thơ Sau đó, tích hợp xóa đối tượng tạm thời động (chẳng hạn hộp, pallet, phương tiện khác, v.v.) khỏi đồ Kết đồ bao gồm đối tượng địa lý tĩnh, vĩnh viễn địa điểm, chẳng hạn tường, cột trụ máy móc cố định Tiếp đối sánh tính để lập đồ hồn chỉnh xác Khoanh vùng hoạt động vẽ đồ chi tiết: Sau có đồ, kỹ sư xác định khu vực hoạt động cụ thể, cung đường, điểm dừng, điểm giao…để AGV thực nhiệm vụ Các ứng dụng thực tế SLAM Xe tự động lái Các tập đoàn lớn giới GM, Mercedes-Benz, Audi, Nissan, BMW, Renault, Tesla Google mong chờ vào năm 2020 bán thị trường xe tự động lái khoảng thời gian định Ngày 4/9/2015 Toyota thức lên tiếng đầu tư 50 triệu đô la Mỹ cho MIT Stanford để nghiên cứu phát triển công nghệ mà Toyota gọi “Advanced Driving Support” Các thiết bị bay tự động Microdrones md4-1000 (2013, DHL tạo với dịch vụ phân phát thuốc), dự kiến đến năm nay, microdrones md4-3000 mắt Yuneec H920 Drone sử dụng để theo dõi trình xây dựng sân vận động Sacramento, California; phát khu vực mà cơng trình bị chậm tiến độ Yuneec H920 Drone NASA sử dụng máy bay không người lái Global Hawk để theo dõi thời tiết mùa bão năm PrimeAir Amazon Drone sử dụng để giao hàng Project Tango Google Đây project với định hướng xây dựng hệ thống SLAM Tablet smartphone, tái tạo mơi trường chiều bên ngồi cách chân thực Dự án đời nhằm xây dựng ứng dụng dựa mơ hình này: tạo project game chiều thực tăng cường, hỗ trợ người khiếm thị, hỗ trợ thiết bị cần hệ thống SLAM cho mục đích Các ứng dụng khác Thiết bị thám hiểm không gian đưa lên đến hành tinh khác từ tàu vũ trụ Robot giúp việc nhà: lau nhà (iRobot Roomba Robotic Vacuum), nấu ăn Robot giúp người khiếm thị di chuyển dễ dàng ... hành mơ hình riêng họ The ROS Wiki: gồm nhiều tài liệu ROS Bất chia sẻ tài liệu, cung cấp cập nhật, viết hướng dẫn,… tài khoản mà họ đăng ký Tìm hiểu SLAM Giới thiệu SLAM gì? 2.1 Khái niệm Simultaneous... cộng đồng ROS 2.1 ROS Filesystem Level Filesystem chủ yếu nguồn tài nguyên ROS thực thi nhớ lưu trữ hệ thống, bao gồm: Packages: đơn vị để tổ chức phần mềm ROS Một package chứa nodes (ROS runtime.. .Tìm hiểu ROS Tổng quan hệ điều hành dành cho robot – ROS Robot Operating System – ROS hệ điều hành mã nguồn mở dành cho robot, framework