CHƯƠNG 1: TỔNG QUAN Chương 3: Thiết kế và xây dựng phần cứng cho robot. Chương 3: Thiết kế phần cứng robot trên solidworks, tìm hiểu và lựa chọn các module, vi điều khiển cho robot. Đồng thời thể hiện sơ đồ phần điều khiển của robot. Chương 4: Thiết kế chương trình điều khiển và lập trình tích hợp điều khiển robot Chương 4: Thiết kế chương trình điều khiển động cơ và nghiên cứu thiết đặt các thông số để tối ưu việc tảo bản đồ và di chuyển tránh vật cản của robot ngoài thực tế.
Chương 5: Kết quả thực nghiệm Chương 5: Trình bày kết quả từ thực nghiệm của robot của phần cứng và phần mềm. Chương 6: Kết luận và hướng phát triển Chương 6: Trình bày những vấn đề mà đề tài giải quyết được dựa trên các yêu cầu đề ra, cùng với khó khăn chưa giải quyết và đưa ra một số hướng phát triển để giúp đề tài hoàn thiện hơn. 3 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2. Động lực học của Mobile robot Hình 2.1: Hệ trục toạ độ của mobile robot Để có thể tìm ra bảng DH cho robot ta cần dựa theo 6 quy tắc bàn tay phải về cách đặt hệ trục tọa độ cho các khớp như sau.1: Bản D-H của robot 4 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Trong đó: ai-1 là khoảng cách từ trục zi-1 đến trục zi đo dọc theo trục xi-1, αi-1 là góc lệch từ trục zi-1 đến trục zi đo dọc theo trục xi-1, di là khoảng cách từ trục xi-1 đến trục xi đo dọc theo trục zi, θi là góc quay từ trục xi-1 đến trục xi đo dọc theo trục zi.
Động học thuận của robot: Từ bảng DH, với cách đặt hệ trục tọa độ như trên, ta có thể tính các ma trận chuyển đổi đồng nhất giữa các hệ trục tọa độ theo công thức sau: 𝑐𝜃 −𝑠𝜃 𝑐𝛼 𝑠𝜃 𝑠𝛼 𝑎 × 𝑐𝜃 (2.1) 𝑖 𝑠𝜃 𝑐𝜃 𝑐𝛼 −𝑐𝜃 𝑠𝛼 𝑎 × 𝑠𝜃 𝑇𝑖+1 =[ ] 0 𝑠𝛼 𝑐𝛼 𝑑 0 0 0 1 Trong đó: 𝑐𝜃 là 𝑐𝑜𝑠𝜃; 𝑠𝜃 là 𝑠𝑖𝑛𝜃; 𝑐𝛼 là 𝑐𝑜𝑠𝛼; 𝑠𝛼 là 𝑠𝑖𝑛𝛼 Áp dụng công thức trên, ta tính được các ma trận chuyển động đồng nhất. Ma trận chuyển đổi đồng nhất giữa hệ trục 0 và hệ trục 1: 𝑐1 −𝑠1 0 0 (2.2) 𝑠 𝑐1 0 0] 𝑇10 = [ 1 0 0 1 0 0 0 0 1 Ma trận chuyển đổi đồng nhất giữa hệ trục 1 và hệ trục 2: 1 0 0 𝑑 (2.3) 𝑇12 = [0 1 0 0] 0 0 1 0 0 0 0 1 Và ta có thêm ma trận chuyển đổi đồng nhất giữa hệ trục tại gốc toạ độ và tại ví trí bắt đầu của robot.4) 0 𝑦 = [0 1 𝑚𝑎𝑝 𝑇0 ] 0 0 1 0 0 0 0 1 Nhân các ma trận với nhau ta thu được ma trận chuyển đổi đồng nhất giữa hệ trục thứ 2 và hệ trục thức 0. 5 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 𝑐1 −𝑠1 0 𝑑𝑐1 (2. 𝑇20 = [ 1 ] 0 0 1 0 0 0 0 1 Từ tọa độ điểm đầu cuối và ma trận chuyển đổi đồng nhất, ta có thể tính được tọa độ điểm đầu cuối so với hệ trục tọa độ 0, ta có phương trình động học thuận của robot là: 𝑥 + 𝑑𝑐1 (2.
Tính toán động lực học của robot Ta có toạ độ của robot sau khi di chuyển trên hệ trục là như sau: 6 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Hình 2.2: Hệ trục toạ độ của robot 𝑥 = 𝑥𝑐 + 𝑑𝑐𝑜𝑠(𝜃) (2.8) { 𝑟 𝑦𝑟 = 𝑦𝑐 + 𝑑𝑠𝑖𝑛(𝜃) Trong đó: (𝑥𝑟, 𝑦𝑟 ) là toạ độ điểm cuối của robot. (𝑥𝑐, 𝑦𝑐 ) là toạ độ điểm đầu của robot. Chuyển vế phương trình trên, ta có: 𝑥 − 𝑥𝑐 = 𝑑𝑐𝑜𝑠(𝜃) (2.14) Hàm vi phân của robot 𝑑 𝜕𝐿 𝑑𝐿 (2.15) − =𝜏 𝑑𝑡 𝜕𝜃̇ 𝑑𝜃 Tính động năng của robot: 𝑛 1 1 (2.16) 𝐾(𝜃, 𝜃̇) = ∑( 𝑚𝑖 𝑣𝑐𝑖 𝑇 𝑣𝑐𝑖 + 𝑤𝑖𝑇 𝐼𝑖 𝜔𝑖 ) 2 2 𝑖=1 Thế năng của robot: 𝑛 (2.17) 𝑈 = ∑ −𝑚𝑖 𝑔𝑇 𝑃𝑐𝑖0 + 𝑈𝑟𝑒𝑓𝑖 ) 𝑖=1 Trong đó 𝑚𝑖 là khối lượng ở khâu thứ i 8 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 𝑇 𝑣𝑐𝑖 vận tốc tại khâu thứ i 𝜔𝑖 là gia tốc góc của khâu thứ i 𝐼𝑖 là moment quán tính của khâu thứ i 𝑔𝑇 là gia tốc trọng trường 𝑃𝑐𝑖0 là vị trí trọng tâm khâu thứ i 𝑈𝑟𝑒𝑓𝑖 là năng lượng thế năng tại gốc Ta có vận tốc thẳng của robot được tính theo vận tốc bánh trái và vận tốc bánh phải: 𝑣𝑙 + 𝑣𝑟 (2.18) 𝑣= 2 Với 𝑣𝑙 là vận tốc bánh trái; 𝑣𝑟 là vận tốc bánh phải. Động năng của robot là: 1 𝑣𝑙 + 𝑣𝑟 2 1 𝑣𝑟 − 𝑣𝑙 2 2 (2.19) 𝐾 = 𝑚( ) + ((𝑚𝑑 2 + 𝐼𝑧 ) + ( ) 𝑅 ) 2 2 2 𝐿 Thế năng của robot: U = 0 vì phương của robot là phương ngang vuông góc với gia tốc trọng trường nên thế năng của robot bằng 0.21) Ta có hàm vi phân của robot: 𝑑 𝑑𝐿 𝑑𝐿 (2.22) ( + )=0 𝑑𝑡 𝑑𝜔𝑙 𝑑𝜔𝑟 Từ phương trình (2.20), ta tính toán như sau: 𝑑 1 2 𝑚𝑑 2 + 𝐼𝑧 2 2𝑚𝑑𝑅2 (2.23) ( 𝑚𝑅 (𝜔𝑙 + 𝜔𝑟 ) + (𝜔𝑙 − 𝜔𝑟 )𝑅 ) + (𝜔𝑙 − 𝜔𝑟 )) 𝑑𝑡 4 𝐿2 𝐿2 Từ phương trình trên ta tìm được phương trình Euler Lagrange của từng động cơ: 9 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 1 2 𝑚𝑑 2 + 𝐼𝑧 2𝑚𝑑𝑅2 (2.
Giới thiệu về hệ thống ROS 2. Giới thiệu về ROS (Hệ điều hành Robot): ROS là một hệ thống framework dùng cho các ứng dụng robot. ROS có những đặc tính thiết yếu của một hệ điều hành như khả năng thực hiện các tác vụ song song, trao đổi dữ liệu, quản lý dữ liệu. Đồng thời, nó cũng đi kèm với các công cụ và thư viện để xây dựng và viết các chương trình cho nhiều máy tính hỗ trợ việc vẽ đồ thị, lưu dữ liệu, hiện thị model 3D của robot.
Gói ROS của nó bao gồm SLAM, lập kế hoạch chuyển động, kiểm soát thao tác. Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn giao tiếp khác nhau.3: Mô hình robot với nền tảng ROS của mobile robot 2. Cấu trúc ROS ROS gồm ba cấp khái niệm: Filesystem, Computation Graph và Community [1]. Cấp thứ nhất – Filesystem: giải thích về các cấu trúc thư mục và các tập tin tối thiểu để ROS hoạt động.
10 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Cấp thứ hai – Computation Graph: là giao tiếp giữa các quá trình xử lý và 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 xử lý bất kỳ nhà phát triển nào. ROS filesystem Filesystem chủ yếu là các nguồn tài nguyên của ROS được thực thi trên bộ nhớ lưu trữ hệ thống, bao gồm: Packages: 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, các thư viện, các file 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.4: Cấu trúc package trong ROS Metapackages: là một pakage chuyên biệt, dùng để phục vụ cho việc thể hiện mối quan hệ một nhóm các pakage khác với nhau. Stacks: Khi chúng ta kết hợp các pakage 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. Tương tự Pakage, nơi chứa thông tin về stack gọi là Stack Manifests.
11 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Hình 2.5: Cấu trúc Stack trong ROS Message types: là mô tả của một thông điệp được gửi qua lại giữa các quá trình được lưu trữ dưới dạng my_pakage/msg/MyMessageType. Message định nghĩa cấu trúc dữ liệu cho các thông điệp được gửi đi. ROS Computation Graph Level 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à nodes, Master, Parameter Server, message, services, topics và bags. Nodes: là một quy trình đú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 pakage 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: cho phép dữ liệu được lưu trữ bởi các từ khoá trong một vị trí trung tâm.
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 hoạt động của các node. 12 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Messages: các node giao tiếp với nhau thông qua message. Một message đơn giản là một cấu trúc dữ liệu, bao gồm các trường được định nghĩa như integer, floating, point, boolean, … Messages có thể bao gồm các kiểu cấu trúc và mảng lồng vào nhau (giống kiểu struct trong C). Chúng ta có thể tự phát triển kiểu message dựa trên các message chuẩn.
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à subcribe. 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 nội dung của message. Một node thì có thể subcribe 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à subcribers cùng truy cập vào một topic, và một node có thể publish và subcribe nhiều topic. Services: mô hình publish/subcribe 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.
Sevices đượ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. Giới thiệu về SLAM (Simultaneous localization and mapping): Simultaneous localization and mapping (SLAM) là công nghệ định vị và xây dựng bản đồ đồng thời. Bằng cách sử dụng SLAM, các kết cấu hạ tầng có thể thay đổi dễ dàng.