« Home « Kết quả tìm kiếm

THUẬT TOÁN THỜI GIAN THỰC, CHI PHÍ THẤP CHO HỆ THỐNG NHÚNG DỰA TRÊN NHÂN FREERTOS


Tóm tắt Xem thử

- THUẬT TOÁN THỜI GIAN THỰC, CHI PHÍ THẤP CHO HỆ THỐNG NHÚNG DỰA TRÊN NHÂN FREERTOS.
- Mã nguồn mở, hệ điều hành thời gian thực, hệ thống nhúng, ARM Cortex, bộ điều khiển PID mờ.
- Bài báo trình bày một phương pháp thực hiện thuật toán điều khiển nhúng với chi phí thấp sử dụng nhân hệ điều hành thời gian thực nhúng freeRTOS.
- Bước thứ nhất, thuật toán sẽ được thiết kế và kiểm chứng sử dụng Matlab/Simulink toolboxes..
- Bước thứ hai, thuật toán này sẽ được phát sinh mã nguồn ngôn ngữ C cho hệ thống nhúng bằng công cụ Matlab Realtime Embedded Coder.
- Bước cuối cùng, các tác vụ freeRTOS được lập trình dựa trên mã lệnh sinh ra để biên dịch và thực thi thuật toán trên hệ thống nhúng.
- Thuật toán PID mờ tự động hiệu chỉnh thông số điều khiển một robot hai bánh tự cân bằng được chọn để minh chứng phương pháp được đề nghị.
- Thuật toán này được chạy trên vi điều khiển nhân ARM Cortex M4 nổi tiếng STM32F407VTG.
- Kết quả thực nghiệm cho thấy thuật toán điều khiển nhúng đã hoạt động chính xác, robot vừa cân bằng vừa cho đáp ứng bám góc và vị trí nhanh với độ trễ tối đa 1.5 giây.
- Giải pháp đề nghị giúp có thể phát triển thuật toán điều khiển nhúng phức tạp với chi phí thấp phù hợp cho hầu hết các nhà phát triển hệ thống nhúng..
- Operating System) thường được sử dụng để thiết kế các hệ thống thời gian thực này.
- Hiện tại, có nhiều RTOS đang được các hãng thiết kế và cung cấp cho các nhà phát triển như FreeRTOS, µCOS, CMSIS-RTOS, Pumpkin OS, ChibiOS/RT.
- đã công bố một nghiên cứu về việc so sánh ba hệ điều hành thời gian thực mã nguồn mở nổi tiếng hiện nay là RT-Linux, FreeRTOS và eCOS dựa trên cùng bộ xử lý và một số tác vụ kiểm tra [1].
- Các kết quả nghiên cứu cho thấy FOSS RTOS có các thông số về thời gian trội hơn nhóm còn lại mặc dù nó được cung cấp miễn phí.
- RTOS cũng được sử dụng trong nhiều nghiên cứu khác.
- Cụ thể là một nghiên cứu sử dụng chuẩn CMSIS-RTOS để phát triển IoTs (Internet of Things) được thực hiện bởi Douglass đã hấp dẫn nhiều nhà nghiên cứu khác [3].
- Nó giúp giảm thời gian thiết kế và đưa hệ thống vào thương mại với giá thành hợp lý..
- Một nghiên cứu khác được thực hiện bởi Jorge Cabrera-Gasmez [4] đã thiết kế thành công bộ điều khiển thời gian thực một thuyền bườm sử dụng ChibiOS/RT hoạt động trên vi điều khiển SAM3X8E..
- Hiện nay, nhiều ứng dụng trong lĩnh vực công nghệ thông tin cũng đang hướng thực hiện trên hệ thống nhúng.
- Cụ thể, nhiều khóa học về lập trình hệ thống nhúng cơ bản đã được đưa vào giảng dạy ở các trường đại học.
- Các khóa này thường được minh họa trên mạch phát triển MSP430 LaunchPad được thiết kế bởi công ty Texas Instrument.
- Đây là một mạch phát triển được thiết kế theo hướng dễ sử.
- Một camera tích hợp trên robot sẽ liên tục chụp ảnh và gửi về máy tính cá nhân để nhận dạng đối tượng và gửi lệnh ngược lại điều khiển robot bám đối tượng.
- Tuy nhiên, điểm bất lợi của nghiên cứu này là sử dụng một nền tảng phần cứng có sẵn với giá thành cao, tốn nhiều thời gian khảo sát và nghiên cứu để có thể phát triển được ứng dụng..
- Song song với các nghiên cứu trên, bài báo này trình bày một phương pháp mới để có thể ứng dụng RTOS đưa các thuật toán được thiết kế bởi Matlab/Simulink vào một hệ thống nhúng chi phí thấp, tiết kiệm năng lượng và dễ sử dụng.
- Thiết kế phần cứng dựa trên kiến trúc ARM Cortex-M4 32- bit chạy hệ điều hành thời gian thực FreeRTOS..
- 2 THUẬT TOÁN.
- Bộ điều khiển PID mờ tự chỉnh điều khiển một robot hai bánh tự cân bằng được chọn để minh họa cho phương pháp đề nghị trong nghiên cứu này..
- Mô hình của robot được thiết kế như Hình 1.
- Thuật toán điều khiển robot được thiết kế như Hình 2..
- Thuật toán này có ba vòng điều khiển chính.
- Vòng thứ nhất Fuzzy PD1 sử dụng bộ điều khiển PD mờ để tính toán góc nghiêng tham chiếu r ɵ cho bộ điều khiển Fuzzy PD2 dựa trên lỗi khoảng cách so với vị trí đặt của robot.
- Vòng thứ hai Fuzzy PD2 cũng sử dụng một bộ điều khiển PD mờ để tính toán một phần của tính hiệu ra u y dựa vào r ɵ .
- Vòng thứ ba sử dụng bộ điều khiển PID tự chỉnh để điều khiển góc xoay của robot, tính toán tín hiệu ra u x còn lại của hệ thống.
- Để điều khiển robot, hai tín hiệu ra u x và u y được sử dụng để tính toán hai tín hiệu u R và u L.
- điều khiển robot theo hai công thức (1) và (2) như sau [8]..
- Trong đó u R , u L là tín hiệu ra điều khiển hai động cơ bên phải và bên trái của robot..
- Hình 2: Thuật toán điều khiển robot 3 PHƯƠNG PHÁP THỰC HIỆN BỘ ĐIỀU.
- FreeRTOS là một hệ điều hành thời gian thực mạnh, hỗ trợ rất nhiều kiến trúc phần cứng, một số kiến trúc có thể kể đến như Intel, ARM, 8051, PIC..
- Mục đích của nghiên cứu này là trình bày một phương pháp để ứng dụng RTOS mà cụ thể là FreeRTOS để thực hiện các thuật toán chạy thời gian thực.
- Thuật toán điều khiển một robot hai bánh tự cân bằng được đề nghị để minh chứng phương pháp đề nghị.
- Các phần giới thiệu về RTOS, tổng quan về nền tảng phần cứng và phương pháp thực hiện bộ điều khiển nhúng ứng dụng RTOS sẽ lần lượt được trình bày ở các phần ngay sau đây..
- 3.1 Giới thiệu hệ điều hành thời gian thực RTOS - Realtime Operating System là một hệ điều hành được thiết kế để phát triển các ứng dụng nhúng thời gian thực, các ứng dụng này thường xử lý các tác vụ cần thực hiện với một độ trễ nhỏ.
- Độ trễ này được gọi là “deadline time” của hệ điều hành thời gian thực.
- Trong hệ thống thời gian thực,.
- “deadline time” là một thông số quan trọng vì thế nó cần được cân nhắc khi thiết kế hệ thống [7]..
- Hiện tại, có trên 30 hệ điều hành thời gian thực đã được phát triển, hỗ trợ rất nhiều họ vi điều khiển bao gồm cả những họ vi điều khiển có bộ nhớ rất thấp..
- Có hai thuận lợi chính khi thiết kế ứng dụng với RTOS.
- Thứ nhất, các nhà thiết kế không cần tốn quá nhiều thời gian nghiên cứu, tìm hiểu phương pháp để có thể giao tiếp với các ngoại vi của vi điều khiển vì nó tích hợp gần như hoàn chỉnh các thư viện HAL (Hardware Abstraction Layer) và hỗ trợ rất nhiều họ vi điều khiển khác nhau.
- Thứ hai, ứng dụng RTOS được thiết kế theo hướng tác vụ rất hiệu quả với các hệ thống phức tạp và dự án làm việc nhóm..
- FreeRTOS là một RTOS được thiết kế bởi Real Time Engineer Ltd.
- Phần cứng được thiết kế trong nghiên cứu này sử dụng họ vi điều khiển nổi tiếng STM32F4xx của hãng STMicroelectronics.
- Đây là họ vi điều khiển được thiết kế trên nền tảng nhân ARM Cotex M4..
- Vi điều khiển cụ thể được chọn là STM32F407VG, nó được tích hợp bộ tính toán số dấu chấm động FPU (Floating Point Unit), tần số xung nhịp lên đến 168 MHz cùng với nhiều ngoại vi mạnh mẽ rất thích hợp cho việc thực thi các thuật toán điều khiển chạy thời gian thực.
- Cụ thể, nó được tích hợp bộ chuyển đổi tương tự sang số 12-bit ADC (Analog-to-Digital Converter) tốc độ cao, bộ nhớ Flash tốc độ cao dung lượng 1 MB, 6 bộ giải mã vòng quay phù hợp cho việc điều khiển thời gian thực robot hai nhánh tự cân bằng với giá chi phí thấp, tiết kiệm năng lượng.
- Sơ đồ khối phần cứng của hệ thống được mô tả trong Hình 3..
- Hình 3: Sơ đồ khối phần cứng hệ thống Theo Hình 3, góc nghiêng của robot được đo bởi MPU6050 đây là một cảm biến công nghệ MEMs tích hợp cảm biến gia tốc và con quay hồi chuyển 6 trục.
- 3.3 Xây dựng bộ điều khiển robot.
- Thuật toán điều khiển được thiết kế bằng Matlab/Simulink thực hiện lần lượt theo 3 bước sau:.
- Bước 1: Thiết kế thuật toán sử dụng Matlab/Simulink.
- Simulink của thuật toán đề nghị trong nghiên cứu này được thiết kế như Hình 4.
- Từ hình này cho thấy sơ đồ thiết kế của thuật toán gồm hai loại khối chính.
- Loại thứ hai là khối ngỏ ra, khối này nhận dữ liệu từ các ngỏ ra của các khối ngỏ vào đưa vào nó để tính toán các ngỏ ra chung của thuật toán.
- Nếu hệ thống có những khối chạy một cách đọc lập với thời gian lấy mẫu nó sẽ được thiết kế riêng thành một khối.
- Một tác vụ FreeRTOS sẽ được thiết kế để chạy mã lệnh của khối này khi các tác vụ phụ thuộc thời gian lấy mẫu thực thi xong.
- Điều này sẽ làm giảm thời gian thực thi của hệ thống.
- Hình 4: Thuật toán Matlab/Simulink hoàn chỉnh.
- Bước 3: Cấu hình các thông số của Matlab/Simulinks để biên dịch thuật toán thành mã lệnh ngôn ngữ C nhúng.
- Đây chính là thông số quy định thời gian lấy mẫu của hệ thống.
- Thứ hai, tập tin cài đặt cách thức sinh mã hệ thống được chọn là ert.tlc đây là tập tin viết bằng ngôn ngữ TLC (Target Language Compiler) định nghĩa các quy luật để sinh mã ngôn ngữ C cho hệ thống nhúng..
- Hoàn thành 3 bước trên, thuật toán thiết kế trên Matlab/Simulink đã sẵn sàng để sinh mã thành ngôn ngữ C nhúng.
- Từng khối trong thuật toán sẽ được sinh mã riêng biệt.
- Đối với thuật toán trong nghiên cứu này sẽ có bốn khối được sinh mã và mã lệnh sinh ra sẽ được nằm trong bốn thư mục như Hình 6..
- Như đã được đề cập, thuật toán sẽ được thiết kế thành nhiều khối và được sinh mã riêng biệt.
- Để thực thi mã lệnh của các khối này trên hệ thống nhúng một chương trình FreeRTOS sẽ được phát triển để kết hợp và thực thi các mã lệnh này để phục hồi chính xác thuật toán đã thiết kế trên Matlab/Simulink.
- Sự chính xác này được đánh giá trên hai yếu tố: sự chính xác của thời gian lấy mẫu và đáp ứng thực tế của đối tượng.
- Tác vụ ngỏ ra cũng là tác vụ chạy theo chu kỳ, nó được thực thi đều đặn sau mỗi lần thời gian lấy mẫu trôi qua.
- Thời gian này được tạo bởi hàm API (Application Programming Interface) TaskDelayUntil.
- Hàm này sẽ đảm bảo tác vụ được kích hoạt để thực thi sau một khoảng thời gian lấy mẫu chính xác, thời gian này tính cả thời gian thực thi mã lệnh của tác vụ.
- Một điều cần lưu ý là giá trị truyền vào hàm này phải đảm bảo tạo ra thời gian trùy hoãn bằng với giá trị thiết lập cho.
- Tất cả các mã lệnh sẽ được tích hợp lại thành một dự án RealView KeilC cho vi điều khiển STM32F407VG để biên dịch thành mã lệnh thực thi và chạy thời gian thực để điều khiển robot.
- Dự án hoàn chỉnh của thuật toán điều khiển robot được minh họa trong Hình 7..
- 4.1 Thời gian lấy mẫu và thực thi thuật toán Thời gian lấy mẫu được đo để khẳng định nó đã được tạo ra một cách chính xác trên hệ thống nhúng.
- Thời gian này được đo bằng một bộ định thời 32-bit của vi điều khiển STM32F407VG.
- Giá trị này sẽ được chuyển thành đơn vị thời gian và có đồ thị như Hình 8 sau 37 lần đọc..
- Đồ thị cho thấy thời gian lấy mẫu được tạo ra một cách chính xác với sai số rất nhỏ 0.001[ms]..
- Hình 8: Thời gian lấy mẫu của hệ thống nhúng.
- Bên cạnh thời gian lấy mẫu, thời gian thực thi của thuật toán đề nghị cũng được đo để thể hiện được sức mạnh của dòng vi điều khiển được chọn..
- Sử dụng cùng một phương pháp đo đạc, thời gian thực thi của thuật toán được thể hiện bằng đồ thị Hình 9.
- Đồ thị này cho thấy tổng thời gian thực thi toàn bộ thuật toán chỉ khoảng 0.9[ms] thấp hơn rất nhiều so với tổng thời gian lấy mẫu.
- Điều này cho thấy STM32F407VG là vi điều khiển có khả năng tính toán rất mạnh, nó hoàn toàn có thể thực thi các bộ điều khiển khác phức tạp hơn..
- Hình 9: Thời gian thực thi thuật toán 4.2 Đáp ứng của robot.
- Phần này sẽ minh chứng thuật toán đã thiết kế được xây dựng thành công trên hệ thống nhúng..
- Hình 10 là đồ thị đáp ứng của robot khi được điều khiển bằng thuật toán PID mờ tự chỉnh thông số, đáp ứng này cũng đã khẳng định thuật toán đề nghị hoạt động tốt trên hệ thống nhúng khi áp dụng phương pháp được đề nghị trong nghiên cứu này..
- Robot đã bám tốt vị trí chiếu với sai số xác lập tối đa không quá 0.01[m], thời gian tăng nhỏ khoảng 1.5 [s] và vọt lố không quá 0.015 [m] (Hình 10b).
- Một phương pháp xây dựng thuật toán thời gian thực sử dụng hệ điều hành mã mở FreeRTOS chạy trên hệ thống nhúng đã được đề nghị trong nghiên cứu này.
- Phương pháp này tạo điều kiện thuận lợi cho các nhà nghiên cứu sử dụng các thuật toán được thiết kế trên Matlab/Simulink vào hệ thống nhúng.
- Các kết quả thực nghiệm đã minh chứng được bộ điều khiển robot hai bánh tự cân bằng được xây bằng phương pháp đề nghị đã hoạt động chính xác, đáp ứng của robot nhanh với thời gian trễ tối đa 1.5[s].
- Lỗi thời gian lấy mẫu rất nhỏ 0.001[ms].
- Phương pháp đề nghị này là một giải pháp để phát triển các hệ thống thống nhúng với chi phí thấp và nó phù hợp với hầu hết các nhà thiết kế hệ thống nhúng.