CHƯƠNG 1.1 Giới thiệu về Robot di chuyển tự hành (autonomous driving) Hình 1. 1 Tổng quan hệ thống robot tự động di chuyển Một robot thông minh hiện nay có thể tự động di chuyển trong một môi trường nhất định là một hệ thống phức tạp bao gồm cả phần cứng và phần mềm bao gồm hai phần: Khả năng nhận thức được môi trường xung quanh (Perception) thông qua các thiết bị nhận diện và các thuật toán xử lý tín hiệu thu được, và thứ hai là từ các dữ liệu thu thập được nó có thể tự di chuyển một cách khéo léo đến vị trí mong muốn đồng thời tránh các vật cản thông qua các thuật toán lập trình chuyển động (Motion planing) sẵn cho robot mà không cần đến bất kì tác động nào của con người. Mỗi vấn đề được nêu trên đều đã được nghiên cứu và phát triển từ lâu và có rất nhiều cách thức tiếp cận mỗi vấn đề khác nhau để tạo nên một robot tự hành. Khả năng nhận thức (Perception) Robot tự hành thông qua các thiết bị cảm biến môi trường (sensing) mà nó đang hoạt động như: Cảm biến âm thanh, ánh sáng, laser, … Hoặc các loại camera.
Thông qua các thiết bị cảm biến, các dữ liệu về môi trường được gửi về bộ não trung tâm để tính toán và dùng trong các tác vụ khác nhau. Tùy thuộc vào robot và ứng dụng của nó, các dữ liệu về môi trường sẽ được thu về đơn giản hay phức tạp theo mỗi loại cảm biến khác nhau. Đối với các loại robot đơn giản như di chuyển theo đường màu sắc hoặc di 1 Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh chuyển ngẫu nhiên khi bị chặn chuyển động, chúng chỉ cần các cảm biến về màu sắc hoặc cảm biến khi gặp vật cản. Tuy nhiên đa số các robot thông minh hiện nay việc nhận thức môi trường rất rõ ràng thông qua nhiều thuật toán xử lí tín hiệu và các cảm biến thường là các loại cảm biến laser khoảng cách, hoặc ngay cả camera.
Lập bản đồ (Mapping)[2] và định vị robot (Localizication) Đối với các loại robot tự hành thông qua bản đồ, sau khi Robot thu thập thông tin thông qua các thiết bị cảm biến, nhận diện. Từ các dữ liệu thu thập được thông qua các thuật toán tạo lập bản đồ chúng ta có thể thu được bản đồ toàn cục của môi trường mà các thiết bị cảm biến thu được. Vấn đề trong việc xây dựng bản đồ với dữ liệu thu thập được là làm thế nào để lưu trữ dữ liệu và dùng nó để thể hiện một bản đồ hữu ích về không gian bị chiếm dụng và không gian có thể sử dụng cũng như về độ chính xác đại diện cho môi trường hoạt động. Tùy thuộc vào mỗi ứng dụng khác nhau, robot cần phải nắm bắt rõ hay đơn giản những thông tin môi trường xung quanh nó.
Dựa vào đó, nhiều thuật toán ra đời giúp việc tạo lập bản đồ từ đơn giản cho tới chi tiết ra đời ( 2D, 3D). Dạng bản đồ thường được sử dụng nhiều là dạng lưới (ví dụ hình 2) vì khả năng tính toán ứng dụng rộng rãi và linh hoạt, ít tốn không gian bộ nhớ máy tính, giúp các thuật toán hoạt động trơn tru hơn. Việc định vị robot là việc xác định xem robot đang ở đâu trên bản đồ, vị trí và hình dáng của nó so với môi trường xung quanh. Mỗi môi trường mà robot hoạt động thường sẽ được đặt hệ tọa độ gốc để lấy làm mốc trong việc tính toán vị trí robot dễ dàng hơn.
Việc tạo lập bản đồ thường đi song song với việc định vị vị trí của robot trong bản đồ, vì đây là hai khía cạnh phụ thuộc vào nhau, vấn đề này có tên là SLAM (xem thêm các thuật toán ở OpenSlam). Để xây dựng một bản đồ của môi trường robot phải tự biết vị trí của nó, để biết được vị trí của nó tiếp theo robot cần phải có một bản đồ đã được tính toán. Ngoài ra việc định vị vị trí có thể đạt được thông qua GPS hoặc các thuật toán định vị khác (AMCL, MCL, …). 2 Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Hình 1.
2 Ví dụ về tạo lập bản đồ của robot (2D, 3D) 1. Điều khiển chuyển động (Motion planning) Sau khi robot đã có được các thông tin cần biết về môi trường mà nó hoạt động, tiếp đến ta cần có các thuật toán điều khiển di chuyển để robot có thể di chuyển đến vị trí mong muốn trên bản đồ hoặc thực hiện các nhiệm vụ mong muốn giải quyết các vấn đề. Dùng các thuật toán điều khiển, ta có thể điều khiển chuyển động của robot di chuyển theo ý muốn. Thông thường trong các robot tự hành thông minh, một đường đi toàn cục sẽ được đưa ra để hướng tới vị trí cuối cùng (path planning[8]) qua các thuật toán khởi tạo đường đi như A*, Dijkstra[7],.
Và thông qua các thuật toán điều khiển chuyển động, robot sẽ được điều khiển bám theo đường đi đã được đưa ra. Lập kế hoạch chuyển động phụ thuộc nhiều vào mô hình chuyển động của robot hơn là lập kế hoạch đường đi. Mỗi dạng robot khác nhau sẽ có các mô hình toán học khác nhau từ đó thông qua các thuật toán điều khiển như PID, hoặc các thuật toán điều khiển thông minh như mờ, LQR, neuron. để điều khiển các tín hiệu như vận tốc hoặc bánh lái của xe.
3 Tạo lập đường đi cho robot tiến tới đích 3 Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Một hệ thống robot lớn thường sẽ được chia ra làm hai tầng điều khiển khác nhau. Một là tầng tính toán cấp cao thường sẽ hoạt động để tính toán các thuật toán phức tạp trên (tạo lập bản đồ, data process, giao diện người máy, điều khiển thông minh) và tầng điều khiển cấp thấp thường hoạt động trên các bo mạch nhúng để điều khiển các cơ cấu máy móc, cấu trúc điện tử cơ học của robot (motor, servo). Để xây dựng một hệ thống hoàn thiện thì đây là một đề tài khá rộng và cần có những chuyên gia có kiến thức, kinh nghiệm để có thể phát triển một hệ thống ổn định, hoạt động trôi chảy trên nhiều điều kiện môi trường khác nhau. Trong luận án này chúng ta sẽ tiến hành thiết kế và xây dựng một robot hoạt động ổn định trong thực tế.
Mục tiêu đề tài • Tìm hiểu cách để tạo ra một robot tự hành và cấu trúc để thực hiện robot tự hành, có được hiểu biết về mô hình động học của robot dưới dạng xe bốn bánh với bánh omni và ROS. • Thiết lập chuyển động của robot dưới dạng xe bốn bánh trong chương trình mô phỏng trên nền tảng ROS, sử dụng các thuật toán robot tự hành và nắm bắt cơ bản các thuật toán. • Xây dựng được một robot giao coffee hoàn chỉnh từ việc xây dựng bản đồ, hoạch định đường đi ngắn nhất, đi theo quỹ đạo đã hoạch định đồng thời phát hiện và tránh các vật cản trên đường đi. Đối tượng, phạm vi nghiên cứu • Nền tảng Robot Operating system (ROS)[1].
• Các phần mềm và các nội dung thuộc về ROS. • Mô hình động học của robot xe bốn bánh với bánh lái omni. • Các thuật toán tạo lập bản đồ và định vị song song (SLAM), thuật toán điều khiển chuyển động (TEB[11]). • Phần mềm matlab.
• Phần mềm solidword. Các bước thực thiện đề tài • Tìm hiểu về ROS và cơ cấu động học của xe bốn bánh omni. • Thiết kế hình mẫu xe omni và động học trong phần mềm thiết kế và tạo robot thực tế. 4 Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh • Tìm hiểu các thuật toán để tạo nên một robot xe tự hành trong một môi trường chưa biết trước và triển khai các gói phần mềm trong mô hình.
• Viết giao diện robot kết nối với hệ thống máy tính trung tâm. • Điều chỉnh hiệu số các thông số tối ưu để đạt được quỹ đạo di chuyển tối ưu. Giới thiệu về Robot Operating System (ROS) Các thuật toán robot tự trị đa số là các thuật toán phức tạp và yêu cầu mức độ xử lý tính toán cao và cần một hệ thống phần mềm và phần cứng mạnh mẽ để xử lý chúng. Vì thế các robot tự trị thường có phần lõi xử lý cấp cao thường là một máy tính có hệ điều hành và ROS[1] là một nền tảng phần mềm mạnh mẽ giúp kết nối các cơ cấu hoạt động vật lý và các thuật toán.
Nó hoạt động trên hệ điều hành linux, mã nguồn mở và là một bộ khung phần mềm trung gian sử dụng cho việc nghiên cứu và phát triển robot. ROS được tạo ra để kết hợp các phần mềm robot với nhau, là một môi trường chung cho các nhà nghiên cứu phát triển một phần mềm, chức năng cho robot và xuất hành trên ROS. Các phần mềm, chức năng này sẽ có thể được sử dụng trên các ứng dụng robot nếu các robot ấy có cài đặt ROS. Nó được thiết kế để các nhóm phát triển robot cộng tác và xây dựng dựa trên công việc của nhau.
Bên cạnh tất cả các công cụ và gói mà ROS cung cấp, một trong những tính năng quan trọng nhất của ROS là khả năng trừu tượng hóa một số khía cạnh cơ bản và cấp thấp của phát triển phần mềm. ROS cung cấp một hệ thống giao tiếp giữa các quy trình có thể dễ dàng sử dụng để thực hiện một hệ thống phân tán với nhiều quy trình. Sử dụng khung giao tiếp đã triển khai, hệ thống dựa trên một biểu đồ giống như kiến trúc. Bao gồm các node chịu trách nhiệm xử lý và các node này có thể nhận, gửi và ghép kênh thông tin cảm biến và các cơ cấu chấp hành, lập kế hoạch, trạng thái và các thông báo khác.
ROS cho phép nhiều ngôn ngữ lập trình được sử dụng trong sự phát triển của hệ thống. Python, C++ hiện đang là các ngôn ngữ phổ biến nhất. Một hệ thống dựa trên ROS được chia làm ba cấp độ khái niệm : the filesystem level, the computation graph level, và the comunity level. Cấp đầu tiên là cấp Hệ thống tệp tin (Filesystem).
Trong cấp độ này, một nhóm các khái niệm được sử dụng để giải thích cách một hệ thống trong ROS hoạt động, cấu trúc thư mục và số lượng tệp tối thiểu mà nó cần để hoạt động. 5 Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Cấp thứ hai là mức Đồ thị tính toán (Computer Graph) nơi xảy ra giao tiếp giữa các quy trình và hệ thống. Trong phần này, chúng ta sẽ thấy tất cả các khái niệm và cơ chế mà ROS có để thiết lập hệ thống, xử lý tất cả các quy trình tính toán và giao tiếp với nhiều hơn một máy tính, v.