Với mơ hình hóa cho FWOMR được xây dựng như Hình 1.6, sơ đồ khối bộ điều khiển MPC phi tuyến được thể hiện như trên Hình 1.9.
Với việc sử dụng công cụ xử lý hiệu năng cao cho phép ứng dụng mơ hình bộ điều khiển thích nghi để xây dựng mơ hình dự báo nhằm giải quyết vấn đề tối ưu hóa mơ hình điều khiển cho FWOMR.
Bộ điều khiển MPC có thể được xây dựng như một quy trình tối ưu hóa lặp đi lặp lại thông qua việc đo lường hoặc ước tính các biến kiểm sốt hiện tại ở mỗi bước để cho ra tín hiệu điều khiển trong tương lai
Tín hiệu từ khối điều hướng cục bộ được đưa vào khối MPC nhằm tạo ra một hàm mục tiêu được tối ưu hóa để có thể được một đầu vào điều khiển tối ưu, sau đó tiến hành thực hiện lặp lại q trình tính tốn trực tuyến của một chức năng được tối ưu hóa nhằm xác định tín hiệu điều khiển cho robot trong quỹ đạo di chuyển cục bộ đến mục tiêu đặt trước.
1.3.1. Giới thiệu về ROS
ROS là một hệ điều hành mã nguồn mở cung cấp các dịch vụ mong muốn từ một hệ điều hành, bao gồm kết nối tới phần cứng, điều khiển thiết bị cấp thấp và thực hiện những chức năng mà robot thường sử dụng. Nó cũng cung cấp các cơng cụ, thư viện để xây dựng và chạy mã trên nhiều máy tính [31], [57].
ROS tương tự như hệ điều hành. Tuy nhiên, không giống như các hệ điều hành thơng thường, nó có thể được sử dụng nhiều kết hợp tác vụ cho phần cứng. Hơn nữa, nó là một phần mềm nền tảng cung cấp các môi trường phát triển khác nhau chuyên nghiệp cho các chương trình robot ứng dụng.
Hình 1.10. Cấu trúc hệ điều hành ROS
1.3.2. Mục tiêu của ROS
Mục tiêu của ROS rất rõ ràng nhằm xây dựng môi trường phát triển cho phép phát triển phần mềm robot trên toàn cầu. ROS có các đặc điểm:
- Chia nhỏ các tác vụ: ROS được lập trình dưới dạng chia các cơng việc thành các q trình xử lí nhỏ gọi là các nút (node). Mỗi quy trình sẽ chạy độc lập và trao đổi dữ liệu một cách có hệ thống [49], [50].
- Quản lí gói: Nhiều quy trình xử lí có cùng mục đích được quản lý như một gói sao cho dễ sử dụng và phát triển, cũng như thuận lợi chia sẻ, sửa đổi và phân phối lại. - Kho lưu trữ cơng cộng: Mỗi gói được cơng khai lên các nhà phát triển cộng đồng như Github và đánh dấu bản quyền bằng giấy phép.
- Giao diện lập trình ứng dụng API (Application Programming Interface): Khi phát triển chương trình sử dụng ROS, ROS được thiết kế để chỉ cần gọi API và chèn nó dễ dàng vào những mã đang được sử dụng. Lập trình với ROS sẽ khơng khác nhiều so với C++ và Python [60].
- Hỗ trợ các ngơn ngữ lập trình khác nhau: Chương trình ROS cung cấp nhiều thư viện để hỗ trợ các ngơn ngữ lập trình khác nhau. Thư viện có thể được thêm vào trong q trình lập trình của các ngơn ngữ phổ biến trong lĩnh vực robot như Python, C++... Nói cách khác, ROS có thể được lập trình bằng các ngơn ngữ ưa thích.
Những đặc điểm này của ROS đã cho phép người dùng thiết lập một mơi trường có thể hợp tác phát triển phần mềm cho robot ở mức toàn cầu. Sử dụng các API đã nghiên cứu và phát triển cho robot sẽ giúp rút ngắn quá trình nghiên cứu, ứng dụng và cũng là mục tiêu cuối cùng của ROS [102] .
1.3.3. Các hoạt động của ROS
Về cơ bản hệ thống các file trong ROS được bố trí và hoạt động từ trên xuống theo thứ tự như sau: gói tổng (Metapackages), gói con (Packages), liệt kê gói (Packages manifest), hỗn hợp (Misc), tin nhắn (Messages), dịch vụ (Services), mã (Codes) như Hình 1.9.
Hình 1.11. Hệ thống các files trong ROS
- Gói tổng: là một nhóm các gói có liên quan tới nhau. Ví dụ trong ROS có một gói tổng tên là Navigation, gói này có chứa tất cả các gói con liên quan tới việc di chuyển của robot, bao gồm di chuyển thân, bánh, các thuật toán liên quan như Kalman, Particle filter... Khi cài đặt gói tổng, nghĩa là tất cả các gói con trong nó cũng được cài đặt. Lớp file hệ thống Gói tổng Gói con Hỗn hợp Liệt kê Tin Dịch vụ Mã Lớp file hệ thống ROS Gói tổng Gói con Hỗn hợp Liệt kê Gói
- Gói con: các gói chính là các thành phần cơ bản nhất tạo nên ROS. Trong một gói gồm có: ROSnode, datasets, configuration files, source files, tất cả được đóng gói lại thành một gói. Tuy nhiên, mặc dù có rất nhiều thành phần trong một gói nhưng có hai thành phần quan trọng nhất là src_folder chứa toàn bộ mã và Cmake.txt là nơi khai báo những thư viện cần thiết để thực thi mã [61].
1.3.4. Sự tương tác giữa các nút trong ROS
Sơ đồ giao tiếp giữa các nút của ROS (ROS computation graph) là mơ hình tổng thể về sự tương tác của các nút, các chủ đề (topic) với nhau. Nút trung tâm (Node master) kết nối tất cả các nút còn lại, các nút còn lại muốn giao tiếp với nhau phải thơng qua nút trung tâm (Hình 1.10).
- Nút: Các nút trong ROS chỉ đơn giản là quá trình sử dụng ROS-API để giao tiếp với nhau. Mỗi robot có thể có rất nhiều nút để thực hiện q trình giao tiếp của nó. Ví dụ: một robot tự hành thơng thường sẽ có nút đọc dữ liệu từ cảm biến lidar (Laser scanner), cảm biến hình ảnh (Astra Camera), định vị và bản đồ hóa, nút gửi lệnh vận tốc cho hệ thống điều khiển cơ cấu chấp hành.
NÚT 1 Chủ đề Dịch vụ Tin nhắn Các gói tin Tham số máy chủ NÚT 2 NÚT TRUNG TÂM Tin nhắn Chủ đề Dịch vụ
Hình 1.12. Sơ đồ giao tiếp giữa các nút
- Nút trung tâm: Nút trung tâm đóng vai trị như một nút trung gian kết nối giữa các nút khác nhau. Nút trung tâm bao quát thông tin về tất cả các nút hoạt động trong mơi trường ROS. Nó sẽ trao đổi chi tiết của một nút với nút khác để thiết lập kết nối giữa chúng. Sau khi trao đổi thông tin, giao tiếp sẽ bắt đầu giữa hai nút. Khi chạy một chương trình ROS, nút trung tâm được khởi chạy trước tiên. Ta có thể khởi chạy nút trung tâm bằng cách thực hiện lệnh /terminal/roscore.
- Tin nhắn: Các nút có thể giao tiếp với nhau bằng cách gửi và nhận dữ liệu dưới dạng tin nhắn. Tin nhắn là một cấu trúc dữ liệu được sử dụng bởi các nút trong ROS để trao đổi dữ liệu. Nó giống như là một giao thức (Protocol), định dạng thông tin gửi đi giữa các nút, ví dụ như string, float, int ...
- Chủ đề (Topic): Một trong những phương pháp để giao tiếp và trao đổi tin nhắn giữa hai nút được gọi là chủ đề. Chủ đề giống như một kênh tin nhắn, trong kênh đó dữ liệu được trao đổi bằng tin nhắn. Mỗi chủ đề sẽ có một tên khác nhau tùy thuộc vào những thơng tin mà nó sẽ phụ trách cung cấp. Một nút sẽ xuất dữ liệu (publish) thông tin cho một chủ đề và một nút khác có thể đọc từ chủ đề bằng cách thu dữ liệu (subscribe) với nó [19].
- Dịch vụ (Service): Là một loại phương pháp giao tiếp khác với chủ đề. Chủ đề sử dụng tương tác xuất dữ liệu - thu dữ liệu (publish – subscribe) nhưng trong dịch vụ nó tương tác theo kiểu hỏi - đáp (request – response). Hiểu đơn giản là một nút sẽ hoạt động như một máy chủ, có một máy chủ thường xuyên chạy và khi máy khách gửi yêu cầu dịch vụ cho máy chủ, máy chủ sẽ thực hiện dịch vụ và gửi kết quả cho máy khách. Máy khách phải đợi cho đến khi máy chủ phản hồi với kết quả. Nút máy chủ đặc biệt hữu dụng khi chúng ta cần thực hiện một lệnh gì đó mà cần thời gian lâu để xử lý.
Trên cơ sở nghiên cứu các thuật toán trên nền tảng hệ điều hành ROS làm nền tảng cho luận án tìm hiểu cách thức hoạt động của robot trên phần mềm mô phỏng và trực quan hố kết quả bằng thực nghiệm trong mơi trường thực tế.
Để có thể thực hiện mơ phỏng mơ hình robot cũng như giám sát các hoạt động của robot một cách trực quan nhất thường dùng các cơng cụ hỗ trợ, trong đó Gazebo và Rviz là hai công cụ rất mạnh mẽ [89] .
1.4.1. Tình hình nghiên cứu ngồi nước
Nghiên cứu về robot tự hành đã có những tiến bộ vượt bậc trong hơn thập kỷ qua. Ứng dụng của nó trong nhiều lĩnh vực giúp thay thế con người thực hiện các nhiệm vụ trong môi trường đặc thù (nguy hiểm, độc hại). Trong xu thế đó, robot tự hành đang là lĩnh vực được quan tâm đặc biệt bởi các nghiên cứu trong và ngoài nước.
Các nghiên cứu tập trung vào 2 hướng nghiên cứu chính:
Hướng nghiên cứu thứ nhất: Các thuật toán bản đồ hóa và định vị robot trong
mơi trường hoạt động là vấn đề thiết kế một hệ thống có khả năng cung cấp thông tin về môi trường nhằm xây dựng kế hoạch chuyển động cho robot. Các nghiên cứu của nhóm tác giả L. Teslic [92] về vấn đề nội địa hóa robot di động trong mơi trường có cấu trúc sử dụng bộ lọc Kalman mở rộng (EKF) để xác định vị trí của robot di động bốn bánh với mỗi bước dự đốn được thực hiện bằng cách mơ phỏng mơ hình động học của robot trong ma trận hiệp phương sai nhiễu đầu vào của EKF [95]. Thuật toán SLAM (Simultaneous Localization And Mapping) được nghiên cứu để đưa ra kỹ thuật bản đồ hoá và định vị đồng thời của robot được nghiên cứu bởi nhóm tác giả Megalingam và R.K.e.a [58] trong việc điều hướng robot di động trong các mơi trường khơng xác định mà chưa có bản đồ sử dụng hệ điều hành ROS. Việc xây dựng các hệ thống robot sử dụng kỹ thuật SLAM để bản đồ hoá và định vị ngày càng phổ biến [68]. Nhóm nghiên cứu R. Giubilato và cộng sự [33] sử dụng bộ vi xử lý hiệu năng cao đã giải quyết các kỹ thuật xử lý vấn đề SLAM lấy giá trị thông tin đầu vào từ các cảm biến độ sâu, cảm biến khoảng cách, bộ mã hóa trục quay từ đó tính tốn ra các giá trị cho việc bản đồ hố và định vị robot. Bên cạnh đó, các tín hiệu từ cảm biến thu về trong quá trình di chuyển cũng được sử dụng xây dựng các thuật toán để phát hiện những vật cản động bất ngờ xuất hiện trong quá trình di chuyển.
Từ các nghiên cứu trên có thể nhận thấy việc bản đồ hóa mơi trường và xác định vị trí chính xác của robot dựa trên các thuật tốn ước lượng theo tham số cảm biến và quá trình lấy mẫu vì vậy việc bản đồ hóa chính xác sẽ giúp cho việc định vị chính xác vị trí của robot trong bản đồ khi tồn tại các vật cản tĩnh (thường phát sinh các nhiễu ngoại xung quanh vật cản) còn gặp sai lệch do nhiễu đo và nhiễu quá trình.
Hướng nghiên cứu thứ hai: Trong thực tế, robot tự hành với yêu cầu lập quỹ
đạo trực tuyến, thường là một phần của kế hoạch phân cấp kiến trúc, vẫn là một phần quan trọng của nghiên cứu để đáp ứng các yêu cầu của bài tốn điều hướng địi hỏi ngày càng phức tạp và môi trường năng động cao. Nhóm tác giả S. Quinlan và cộng sự [71] đề xuất một phương pháp là sự mở rộng của việc lập kế hoạch di chuyển dải đàn hồi (EB) với tiếp cận đến biến dạng quỹ đạo. Trong nghiên cứu của mình nhóm
tác giả V. Delsart và T. Fraichard đề xuất thuật toán có thể xử lý được khá nhiều tình huống mà biến dạng đường đi được xây dựng bằng cách kết hợp chiều thời gian và thông tin về hành vi của chướng ngại vật trong tương lai [23]. B.Lau và cộng sự trình bày một phương pháp biểu diễn quỹ đạo và tuân thủ các ràng buộc của robot trong không gian ba chiều [52]. Không chỉ dành cho robot di động, mà đặc biệt đối với bài tốn động lực học tích hợp, thuật tốn lập kế hoạch trực tuyến dựa trên cơ sở suy giảm độ dốc đạo hàm đồng biến hoặc nghịch biến và xu hướng di chuyển của vật cản được trình bày trong [46], [72].
Tác giả S. Gulati [32] đề xuất phương pháp tiếp cận dựa trên tối ưu hóa có thể được rút ra từ công thức điều khiển tối ưu chung và được diễn giải với phản hồi trạng thái như một biến thể của bộ điều khiển dự báo [15]. Bộ điều khiển dự báo tính tốn qua trình lặp đi lặp lại nhằm giải quyết vấn đề điều khiển tối ưu (OCP) theo thời gian thực, đồng thời thực hiện hành động ban đầu của việc điều khiển quỹ đạo tối ưu cho hệ thống trong mỗi vịng lặp trong. Vì gặp phải khối lượng tính tốn lớn nên nhiều cách tiếp cận bị hạn chế bởi giới hạn phần cứng hoặc xấp xỉ gần đúng với bài toán ban đầu như phương pháp tiếp cận cửa sổ động (DWA) [29] có thể được hiểu là một lược đồ điều khiển dự báo có miền dự báo lùi dần đến điểm giới hạn [64].
Một cách tiếp cận khác của nhóm tác giả C. Rosmann và các cộng sự [76] đề xuất phương pháp dải đàn hồi thời gian TEB (Timed Elastic Band), ban đầu được xây dựng như phương pháp tối ưu hóa bình phương cực tiểu đa mục tiêu được phân thành các lát thời gian tỷ lệ. Bằng cách này, mơ hình động học của robot được biểu diễn về mặt hình học tương tự như một mặt phẳng mơ hình hệ thống trong khơng gian đặt ra và một phương trình phi tuyến thu được bằng cách áp dụng trực tiếp lặp lại. Phương trình phi tuyến sau đó được chuyển thành bài tốn bình phương nhỏ nhất khơng bị giới hạn bởi việc áp dụng hàm phạt bậc hai [77]. T. Faulwasser và cộng sự trình bày phương pháp điều khiển theo đường dẫn với các thuộc tính khả thi và ổn định đệ quy [27]. Nhóm tác giả X. Zhang và cộng sự [104] nghiên cứu phương pháp xây dựng các quỹ đạo tránh va chạm và xem xét các chướng ngại vật chung và có thể được biểu diễn dưới dạng hợp của các tập lồi. Một cách tiếp cận gần đây dựa trên xấp xỉ bên trong các tập lồi cung cấp các giải pháp khả thi và khơng có va chạm trong một vài
lần lặp lại của bộ điều khiển được giải quyết [83].
Nhóm tác giả C. Rosmann, A. Makarow và T. Bertram [79] đề xuất một sơ đồ lập kế hoạch chuyển động dựa trên bộ điều khiển dự báo MPC bằng cách xem xét rõ ràng các nhóm định hướng trong q trình tối ưu hóa. Các phương pháp dựa trên MPC có sẵn được điều chỉnh cho phù hợp với không gian trạng thái Ơclit. Cơng thức xây dựng thuật tốn MPC rất linh hoạt và bao gồm nhiều cách hiện thực hóa phổ biến bao gồm dạng hàm bậc hai miền dự báo giảm dần và các mục tiêu tối ưu về thời gian của miền dự báo thu hẹp với khả năng có thể tùy chỉnh cao và dễ dàng mở rộng với tích hợp trên nền tảng ứng dụng hệ điều hành robot (ROS).
Điều khiển dự báo mơ hình phi tuyến (NMPC) là một phương pháp miền thời gian dựa trên tối ưu hóa để điều khiển vịng kín của hệ thống phi tuyến với ưu điểm chính của NMPC là có thể xử lý rõ ràng các ràng buộc hệ thống trong q trình kiểm sốt, vốn thường bị bỏ qua trong các phương pháp truyền thống [26]. Tuy nhiên, hầu hết các hệ thống ln thốt ra khỏi nhiều ràng buộc khác nhau do giới hạn công suất của cơ cấu truyền động, điều kiện của môi trường xung quanh hoặc một số cân nhắc kinh tế. Như trong MPC tuyến tính truyền thống, NMPC tính tốn các hành động kiểm soát ở mỗi khoảng thời gian bằng cách sử dụng kết hợp dự đoán dựa trên mơ hình và tối ưu hóa có giới hạn. Tuy nhiên, đối với một hệ thống phi tuyến như robot tự hành đa hướng, cùng với yêu cầu phản hồi nhanh của bộ điều khiển, bộ điều khiển tuyến tính sẽ có nhiều thách thức và có thể dẫn đến phân kỳ trong một số trường hợp. Bên cạnh đó, bằng cách sử dụng bộ điều khiển NMPC, bộ điều khiển có thể xem xét