Thiết Kế Robot Định Vị Odometry Với Vi Điều Khiển STM32F103C8T6

Chuyên khảo kỹ thuật phân tích Thiết kế hệ thống cơ điện tử thiết kế robot định vị odometry, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên cứu tiếp theo.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2023

71
9
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng Dẫn Tổng Quan Thiết Kế Robot Định Vị Odometry

Trong bối cảnh công nghiệp 4.0, robot di động tự hành ngày càng khẳng định vai trò thiết yếu trong các hệ thống sản xuất và đời sống xã hội. Các ứng dụng thực tiễn như robot tự hành lấy hàng hóa trong nhà kho của Amazon hay robot lau nhà thông minh là minh chứng rõ ràng cho sự phát triển này. Trọng tâm của các hệ thống này là khả năng định vị chính xác, và phương pháp Odometry là một trong những kỹ thuật nền tảng. Bài viết này trình bày một cách chi tiết về quy trình thiết kế robot định vị Odometry sử dụng STM32F103C8T6, một vi điều khiển mạnh mẽ và phổ biến. Hệ thống robot được xây dựng dựa trên nguyên lý truyền động vi sai, sử dụng dữ liệu từ cảm biến encoder để ước tính vị trí và hướng di chuyển. Vi điều khiển trung tâm STM32F103C8T6 đóng vai trò là bộ não, xử lý thông tin từ cảm biến, tính toán tọa độ và điều khiển động cơ thông qua mạch cầu H L298N. Việc lựa chọn STM32 không chỉ vì hiệu năng cao của lõi ARM Cortex-M3 mà còn vì sự tiếp cận hạn chế của công nghệ này tại Việt Nam, đặc biệt là trong môi trường giáo dục. Nghiên cứu này hướng tới việc tạo ra một mô hình robot hoàn chỉnh, có khả năng tự hành, né vật cản và dừng tại vị trí xác định, qua đó góp phần làm sâu sắc hơn kiến thức về hệ thống cơ điện tử và tạo ra một nền tảng thực hành giá trị.

1.1. Giới thiệu về Robot Odometry và ứng dụng thực tiễn

Robot Odometry là một loại robot di động sử dụng phương pháp định vị tương đối, tức là ước tính vị trí hiện tại của nó dựa trên vị trí đã biết trước đó và dữ liệu về chuyển động. Dữ liệu này thường được thu thập từ các cảm biến encoder gắn trên bánh xe. Các encoder sẽ đếm số vòng quay của bánh xe, từ đó cho phép hệ thống tính toán quãng đường mà mỗi bánh đã di chuyển. Dựa trên mô hình động học của robot, thường là nguyên lý vi sai, bộ điều khiển có thể ước tính sự thay đổi về vị trí (tọa độ x, y) và hướng (góc quay θ). Ứng dụng của robot Odometry rất đa dạng, từ các hệ thống dẫn đường tự động (AGV) trong nhà máy, robot giao hàng, robot khám phá trong môi trường không xác định, cho đến các thiết bị gia dụng thông minh như máy hút bụi tự động. Ưu điểm lớn của phương pháp này là chi phí thấp và không yêu cầu cơ sở hạ tầng bên ngoài (như GPS hay beacon).

1.2. Vai trò của vi điều khiển STM32F103C8T6 trong hệ thống

Vi điều khiển STM32F103C8T6 là trái tim của toàn bộ hệ thống robot. Đây là một vi điều khiển 32-bit thuộc họ ARM Cortex-M3, cung cấp hiệu năng xử lý vượt trội so với các dòng 8-bit truyền thống như Arduino. Trong dự án thiết kế robot định vị Odometry, STM32F103C8T6 đảm nhiệm nhiều chức năng quan trọng. Thứ nhất, nó đọc và xử lý tín hiệu xung tốc độ cao từ hai động cơ encoder, một nhiệm vụ đòi hỏi khả năng ngắt và bộ đếm (timer/counter) hoạt động hiệu quả. Thứ hai, nó thực hiện các phép toán Odometry phức tạp trong thời gian thực để cập nhật liên tục tọa độ và hướng của robot. Thứ ba, nó xuất tín hiệu điều chế độ rộng xung (PWM) để điều khiển tốc độ và chiều quay của động cơ thông qua driver L298N. Cuối cùng, nó giao tiếp với các thiết bị ngoại vi khác như màn hình LCD 16x2 để hiển thị thông tin và cảm biến hồng ngoại để phát hiện vật cản. Việc sử dụng kit phát triển STM32 (thường gọi là Blue Pill) giúp giảm chi phí và dễ dàng lập trình, nạp code thông qua ST-Link và môi trường Keil C.

II. Thách Thức Cốt Lõi Sai Số Tích Lũy Trong Định Vị Robot

Mặc dù phương pháp Odometry có nhiều ưu điểm về chi phí và sự đơn giản, nó lại đối mặt với một thách thức cố hữu và nghiêm trọng: sai số tích lũy. Đây là hiện tượng các sai số nhỏ trong mỗi bước đo lường và tính toán sẽ cộng dồn theo thời gian, khiến cho vị trí ước tính của robot ngày càng lệch xa so với vị trí thực tế. Nếu không được xử lý, sai số tích lũy có thể làm cho robot hoàn toàn mất phương hướng sau một quãng đường di chuyển dài. Vấn đề này xuất phát từ nhiều nguồn khác nhau, bao gồm cả yếu tố cơ khí và môi trường. Việc hiểu rõ bản chất của những sai số này là bước đầu tiên và quan trọng nhất trong việc xây dựng một hệ thống định vị tương đối đáng tin cậy. Mục tiêu của dự án không chỉ là xây dựng một robot có thể di chuyển, mà còn phải tìm cách giảm thiểu và kiểm soát các nguồn gây sai lệch này. Trong tài liệu nghiên cứu, nhóm tác giả đã nhấn mạnh rằng hệ thống định vị phải "loại bỏ được các sai lệch do các yếu tố môi trường cũng như những sai số tích lũy của phương pháp định vị tương đối". Điều này cho thấy việc giải quyết vấn đề sai số là một trong những mục tiêu chính của đề tài, đòi hỏi sự kết hợp giữa thiết kế cơ khí chính xác, lựa chọn linh kiện chất lượng và thuật toán xử lý thông minh.

2.1. Phân tích các nguyên nhân chính gây ra sai số Odometry

Sai số trong Odometry có thể được phân loại thành hai nhóm chính: sai số hệ thống và sai số không hệ thống. Sai số hệ thống bắt nguồn từ những khác biệt trong thiết kế cơ khí, ví dụ như đường kính hai bánh xe không hoàn toàn bằng nhau, hoặc khoảng cách thực tế giữa hai bánh xe khác với giá trị được sử dụng trong mô hình toán học. Những sai số này có tính quy luật và có thể được hiệu chỉnh phần nào thông qua quá trình cân chỉnh (calibration). Ngược lại, sai số không hệ thống là những sai số ngẫu nhiên và khó dự đoán, phát sinh từ sự tương tác giữa robot và môi trường. Các nguyên nhân phổ biến bao gồm hiện tượng bánh xe bị trượt (slippage) khi tăng tốc hoặc di chuyển trên bề mặt trơn, sàn nhà không bằng phẳng, hoặc sự va chạm nhẹ với các vật thể. Mỗi khi bánh xe trượt, cảm biến encoder vẫn ghi nhận vòng quay, nhưng robot không di chuyển tương ứng, tạo ra sự chênh lệch giữa quãng đường tính toán và thực tế. Đây chính là nguồn gốc lớn nhất của sai số tích lũy.

2.2. Hạn chế của phương pháp định vị tương đối truyền thống

Bản chất của phương pháp định vị tương đối (relative positioning) là nó không có một điểm tham chiếu tuyệt đối nào từ môi trường bên ngoài. Mọi tính toán vị trí đều dựa trên trạng thái trước đó. Điều này tạo ra một vòng lặp phản hồi, nơi sai số của bước tính toán trước sẽ trở thành đầu vào cho bước tính toán tiếp theo. Hậu quả là sai số sẽ không ngừng tăng lên theo thời gian và quãng đường di chuyển. Ví dụ, một sai số nhỏ về góc quay ở bước đầu tiên sẽ khiến toàn bộ quỹ đạo sau đó bị lệch đi. Các phương pháp truyền thống chỉ dựa vào dữ liệu encoder rất nhạy cảm với các vấn đề đã nêu. Để khắc phục, các hệ thống robot hiện đại thường kết hợp Odometry với các cảm biến khác như IMU (đo lường quán tính), la bàn, hoặc camera để tạo ra một hệ thống định vị tổng hợp (sensor fusion), giúp hiệu chỉnh và giới hạn sự gia tăng của sai số tích lũy.

III. Giải Pháp Odometry Nguyên Lý Toán Học Và Mô Hình Hóa

Để giải quyết bài toán định vị, việc xây dựng một mô hình toán học chính xác cho chuyển động của robot là yêu cầu bắt buộc. Dự án này sử dụng mô hình động học cho robot hai bánh dẫn động theo nguyên lý vi sai. Mô hình này giả định rằng robot di chuyển theo một quỹ đạo hình cung tại mỗi khoảng thời gian rất nhỏ. Bằng cách đo quãng đường di chuyển của bánh trái (ΔL) và bánh phải (ΔR), hệ thống có thể tính toán được bán kính của cung tròn và sự thay đổi về góc hướng. Cơ sở lý thuyết của phương pháp này dựa trên các công thức hình học và lượng giác cơ bản. Cụ thể, tài liệu gốc đã trình bày chi tiết cách suy ra công thức tính góc quay mới của robot (θ) dựa trên chênh lệch quãng đường của hai bánh và khoảng cách giữa chúng: θ = (ΔL - ΔR) / (TR + TL). Từ góc quay này, vị trí mới của robot trên hệ tọa độ 2D (x, y) được cập nhật. Các phép tính này được vi điều khiển STM32F103C8T6 thực hiện lặp đi lặp lại hàng trăm lần mỗi giây, đảm bảo việc cập nhật vị trí diễn ra gần như liên tục. Việc áp dụng đúng mô hình toán học giúp chuyển đổi dữ liệu thô từ cảm biến encoder thành thông tin vị trí hữu ích, tạo nền tảng cho các thuật toán điều khiển và tự hành phức tạp hơn.

3.1. Xây dựng mô hình chuyển động vi sai cho robot tự hành

Mô hình chuyển động vi sai (differential drive) là một trong những cơ cấu phổ biến nhất cho robot di động. Robot có hai bánh xe đồng trục, mỗi bánh được điều khiển bởi một động cơ riêng biệt. Bằng cách điều khiển tốc độ của hai bánh xe khác nhau, robot có thể di chuyển thẳng, quay tại chỗ, hoặc đi theo một đường cong bất kỳ. Khi hai bánh quay cùng tốc độ, robot đi thẳng. Khi một bánh quay nhanh hơn bánh còn lại, robot sẽ rẽ về phía bánh quay chậm hơn. Khi hai bánh quay ngược chiều nhau với cùng tốc độ, robot sẽ quay tròn tại chỗ. Trong mô hình toán học, vị trí của robot được biểu diễn bằng một bộ ba giá trị (x, y, θ), trong đó (x, y) là tọa độ trên mặt phẳng và θ là góc định hướng. Mục tiêu của thuật toán Odometry là tính toán sự thay đổi của bộ ba này (Δx, Δy, Δθ) sau mỗi khoảng thời gian dt, dựa trên tốc độ bánh trái (vL) và bánh phải (vR).

3.2. Công thức tính toán vị trí và góc xoay từ dữ liệu encoder

Dữ liệu cốt lõi từ cảm biến encoder là số xung đếm được trong một khoảng thời gian dt. Từ số xung này, ta có thể tính được quãng đường mỗi bánh di chuyển. Giả sử nLnR là số xung từ encoder bánh trái và phải, D là đường kính bánh xe, và C là số xung trên một vòng quay của encoder. Quãng đường mỗi bánh đi được là: dSL = (nL / C) * π * DdSR = (nR / C) * π * D. Dựa trên các công thức được trích dẫn trong tài liệu nghiên cứu, sự thay đổi về góc hướng và quãng đường di chuyển của tâm robot dS được tính như sau: dθ = (dSR - dSL) / LdS = (dSR + dSL) / 2, trong đó L là khoảng cách giữa hai bánh xe. Cuối cùng, tọa độ mới của robot (x', y', θ') được cập nhật từ tọa độ cũ (x, y, θ): x' = x + dS * cos(θ + dθ/2), y' = y + dS * sin(θ + dθ/2), θ' = θ + dθ. Các công thức này là nền tảng của thuật toán định vị Odometry.

IV. Cách Chọn Phần Cứng Cho Robot Odometry STM32F103C8T6

Việc lựa chọn thành phần phần cứng phù hợp là yếu tố quyết định đến hiệu suất và độ chính xác của robot. Một hệ thống phần cứng được thiết kế tốt sẽ đảm bảo thu thập dữ liệu chính xác, xử lý thông tin nhanh chóng và thực thi mệnh lệnh điều khiển một cách hiệu quả. Dự án thiết kế robot định vị Odometry này đã lựa chọn các linh kiện có sẵn trên thị trường, tối ưu giữa chi phí và hiệu năng. Hệ thống được chia thành ba khối chính: khối điều khiển trung tâm, khối cơ cấu chấp hành, và khối cảm biến. Khối điều khiển trung tâm sử dụng vi điều khiển STM32F103C8T6, nổi bật với tốc độ xử lý cao và nhiều bộ định thời (timer) hỗ trợ đọc xung encoder. Khối chấp hành bao gồm cặp động cơ DC Servo JGA25-370 tích hợp sẵn encoder có độ phân giải cao và mạch cầu H L298N để điều khiển công suất. Khối cảm biến gồm các encoder trên động cơ và một cảm biến hồng ngoại E18-D80NK để thực hiện chức năng né vật cản. Sự kết hợp hài hòa giữa các khối này tạo thành một hệ thống cơ điện tử hoàn chỉnh, đáp ứng được các yêu cầu của bài toán định vị và tự hành.

4.1. Khối điều khiển trung tâm Vi điều khiển STM32F103C8T6

Kit phát triển STM32F103C8T6 Blue Pill được chọn làm bộ não xử lý trung tâm. Với lõi ARM Cortex-M3 tốc độ 72MHz, bộ nhớ Flash 64KB và RAM 20KB, nó cung cấp đủ sức mạnh để thực hiện các thuật toán Odometry và điều khiển thời gian thực. Một ưu điểm lớn của dòng STM32 là hệ thống ngoại vi phong phú, đặc biệt là các bộ Timer có chế độ Encoder Mode, cho phép đọc xung từ hai encoder một cách trực tiếp bằng phần cứng mà không tốn tài nguyên CPU. Điều này cực kỳ quan trọng để đảm bảo không bỏ sót xung nào, ngay cả khi động cơ quay ở tốc độ cao. Vi điều khiển này cũng có đủ các chân GPIO để kết nối với mạch điều khiển động cơ L298, màn hình LCD, và cảm biến. Việc cấp nguồn 5V qua cổng Micro USB và có sẵn mạch ổn áp 3.3V trên kit giúp đơn giản hóa việc thiết kế mạch nguồn.

4.2. Khối chấp hành Động cơ DC Servo và mạch cầu H L298N

Để robot di chuyển, hệ thống sử dụng hai động cơ DC Servo JGA25-370 có tích hợp hộp số và encoder. Hộp số giúp tăng momen xoắn, cho phép robot di chuyển ổn định và mang tải. Encoder đi kèm có độ phân giải cao (514.8 xung/vòng), cung cấp dữ liệu chính xác về vòng quay của bánh xe, yếu tố sống còn cho phương pháp Odometry. Để điều khiển cặp động cơ này, module mạch cầu H L298N được sử dụng. Đây là một driver động cơ phổ biến, có khả năng điều khiển độc lập hai động cơ DC, cho phép thay đổi chiều quay và tốc độ thông qua tín hiệu PWM từ STM32F103C8T6. Mạch L298N có thể chịu được dòng tối đa 2A cho mỗi kênh, đủ để cung cấp cho động cơ JGA25-370 hoạt động ở mức tải định mức. Việc tách biệt mạch công suất (L298N) và mạch điều khiển (STM32) giúp bảo vệ vi điều khiển khỏi nhiễu điện từ do động cơ gây ra.

4.3. Khối cảm biến Vai trò của Encoder và cảm biến hồng ngoại

Cảm biến encoder là thành phần cốt lõi của hệ thống định vị. Chúng là các cảm biến hiệu ứng Hall hoặc quang học, được gắn vào trục động cơ để đo góc quay. Mỗi khi trục quay một góc nhất định, encoder sẽ tạo ra một xung điện. Bằng cách đếm số xung này, vi điều khiển có thể xác định chính xác bánh xe đã quay bao nhiêu vòng. Ngoài ra, encoder thường có hai kênh (A và B) lệch pha nhau 90 độ, cho phép xác định cả chiều quay của động cơ. Bên cạnh encoder, robot còn được trang bị cảm biến hồng ngoại E18-D80NK. Cảm biến này phát ra một tia hồng ngoại và đo thời gian phản xạ lại để xác định khoảng cách tới vật cản. Với tầm hoạt động có thể điều chỉnh từ 3-80cm, nó giúp robot thực hiện chức năng tự hành cơ bản là phát hiện và né tránh chướng ngại vật trên đường đi, tăng cường tính tự chủ cho hệ thống.

V. Quy Trình Thi Công Và Đánh Giá Kết Quả Thực Nghiệm Robot

Từ lý thuyết và thiết kế, bước tiếp theo là thi công và lắp ráp mô hình robot thực tế. Quá trình này đòi hỏi sự cẩn thận trong việc kết nối các linh kiện điện tử và lắp ráp cơ khí để đảm bảo hệ thống hoạt động ổn định. Khung xe được sử dụng là loại Robot Chassis Simple S1, cung cấp một nền tảng vững chắc để gắn động cơ, bo mạch và pin. Các thành phần như vi điều khiển STM32F103C8T6, module L298, hộp pin và màn hình LCD được bố trí hợp lý trên khung xe để tối ưu hóa không gian và cân bằng trọng lượng. Sơ đồ kết nối dây được thực hiện theo bản vẽ thiết kế, đảm bảo các tín hiệu điều khiển, tín hiệu encoder và nguồn điện được cấp chính xác. Sau khi hoàn thiện phần cứng, chương trình điều khiển được phát triển trên môi trường Keil C và nạp vào STM32 qua ST-Link V2. Kết quả thực nghiệm cho thấy robot có khả năng di chuyển về đích, né vật cản và dừng lại tại vị trí đã định trước. Dữ liệu số xung từ hai động cơ encoder được hiển thị trực tiếp lên màn hình LCD, cho phép theo dõi và đánh giá hoạt động của hệ thống định vị một cách trực quan.

5.1. Lắp ráp phần cứng và kết nối các module hệ thống

Quá trình lắp ráp bắt đầu với việc gắn hai động cơ DC Servo JGA25-370 và bánh xe vào khung mica. Một bánh xe tự do (bánh mắt trâu kim loại) được lắp ở phía sau để tạo thành cơ cấu ba bánh, giúp robot di chuyển linh hoạt. Tiếp theo, các module điện tử được cố định trên khung. STM32F103C8T6 được đặt ở vị trí trung tâm. Module L298 được đặt gần động cơ để giảm chiều dài dây công suất. Hộp pin 18650 cung cấp nguồn cho toàn bộ hệ thống. Cảm biến hồng ngoại được gắn ở phía trước xe để phát hiện vật cản. Quá trình đi dây được thực hiện cẩn thận, các chân tín hiệu PWM từ STM32 được nối tới chân IN của L298, các chân đọc encoder được nối tới các chân timer của STM32, và các chân cảm biến được nối tới chân GPIO. Màn hình LCD được kết nối để hiển thị thông tin debug, đặc biệt là số xung encoder thời gian thực.

5.2. Phân tích kết quả định vị và khả năng né vật cản

Kết quả chạy thực nghiệm là thước đo quan trọng nhất để đánh giá sự thành công của dự án. Theo hình ảnh từ tài liệu, robot đã hoàn thành nhiệm vụ đặt ra. Khi được cấp nguồn, robot di chuyển theo một quỹ đạo được lập trình sẵn. Dữ liệu từ cảm biến encoder được xử lý bởi thuật toán Odometry để liên tục cập nhật vị trí. Hình ảnh "Số xung khi xe về đích và reset" cho thấy hệ thống đếm xung hoạt động chính xác. Khi cảm biến hồng ngoại phát hiện vật cản trong phạm vi dưới 30cm, chương trình điều khiển sẽ kích hoạt thuật toán né tránh, thay đổi hướng đi của robot để vòng qua vật cản rồi tiếp tục hành trình. Việc robot có thể dừng lại ở vị trí định trước và xoay về hướng ban đầu chứng tỏ phương pháp Odometry đã hoạt động tương đối hiệu quả trong môi trường thí nghiệm có kiểm soát. Tuy nhiên, việc đánh giá định lượng mức độ sai số tích lũy qua các thử nghiệm lặp lại sẽ cần thiết để có cái nhìn toàn diện hơn.

VI. Kết Luận Và Hướng Phát Triển Tương Lai Của Robot Odometry

Dự án thiết kế robot định vị Odometry sử dụng STM32F103C8T6 đã đạt được các mục tiêu đề ra, từ việc xây dựng cơ sở lý thuyết, lựa chọn và lắp ráp phần cứng, đến việc lập trình và chạy thử nghiệm thành công. Sản phẩm cuối cùng là một robot tự hành hoàn chỉnh, có khả năng ước tính vị trí bằng phương pháp Odometry và né tránh vật cản đơn giản. Nghiên cứu đã chứng minh tính khả thi của việc sử dụng vi điều khiển hiệu năng cao như STM32F103C8T6 để giải quyết các bài toán điều khiển và xử lý tín hiệu phức tạp trong lĩnh vực robot di động. Thành công của dự án không chỉ mang lại một sản phẩm cụ thể mà còn cung cấp những kinh nghiệm quý báu về thiết kế hệ thống cơ điện tử. Tuy nhiên, lĩnh vực robot học luôn không ngừng phát triển. Mô hình hiện tại vẫn còn nhiều tiềm năng để cải tiến và nâng cấp, hướng tới các hệ thống định vị chính xác hơn và có khả năng tự chủ cao hơn trong các môi trường phức tạp. Các hướng phát triển này mở ra những cơ hội nghiên cứu mới, hứa hẹn tạo ra những robot thông minh và hữu ích hơn trong tương lai.

6.1. Tóm tắt những thành tựu chính của dự án nghiên cứu

Dự án đã thành công trong việc thiết kế và chế tạo một mô hình robot sử dụng nguyên lý vi sai để di chuyển và phương pháp Odometry để định vị. Hệ thống điều khiển dựa trên vi điều khiển STM32F103C8T6 đã chứng tỏ hiệu quả trong việc xử lý đồng thời nhiều tác vụ: đọc dữ liệu từ hai cảm biến encoder tốc độ cao, thực hiện các phép toán định vị, điều khiển động cơ qua module L298N, và xử lý tín hiệu từ cảm biến hồng ngoại. Robot đã thể hiện được khả năng tự hành cơ bản, di chuyển đến mục tiêu và né vật cản. Việc hiển thị thành công số xung lên màn hình LCD 16x2 cung cấp một công cụ gỡ lỗi và giám sát trực quan, có giá trị lớn trong quá trình phát triển. Đây là một nền tảng vững chắc cho các nghiên cứu và cải tiến sâu hơn.

6.2. Gợi ý các cải tiến tiềm năng cho hệ thống định vị

Để khắc phục hạn chế cố hữu của sai số tích lũy trong Odometry, hướng phát triển quan trọng nhất là áp dụng kỹ thuật hợp nhất dữ liệu cảm biến (sensor fusion). Có thể tích hợp thêm một đơn vị đo lường quán tính (IMU) để cung cấp thông tin về gia tốc và vận tốc góc. Dữ liệu từ IMU có thể giúp hiệu chỉnh các sai số về góc quay, đặc biệt là khi bánh xe bị trượt. Một bộ lọc Kalman (Kalman Filter) hoặc các biến thể của nó có thể được triển khai trên STM32F103C8T6 để kết hợp dữ liệu từ encoder và IMU, tạo ra một ước tính vị trí chính xác và đáng tin cậy hơn nhiều. Một hướng khác là sử dụng các cảm biến tuyệt đối như camera hoặc cảm biến LiDAR để xây dựng bản đồ môi trường và định vị robot trên bản đồ đó (kỹ thuật SLAM - Simultaneous Localization and Mapping). Việc này sẽ đưa robot lên một tầm cao mới về khả năng tự chủ và ứng dụng thực tiễn.

10/07/2025
Thiết kế hệ thống cơ điện tử thiết kế robot định vị odometry

Trích đoạn nội dung tài liệu

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Chúng ta cần theo dõi xe dựa vào hai vecto đó là vecto vị trí và vecto định hướng theta (𝜃). Để tìm được hai vecto này, chúng ta mô hình hóa chuyển động của xe dưới dạng hình cung như bên dưới. Chúng ta có mô hình xe như hình vẽ 11 Trong hình vẽ ta có khoảng cách giữa trung tâm xe với 2 bánh xe đó là 𝑇𝐿 và 𝑇𝑅 và khoảng cách từ bánh xe phụ tới trung tâm xe là 𝑇𝐵. Giả sử xe chuyển động theo hình cung như lí thuyết chúng ta đề ra.

Khi đó chúng ta sẽ nhận thấy có 2 cung khác nhau nữa ngoài cung của trung tâm xe so với điểm C. Chúng ta gọi vòng cung bên trái là ∆𝐿 và vòng cung bên phải là ∆𝑅. Khi đó sẽ có góc hướng mới của vòng cung trung tâm và góc này sẽ giúp ta tìm được vị trí và hướng mới của xe. Ta có công thức độ dài vòng cung (S) 𝑆= 𝑟× 𝜃 Trong đó: S : độ dài cung trong r : bán kính tức thời 𝜃 : góc của cung (rad) 12 Khi đó: ∆𝐿 = 𝑟 × θ <=> ∆𝐿 = (𝑟 + 𝑇𝐿 ) × 𝜃 ∆𝐿 <=> = 𝑟 + 𝑇𝐿 𝜃 ∆𝐿 => 𝑟 = − 𝑇𝐿 (1) 𝜃 Và ∆𝑅 = 𝑟 × θ <=> ∆𝑅 = (𝑟 − 𝑇𝑅 ) × 𝜃 ∆𝑅 <=> = 𝑟 − 𝑇𝑅 𝜃 ∆𝑅 => 𝑟 = + 𝑇𝑅 (2) 𝜃 Từ (1) và (2) ta có: ∆𝐿 ∆𝑅 − 𝑇𝐿 = + 𝑇𝑅 𝜃 𝜃 Nhân 2 vế cho 𝜃 ta được ∆𝐿 − 𝑇𝐿 𝜃 = ∆𝑅 + 𝑇𝑅 𝜃 <=> ∆𝐿 − ∆𝑅 = 𝑇𝑅 𝜃 + 𝑇𝐿 𝜃 <=> ∆𝐿 − ∆𝑅 = 𝜃(𝑇𝑅 + 𝑇𝐿 ) ∆𝐿 − ∆𝑅 =>> 𝜃 = 𝑇𝑅 + 𝑇𝐿 13 Tiếp theo, chúng ta sẽ tính toán vị trí của xe.

Tưởng tượng xe trong tọa độ, khi đó có thể phản ánh được vị trí dọc và ngang của xe. Thông thường cách dễ nhất là làm cho hướng đi của xe song song với trục y. Và giả sử rằng trục y thực sự là một đường thằng từ tâm xe ở vị trí ban đầu đến tâm xe của vị trí tiếp theo. Khi đó quãng đường mà xe di chuyển theo hướng thẳng đứng tạo thành 1 tam giác cân với với tâm của cung tròn trung tâm của xe.

14 Trong 1 tam giác, ta có 15 𝑐 2 = 𝑎2 +𝑏2 − 2𝑎𝑏𝑐𝑜𝑠(𝐶) (3) Theo như hình khi ta giả sử thì ∆𝑅 𝑎=𝑏= + 𝑇𝑅 = 𝑅 (4) 𝜃 Thay vào công thức (3) ta có 𝑦 2 = 𝑅2 + 𝑅2 − 2𝑅2 cos (𝜃) <=> 𝑦 2 = 2𝑅2 (1 − cos(𝜃)) 1 − cos(𝜃) <=> 𝑦 2 = 4𝑅2 ( ) 2 Sau khi bỏ bình phương 2 vế ta được 1 − cos(𝜃) 𝑦 = 2𝑅(√ (5) 2 1−cos (𝜃) 𝜃 Mà √ = sin ( ) 2 2 => Công thức (5) sẽ thành: 𝜃 𝑦 = 2𝑅𝑠𝑖𝑛( ) 2 Thay công thức (4) vào ta được ∆𝑅 𝜃 𝑦 = 2( + 𝑇𝑅 )(sin ( )) 𝜃 2 Theo 1 số tài liệu khác thì: 𝑥 𝑦3 Tại đầu khoảng thời gian dt, tọa độ tâm Om của xe trong tọa độ Oxy gồm bộ , tại điểm này ta có tọa độ tâm C: 𝜃 16 𝜋 𝑥𝐶 = 𝑥 − 𝑟𝑐𝑜𝑠 (𝜃 − ) = 𝑥 − 𝑟𝑠𝑖𝑛𝜃 (1) 2 𝜋 𝑦𝐶 = 𝑦 − 𝑟𝑠𝑖𝑛 (𝜃 − ) = 𝑦 + 𝑟𝑐𝑜𝑠𝜃 (2) 2 Sau khoảng thời gian dt, góc 𝜃 thay đổi một lượng 𝑑𝜃 = 𝜔𝑑𝑡, tọa độ mới của Om sau dt 𝑥′ là 𝑦′ , sử dụng lại phương trình (1) và (2) để tìm quan hệ giữa điểm C và điểm này, ta có 𝜃′ hệ giữa tọa độ mới và tọa độ cũ: 𝑥 ′ − 𝑟𝑠𝑖𝑛(𝜃 + 𝜔𝑑𝑡 ) = 𝑥 − 𝑟𝑠𝑖𝑛𝜃 𝑦 ′ − 𝑟𝑐𝑜𝑠(𝜃 + 𝜔𝑑𝑡 ) = 𝑦 + 𝑟𝑐𝑜𝑠𝜃 17 𝑥′ 𝑥 𝑟𝑠𝑖𝑛(𝜃 + 𝜔𝑑𝑡) − 𝑟𝑠𝑖𝑛𝜃 => 𝑦′ = 𝑦 + −𝑟𝑐𝑜𝑠(𝜃 + 𝜔𝑑𝑡 ) + 𝑟𝑐𝑜𝑠𝜃 𝜃′ 𝜃 (3) 𝜔𝑑𝑡 Theo tài liệu ta có 𝐿 𝑣𝑅 = 𝜔 (𝑟 + ) (4) 2 𝐿 𝑣𝐿 = 𝜔 (𝑟 − ) (5) 2 𝑣 = 𝜔𝑅 (6) Trong đó: 𝑣𝑅 : vận tốc dài quanh trục bánh phải/ 𝑣𝐿 : vận tốc dài quanh trục bánh trái L: khoảng cách giữa 2 bánh xe r: bán kính quay tức thời 𝜔: vận tốc quay của xe Ngoài ra ta có: 𝑣𝑅 − 𝑣𝐿 𝜔= (7) 𝐿 𝑣𝑅 + 𝑣𝐿 𝑣 = 𝜔𝑟 = (8) 2 𝑣 𝐿 𝑣𝑅 + 𝑣𝐿 𝑟= = × (9) 𝜔 2 𝑣𝑅 − 𝑣𝐿 𝑑𝑆 𝑑 𝑆𝐿 Thay 𝑣𝑅 = 𝑑𝑡𝑅 và 𝑣𝐿 = vào phương trình (7) và phương trình (9) với 𝑑𝑆𝑅 và 𝑑𝑆𝐿 là độ 𝑑𝑡 dài mỗi bánh dịch chuyển được trong thời gian dt. Thay lại r và 𝜔 trong các biểu thức này vào phương trình (3) ta được. 18 Theo thứ tự, biến đổi của phương trình (7) và (9) là: 𝑑𝑆𝑅 − 𝑑𝑆𝐿 𝜔= (7.1) 𝜔 2 𝑑𝑆𝑅 − 𝑑𝑆𝐿 Ta có phương trình (3) biến đổi 𝐿 𝑑𝑆𝑅 + 𝑑𝑆𝐿 𝑑𝑆 − 𝑑𝑆𝐿 × × [sin (𝜃 + 𝑅 ) − 𝑠𝑖𝑛𝜃] 2 𝑑𝑆𝑅 − 𝑑𝑆𝐿 𝐿 𝑥′ 𝑥 𝐿 𝑑𝑆𝑅 + 𝑑𝑆𝐿 𝑑𝑆𝑅 − 𝑑𝑆𝐿 𝑦′ = 𝑦 + − × × [cos (𝜃 + ) − 𝑐𝑜𝑠𝜃] 𝜃′ 𝜃 2 𝑑𝑆𝑅 − 𝑑𝑆𝐿 𝐿 𝑑𝑆𝑅 − 𝑑𝑆𝐿 𝐿 Phương trình trên cho ta cập nhật tọa độ xe với đầu vào ở mỗi thời điểm cập nhật là 𝑛𝑅 và 𝑛𝐿 , 2 đại lượng này là số đếm tăng thêm từ encoder của mỗi bánh, và tọa độ x, y, 𝜃 cuối chu kì trước. Khi đó ta gán giá trị 𝑛𝑅 𝐷𝜋 và 𝑛𝐿 𝐷𝜋 vào vị trí của 𝑑𝑆𝑅 và 𝑑𝑆𝐿 trong phương trình trên.

Ta cũng có 1 dẫn chứng khác 19 1 𝑡 𝑥(𝑡) = ∫ (𝑣 (𝑡) + 𝑣𝐿 (𝑡)) cos(θ(t)) dt 2 0 𝑅 1 𝑡 𝑦(𝑡) = ∫ (𝑣 (𝑡) + 𝑣𝐿 (𝑡)) sin(θ(t)) dt 2 0 𝑅 𝑡 1 𝜃(𝑡) = ∫ (𝑣 (𝑡) − 𝑣𝐿 (𝑡))𝑑𝑡 2𝐿 0 𝑅 20 CHƯƠNG 2: BẢN VẼ THIẾT KẾ 2D Tên chi Bản vẽ 2d tiết Khung xe Cảm biến hồng ngoại 21 Hộp pin Stm32F103C8T6 Màn hình LCD model 22 Mạch điều khiển động cơ L298 23 Động cơ DC Servo JGA25- 370 kèm bánh xe 24 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 3.1 Sơ đồ tổng thể hệ thống Hình 3.1: Sơ đồ tổng quát hệ thống.2 Thiết kế phần cứng của hệ thống - Khối cảm biến: Gồm cảm biến hồng ngoại - Khối xử lý trung tâm: Module vi điều khiển STM32F103C8T6. - Khối xử lý tín hiệu vào ra: Mạch cầu L298, màn hình LCD, biến trở. - Khối cơ cấu chấp hành: Động cơ Encoder.1 Các thiết bị được sử dụng Trong hệ thống sử dụng STM32F103C8T6 để thực hiện điều khiển chính. Kit điều khiển sẽ dựa vào thông số cảm biến và encoder thu thập được để điều khiển động cơ.1: Linh kiện sử dụng cho hệ thống điện.

Số STT Tên thiết bị Chức năng lượng Khối cảm biến 1 Cảm biến hồng ngoại 1 Né khi gặp vật cản Khối điều khiển trung tâm 2 STM32F103C8T6 1 Vi điều khiển trung tâm Khối xử lý tín hiệu 3 Biến trở 1 Thay đổi độ tương phản của LCD 4 Driver L298 1 Điều khiển tốc độ động cơ 5 Màn hình LCD 1 Hiển thị thông số xung encoder Khối cơ cấu chấp hành 6 Động cơ encoder 2 Di chuyển xe tới vị trí 3.2 Thiết bị khối cảm biến ❖ Cảm biến hồng ngoại Các cảm biến PIR luôn có sensor (mắt cảm biến) với 2 đơn vị (element). Chắn trước mắt sensor là một lăng kính (thường làm bằng plastic), chế tạo theo kiểu lăng kính fresnel. Lăng kính fresnel này có tác dụng chặn lại và phân thành nhiều vùng (zone) cho phép tia hồng ngoại đi vào mắt sensor. Chúng ta có thể hiểu đơn giản rằng, nếu không có lăng kính fresnel, toàn bộ bức xạ của môi trường sẽ chỉ coi như có 1 Zone 26 dội hết vào mắt sensor, như vậy thì nó sẽ không có tác dụng phân biệt chuyển động, và sẽ cực kỳ nhạy với bất kỳ sự thay đổi nhiệt độ nào của môi trường.2: Cảm biến hồng ngoại.

Thông số kỹ thuật: • Model: OMDHON E18-D80NK • Số dây tín hiệu: 3 dây (2 dây cấp nguồn và 1 dây tín hiệu). • Chân tín hiệu ngõ ra: cấu trúc cực thu hở Transistor NPN - Open Collector nên sẽ cần phải có trở kéo (khoảng 1~10K) lên chân nguồn dương VCC để tạo thành tín hiệu mức cao (High). • Nguồn điện cung cấp: 5VDC • Khoảng điều chỉnh phát hiện vật cản của cảm biến: 3~80cm (điều chỉnh bằng biến trở trên cảm biến). • Góc khuếch tán (góc chiếu): 3~5 độ • Dòng kích ngõ ra: < 30 0mA.

• Có led hiển thị ngõ ra màu đỏ. • Chất liệu sản phẩm: vỏ ngoài nhựa ABS, phía trong đổ keo chống nước, chống va đập. • Kích thước: 18 x 70mm 27 Sơ đồ dây: • Màu Nâu (Brown): chân nguồn dương VCC cấp nguồn từ 5VDC. • Màu Đen (Black): chân tín hiệu SIGNAL đầu ra cấu trúc cực thu hở Transistor NPN - Open Collector.

• Xanh Dương (Blue): chân nguồn âm GND 0VDC.3: Sơ đồ kết nối cảm biến trên mạch.3 Thiết bị khối điều khiển trung tâm ❖ STM32F103C8T6 Kit phát triển STM32F103C8T6 Blue Pill ARM Cortex-M3 là loại được sử dụng để nghiên cứu về ARM nhiều nhất hiện nay do có mức giá rẻ đồng thời có thể nạp bootloader Blue Pill để giao tiếp và lập trình với phần mềm Arduino một cách dễ dàng, kit có chất lượng gia công tốt, độ bền cao.4: Kit phát triển STM32F103C8T6. Thông số kỹ thuật: • Vi điều khiển: STM32F103C8T6. • Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và cấp cho Vi điều khiển chính. • Tích hợp sẵn thạch anh 8Mhz.

• Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC. • Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,. • Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset. • Kích thước: 53.

❖ Sơ đồ chân GPIO STM32F103C8T6: 29 Hình 3.5: Sơ đồ chân GPIO STM32F103C8T6.4 Thiết bị khối xử lí ❖ Biến trở Bộ 11 loại biến trở thông dụng 100~1M Ohm (11 kind variable resistor) bao gồm 11 loại biến trở cắm thông dụng với số lượng mỗi loại 5 con (tổng 55 con) giúp bạn dễ dàng thực hiện các thí nghiệm trên Breadboard với các module, vi điều khiển, cảm biến,. Thông số kỹ thuật: – 10K Ohm (103) 1M Ohm (105) 30 Hình 3. ❖ Mạch công suất c ầu H (L298) – Định nghĩa Mạch cầu H điều khiển động cơ L298N cho phép bạn kiểm soát tốc độ và hướng của hai động cơ DC ,hoặc kiểm soát một động cơ bước lưỡng cực một cách dễ dàng.7: Module mạch cầu H L298N. 31 – Cấu tạo Mạch cầu H • 2V power, 5V power.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ