Bằng cách tạo ra các bản đồ chi tiết của môi trường bên trong, robot này mở ra những khả năng mới cho việc phân tích và sử dụng thông tin một cách hiệu quả.. Phạm vi của đề tài “Điều khi
GIỚI THIỆU
GIỚI THIỆU CÔNG NGHỆ ROBOT TỰ HÀNH
Trong thời đại hiện nay, sự phát triển vượt bậc của robot học đã đem lại nhiều đột phá đáng kể trong sản xuất công nghiệp Robot giờ đây có thể hoạt động với hiệu suất cao, độ chính xác tuyệt vời và tốc độ làm việc nhanh hơn vượt trội so với con người đã mở ra một thế giới mới của hiệu quả sản xuất Chúng không chỉ có thể hoạt động trong các điều kiện môi trường khắc nghiệt như sơn phủ, hàn xì, lắp ráp các bộ phận điện tử hay hoạt động trong nhà máy hạt nhân mà còn thực hiện những công việc đòi hỏi độ chính xác và tỉ mỉ cao Tuy nhiên, các loại robot cố định thường gặp phải giới hạn về không gian làm việc khi chúng phụ thuộc vào vị trí cố định và số bậc tự do hạn chế Ngược lại, robot di động tự hành lại có thể di chuyển một cách linh hoạt, không cần sự điều hành nhiều từ con người, qua nhiều điều kiện, môi trường làm việc khác nhau Được xác định là những cỗ máy có khả năng tự vận hành và thực hiện nhiệm vụ một cách độc lập, robot tự hành đang ngày càng trở nên không thể thiếu trong nhiều lĩnh vực thương mại, khoa học và công nghiệp Đặc biệt trong bối cảnh dịch bệnh đã từng xảy ra trong quá khứ, chúng đóng vai trò cực kỳ thiết yếu trong việc hạn chế tiếp xúc giữa con người thông qua việc vận chuyển hàng hóa, giám sát người bệnh và phun thuốc khử khuẩn trong các khu cách ly Sự tiến bộ không ngừng nghỉ của robot học, khả năng hoạt động của robot tự hành đã mở ra nhiều khả năng mới, từ việc hoạt động trong nhà, thám hiểm dưới đại dương đến ngoài không gian
Một trong những thách thức lớn mà robot tự hành phải giải quyết là tìm hướng xử lý cho việc xác định môi trường làm việc xung quanh, định vị vị trí và thực hiện yêu cầu của vấn đề đặt ra một cách hiệu quả Robot tự hành đòi hỏi sự phối hợp của nhiều công nghệ, bao gồm lập và sử dụng bản đồ, di chuyển linh hoạt và phản ứng nhanh chóng với thách thức xuất hiện trong quá trình hoạt động
TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
Với sự tăng trưởng về nhu cầu sử dụng robot cũng như là xu hướng phát triển không ngừng, các quốc gia trên toàn thế giới cùng với Việt Nam đang tăng cường nghiên cứu để cải thiện sản phẩm robot, thỏa mãn được nhu cầu sinh hoạt hàng ngày và sản xuất của con người
Mobile Industrial Robots (MIR) là công ty tiên phong trong lĩnh vực xe tự hành trong sản xuất (ARM) ARM là công nghệ tiên tiến hơn nhiều so với AGV đã lỗi thời Điểm khác biệt chính giữa AGV và ARM là AGV phải tuân theo các lộ trình cố định, trong khi ARM sử dụng trí tuệ nhân tạo (AI) kết hợp với các cảm biến laser để lập bản đồ và phản ứng linh hoạt với chướng ngại vật Nhờ vậy, robot có thể di chuyển trôi chảy và hiệu quả trong nhiều môi trường làm việc.
MiR đã tích hợp AI - công nghệ trí tuệ nhân tạo vào thiết bị AMR của mình để nâng cao hiệu suất làm việc Với phần mềm MiRFleet, MiR cung cấp khả năng quản lý toàn diện cho các xe tự hành, giúp người dùng dễ giám sát, lập trình nhiệm vụ cho các xe một cách hiệu quả và nhanh chóng MiRFleet có thể quản lý lên đến 100 AMR trong một nhà máy, tự động điều chỉnh các yêu cầu để tói ưu thời gian và quãng đường di chuyển
Một vài dòng sản phẩm của MIR:
Hình 1.1: Một số sản phẩm robot MIR
Mặc dù điều kiện cơ sở nghiên cứu còn nhiều hạn chế, Việt Nam vẫn liên tục nỗ lực đẩy mạnh công tác nghiên cứu, phát triển robot tự hành Nổi bật trong số đó là nhóm nghiên cứu của Viện PRATI, kịp thời nghiên cứu và hoàn thiện robot tự hành ngay từ khi đại dịch COVID-19 bùng phát Sáng chế này nhằm mục tiêu giảm bớt gánh nặng công việc cho đội ngũ y tế, tạo điều kiện làm việc an toàn và hiệu quả hơn trong bối cảnh dịch bệnh phức tạp.
Việc tuân thủ các biện pháp phòng chống dịch bệnh không chỉ giúp bảo vệ sức khỏe của nhân viên mà còn nâng cao hiệu quả công việc Các giải pháp này còn góp phần tiết kiệm chi phí cho doanh nghiệp và giảm thiểu tối đa những rủi ro không đáng có Nhờ đó, doanh nghiệp có thể yên tâm hoạt động và đóng góp vào sự nghiệp chung của cả nước trong nỗ lực đẩy lùi dịch bệnh, bảo vệ sức khỏe cộng đồng và phát triển kinh tế - xã hội.
Hình 1.2: Robot được triển khai sử dụng trong các khu cách ly của Viện PRATI
Robot tự hành đã được phát triển để hoạt động trong các khu vực đặc biệt như khu cách ly và hạn chế tiếp xúc bệnh nhân với người khỏa mạnh Các robot này có nhiệm vụ chuyên chở các vật phẩm như đồ ăn, đồ thiết yếu, thuốc men, ngoài ra còn có khả năng giám sát bệnh nhân hoặc các người đang trong quá trình thực hiện cách ly nhờ hệ thống camera Nhờ vào năng lực tự hành của mình, robot có thể né được các chướng ngại vật nhờ vào các dữ liệu mà cảm biến LiDAR mang lại Ngoài ra, robot còn được tích hợp trí tuệ nhân tạo, cho phép phát hiện những ai không đeo khẩu trang, từ đó đưa ra cảnh báo, kết hợp với chức năng thông minh khác như đo thân nhiệt, xịt cồn sát khuẩn,…
Những nỗ lực đó cho thấy quyết tâm, mong muốn sáng tạo các sản phẩm giúp ích cho đời sống và xã hội của các nhà nghiên cứu, ngoài ra còn thể hiện được mối quan hệ, phối hợp giữa đội ngũ nghiên cứu với các cơ quan có thẩm quyền Với sự ứng dụng
4 robot tự hành trong công cuộc chống dịch không những giúp giảm bớt lượng việc của các nhân viên y tế mà còn góp phần tạo nên lá chắn bảo vệ cho sức khỏe xã hội, kìm hãm nguy cơ lây nhiễm Đây cũng là những bước nhảy vọt trong việc áp dụng công nghệ cao vào cuộc sống, từ đó trao nhiều tiềm năng mới cho sự phát triển của công nghệ và khoa học trong tương lai.
NHIỆM VỤ VÀ MỤC ĐÍCH CỦA ĐỒ ÁN
Đồ án này phát triển và thiết kế một mô hình robot di động hai bánh dựa trên nền tảng ROS, với tính năng chính là di chuyển linh hoạt trong không gian và lập bản đồ Robot được thiết kế với cấu trúc cơ khí tối giản và được tích hợp các linh kiện điện tử như Raspberry, Arduino,
Nhiệm vụ cụ thể mà nhóm nghiên cứu đã đặt ra cho đồ án:
- Khảo sát và tùy chỉnh thông số của động cơ cho phù hợp và động cơ quay
- Thiết kế khung robot và bố trí linh kiện điện tử phù hợp với khung
- Điều khiển robot từ xa thông qua máy tính
- Tìm hiểu về cảm biến LiDAR
- Sử dụng hệ điều hành ROS để phát triển và điều khiển robot
- Lập bản đồ cho không gian chưa xác định
- Định vị được vị trí của robot từ bản đồ đã lập.
PHẠM VI VÀ ĐỐI TƯỢNG NGHIÊN CỨU
Phần này làm rõ trọng tâm của nghiên cứu bằng cách xác định đối tượng chính của quá trình nghiên cứu Ngoài ra, nó còn xác định phạm vi nghiên cứu, làm rõ các ranh giới và giới hạn trong đó nghiên cứu sẽ được tiến hành Những yếu tố này giúp định hình cấu trúc và hướng đi của nghiên cứu, chắc chắn các khía cạnh của vấn đề được xem xét kỹ lưỡng, có hệ thống Xác định được phạm vi nghiên cứu cũng như là đối tượng nghiên cứu giúp cho quá trình thực hiện đề tài được hợp nhất, giải quyết được các vấn đề quan trọng, từ đó giúp tránh lạc hướng, từ đó đảm bảo được nghiên cứu được thực hiện trong khuôn khổ đã đề ra
Đoạn này trình bày phạm vi và mức độ nghiên cứu, phác họa các ranh giới địa lý, thời gian hoặc bối cảnh mà nghiên cứu được thực hiện.
5 hiện Phạm vi của đề tài “Điều khiển và lập bản đồ cho robot di động hai bánh” tập trung nghiên cứu vào các điều kiện sau:
- Lập bản đồ trong nhà: phạm vi nghiên cứu của đề tài chỉ tập trung vào việc lập bản đồ trong không gian trong nhà, nơi có cấu trúc đơn giản và ít vật thể Nghiên cứu không tập trung vào những không gian phức tạp hay có nhiều chướng ngại vật.[1]
- Vật cản thẳng đứng: Chỉ xét đến các vật cản có hình dạng thẳng đứng, kéo dài từ chân đế lên đến tầm quét của cảm biến lidar Những loại vật cản khác hoặc những vật cản có hình dạng không thẳng đứng sẽ không được cân nhắc trong phạm vi của đề tài
- Kết nối hệ điều hành ROS: Hệ điều hành ROS phải luôn được liên kết và duy trì tín hiệu liên tục với các nút ngoại vi Vì vậy, yêu cầu một hệ thống liên lạc liền mạch và không bị ngắt quãng giữa ROS và các thành phần ngoại vi để bảo đảm cho sự chính xác trong việc vận hành của robot
- Tính toán và điều khiển tốc độ: Đề tài không xét đến việc tính toán tải trọng mà robot phải mang trong quá trình di chuyển Vì vậy, nghiên cứu tập trung vào việc tính toán và điều khiển tốc độ của robot thông qua hai bánh xe, đảm bảo robot vạn hành mượt mà và chính xác
Những giới hạn và điều kiện trên được đặt ra nhằm đảm bảo nghiên cứu tập trung vào các yêu cầu cụ thể, cũng như tạo điều kiện thuận lợi cho việc thực hiện và thử nghiệm giải thuật, công nghệ trong môi trường kiểm soát
1.4.2 Đối tượng nghiên cứu Đồ án “Điều khiển và lập bản đồ cho robot di động hai bánh” tập trung vào mục tiêu ứng dụng thuật toán SLAM cho robot di động và cụ thể là cho robot di động hai bánh lái Mục tiêu chính của đồ án là triển khai và nâng cao hiệu suất giải thuật SLAM để giúp robot di động có thể xây dựng bản đồ môi trường một cách hiệu quả và chính xác hơn Sự vượt trội của giải thuật SLAM trong nghiên cứu này có triển vọng to lớn trong việc hoàn thiện chức năng vận hành tự động cho các robot di độngngày nay Điều này có nghĩa là, thông qua việc áp dụng những giải thuật tiên tiến, các robot sẽ có thể cải thiện hơn về khả năng hoàn thành các yêu cầu có độ khó cao hơn mà không cần sự can thiệp từ con người Chủ đề nghiên cứu này không chỉ là căn bản cho việc ứng dụng thuật toán SLAM, mà còn mở ra tiềm năng để phát triển và áp dụng các thuật toán hiệu suất cao hơn trong tương lai Nhờ đó, khả năng vận hành và tự chủ của các robot di động
6 sẽ được tăng cường đáng kể, đóng góp vào sự phát triển của robot học và ứng dụng của chúng trong đời sống hàng ngày và công nghiệp.
PHƯƠNG PHÁP NGHIÊN CỨU
Đề tài giải thích cách tiếp cận tổng thể và những phương pháp áp dụng trong đề tài để triển khai nghiên cứu Bao gồm một khung lý thuyết làm nền tảng, kết hợp với các phương pháp khác để lấy và phân tích dữ liệu, nó phát họa một bức tranh tổng thể về hoạt động nghiên cứu Khung nghiên cứu giới thiệu các nền tảng lý thuyết, khái niệm và khuôn khổ hướng dẫn nghiên cứu Đây là nền tảng để tiếp thu và diễn giải các phát hiện, đặc biệt là trong nghiên cứu về hướng dẫn, kết hợp khả năng diều khiển robot từ xa ứng dụng giải thuật SLAM Bằng cách kết hợp các khái niệm lý thuyết từ lĩnh vực robot và lý thuyết điều khiển, nghiên cứu phát triển một khuôn khổ toàn diện để triển khai thuật toán SLAM trên robot di động, cho phép đánh giá hiệu suất, thẩm định được sự hiệu quả, chính xác trong các điều kiện khác nhau của thuật toán
Để nghiên cứu thuật toán SLAM và hệ thống robot hiệu quả, phương pháp nghiên cứu cụ thể kết hợp các phương pháp, kỹ thuật thu thập và phân tích dữ liệu Ban đầu, dữ liệu từ các tài liệu, báo cáo hiện có được tổng hợp làm cơ sở Các thử nghiệm, mô phỏng được thiết kế, tiến hành để chứng minh hiệu suất của giải thuật Dữ liệu thu thập bằng cách điều chỉnh động cơ không chổi than và lập bản đồ bằng LiDAR Sau đó, dữ liệu được phân tích bằng kỹ thuật thống kê, tính toán để đưa ra kết quả và kết luận Cuối cùng, hệ thống hướng dẫn điều khiển đề xuất được kiểm tra, xác nhận nghiêm ngặt nhằm đảm bảo độ chính xác và độ tin cậy dành cho các hệ thống robot di động.
BỐ CỤC QUYỂN BÁO CÁO
Quyển báo cáo được trình bày lần lượt trong năm chương:
- Chương 1 Giới thiệu: Giới thiệu đề tài đồ án, mục tiêu, phương pháp nghiên cứu, đối tượng và phạm vi nghiên cứu của đề tài
- Chương 2 Cơ sở lý thuyết: Trình bày lý thuyết những kiến thức được sử dụng trong đề tài
- Chương 3 Nội dung thực hiện: Trình bày về các cách thức tiếp cận kiến thức về phần cứng và phần mềm được nghiên cứu Đồng thời cũng mô tả chi tiết các giải pháp được áp dụng trong nghiên cứu
- Chương 4 Thực nghiệm và đánh giá: Triển khai chạy thử sản phẩm, kiểm tra các chức năng và đưa ra đánh giá
- Chương 5 Kết luận và hướng phát triển: Kết luận về đề tài đồ án những kết quả đạt được, những ưu và nhược điểm, đồng thời đặt ra hướng phát triển cho sản phẩm trong tương lai
CƠ SỞ LÝ THUYẾT
TỔNG QUAN VỀ ROS
Trong lĩnh vực robot, ROS được xây dựng như một hệ thống đa dạng và chuyên sâu để lập trình và điều khiển robot Được biểu diễn như một công cụ linh hoạt, ROS kết hợp đa dạng các phần mềm và công cụ hỗ trợ cho việc lập trình và điều khiển robot một cách hiệu quả Các thư viện, giao diện đồ họa, và hỗ trợ giao tiếp phần cứng trong ROS tỏ ra linh động, có khả năng thích nghi với nhiều yêu cầu khác nhau Bên cạnh đó, ROS cung cấp các thư viện hỗ trợ cho việc thu thập dữ liệu từ cảm biến và các thuật toán lập trình điều khiển robot, giữ cho quá trình này trở nên mạnh mẽ và hiệu quả hơn
Về cơ bản, ROS vận hành với các tính năng quan trọng mà một hệ điều hành cần như khả năng thực hiện nhiều tác vụ song song, giao tiếp và chia sẻ dữ liệu giữa các tác vụ, và quản lý dữ liệu hiệu quả Không chỉ vậy, ROS còn được mở rộng bằng các thư viện và công cụ chuyên biệt giúp vẽ đồ thị, thể hiện mô hình 3D của robot, cũng như là lưu trữ các dữ liệu Hệ thống này được tổ chức theo hình thức module, cho phép tập trung vào các mục tiêu rõ ràng như lập bản đồ hoặc định vị robot, trực tiếp hưởng lợi từ việc tái sử dụng các module đã phát triển trước đó để xây dựng một hệ thống robot toàn diện một cách linh hoạt và tiện ích.[2] Đề tài này chọn sử dụng ROS với khả năng triển khai việc điều khiển và lập bản đồ nhờ vào các tính năng sau:
• ROS hỗ trợ nhiều module, cho phép tùy chỉnh hợp lý cho từng mục tiêu đề ra của việc phát triển robot
• Các module của ROS có khả năng thực hiện các công việc không phụ thuộc vào nhau và trao đổi thông tin thông qua các tệp dữ liệu, từ đó có thể hỗ trợ nhận biết và khắc phục lỗi cho các module riêng biệt
• ROS là một hệ thống mã nguồn mở và luôn được hỗ trợ phát triển liên tục bởi cộng đồng Với sự tham gia của người dùng đông đảo, ROS ngày càng phong phú và đa
9 dạng về dữ liệu cũng như chức năng Bất kỳ lỗi nào được ghi nhận trong cộng đồng, sẽ được báo cáo và khắc phục ngay
Nhờ những đặc điểm và ưu điểm này, ROS trở thành một phương tiện không thể thiếu với các tính năng mạnh mẽ cho việc nâng cấp các hệ thống robot, nổi bật là các phạm trù về hoạt động yêu cầu cao về sự chính xác và khả năng tùy biến cao như vẽ bản đồ và định vị ROS thực sự đã mang lại nhiều tiềm năng cho công cuộc nghiên cứu và ứng dụng trong thực tế.[3]
2.1.2 Cấu trúc mô hình ROS
Cấu trúc của mô hình ROS được chia thành ba cấp độ khác nhau:[4]
• Filesystem: Cấp độ này giải thích về các dạng hình thức bên trong, cấu trúc thư mục và các tập tin tối thiểu cần thiết để ROS có thể hoạt động Filesystem bao gồm các thành phần như gói (packages), các tập tin thực thi (executables), thư viện (libraries), thông số cấu hình (configuration files), và các tài liệu (documentation) Đây là cấp độ cơ bản nhất, cung cấp nền tảng cho việc xây dựng và tổ chức các dự án ROS
• Computation Graph: Cấp độ này là nơi diễn ra giao tiếp giữa các quá trình trong hệ thống Computation Graph bao gồm các thành phần như nodes, topics, services, và messages Nodes là các quá trình độc lập có thể giao tiếp với nhau thông qua các topics (kênh truyền thông) và services (dịch vụ) Tại đây, chúng ta thiết lập hệ thống, quản lý các quá trình và điều khiển việc giao tiếp giữa nhiều máy tính Điều này cho phép các phần khác nhau của hệ thống có thể hoạt động đồng bộ và phối hợp chặt chẽ với nhau
• Community: Cấp độ này giải thích và hướng dẫn sử dụng các công cụ và khái niệm để chia sẻ kiến thức, thuật toán và chương trình từ bất kỳ nhà phát triển nào Community bao gồm các diễn đàn, wiki, tài liệu hướng dẫn và các kho mã nguồn mở (repositories) Đây là một cấp độ quan trọng vì nó không chỉ giúp cá nhân và nhóm phát triển có thể học hỏi và cải thiện kiến thức mà còn đóng góp vào sự phát triển mạnh mẽ của cộng đồng ROS Tương tác và chia sẻ trong cộng đồng giúp giải quyết các vấn đề nhanh chóng và thúc đẩy sự tiến bộ trong lĩnh vực nghiên cứu và ứng dụng robot Nhờ vào cấu trúc phân cấp rõ ràng này, ROS cung cấp một môi trường linh hoạt và hiệu quả cho việc phát triển và triển khai các hệ thống robot phức tạp Từng cấp độ đóng vai trò quan trọng trong việc đảm bảo rằng các hệ thống robot được xây dựng trên
10 nền tảng vững chắc, có khả năng mở rộng và thích nghi với các yêu cầu và thách thức đa dạng trong thực tế
Hình 2.1: Mô hình ROS Filesystem
Filesystem trong ROS là nguồn tài nguyên được lưu trữ trên bộ nhớ hệ thống và được bố trí hoạt động theo thứ tự từ trên xuống dưới Filesystem bao gồm các thành phần sau:
• Packages: Đây là đơn vị cơ bản nhất trong ROS, chứa các lệnh thực thi của ROS
(các nodes), các thư viện phụ thuộc, tập dữ liệu, các file cấu hình, và các dữ liệu cần thiết khác trong hệ thống Packages giúp tổ chức và quản lý mã nguồn, tài liệu và các tài nguyên liên quan để phát triển các ứng dụng ROS
• Manifests (manifests.xml): Các tệp tin này cung cấp cơ sở dữ liệu về một package, bao gồm thông tin về giấy phép (license), các cờ biên dịch (build flags), và các thông số khác liên quan đến package đó Manifests giúp quản lý và mô tả các đặc điểm và phụ thuộc của package
• Stacks: Stacks là tập hợp các packages phối hợp với nhau để thực hiện một chức năng cụ thể Ví dụ, Navigation stack bao gồm các packages cần thiết để thực hiện chức năng di chuyển của robot Stacks giúp tổ chức các packages liên quan và cung cấp các giải pháp tích hợp cho các chức năng phức tạp
Thẻ khai báo stack (stack.xml): Tương tự như thẻ khai báo cho các gói, thẻ khai báo stack cung cấp thông tin về cấu trúc của một stack, như các giấy phép và các thành phần phụ thuộc vào các stack khác Thẻ khai báo stack giúp quản lý các stack và mô tả các tính chất cũng như các thành phần phụ thuộc của chúng.
• Message (msg): Messages là cấu trúc dữ liệu được sử dụng cho việc truyền nhận thông tin trong ROS Chúng định nghĩa cách dữ liệu được định dạng và trao đổi giữa các nodes thông qua topics Messages giúp các thành phần trong hệ thống ROS giao tiếp với nhau một cách nhất quán và có cấu trúc
• Service (srv): Services định nghĩa cấu trúc dữ liệu cho các lệnh truy cập (request) và các phản hồi (response) của các services trong ROS Services được sử dụng để thực hiện các tác vụ yêu cầu phản hồi tức thì, giúp nodes trong ROS có thể thực hiện các lệnh và nhận phản hồi một cách đồng bộ
XÁC ĐỊNH VỊ TRÍ VÀ LẬP BẢN ĐỒ ĐỒNG THỜI (SLAM)
SLAM (Simultaneous Localization and Mapping) là một hệ thống sử dụng thông tin thu được từ camera hoặc cảm biến LiDAR để định vị vị trí (localization) và đồng thời tái tạo lại không gian thành một bản đồ 2D hoặc 3D Với khả năng này, người dùng có thể phát triển thêm các tính năng khác nhằm phục vụ cho các mục đích đặc thù.[7]
Hình 2.5: Hình ảnh thử nghiệm của SLAM
Xây dựng bản đồ được xem là tính năng quan trọng nhất để robot thực sự có thể hoạt động hiệu quả trong khu vực làm việc Quá trình xây dựng bản đồ sử dụng cảm biến LiDAR thường được chia thành hai giai đoạn chính:
Trong giai đoạn đầu, dữ liệu quét hiện tại được xem xét và ghép nối khớp với dữ liệu quét trước đó Đây là bước cơ bản và rất quan trọng, và có hai cách chính để thực hiện ghép dữ liệu này:
- Ghép dữ liệu quét hiện tại với dữ liệu quét liền kề: phương pháp này kết hợp dữ liệu quét hiện tại với dữ liệu quét liền kề trước đó cùng với việc tính toán chuyển động của robot Chuyển động của robot có thể được tính toán bằng cách sử dụng các giá trị encoder của động cơ và kết hợp với một số cảm biến khác như IMU (Inertial Measurement Unit) Quá trình ghép là điều chỉnh tư thế của lần quét hiện tại để đảm bảo rằng sự trùng lặp tồn tại càng nhiều càng tốt với dữ liệu cũ Phương pháp này có tốc độ tính toán nhanh hơn, tuy nhiên, sai số có thể xảy ra và tích lũy khi có lỗi trong quá trình ghép hoặc tính toán chuyển động
- Căn chỉnh dữ liệu quét hiện tại với toàn bản đồ hoặc với một phần bản đồ đã quét: phương pháp này căn chỉnh dữ liệu quét hiện tại với toàn bộ bản đồ hoặc một phần bản đồ đã quét trước đó, sử dụng một số phương pháp để tối ưu hóa.
Dựa vào kết quả bản đồ đã xây dựng ở giai đoạn đầu, một số phương pháp tối ưu hóa được áp dụng để cải thiện độ chính xác Phát hiện vòng lặp trong bản đồ là phương pháp rất tốt trong việc tăng độ chính xác và giảm lỗi tích lũy Các phương pháp ước tính tư thế bao gồm bộ lọc Kalman, Markov localization, và Monte Carlo localization sử dụng particle filter, v.v
Mặc dù nhiều phương pháp tối ưu hóa được sử dụng, sai số vẫn có thể xảy ra, đặc biệt khi robot di chuyển ở những khu vực có ít đặc trưng như hành lang thẳng Việc ghép giữa dữ liệu trước với dữ liệu hiện tại trong những khu vực này dễ gây ra sai số Khi sai số xảy ra tại một thời điểm, nó có thể ảnh hưởng đến toàn bộ kết quả phía sau, làm giảm độ chính xác của bản đồ và ảnh hưởng đến khả năng định vị của robot
Tóm lại, SLAM là một công nghệ phức tạp nhưng rất quan trọng trong việc phát triển robot tự hành Việc xây dựng và tối ưu hóa bản đồ không chỉ giúp robot định vị
17 chính xác mà còn mở ra nhiều khả năng phát triển các ứng dụng và tính năng tiên tiến khác
2.2.2 SLAM dựa trên tín hiệu cảm biến LiDAR
LiDAR là cảm biến quét phạm vi dựa vào sóng laser, được sử dụng rộng rãi trong nhiều ứng dụng khác nhau nhờ tính chính xác và hiệu quả cao LiDAR SLAM là phương pháp sử dụng cảm biến laser hoặc cảm biến khoảng cách để tạo ra các điểm 2D hoặc 3D Đám mây điểm do cảm biến laser tạo ra cho phép đo khoảng cách với độ chính xác cao, rất lý tưởng cho việc xây dựng bản đồ Bản đồ được xây dựng bằng laser SLAM có độ chính xác cao, không có lỗi và có thể được sử dụng trực tiếp để bản địa hóa.[8] LiDAR là phương pháp không chỉ nhanh chóng mà còn rất chính xác, có thể được sử dụng trong nhiều môi trường và điều kiện khác nhau Đám mây điểm cảm biến laser được tạo ra từ phương pháp này có độ chính xác cao, lý tưởng cho việc lập bản đồ trong các công trình xây dựng Những phép đo khoảng cách chính xác cao này cũng có thể được ứng dụng trong nhiều lĩnh vực khác, chẳng hạn như khảo sát địa hình, tự động cho phương tiện, và quản lý tài nguyên thiên nhiên Nhờ khả năng cung cấp dữ liệu chi tiết và đáng tin cậy, LiDAR đã trở thành một công cụ quan trọng trong nhiều ngành công nghiệp, giúp cải thiện hiệu suất và độ chính xác của các hệ thống tự động hóa.
BẢN ĐỊA HÓA (LOCALIZATION)
Bản địa hóa trong robot di động là một vấn đề cơ bản và đầy thách thức đã thu hút sự quan tâm đáng kể từ các nhà khoa học và nhà nghiên cứu trong những năm gần đây Nhiệm vụ định vị liên quan đến việc xác định chính xác vị trí hiện tại của robot di động so với môi trường xung quanh nó Đây là một khía cạnh quan trọng trong hệ thống định vị của robot, vì việc thực hiện thành công chuyển động tự động phụ thuộc rất nhiều vào độ chính xác và độ tin cậy của quá trình định vị
Tầm quan trọng của việc bản địa hóa nằm ở vai trò then chốt của nó trong việc cho phép robot di động hiểu môi trường xung quanh một cách hiệu quả Bằng cách xác định chính xác vị trí của mình, robot có thể đưa ra quyết định sáng suốt về chuyển động, lập kế hoạch đường đi tối ưu và tránh các chướng ngại vật hoặc mối nguy hiểm tiềm ẩn Hơn nữa, việc bản địa hóa chính xác là điều cần thiết để tương tác giữa con người và robot diễn ra thành công, vì nó cho phép robot hoàn thành các nhiệm vụ trong môi trường
18 năng động và phức tạp, chẳng hạn như hỗ trợ ứng phó thảm họa, tự động hóa công nghiệp, hoặc thậm chí là công việc gia đình
Trong hành trình tìm cách giải quyết vấn đề bản địa hóa, giới khoa học đã sáng tạo nhiều phương pháp và thuật toán Những phương pháp này đa dạng về độ phức tạp và chi tiết, từ các kỹ thuật cơ bản như đo đạc và phép tính hình học đến những cách tiếp cận hiện đại hơn như bản đồ hóa và bản địa hóa đồng thời (SLAM) và bản địa hóa toàn cầu sử dụng tổng hợp cảm biến Mỗi phương pháp có những ưu nhược điểm riêng, và lựa chọn thuật toán phụ thuộc vào khả năng của robot, đặc điểm của môi trường và mức độ chính xác cần thiết.
Những tiến bộ trong lĩnh vực bản địa hóa đã góp phần quan trọng vào sự phát triển của công nghệ robot Các thuật toán và giải pháp mới không chỉ nâng cao khả năng định vị của robot mà còn mở rộng phạm vi ứng dụng của chúng Nhờ vào các phương pháp bản địa hóa hiện đại, robot di động ngày nay có thể hoạt động hiệu quả trong nhiều môi trường khác nhau, từ các khu vực công nghiệp phức tạp đến các không gian gia đình nhỏ hẹp Điều này không chỉ cải thiện hiệu suất và tính năng của robot mà còn thúc đẩy sự hòa nhập của robot vào cuộc sống hàng ngày của con người, tạo ra một tương lai mà con người và robot có thể hợp tác và làm việc cùng nhau một cách liền mạch.
TRUYỀN THÔNG UART
UART, hay Universal Asynchronous Receiver-Transmitter, là một trong những phương thức truyền thông kỹ thuật số giữa các thiết bị Giao tiếp UART giữa hai nút riêng biệt đạt được bằng cách sử dụng một cặp dây dẫn và một điểm chung Cơ bản, trong giao tiếp UART, có hai dây chính là RX và TX, tương ứng với chức năng nhận dữ liệu và truyền dữ liệu Vì chỉ có một dây nên dữ liệu được truyền tuần tự từng bit một, điều này khiến nó trở thành truyền dữ liệu nối tiếp
Trong giao tiếp UART, cả hai thiết bị phải được cấu hình để truyền và nhận cùng một cấu trúc gói dữ liệu Điều này có nghĩa là khi thiết lập trong vi điều khiển, tốc độ truyền phải được cấu hình chính xác để phù hợp giữa hai thiết bị Chân TX (truyền) của một chip kết nối trực tiếp với chân RX (nhận) của chip kia và ngược lại Thông thường, quá trình truyền và nhận diễn ra ở điện áp 3,3V hoặc 5V UART là giao thức một chủ, một nô lệ, trong đó một thiết bị được thiết lập để chỉ giao tiếp với một thiết bị khác
Hình 2.6: Mô tả truyền thông UART
Dữ liệu được gửi và nhận từ UART chạy song song với vi điều khiển Khi được truyền trên chân TX, UART đầu tiên sẽ chuyển đổi thông tin song song này thành nối tiếp và gửi nó đến thiết bị nhận UART thứ hai nhận dữ liệu này trên chân RX của nó và chuyển đổi nó trở lại trạng thái song song để giao tiếp với bộ vi điều khiển của nó Điều này đảm bảo rằng dữ liệu được truyền chính xác và hiệu quả giữa hai thiết bị thông qua giao tiếp nối tiếp
Bảng 2.1: Thông số chi tiết cho truyền thông UART
Thông số kỹ thuật Giá trị
Số lượng dây sử dụng 2
Tốc độ truyền Từ 9600 bps đến 115200 bps
Phương thức truyền dữ liệu Không đồng bộ
Kiểu truyền dữ liệu Nối tiếp (serial)
Số lượng thiết bị chủ (master) 1
Số lượng thiết bị nô lệ (slave) 1
UART cung cấp một phương thức truyền thông đáng tin cậy và đơn giản, được sử dụng rộng rãi trong các ứng dụng kỹ thuật số, từ các thiết bị gia dụng thông minh đến các hệ thống công nghiệp phức tạp Với cấu trúc truyền thông đơn giản và hiệu quả,
UART tiếp tục là một lựa chọn phổ biến trong việc kết nối các vi điều khiển và các thiết bị điện tử khác.
ROS SERIAL
ROS Serial là một giao thức gửi dữ liệu qua giao diện nối tiếp, đóng vai trò quan trọng trong việc kết nối các hệ thống nhúng với môi trường ROS Trong mô hình triển khai máy khách-máy chủ ROS, máy chủ ROS thường là một máy tính chạy các chương trình ROS, trong khi máy khách ROS là các vi điều khiển nhận dữ liệu từ cảm biến và gửi dữ liệu đó đến máy chủ dưới dạng tin nhắn ROS Ở đây, máy chủ ROS là nút xuất bản, còn máy khách ROS là nút đăng ký
Các gói ROS Serial có sẵn cho nhiều loại vi điều khiển như Arduino, STM32, và Linux Đồng thời, các gói máy chủ ROS Serial cũng có sẵn trong các phiên bản Python hoặc C++ ROS Serial tận dụng giao thức UART để thiết lập kết nối nối tiếp giữa máy chủ và hệ thống nhúng Dữ liệu được truyền ở định dạng nối tiếp qua giao diện UART, cho phép giao tiếp hai chiều giữa các nút ROS và hệ thống nhúng
Hình 2.7: Tích hợp ROS Serial cho hệ thống robot
Nhờ việc sử dụng giao tiếp UART, ROS Serial tạo điều kiện thuận lợi cho việc trao đổi tin nhắn, lệnh và dữ liệu ROS giữa máy chủ và hệ thống nhúng Giao thức UART cung cấp một phương thức đáng tin cậy và được hỗ trợ rộng rãi cho giao tiếp nối
21 tiếp, khiến nó trở thành lựa chọn phù hợp để kết nối ROS với các nền tảng nhúng hỗ trợ giao diện UART ROS Serial đóng vai trò như cầu nối giữa máy chủ chạy ROS và hệ thống nhúng, cho phép giao tiếp hai chiều Nó giúp hệ thống nhúng xuất bản dữ liệu cảm biến hoặc thông tin khác lên các chủ đề ROS, đăng ký các chủ đề ROS để nhận lệnh hoặc hướng dẫn, và trao đổi tin nhắn ROS với các nút khác trong mạng ROS Thư viện ROS Serial cung cấp cách triển khai nhẹ nhàng giao thức truyền thông ROS, có thể chạy trên các nền tảng nhúng có giới hạn tài nguyên Nó cho phép tuần tự hóa và giải tuần tự hóa các thông điệp ROS tương thích với giao thức truyền thông được sử dụng trong ROS Thêm vào đó, ROS Serial bao gồm các thư viện máy khách dành cho nhiều nền tảng vi điều khiển khác nhau, giúp giao tiếp với ROS trở nên dễ dàng hơn
Với ROS Serial, các nhà phát triển có thể tận dụng sức mạnh của ROS để điều khiển và phối hợp ở cấp độ cao hơn, đồng thời tận dụng khả năng của các hệ thống nhúng để tích hợp cảm biến và điều khiển bộ truyền động ở mức độ thấp Điều này cho phép phát triển các hệ thống robot phức tạp, kết hợp sức mạnh tính toán của ROS với khả năng thời gian thực của các hệ thống nhúng Nhìn chung, ROS Serial là một công cụ có giá trị trong hệ sinh thái ROS, hỗ trợ giao tiếp giữa các nút ROS và hệ thống nhúng, cho phép tích hợp và cộng tác liền mạch giữa điều khiển cấp cao và giao diện phần cứng cấp thấp trong các ứng dụng robot.
BỘ ĐIỀU KHIỂN PID
2.6.1 Tổng quan về bộ điều khiển PID
Bộ điều khiển PID, hay còn gọi là bộ điều khiển Tỷ lệ-Tích phân-Đạo hàm, là một thuật toán điều khiển phản hồi được áp dụng rộng rãi trong nhiều ngành công nghiệp và các ứng dụng khác nhau để điều chỉnh và ổn định các hệ thống động Sự phổ biến và tính linh hoạt của kỹ thuật điều khiển này xuất phát từ tính đơn giản và hiệu quả của nó trong việc duy trì hiệu suất hệ thống.[10]
Bộ điều khiển PID hoạt động theo nguyên tắc liên tục tính toán và điều chỉnh tín hiệu điều khiển dựa trên độ chênh lệch giữa điểm đặt mong muốn và biến quy trình thực tế Với ba chế độ điều khiển chính, gồm: tỷ lệ, tích phân và đạo hàm, bộ điều khiển PID làm giảm thiểu sai số này, đưa hệ thống về trạng thái mong muốn.
Ba hành động điều khiển này được kết hợp một cách thích hợp bằng cách tính trọng số của chúng thông qua các tham số điều chỉnh, cụ thể là độ lợi tỷ lệ (Kp), độ lợi tích phân (Ki) và độ lợi đạo hàm (Kd) Việc lựa chọn các tham số này là vô cùng quan trọng để đạt được hiệu suất hệ thống mong muốn, bao gồm độ ổn định, khả năng đáp ứng và độ bền
Bộ điều khiển PID thường được ứng dụng trong nhiều lĩnh vực khác nhau, chẳng hạn như điều khiển nhiệt độ, điều khiển tốc độ động cơ, điều khiển dòng chảy và điều khiển mức Chúng có thể được thực hiện bằng cách sử dụng phần cứng, bộ vi điều khiển hoặc thuật toán phần mềm tương tự hoặc kỹ thuật số
Tổng quát, bộ điều khiển PID là một thuật toán điều khiển cơ bản và được sử dụng rộng rãi, tận dụng các tác động tỷ lệ, tích phân và đạo hàm để đạt được hiệu suất hệ thống mong muốn Nó làm điều này bằng cách liên tục điều chỉnh tín hiệu điều khiển dựa trên sai số giữa điểm đặt mong muốn và biến quy trình thực tế Bộ điều khiển PID là một công cụ thiết yếu trong việc đảm bảo các hệ thống hoạt động ổn định và chính xác, phù hợp với nhiều ứng dụng khác nhau từ công nghiệp đến tự động hóa
2.6.2 Lý thuyết giải thuật PID
Hành động điều khiển tỷ lệ (P) đồng nghĩa với việc cân đối tỷ lệ giữa độ lệch và phản hồi Điều này đồng nghĩa với việc áp dụng các biện pháp kiểm soát để đáp ứng tỷ lệ đáng kể với mức độ lỗi Hành động này chính là phương tiện để giảm thiểu sai số trong trạng thái ổn định của hệ thống và cung cấp một phản hồi sớm và linh hoạt đối với bất kỳ biến động nào trong hệ thống Thành phần tỷ lệ của việc kiểm soát này dựa vào sự khác biệt giữa giá trị mong muốn và giá trị thực tế của biến quá trình Sự chênh lệch này thường được gọi là lỗi Độ lợi tỷ lệ (Kc) đo lường mức độ phản ứng của hệ thống đối với sai số Ví dụ, nếu lỗi đạt mức 10, một tăng tỷ lệ ở mức 5 sẽ tạo ra một phản hồi ở mức 50 Tổng quát, việc tăng độ lợi tỷ lệ sẽ tăng tốc độ phản hồi của hệ thống điều khiển Tuy nhiên, nếu độ lợi tỷ lệ quá lớn, hệ thống có thể bắt đầu dao động Nếu Kc tiếp tục tăng, dao động sẽ trở nên mạnh mẽ hơn, và hệ thống có thể mất ổn định, thậm chí mất kiểm soát
Hành động kiểm soát tích phân (I) tích hợp lỗi theo thời gian và áp dụng các biện pháp kiểm soát để giảm thiểu lỗi tích lũy Hành động này đối phó với lỗi trong trạng thái ổn định bằng cách liên tục điều chỉnh tín hiệu điều khiển để loại bỏ lỗi tích lũy Quá
23 trình này cải thiện khả năng của hệ thống theo dõi và duy trì giá trị mong muốn theo thời gian Thành phần tích phân là tổng của các lỗi tích lũy theo thời gian Kết quả là, thậm chí một lỗi nhỏ cũng có thể dẫn đến sự tăng chậm của thành phần tích phân Phản hồi tích phân sẽ tiếp tục tăng theo thời gian cho đến khi lỗi đạt đến 0, giúp đưa hệ thống về trạng thái ổn định Lỗi trạng thái ổn định được định nghĩa là sự chênh lệch cuối cùng giữa giá trị thực tế của biến quá trình và giá trị mong muốn Một hiện tượng được biết đến là "cuộn dây tích phân" xảy ra khi tác động tích phân làm cho hệ thống điều khiển bão hòa mà không có cơ chế kiểm soát để đưa lỗi về 0
Hình 2.8: Sơ đồ khối cơ bản thuật toán PID
Hành động kiểm soát đạo hàm (D) tỷ lệ thuận với tốc độ biến đổi của lỗi Nó dự đoán hành vi tương lai của hệ thống dựa trên tốc độ biến đổi của lỗi Bằng cách áp dụng các biện pháp kiểm soát tỷ lệ thuận với tốc độ biến đổi của lỗi, hành động này giúp giảm thiểu sự dao động, giảm thiểu hiện tượng vọt và cải thiện thời gian phản hồi của hệ thống Thành phần đạo hàm làm giảm đầu ra khi biến quá trình thay đổi nhanh chóng Phản hồi đạo hàm tỷ lệ thuận với tốc độ biến đổi của biến quá trình Việc tăng tham số thời gian đạo hàm (Td) sẽ làm cho hệ thống điều khiển phản ứng mạnh mẽ hơn đối với biến đổi của lỗi và cải thiện tổng thể tốc độ phản hồi của hệ thống điều khiển Đa số hệ thống điều khiển thực tế sử dụng thời gian đạo hàm (Td) rất nhỏ, vì phản hồi đạo hàm rất nhạy cảm với nhiễu trong tín hiệu biến đổi của quá trình Nếu tín hiệu phản hồi từ cảm biến bị nhiễu hoặc nếu tốc độ của vòng điều khiển quá chậm, phản hồi đạo hàm có thể khiến hệ thống điều khiển mất ổn định
RVIZ…
RViz, được tích hợp sẵn trong ROS (Robot Operating System), không thể phủ nhận vai trò quan trọng của nó trong quá trình phát triển và kiểm thử robot Công cụ hiển thị 3D này đóng vai trò quan trọng trong việc giúp người phát triển và người điều khiển robot hiểu rõ hơn về trạng thái của robot và môi trường xung quanh Điều này được thể hiện qua các tính năng quan trọng của RViz
RViz không chỉ đơn giản là một công cụ theo dõi vị trí robot, nó c�n cho ph�p người dùng xem dữ liệu từ c�m biến laser, camera 2D/3D, c�m biến Kinect Nó hỗ trợ hiển thị bản đồ xác định từ dữ liệu c�m biến hoặc bản đồ có sẵn, hiển thị mô hình 3D của robot để cho cái nhìn trực quan về vị trí và tư thế trong m�i trường, quỹ đạo di chuyển và đường đi đã lập kế hoạch Điều này tăng cường khả năng tương tác trực tiếp với robot và m�i trường, cho ph�p người dùng thay đổi thông số và di chuyển robot dễ dàng.
Không chỉ dừng lại ở đó, RViz còn hiển thị hệ thống các biến đổi giữa các hệ thống tư thế khác nhau, giúp theo dõi và debug một cách hiệu quả Ngoài ra, RViz cũng hỗ trợ hiển thị dữ liệu hình ảnh và điểm đám mây 3D từ cảm biến camera, đồng thời cung cấp các chế độ xem đa dạng để người dùng có thể quan sát từ nhiều góc độ khác nhau.
PHƯƠNG TRÌNH ĐỘNG HỌC CỦA ROBOT HAI BÁNH LÁI VI SAI
Robot di động hai bánh lái vi sai đang trở thành lựa chọn phổ biến trong ngành công nghiệp robot hơn bao giờ hết Với khả năng di chuyển linh hoạt nhờ vào việc từng bánh xe có thể di chuyển độc lập, robot có thể dễ dàng thay đổi hướng di chuyển mà không gặp bất kỳ khó khăn nào
Mặc dù việc điều chỉnh tốc độ cho từng động cơ để điều chỉnh hướng di chuyển của robot có thể được thực hiện một cách linh hoạt, để robot có thể thực hiện chuyển động quay thì cần phải thực hiện quay quanh điểm ICC (Instantaneous Center of Curvature) - điểm quay chấp ngay trên trục nối giữa hai bánh xe và đi qua tâm của robot Điều này đòi hỏi việc cung cấp tốc độ đồng đều cho cả hai bánh xe trong quá trình quay quanh điểm ICC
Hình 2.9: Mô tả hệ robot di dộng hai bánh lái vi sai Để thay đổi quỹ đạo di chuyển của robot, chúng ta cần điều chỉnh tốc độ cho từng động cơ trái và phải thông qua việc sử dụng tín hiệu từ bộ điều khiển Việc thực hiện điều này đòi hỏi sự chính xác và chuyên sâu, nhưng kết quả cuối cùng sẽ là khả năng điều khiển chuyển động của robot một cách tinh tế và linh hoạt hơn bao giờ hết
Tốc độ của bánh xe được mô tả là:
Với 𝑇: là thời gian để xe hoàn thành một vòng xoay quanh điểm ICC
𝑟: là bán kính của bánh xe
Vận tốc góc của robot được mô tả là:
Kết hợp công thức (2.1) và (2.2), ta thu được:
Với tất cả các thông số mô hình từ hình 2.9, ta thu được công thức tính vận tốc riêng cho từng bánh xe :
Với 𝑙 là khoảng cách của hai trục bánh xe x, 𝑉 𝑅 và 𝑉 𝐿 là vận tốc riêng của từng bánh xe phải và bánh xe trái 𝑅 là khoảng cách từ điểm ICC đến trọng tâm của xe Tại tất cả các thời điểm, ta có thể tính được giá trị của 𝑅 và 𝜔 như sau:
2.8.1 Động học thuận hệ robot di động hai bánh lái vi sai
Ta có (𝑥,𝑦) trong hình 2.9 là vị trí của robot ở thời điểm hiện tại và hướng của robot lệch với trục 𝑋 ban đầu của hệ tọa độ là 𝜃 Khi ta có vận tốc hai bánh là 𝑉 𝑅 và 𝑉 𝐿 được đọc từ encoder của động cơ, kết hợp với công thức (2.5), ta xác định được vị trí của ICC là:
𝐼𝐶𝐶 = [𝑥 − 𝑅 sin 𝜃, 𝑦 + 𝑅 cos 𝜃] (2.6) Tại thời điểm 𝑡 + ∆𝑡, vị trí và hướng của robot là:
Phương trình (2.7) mô tả chuyển động của robot quay quanh một khoảng R với tâm là ICC cùng với vận tốc góc 𝜔 [11]
Biểu diễn đơn giản động học thuận của robot di động hai bánh lái vi sai có dạng:
Vận tốc tuyến tính trung bình của robot được xác định dựa trên công thức:
Vận tốc góc của robot được xác định dựa trên công thức:
Tại thời điểm 𝑡 + ∆𝑡 ta có vị trí và hướng của robot là:
2.8.2 Động lực nghịch hệ robot di động hai bánh lái vi sai
Mô tả vị trí của robot theo một hướng cụ thể 𝜃(𝑡) với vận tốc 𝜈(𝑡) là:
Kết hợp với công vận tốc trung bình và vận tốc góc ta có thể viết lại như sau:
ENCODER
Encoder được biết đến là một trong những thành phần rất quan trọng trong hệ thống động cơ Đây là thiết bị có khả năng đo lường và cung cấp thông tin về tốc độ và vị trí hiện tại của động cơ Điều này đạt được nhờ vào các tín hiệu xung vuông mà encoder tạo ra Tần số của các tín hiệu xung vuông này thay đổi theo tốc độ của động cơ, cho phép chúng ta nhận biết được tốc độ động cơ đang chạy nhanh hay chậm Khi động cơ quay, encoder sẽ tạo ra một chuỗi các xung vuông Mỗi xung tương ứng với một khoảng di chuyển nhỏ của động cơ, từ đó chúng ta có thể tính toán được vị trí cụ thể của động cơ tại bất kỳ thời điểm nào Bằng cách đếm số lượng xung trong một khoảng thời gian nhất định, chúng ta có thể xác định tốc độ quay của động cơ
Bộ mã hóa có vai trò then chốt trong việc theo dõi và kiểm soát tốc độ chính xác của động cơ, đồng thời hỗ trợ điều khiển vị trí của các bộ phận cơ khí trong hệ thống tự động hóa Nhờ cung cấp thông tin đáng tin cậy về tốc độ và vị trí, bộ mã hóa tối ưu hóa hiệu suất và độ chính xác của ứng dụng sử dụng động cơ, điển hình trong các robot công nghiệp và thiết bị tự động hóa tại nhà máy.
Tóm lại, encoder là thành phần không thể thiếu trong hệ thống động cơ hiện đại, giúp đảm bảo sự vận hành mượt mà, chính xác và kiểm soát tối ưu cho hệ thống cơ điện.
Hình 2.10: Cấu tạo của encoder
Encoder bao gồm các thành phần cơ bản sau:
Đĩa quay là một đĩa có lỗ gắn chặt vào trục động cơ Khi trục động cơ quay, đĩa quay theo cùng trục Các lỗ trên đĩa cho phép ánh sáng từ đèn LED truyền qua với các khoảng thời gian đều đặn, tạo thành các xung ánh sáng tương ứng với chuyển động quay của động cơ.
- Đèn LED: Đèn LED đóng vai trò là nguồn phát sáng trong hệ thống encoder Nó phát ra một chùm ánh sáng liên tục, chiếu trực tiếp vào đĩa quay Khi đĩa quay và các lỗ khoét di chuyển qua lại, ánh sáng từ đèn LED sẽ bị gián đoạn tạo ra các xung ánh sáng
- Mắt thu quang điện: Mắt thu quang điện được sắp xếp thẳng hàng với đèn LED, ở phía đối diện của đĩa quay Khi ánh sáng từ đèn LED đi qua các lỗ khoét trên đĩa, mắt thu quang điện sẽ phát hiện các xung ánh sáng này và chuyển đổi chúng thành các tín hiệu điện
- Bảng mạch điện: Bảng mạch điện trong encoder có chức năng khuếch đại và xử lý các tín hiệu điện được tạo ra từ mắt thu quang điện Nó đảm bảo rằng các tín hiệu này đủ mạnh và rõ ràng để có thể được sử dụng bởi hệ thống điều khiển của động cơ Bảng mạch điện cũng có thể bao gồm các mạch lọc và điều chỉnh để đảm bảo tín hiệu ổn định và chính xác
Tổng hợp lại, khi động cơ quay, đĩa quay sẽ tạo ra các xung ánh sáng thông qua các lỗ khoét Đèn LED phát sáng liên tục và mắt thu quang điện sẽ nhận diện những xung ánh sáng này, sau đó gửi các tín hiệu điện tương ứng đến bảng mạch điện Bảng mạch điện sẽ khuếch đại và xử lý những tín hiệu này, cho phép hệ thống biết được tốc độ và vị trí hiện tại của động cơ Những thành phần này phối hợp hoạt động để đảm bảo rằng encoder cung cấp thông tin chính xác và đáng tin cậy cho hệ thống điều khiển động cơ
Encoder là thiết bị dùng để quản lý vị trí góc của một đĩa quay, có thể là đĩa quay của bánh xe, trục động cơ, hay bất kỳ thiết bị nào cần xác định vị trí góc chính xác Các encoder thường được phân loại dựa trên phương tiện đầu ra của chúng, bao gồm hai loại chính: encoder tuyệt đối và encoder tương đối
Mã hóa tuyệt đối cung cấp tín hiệu cho biết vị trí chính xác của mã hóa mà không cần bất kỳ xử lý bổ sung nào từ phía người dùng Đặc điểm chính của mã hóa tuyệt đối gồm:
- Cơ chế hoạt động: Encoder tuyệt đối sử dụng đĩa mã hóa với các mã nhị phân hoặc mã Gray Đĩa mã hóa này được chế tạo từ vật liệu trong suốt và chia thành các góc đều nhau với các đường tròn đồng tâm
- Cấu trúc: Encoder tuyệt đối bao gồm bộ phát ánh sáng (LED), đĩa mã hóa, và bộ thu ánh sáng nhạy với ánh sáng phát ra từ LED
- Ưu điểm: Khả năng giữ được giá trị tuyệt đối ngay cả khi mất nguồn, giúp đảm bảo độ chính xác và độ tin cậy cao
- Nhược điểm: Giá thành cao do cấu trúc phức tạp và việc đọc tín hiệu từ encoder tuyệt đối cũng khó hơn so với các loại khác
Encoder tương đối (incremental encoder) phát ra tín hiệu tăng dần hoặc theo chu kỳ để xác định vị trí góc Các đặc điểm chính của encoder tương đối bao gồm:
- Cơ chế hoạt động: Đĩa mã hóa của encoder tương đối bao gồm một dải băng tạo xung với nhiều lỗ được chia đều và cách đều nhau Các tín hiệu phát ra theo chu kỳ, tương ứng với mỗi lần lỗ trên đĩa đi qua bộ phát ánh sáng
- Cấu trúc: Encoder tương đối thường chỉ có 1, 2 hoặc tối đa 3 vòng lỗ và thường có thêm một lỗ định vị Đĩa mã hóa có thể được làm từ chất liệu trong suốt để ánh sáng có thể chiếu qua dễ dàng
- Ưu điểm: Giá thành rẻ, cấu trúc đơn giản và việc xử lý tín hiệu trả về cũng dễ dàng hơn Điều này làm cho encoder tương đối trở nên phổ biến trong nhiều ứng dụng
NỘI DUNG THỰC HIỆN
PHẦN CỨNG HỆ THỐNG
3.1.1 Sơ đồ khối mô tả hệ thống
Hình 3.1: Sơ đồ kết nối phần cứng tổng quát
Hình 3.1 mô tả tổng quan phần cứng của hệ thống robot di động hai bánh, chi tiết bao gồm:
- Raspberry Pi 4 Model B 4GB: Board Raspberry Pi đóng vai trò như một máy chủ thu nhỏ trong hệ thống, thực hiện các chức năng quan trọng để đảm bảo sự vận hành mượt mà của robot Nó chạy môi trường và các gói tài nguyên của ROS (Robot Operating System), giúp điều phối và quản lý các hoạt động của robot Raspberry Pi giao tiếp với cảm biến LiDAR, thu thập thông tin từ cảm biến này để xây dựng bản đồ và định hướng cho robot Thông tin thu thập được từ LiDAR sau đó được Raspberry Pi xử lý và tổng hợp, sau đó truyền tải dữ liệu đã xử lý này đến board Arduino Arduino đảm nhận nhiệm vụ điều khiển động cơ của robot, dựa trên dữ liệu nhận được từ Raspberry Pi để xác định tốc độ và hướng di chuyển của robot Nhờ vào sự phối hợp nhịp nhàng giữa Raspberry Pi và Arduino, hệ thống robot có thể hoạt động một cách
35 chính xác và hiệu quả, đảm bảo khả năng tự động hóa trong môi trường hoạt động của nó
- Board Arduino Mega 2560: Board Arduino Mega 2560 đóng vai trò quan trọng như một cầu nối trung gian giữa Raspberry Pi và Driver trong hệ thống điều khiển robot
Nó chịu trách nhiệm truyền nhận tín hiệu từ Raspberry Pi đến Driver để điều khiển tốc độ động cơ của robot Cụ thể, Arduino Mega 2560 nhận các lệnh điều khiển từ Raspberry
Pi và chuyển tiếp chúng đến Driver để điều chỉnh tốc độ và hướng di chuyển của động cơ Ngoài ra, Arduino Mega 2560 còn có nhiệm vụ phản hồi thông tin về tốc độ thực tế của động cơ trở lại môi trường ROS Thông tin phản hồi này rất quan trọng cho quá trình bản địa hóa, giúp ROS cập nhật vị trí hiện tại của robot và điều chỉnh lộ trình di chuyển để đảm bảo robot hoạt động chính xác và hiệu quả trong môi trường Bằng cách này, Arduino Mega 2560 không chỉ là một bộ điều khiển đơn giản mà còn là một phần quan trọng trong hệ thống phản hồi và tự động của robot
- RPLiDAR C1: đóng vai trò quan trọng như một cảm biến quét laser trong hệ thống robot, với nhiệm vụ chính là tạo bản đồ và xác định các vật cản trong môi trường xung quanh Khi hoạt động, RPLiDAR C1 quét không gian xung quanh bằng cách phát ra các tia laser và thu lại các tín hiệu phản xạ từ các bề mặt và vật thể Dựa trên dữ liệu phản hồi này, cảm biến có thể xác định khoảng cách và vị trí của các vật cản, từ đó xây dựng một bản đồ chi tiết về môi trường Bản đồ này giúp robot nhận biết không gian xung quanh một cách an toàn và hiệu quả, tránh các vật cản và di chuyển theo lộ trình tối ưu Với khả năng quét nhanh và chính xác, RPLiDAR C1 không chỉ hỗ trợ việc tạo bản đồ mà còn là công cụ quan trọng trong việc cải thiện khả năng tự động hóa và định hướng của hệ thống robot trong nhiều ứng dụng khác nhau
- Driver L298N có vai trò quan trọng trong hệ thống điều khiển động cơ của robot
Nó nhận các tín hiệu xung PWM từ board Arduino và chuyển đổi chúng thành các giá trị điện áp cần thiết để cung cấp cho động cơ di chuyển Việc chuyển đổi này cho phép điều chỉnh tốc độ và hướng di chuyển của động cơ một cách chính xác Ngoài chức năng cung cấp điện áp, Driver L298N cũng thu thập và phản hồi thông tin về tốc độ quay của động cơ Thông tin phản hồi này được gửi trở lại Arduino, hỗ trợ trong việc thực hiện điều khiển phản hồi vòng kín PID Điều khiển giúp duy trì tốc độ ổn định và chính xác cho bánh xe, ngay cả khi có sự thay đổi về tải trọng hoặc điều kiện hoạt động Bằng
36 cách cung cấp điện áp điều khiển và phản hồi tốc độ, Driver L298N đóng góp vào việc điều chỉnh động cơ một cách hiệu quả, đảm bảo robot di chuyển mượt mà và đạt hiệu suất tối ưu trong các nhiệm vụ và tự động hóa
Động cơ DC Servo JGA25-370 được trang bị thêm Encoder hai kênh AB, giúp cải thiện đáng kể khả năng đọc và điều khiển chính xác vị trí cũng như chiều quay của động cơ Encoder hai kênh AB cung cấp các tín hiệu phản hồi chi tiết về vị trí và tốc độ quay của động cơ, cho phép hệ thống điều khiển nhận biết và điều chỉnh động cơ một cách hiệu quả Nhờ có Encoder này, động cơ DC Servo JGA25-370 có thể đảm bảo độ chính xác cao trong việc xác định vị trí và điều chỉnh chiều quay, điều này đặc biệt quan trọng trong quá trình di chuyển của robot di động Sự chính xác trong điều khiển vị trí và chiều quay giúp robot di chuyển mượt mà, tránh các vật cản và tuân thủ lộ trình đề ra Điều này không chỉ nâng cao hiệu suất hoạt động của robot mà còn đảm bảo robot có thể thực hiện các nhiệm vụ phức tạp một cách hiệu quả và tin cậy.
AB, do đó, là một thành phần quan trọng trong việc tối ưu hóa khả năng di chuyển và tự động hóa của hệ thống robot di động
3.1.2 Thiết kế khung của robot di động
Do động cơ và các linh kiện của robot có kích thước và khối lượng lớn, phần khung của robot cần được thiết kế một cách cứng cáp và chắc chắn để có thể nâng đỡ và bảo vệ toàn bộ các linh kiện này Khung robot phải đủ mạnh mẽ để chịu được sức nặng và áp lực từ các bộ phận bên trong mà không bị biến dạng hay hư hỏng trong quá trình vận hành Đồng thời, khung cũng không được quá nặng để đảm bảo rằng robot có thể hoạt động một cách trơn tru và duy trì được tốc độ ổn định Một khung quá nặng có thể làm giảm hiệu suất của robot, gây khó khăn trong việc di chuyển và điều khiển, cũng như tiêu tốn nhiều năng lượng hơn Vì vậy, thiết kế khung robot phải cân bằng giữa độ bền và trọng lượng, vừa đủ mạnh để nâng đỡ linh kiện mà vẫn nhẹ nhàng để hỗ trợ cho việc vận hành hiệu quả và ổn định của robot Sự cân nhắc kỹ lưỡng trong thiết kế khung là yếu tố quan trọng giúp robot hoạt động hiệu quả và đạt được hiệu suất tối ưu trong mọi điều kiện
Hình 3.2: Bảng vẽ chi tiết cho phần khung xe robot
Khung xe robot tầng 1 đóng vai trò là nơi chính để gắn các thành phần cơ bản của robot, bao gồm động cơ và các linh kiện điện tử quan trọng như pin, Arduino Mega
2560, Raspberry Pi 4, và nhiều linh kiện khác Đặc biệt, tầng này là nơi lắp đặt hai động cơ DC Servo JGA25-370 và hai bánh xe tự do, các thành phần quan trọng giúp di chuyển và vận hành robot Việc sắp xếp các linh kiện và động cơ trên khung tầng 1 cần được thực hiện cẩn thận để đảm bảo không gian tổ chức hợp lý và tiện lợi cho việc bảo dưỡng và sửa chữa trong tương lai
Khung xe robot tầng 2 được thiết kế riêng để gắn RPLiDAR C1, một cảm biến quét laser quan trọng, giúp robot quét không gian xung quanh một cách chính xác và chi tiết mà không bị che khuất bởi các linh kiện điện tử khác Việc phân chia các tầng chức năng giúp tối ưu hóa không gian và tạo điều kiện thuận lợi cho các thành phần hoạt động một cách hiệu quả và độc lập Đồng thời, việc đặt RPLiDAR C1 trên tầng 2 giúp nâng cao hiệu suất quét và tăng khả năng nhận diện môi trường xung quanh, đồng thời giảm nguy cơ va chạm và xung đột với các linh kiện khác của robot
3.1.3 Linh kiện điện tử của hệ thống
Arduino Mega 2560 là bo mạch vi điều khiển mạnh mẽ dựa trên chip ATmega2560, thường được chọn cho các dự án yêu cầu số lượng lớn chân đầu vào/đầu ra (I/O), bộ nhớ mở rộng và khả năng tính toán cao Bo mạch này cung cấp 54 chân I/O kỹ thuật số và
Bo mạch Arduino Mega 2560 sở hữu 16 chân đầu vào analog để kết nối nhiều thiết bị khác nhau Với tinh thể thạch anh 16 MHz, kết nối USB và giắc cắm nguồn riêng, Arduino Mega 2560 đảm bảo hoạt động ổn định và đáng tin cậy Đây là lựa chọn lý tưởng cho các ứng dụng phức tạp yêu cầu nhiều cảm biến, bộ truyền động và giao diện truyền thông.
Hình 3.3: Sơ đồ chân kết nối của board Arduino Mega 2560
Dung lượng bộ nhớ tăng lên của chip ATmega2560 cho phép xử lý các mã phức tạp và lưu trữ lượng dữ liệu lớn, làm cho nó phù hợp với các dự án yêu cầu thuật toán phức tạp hoặc xử lý dữ liệu khối lượng lớn Bo mạch này hỗ trợ ngôn ngữ lập trình Arduino, giúp đơn giản hóa quá trình phát triển mã và tạo mẫu nhanh chóng Arduino IDE (Môi
Arduino Mega 2560 là bo mạch vi điều khiển phổ biến cung cấp nền tảng mạnh mẽ cho các dự án điện tử và lập trình Nó nổi bật với giao diện thân thiện với người dùng, giúp các nhà phát triển dễ dàng tương tác và thử nghiệm các ý tưởng của họ.
THIẾT KẾ PHẦN MỀM
Hình 3.12: Sơ đồ tổng quát phần mềm
Mô hình robot di động hai bánh lái vi sai, như thể hiện trong hình 3.12, hoạt động dựa trên sự kết hợp hài hòa giữa máy tính trung tâm, được trang bị board Raspberry Pi và cài đặt hệ điều hành robot (ROS), cùng với các môi trường và các ngăn xếp hỗ trợ từ hệ điều hành này, và board điều khiển trực tiếp động cơ, là Arduino Mega, thông qua
53 giao thức serial UART để giao tiếp cũng như truyền nhận lệnh điều khiển và tốc độ động cơ phản hồi về Để thu thập dữ liệu cho quá trình ánh xạ, ngoại vi cảm biến laser RPLiDAR sẽ được kết nối tới board Raspberry Pi, và thông qua các gói hỗ trợ tích hợp trong ROS, dữ liệu sẽ được thu thập và xử lý Trong giai đoạn điều khiển, mọi thao tác đều được thực hiện bằng tay thông qua giao tiếp truyền nhận từ ROS Serial và tín hiệu được gửi đi từ terminal của máy tính Raspberry Pi Khi thực hiện di chuyển đến các địa điểm mới, robot sẽ liên tục xây dựng bản đồ từ thông tin của lidar, đảm bảo bao phủ hoàn toàn không gian làm việc theo thiết kế trước
Kết thúc quá trình, toàn bộ dữ liệu sẽ được lưu lại dưới dạng bản đồ làm việc của robot, được sử dụng cho mục đích di chuyển và tham khảo trong tương lai
3.2.2 Giao tiếp và điều khiển tốc độ động cơ giữa Raspberry và Arduino
Hình 3.13: Sơ đồ khối giao tiếp giữa vi điều khiển và máy tính
Trong hệ thống, Raspberry Pi đóng vai trò quan trọng như một máy tính trung tâm, giữ trách nhiệm vận hành hệ điều hành robot (ROS) Khi một robot di chuyển, chúng ta quan tâm đến hai thông số chính: vận tốc di chuyển tuyến tính (𝜈) và vận tốc góc (𝜔) khi xe thay đổi hướng chạy Tuy nhiên, hai thông số này không thể được truyền trực tiếp từ máy tính xuống cho vi điều khiển để thực hiện điều khiển các động cơ theo mong muốn Do đó, từ các thông số này, chúng ta cần chuyển đổi chúng thành các vận tốc
54 riêng biệt cho mỗi bánh xe, để vi điều khiển có thể hiểu và tính toán tín hiệu điều khiển cần thiết để điều khiển động cơ một cách chính xác
Hình 3.14: Mô tả chuyển đổi đại lượng vận tốc
Theo động học của hệ robot hai bánh lái vi sai, ta có thể tính toán vận tốc tuyến tính riêng của mỗi bánh xe như sau:
2 𝜈: vận tốc tuyến tính của xe khi di chuyển (m/s)
𝜔: vận tốc góc của cả xe khi thay đổi hướng di chuyển (rad/s)
𝑉 𝐿 : vận tốc tuyến tính của riêng bánh trái (m/s)
𝑉 𝑅 : vận tốc tuyến tính của riêng bánh phải (m/s)
Khi có ngắt hẹn giờ, vi điều khiển Arduino trích xuất giá trị vận tốc tuyến tính và vận tốc góc từ ROS, sau đó truyền lại cho vi điều khiển Vi điều khiển tiếp tục tính toán vận tốc tuyến tính của các bánh xe để điều khiển xe tự hành di chuyển.
55 bánh xe và tạo ra các giá trị điều khiển tương ứng Ngoài ra, vi điều khiển cũng sẽ thực hiện chức năng đọc giá trị từ encoder của động cơ thông qua driver, sau đó tiến hành xử lý và tính toán để đưa ra giá trị tốc độ hiện tại của xe Kết quả tính toán này sẽ được cập nhật trở lại vào ROS để thực hiện các nhiệm vụ tiếp theo Để xác định vị trí và góc quay của robot, ROS cần các giá trị này, và do đó, các tính toán phù hợp phải được thực hiện Điều này bao gồm việc tính toán các thông số từ dữ liệu thu thập được từ các cảm biến và encoder, cũng như xử lý và phân tích dữ liệu để xác định vị trí chính xác của robot trong không gian
Hai bánh xe từ trục Odometry đã di chuyển được quãng đường D:
𝐷𝑒𝑙 𝑡𝑖𝑐𝑘: là độ chênh lệch xung giữa encoder trả về của bánh xe
𝑁: là tổng số các xung cho mỗi vòng quay được thực hiện bởi động cơ
𝑅: là bán kính của bánh xe (m)
Từ một điểm ở trọng tâm của xe, quãng đường di chuyển từ trục Odometry là:
𝐷 𝐿 : là quãng đường đã di chuyển của bánh xe trái (m)
𝐷 𝑅 : là quãng đường đã di chuyển của bánh xe phải (m)
Từ các công thức đã có, ta có thể tính toán được các thông số vị trí và hướng của robot:
𝑙: khoảng cách giữa hai bánh xe
3.2.3 Lập bản đồ sử dụng HectorSLAM
HectorSLAM không chỉ là một kỹ thuật SLAM (Simultaneous Localization and Mapping) trong ROS, mà còn là một công cụ quan trọng được thiết kế để lập bản đồ của môi trường xung quanh robot và đồng thời xác định vị trí của robot trong bản đồ đó Thường được sử dụng với các robot di động hoặc UAV, hệ thống Hector Mapping đóng vai trò quan trọng trong việc di chuyển và xác định vị trí trong ROS Nó là một phần
56 của ROS Navigation Stack, cung cấp các node hỗ trợ cho việc lập bản đồ và điều khiển robot di chuyển
Hình 3.15: Khởi chạy các node đã tính toán
Khi sử dụng gói HectorSLAM trong ROS, các node được tích hợp sẽ hỗ trợ quá trình lập bản đồ Kết hợp với việc điều khiển bằng tay để di chuyển robot xung quanh khu vực làm việc, chúng ta có thể tạo ra một bản đồ chính xác của môi trường làm việc của robot
Hình 3.16: Lưu đồ giải thuật cho quá trình lập bản đồ sử dụng HectorMapping
Hiện nay, trong hệ điều hành robot ROS, có 5 kỹ thuật SLAM phổ biến khác nhau, bao gồm HectorSLAM, Gmapping, KartoSLAM, CoreSLAM và LagoSLAM Mỗi kỹ thuật này đều có ưu điểm và ứng dụng riêng, đáp ứng nhu cầu của các ứng dụng và môi trường cụ thể
Bảng 3.8: So sánh xây dưng bản đồ giữa HectorMapping và Gmapping Đặc trưng HectorMapping Gmapping
Sử dụng phương pháp scan matching để so khớp dữ liệu từ laser scanner và xác định vị trí của robot Chia bản đồ thành các submap
Sử dụng thông tin từ odometry (thường là encoder) và dữ liệu từ cảm biến laser scanner để xây dựng bản đồ
Bản đồ Occupancy Grid Có Có
Bộ lọc xử lý Không sử dụng
Sử dụng phương pháp Particle Filter, tạo ra nhiều giả định vị trí và ước lượng vị trí của robot
Thiết kế để chống nhiễu tốt trong môi trường đầy động và với nhiễu từ các vật thể đối tượng
Hạn chế hơn trong việc chống nhiễu Thường được sử dụng trong môi trường đóng và ít động Ưu điểm
- Chống nhiễu tốt trong môi trường đầy động và với nhiễu từ các vật thể đối tượng
- Giảm độ phức tạp bằng cách chia bản đồ thành các submap
- Phù hợp trong môi trường đóng và ít động
- Có khả năng ứng phó tốt với nhiễu từ cảm biến
Hình 3.17: Sơ đồ khối các bước thực hiện lập bản đồ sử dụng HectorMapping
3.2.3.1 Bản đồ lưới chiếm dụng (Occupancy Grid Map)
Quá trình xây dựng bản đồ chiếm dụng (Occupancy Grid Mapping) thường dựa trên mô hình Bayes để ước lượng xác suất chiếm dụng của từng ô trong lưới:
Hình 3.18: Mô tả Occupancy Grid Map
Phép đo mô hình được tính xác xuất như sau:
Với: 𝑚 𝑥,𝑦 = 1 là điểm mà LiDAR quét khi chạm phải
𝑚 𝑥,𝑦 = 0 là điểm không bị chiếm dụng
- Ô không chiếm dụng (Free Cell): thường được đại diện bằng giá trị Z = 0 hoặc giá trị gần 0 trong phạm vi [0,1], là các ô không gian trống trong môi trường mà robot có thể di chuyển qua mà không gặp cản trở
- Ô chiếm dụng (Occupied Cell): thường được đại diện bằng giá trị Z = 1 hoặc giá trị gần 1 trong phạm vi [0,1], thường tương ứng với các vật cản, cấu trúc hoặc vật thể trong môi trường mà robot không thể di chuyển qua mà không phát hiện được
Giá Trị Trung Bình (Unknown Cell) thường được biểu diễn bằng giá trị Z = 0,5 hoặc gần 0,5 trong phạm vi [0,1] Các ô không chiến dụng có thể chứa thông tin không chắc chắn hoặc không được xác định chính xác Để tránh vấn đề với tích chập của các giá trị xác suất thấp, xác suất chiếm dụng và không chiếm dụng được biểu diễn dưới dạng giá trị log-odds, với công thức cơ bản: log−odds (m i ) = log(P(m i | z 1:t , x 1:t )).
𝑃(𝑚 𝑖 | 𝑧 1:𝑡 , 𝑥 1:𝑡 ) là xác suất chiếm dụng của ô 𝑛𝑖, trong bản đồ, dựa trên các dữ liệu cảm biến 𝑧 1:𝑡 và lịch sử vị trí 𝑥 1:𝑡 của robot
𝑃(−𝑚 𝑖 | 𝑧 1:𝑡 , 𝑥 1:𝑡 ): là xác suất không chiếm dụng của ô 𝑛𝑖 trong bản đồ, dựa trên các dữ liệu cảm biến 𝑧 1:𝑡 và lịch sử vị trí 𝑥 1:𝑡 của robot
Từ các biểu thức trên ta sẽ có log −𝑜𝑑𝑑 của các ô bị chiếm dụng là: log −𝑜𝑑𝑑 _ 𝑜𝑐𝑐 = log𝑃(𝑧 = 1 | 𝑚 𝑥,𝑦 = 1)
𝑃(𝑧 = 1 | 𝑚 𝑥,𝑦 = 0) (3.9) log −𝑜𝑑𝑑 của các ô không bị chiếm dụng là: log −𝑜𝑑𝑑 _ 𝑓𝑟𝑒𝑒 = log𝑃(𝑧 = −1 | 𝑚 𝑥,𝑦 = 0)
3.2.3.2 Phương pháp quét kết hợp xác định vị trí robot (Scan Matching)
Hình 3.19: Tư thế ban đầu của robot và bản đồ cho lần quét laser đầu tiên
Với tư thế ban đầu của robot, vị trí này đóng vai trò quan trọng trong việc xác định điểm bắt đầu cho quá trình lập bản đồ và định vị Khi robot bắt đầu hoạt động từ vị trí đầu, hệ thống sẽ xây dựng bản đồ lưới chiếm dụng dựa trên dữ liệu thu thập từ lần quét laser đầu tiên của cảm biến LiDAR Bản đồ này cung cấp thông tin về các khu vực chiếm dụng và không chiếm dụng trong môi trường xung quanh Khả năng xây dựng bản đồ chiếm dụng một cách chi tiết và chính xác hoàn toàn phụ thuộc vào tầm quét và tốc độ quét của từng thiết bị LiDAR Tầm quét (phạm vi quét) của LiDAR quyết định được bao nhiêu không gian xung quanh robot có thể được quét và phát hiện Tốc độ quét (tốc độ lấy mẫu) ảnh hưởng đến khả năng cập nhật bản đồ theo thời gian thực khi robot di chuyển Cảm biến LiDAR với tầm quét rộng và tốc độ quét cao sẽ giúp robot xây dựng bản đồ chiếm dụng nhanh chóng và chính xác hơn, đồng thời đảm bảo độ che phủ toàn diện của không gian làm việc
Do đó, khi lựa chọn và sử dụng LiDAR, cần chú ý đến các thông số kỹ thuật như tầm quét và tốc độ quét để tối ưu hóa quá trình xây dựng bản đồ chiếm dụng và định vị của robot trong môi trường thực tế
Hình 3.20: Scan Matching cho lần thứ hai cập nhật tư thế của robot
Dưới đây là một số thuật toán phổ biến của phương pháp Scan Matching:
Bảng 3.9: Một số thuật toán phổ biến của phương pháp Scan Matching
THỰC NGHIỆM VÀ ĐÁNH GIÁ
KẾT QUẢ MÔ HÌNH ROBOT DI ĐỘNG
Sau quá trình nghiên cứu, tìm hiểu và phát triển, nhóm chúng tôi đã hoàn thiện quá trình thiết kế và thi công mô hình robot di động hai bánh Với sự đa dạng và phức tạp của các linh kiện và động cơ trong robot, việc xây dựng một khung cứng cáp và vững chắc là vô cùng quan trọng để đảm bảo bảo vệ và duy trì hiệu suất của toàn bộ hệ thống
Hình 4.1: Tổng quan mô hình robot di động hai bánh
Khung robot cần phải được thiết kế để chịu được tải trọng và áp lực từ các linh kiện bên trong mà không gây biến dạng hay hỏng hóc trong quá trình vận hành Đồng thời, cũng cần cân nhắc đến trọng lượng của khung để đảm bảo robot vẫn có thể di chuyển một cách trơn tru và duy trì tốc độ ổn định Một khung quá nặng có thể ảnh hưởng đến hiệu suất của robot và tăng chi phí năng lượng sử dụng Vì vậy, thiết kế
68 khung robot cần phải cân bằng giữa độ bền và trọng lượng để hỗ trợ hoạt động hiệu quả của robot
Khung robot tầng 1 đóng vai trò quan trọng trong việc gắn kết các linh kiện cơ bản của robot như động cơ và các linh kiện điện tử như pin, Arduino Mega 2560 và Raspberry Pi 4 Đặc biệt, tầng này là nơi lắp đặt hai động cơ DC Servo JGA25-370 và hai bánh xe tự do, các thành phần quan trọng giúp vận hành robot Việc tổ chức không gian trên tầng 1 cần được thực hiện một cách cẩn thận để đảm bảo tính tiện ích và dễ bảo trì cho robot trong tương lai
Hình 4.2: Tầng 1 của robot chứa các linh kiện chính
Khung robot tầng 2 được thiết kế riêng để gắn RPLiDAR C1, một cảm biến quét laser quan trọng, giúp robot quét môi trường xung quanh một cách chính xác và chi tiết Việc phân chia các tầng chức năng giúp tối ưu hóa không gian và tạo điều kiện thuận lợi cho hoạt động của các thành phần, đồng thời nâng cao hiệu suất và khả năng nhận diện môi trường xung quanh của robot
Hình 4.3: Cảm biến LiDAR được đặt ở tầng 2
THỰC NGHIỆM VÀ ĐÁNH GIÁ
Dưới đây là kết quả thu được khi thực hiện quét bằng node LiDAR Các khu vực bên ngoài được đánh dấu bằng màu đỏ đại diện cho những vùng mà LiDAR không thể tiếp cận được Các điểm màu đỏ tại những vị trí cuối cùng của LiDAR thường là các vật cản như tường, bàn ghế, và các vật thể tương tự Trong khi đó, khu vực bên trong khung màu đỏ là những vùng mà Lidar đã quét được
Hình 4.4: Kết quả của LiDAR khi quét
4.2.2 Tính toán hệ trục Odometry
Hệ trục Odometry (hoặc hệ trục di chuyển) thường được sử dụng để mô tả vị trí và hướng của robot Hệ trục Odometry là một hệ trục tọa độ đặc biệt được gắn với robot và thường được sử dụng để theo dõi sự thay đổi vị trí của robot dựa trên các đo lường tốc độ hoặc di chuyển Hệ trục Odometry là quan trọng trong việc xác định vị trí của robot dựa trên dữ liệu từ các cảm biến, nhất là encoder trên bánh xe và gia tốc kế Thông tin từ hệ trục Odometry thường được sử dụng để tính toán sự di chuyển và vị trí của robot trong không gian, đặc biệt là khi không có GPS hoặc khi chúng không chính xác trong môi trường linh động Để kiểm tra tính chính xác và độ tin cậy cho việc di chuyển ta sẽ tiến hành tính toán và so sánh các kết quả thu được từ trình quan sát Rviz trên hệ điều hành ROS và robot thực tế
Hình 4.5: Vị trí ban đầu của robot và biểu diễn trên hệ trục Odometry
Tại thời điểm ban đầu, hệ toạ độ tâm của robot được xác định là base_link và được căn chỉnh để trùng với hệ trục odom như được minh họa trong hình 4.5 Vị trí ban đầu của robot được xác định là (x = 0, y = 0, z = 0)
Sau khi robot được di chuyển một đoạn thẳng có chiều dài là 40cm và hướng tiến về phía trước, quá trình đo odometry cung cấp kết quả như minh họa trong hình 4.6
Hình 4.6: Robot tiến thẳng một đoạn 40cm so với vị trí ban đầu
Khi cho robot di chuyển một đoạn thẳng 40cm và hướng lùi về phía sau, ta có được kết quả của quá trình đo odometry như hình 4.7
Hình 4.7: Robot di chuyển lùi một đoạn 40cm so với ban đầu
Thông qua các lần thực nghiệm kiểm tra độ chính xác trong việc thu thập số liệu và tính toán cho hệ trục Odometry ta có thể thấy giá trị thực tế so với giá trị thu được trên Rviz không ổn định, có sự chênh lệch giữa thực tế và tính toán Tuy nhiên giá trị sai lệch có thể hoàn toàn chấp nhận được trong phạm vi cho phép Từ việc tính toán hệ trục Odometry sẽ giúp cho việc xác định được vị trí hiện tại của robot
4.2.3 Quá trình tạo bản đồ của robot
Dưới đây là hình ảnh ban đầu của bản đồ khi ở vị trí ban đầu và chưa di chuyển robot, ta có thể thấy được bản đồ được tạo ra còn nhiều góc và vị trí laser chưa quét được, vì vậy chúng ta cần phải di chuyển robot xung quanh bản đồ thực tế để robot có thể quét được tất cả các nơi mà laser có thể quét được
Hình 4.8: Bắt đầu tạo bản đồ
Dưới đây là hình ảnh đang trong quá trình di chuyển robot xung quanh bản đồ thực tế để laser có thể quét được tất cả các vị trí trong môi trường thực tế mà laser có thể quét được, ta có thể thấy được bản đồ dần dược cập nhật các vị trí mà ban đầu laser chưa thể quét được
Hình 4.9: Đang trong quá trình tạo bản đồ
Hình ảnh bên dưới là bản đồ sau khi hoàn thành của robot, ta có thể thấy được các vị trí mà laser có thể quét được trên bản đồ thực tế đều được tạo ra trên bản đồ robot xây dựng từ LiDAR
Hình 4.10: Bản đồ sau khi hoàn thành
4.2.4 So sánh độ chính xác giữa bản đồ thực tế và bản đồ robot lập nên
Kích thước chiều ngang của bản đồ thực tế là 2.78m (đường kẻ màu đỏ) và chiều dọc là 2m (đường kẻ màu xanh) được biểu thị ở hình vẽ dưới đây
Hình 4.11: Kích thước bản đồ thực tế
4.2.4.1 So sánh độ chính xác theo chiều ngang
Hình 4.12: Kích thước chiều ngang bản đồ đo từ Rviz
Dựa vào kích thước đo dược từ Rviz và kích thước thực tế của bản đồ, ta có thể tính được sai số giữa bản đồ thực tế và robot xây dựng theo chiều ngang:
Kích thước bản đồ thực tế: 2.78m
Kích thước bản đồ robot xây dựng: 2.75766m
4.2.4.2 So sánh độ chính xác theo chiều dọc
Hình 4.13: Kích thước chiều dọc bản đồ đo từ Rviz
Dựa vào kích thước đo dược từ Rviz và kích thước thực tế của bản đồ, ta có thể tính được sai số giữa bản đồ thực tế và robot xây dựng theo chiều dọc
Kích thước bản đồ thực tế: 2m
Kích thước bản đồ robot xây dựng: 1.99605m
4.2.4.3 So sánh độ chính xác từ một vật cản đến tường
Hình 4.14: Kích thước từ vật cản đến tường đo từ Rviz
Dựa vào kích thước đo dược từ Rviz và kích thước thực tế của bản đồ, ta có thể tính được sai số giữa bản đồ thực tế và robot xây dựng từ một vật cản (cạnh bàn) đến tường, kích thước thực tế của khoảng cách này là: 1m
Kích thước bản đồ thực tế: 1m
Kích thước bản đồ robot xây dựng: 0.997491m
Sai số từ vật cản đến tường = 1 – 0.997491 = 0.002509m
Từ kết quả so sánh độ chính xác của bản đồ thực tế và bản đồ do robot tạo ra, có thể thấy rằng bản đồ tạo ra có độ sai lệch so với bản đồ thực tế Mặc dù vậy, độ sai số này không quá lớn và nằm trong phạm vi chấp nhận được Do đó, ta có thể kết luận rằng sự kết hợp giữa cảm biến LiDAR và thuật toán lập bản đồ hector_slam đạt hiệu suất tốt.
4.2.4.4 So sánh bản đồ do robot lập và bản đồ thực tế
Dưới đây là hình ảnh so sánh giữa môi trường thực tế và bản đồ được tạo ra từ LiDAR kết hợp sử dụng gói hector_slam và được hiển thị trên Rviz
Theo như tính toán ở phần so sánh kích thước các khoảng cách từ các điểm trên bản đồ với nhau giữa bản đồ thực tế và bản đồ tạo được từ robot, thì ta có thể thấy bản đồ tạo ra tương đối ổn định và sai số ở mức chấp nhận được
Hình 4.15: Bản đồ thực tế
Hình 4.16: Bản đồ được lập bởi robot
Khu vực màu xám là vùng cảm biến LiDAR đã quét được và robot có thể di chuyển xung quanh vùng này
Khu vực màu đen là tường và các vật cản như bàn, ghế,… robot không thể di chuyển ra khỏi vùng này
Khu vực bên ngoài màu đen là vùng cảm biến không thể quét được do có vật cản là tường hoặc các vật có tầm cao hơn cảm biến
Thông tin chi tiết của bản đồ:
Hình 4.17: Thông số của bản đồ image: đường dẫn đến ảnh chứa thông tin resolution: độ phân giải của bản đồ (m/pixel) origin: toạ độ của pixel bên trái dưới cùng và góc xoay của bản đồ negate: nếu bằng 0 thì màu xám là không gian trống, màu đen là không gian đang bị chiếm dụng và ngược lại occupied_thresh: ngưỡng để xem xét một pixel có đang bị chiếm dụng hay không free_thresh: ngưỡng để xem xét một pixel có đang ở không gian trống hay không