Song song với đó sử dụng cảm biến Lidar cùng với ROS để tạo bản đồ tìm đường di chuyển điều khiển Robot, thiết kế giao diện tương tác với khách hàng bằng màn hình HMI và giao diện tương
GIỚI THIỆU VỀ ĐỀ TÀI
Đặt vấn đề
Ngày nay, với sự phát triển không ngừng của khoa học kỹ thuật và nhu cầu ngày càng cao của con người, việc thiết kế ra những sản phẩm tiện ích là cần thiết để đáp ứng các yêu cầu đa dạng Ngành công nghiệp robot ngày càng có vị thế quan trọng trong xã hội, với các ứng dụng từ sản xuất, lắp ráp trong công nghiệp đến phục vụ trong lĩnh vực dịch vụ, mang lại lợi ích vượt trội như độ chính xác cao và năng suất lớn trong thời gian dài Đặc biệt, robot tự hành có thể thay thế con người thực hiện các công việc nặng nhọc thường ngày trong nhà xưởng, y tế, nhà hàng, dịch vụ, làm việc trong môi trường hóa chất, nhiệt độ cao, áp suất cao, khu vực hạn chế tầm nhìn, phóng xạ, Trong lĩnh vực dịch vụ, robot cần phải nhỏ gọn, di chuyển linh hoạt và có thiết kế thân thiện và có khả năng tương tác với khách hàng Do đó, việc phát triển một mobile robot có khả năng di chuyển theo câu lệnh giọng nói của người dùng là một vấn đề cấp thiết Vì vậy, nhóm đã quyết định nghiên cứu, thiết kế và chế tạo Robot phục vụ trong nhà hàng và hỗ trợ tương tác với khách hàng bằng giọng nói
Nhóm chúng tôi hướng đến mục tiêu thiết kế Mobile Robot có khả năng tự động vận chuyển thức ăn từ khu bếp hoặc quầy thức ăn của nhà hàng đến bàn ăn của khách hàng Robot này sẽ giúp khâu vận chuyển thức ăn trở nên nhanh gọn và an toàn, đồng thời giải quyết vấn đề thiếu hụt nhân lực Bên cạnh đó, robot còn mang lại trải nghiệm thú vị cho khách hàng khi có hỗ trợ tương tác bằng giọng nói.
Robot được trang bị cảm biến Lidar kết hợp với ROS giúp định vị chính xác để điều khiển Robot đến các vị trí mong muốn Thiết kế này hứa hẹn mang lại hiệu quả cao, nâng cao chất lượng dịch vụ và tối ưu hóa quy trình phục vụ trong nhà hàng.
Tính cấp thiết của đề tài
Trong điều kiện kinh tế xã hội và khoa học kỹ thuật phát triển mạnh như ngày nay, những ứng dụng của công nghệ vào cuộc sống ngày càng phải thông minh hơn và khả năng tự động cao hơn Mobile Robot được chế tạo dùng để thay thế cho con người làm việc như các cánh tay máy vận chuyển hàng hóa trong các hệ thống công nghiệp Mobile Robot có thể di chuyển trong các môi trường độc hại ảnh hưởng đến sức khỏe của con người như: môi trường hóa chất, nhiệt độ cao, áp suất cao, phóng xạ, để thực hiện nhiệm vụ thay thế con người Việc nghiên cứu, thiết kế và chế tạo Robot phục vụ trong nhà hàng và hỗ trợ tương tác với khách hàng bằng giọng nói là một vấn đề cần thiết không chỉ giúp giảm tải công việc của nhân viên mà còn mang lại một trải nghiệm độc đáo và thú vị cho khách hàng Chúng có thể thực hiện nhiều nhiệm vụ như chào đón khách, hướng dẫn chọn món, phục vụ và tư vấn hỗ trợ cho khách hàng
Mục tiêu hoàn thành
Nhóm đặt ra mục tiêu:
- Hoàn thiện việc thiết kế, chế tạo khung cơ khí cho Mobile Robot với kích thước:
+ Kích thước mỗi khay để thức ăn: 300x240 (mm)
+ Tổng chiều cao Robot: 1000 (mm)
+ Khoảng cách giữa các khay để thức ăn: 250 (mm)
- Sử dụng vi điều khiển STM32F103 và máy tính nhúng Raspberry Pi điều khiển và giám sát Mobile Robot
- Xây dựng và hoàn thiện bộ điều khiển PID cho động cơ Mobile Robot
- Sử dụng mô hình nhận dạng giọng nói để tương tác với khách hàng thông qua màn hình HMI
- Xây dựng bản đồ và thuật toán di chuyển cho Mobile Robot sử dụng cảm biến Lidar kết hợp với ROS
- Thiết kế giao diện để điều khiển Mobile Robot thông qua giao thức MQTT
- Năng suất vận hành 1 lần vận chuyển được 5 kg.
Giới hạn đề tài
Trong đồ án này, với mục tiêu nghiên cứu, thiết kế, chế tạo Mobile Robot phục vụ trong nhà hàng với diện tích nhỏ đến vừa (từ 40 m 2 đến 80 m 2 ), ít vật cản động và hỗ trợ tương tác với khách hàng bằng giọng nói Nhóm tập trung đến những mục tiêu như sau:
- Sử dụng mô hình nhận diện giọng nói để hỗ trợ đặt món ăn
- Thiết kế vỏ khung Mobile Robot đảm bảo độ bền và tính thẩm mỹ
- Tạo giao diện tương tác với khách hàng qua HMI và giao diện tương tác với người quản lý.
Phương pháp nghiên cứu
Để hoàn thành đề tài này, nhóm đã áp dụng phương pháp kết hợp giữa nghiên cứu lý thuyết và thực nghiệm Nghiên cứu lý thuyết bao gồm việc tham khảo các tài liệu liên quan đến cơ khí, điện - điện tử, điều khiển động cơ, các nghiên cứu trong và ngoài nước, các đề tài đã chế tạo mobile robot trước đây, các mô hình về nhận dạng giọng nói Thực nghiệm bao gồm việc thiết kế, lắp ráp mô hình robot tự hành, kiểm tra và đánh giá hiệu quả hoạt động của robot so với mục tiêu ban đầu Ngoài ra, nhóm cũng kết hợp các kiến thức chuyên ngành cơ
3 điện tử, kiến thức đa ngành, sử dụng các phần mềm máy tính để tính toán, thiết kế, mô phỏng, xây dựng mô hình thực nghiệm, nhằm đáp ứng các yêu cầu của việc nghiên cứu, thiết kế và chế tạo Robot phục vụ trong nhà hàng và hỗ trợ tương tác với khách hàng bằng giọng nói.
Nhóm đã sử dụng phần mềm hỗ trợ thiết kế cơ khí 3D Inventor vào việc thiết kế tính toán và chế tạo mô hình Ngoài ra, nhóm còn sử dụng phần mềm Keil C để lập trình vi điều khiển STM32F103 điều khiển động cơ cho Mobile Robot, sử dụng Gazebo để mô phỏng Mobile Robot, sử dụng cảm biến Lidar kết hợp với ROS để tạo bản đồ và định hướng di chuyển Robot, vận dụng giao thức truyền thông MQTT truyền tín hiệu đến máy tính nhúng để xử lý tín hiệu và truyền đến vi điều khiển bằng giao thức UART.
TỔNG QUAN NGHIÊN CỨU ĐỀ TÀI
Giới thiệu Mobile Robot phục vụ nhà hàng
Thuật ngữ "robot" lần đầu tiên xuất hiện năm 1922 trong tác phẩm "Rossum's Universal Robot" của Karel Capek Theo tiếng Séc thì robot là người làm tạp dịch Trong tác phẩm này nhân vật Rossum và con trai của ông đã tạo ra những chiếc máy gần giống như con người để phục vụ con người [1]
Robot di động (Mobile Robot) có thể di chuyển từ nơi này sang nơi khác một cách tự động, nghĩa là không cần sự trợ giúp từ người vận hành bên ngoài Không giống như phần lớn Robot công nghiệp chỉ có thể di chuyển trong một không gian làm việc được xác định trước để đạt được mục tiêu mong muốn Khả năng di động này làm cho chúng phù hợp với nhiều ứng dụng trong nhiều môi trường [2]
Vậy Robot phục vụ nhà hàng là gì? Robot phục vụ nhà hàng, hay còn gọi là Robot dịch vụ, là loại robot được thiết kế để hỗ trợ và tăng cường khả năng phục vụ trong các nhà hàng Chúng có thể thực hiện nhiều nhiệm vụ khác nhau, từ việc chào đón khách, hướng dẫn họ đến bàn, trình bày thực đơn, nhận đơn đặt hàng, và phục vụ thức ăn và đồ uống [3]
Hình 2.1: Robot do Keenon và SoftBank chế tạo phục vụ khách trong một sự kiện ra mắt ở Singapore (nguồn: thesaigontimes)
Lịch sử phát triển của Robot
Giai đoạn đầu tiên của sự phát triển robot di động bắt đầu từ năm 1939 đến 1945, khi Thế chiến II chứng kiến sự xuất hiện của các robot di động dưới dạng bom bay có hệ thống dẫn đường và radar điều khiển (Hình 2.2) Đến năm 1948, W Gray Walter đã tạo ra hai robot đơn giản là Elmer Elsie, Đây là những robot đầu tiên được lập trình để "suy nghĩ" theo cách mà bộ não sinh học hoạt động, với khả năng thể hiện ý chí tự do Do hình dáng và cách di chuyển của chúng, Elmer Elsie (Hình 2.3) thường được gọi là robot rùa Chúng có khả năng phototaxis, tức là di chuyển để phản ứng với kích thích ánh sáng
Hình 2.2: Bom bay V1 (nguồn: nghiencuuquocte)
Hình 2.3: Elmer_Elsie Robot (nguồn: theoldrobots)
Giai đoạn phát triển tiếp theo từ những năm 1960 đến 2000 đánh dấu nhiều cột mốc quan trọng Từ năm 1961 đến 1963, robot Hopkins Beast (Hình 2.4) ra đời với khả năng tự tìm ổ cắm điện khi hết pin Năm 1969 chứng kiến sự ra mắt của Mowbot, robot cắt cỏ tự động đầu tiên, và Stanford Cart (Hình 2.5), robot di động sử dụng camera và máy tính để di chuyển theo đường kẻ trắng Năm 1970, Shakey trở thành robot đầu tiên có khả năng lập luận và thực hiện các mệnh lệnh phức tạp Năm 1976, NASA phóng tàu Viking lên sao Hỏa, tiếp tục thúc đẩy sự phát triển của robot khám phá không gian Phim "Chiến tranh giữa các vì sao" năm
1977 với sự xuất hiện của R2D2 và C3P0 làm tăng sự phổ biến của robot trong văn hóa đại chúng
Hình 2.4: Robot Hopkins Beast (nguồn: cyberneticzoo)
Hình 2.5: Standford Cart (nguồn: cyberneticzoo)
Trong thập niên 1980, sự ra đời của các robot gia đình như RB5X và HERO đã mang lại những ứng dụng thực tiễn đáng kể trong đời sống hàng ngày Năm 1982, Stanford Cart được cải tiến để có thể tự lái và lập bản đồ Đến năm 1989, Mark Tilden giới thiệu công nghệ BEAM robotics, đánh dấu bước tiến quan trọng trong lĩnh vực robot học Trong những năm
1990, Joseph Engelberger phát triển robot tự động cho ngành y tế, và các robot như Dante I và Dante II được thiết kế để thám hiểm núi lửa Năm 1995, robot Pioneer có khả năng lập trình được thương mại hóa, thúc đẩy nghiên cứu và ứng dụng robot Năm 1997, NASA phóng tàu Mars Pathfinder mang theo robot Sojourner (Hình 2.6) lên sao Hỏa, mở ra kỷ nguyên mới trong việc khám phá hành tinh khác Đến năm 1999, Sony giới thiệu robot Aibo có khả năng di chuyển, quan sát và tương tác, đồng thời PackBot, robot quân sự điều khiển từ xa, cũng được ra mắt
Hình 2.6: Robot Sojuourner khám phá thăm dò trên sao Hỏa (nguồn: researchgate)
Giai đoạn hiện đại bắt đầu từ năm 2001, khi dự án Swain-Bots khởi động với bầy côn trùng robot Năm 2002, Roomba, robot hút bụi gia đình, ra đời và trở nên phổ biến Năm
2004, Robosapien, một robot đồ chơi, được bán ra thị trường và dự án Centibots Project sử dụng 100 robot để lập bản đồ và tìm kiếm vật thể Cùng năm đó, DARPA Grand Challenge, cuộc thi robot tự động đầu tiên, được tổ chức Năm 2005, TALON-Sword, một robot tự động vũ trang, ra đời và Asimo (Hình 2.7) của Honda thể hiện khả năng chạy và leo cầu thang Năm 2007, hệ thống Kiva sử dụng robot thông minh trong quy trình phân phối, robot Tug vận chuyển đồ trong bệnh viện, Seekur, một robot dịch vụ ngoài trời, và PatrolBot, robot có khả năng theo dõi con người, được giới thiệu
Hình 2.7: Robot Asimo của Honda (nguồn: globalhonda)
Từ năm 2007 đến nay, robot di động đã tiếp tục phát triển mạnh mẽ, phục vụ nhiều lĩnh vực khác nhau trong đời sống, từ y tế, nông nghiệp, công nghiệp đến giải trí, với các robot ngày càng trở nên thông minh và thân thiện hơn với con người (Hình 2.8)
Hình 2.8: Medbot giao thuốc trong bệnh viện (nguồn: therobotreport)
Phân loại Robot di động
Dựa vào môi trường hoạt động, Robot di động được chia thành 3 loại chính đó là: Robot di động trên đất liền (gồm Robot di động có bánh xe và Robot di động có chân), Robot di động dưới nước (Autonomous underwater vehicle - có thể tự định hướng và di chuyển trong nước, hay còn gọi là Robot bơi) và Robot di động trên không (là phương tiện bay tự động siêu nhỏ, có hướng dẫn và điều khiển trên không) [4]
2.3.1 Robot di động trên đất liền
Robot trên đất liền gồm robot di động có bánh xe (Wheeled Mobile Robot -WMR) và robot di động có chân (Legged Mobile Robot – LMR) Đây là những loại robot phức tạp hơn và có dạng hình người tự trị vì nó đòi hỏi nhiều mức độ tự do và đồng bộ hóa [2]
2.3.1.1 Robot di động có bánh xe
Về thành phần cấu tạo
- Khung xe (Chassis): Cấu trúc chính để gắn các bộ phận khác Khung xe thường làm từ vật liệu nhẹ và bền như nhôm hoặc nhựa composite
- Bánh xe (Wheels): Cung cấp phương tiện di chuyển cho robot Số lượng bánh xe có thể thay đổi (2, 3, 4 hoặc nhiều hơn) tùy thuộc vào thiết kế và yêu cầu
- Động cơ (Motors): Động cơ DC hoặc động cơ bước để điều khiển chuyển động của bánh xe Mỗi bánh xe có thể được gắn với một động cơ riêng biệt
- Cảm biến (Sensors): Bao gồm cảm biến khoảng cách (ultrasonic, infrared), camera, lidar, và cảm biến gia tốc (accelerometer) để thu thập thông tin về môi trường xung quanh và trạng thái của robot
- Bộ điều khiển (Controller): Bộ vi xử lý hoặc máy tính nhúng (như Arduino, Raspberry Pi) để xử lý dữ liệu cảm biến và điều khiển các động cơ
- Nguồn năng lượng (Power Source): Pin lithium-ion hoặc các nguồn năng lượng khác để cung cấp năng lượng cho robot hoạt động
- Hệ thống điều hướng (Navigation System): Thuật toán và phần mềm để lập kế hoạch đường đi và tránh chướng ngại vật Bao gồm bản đồ hóa (mapping) và định vị (localization)
Hình 2.9: Robot DRU - Domino’s Robotic Unit giao bánh pizza (nguồn: cand) Ưu điểm
- Năng lượng tiêu thụ: Di chuyển hiệu quả trên bề mặt phẳng, tiêu thụ ít năng lượng
- Thiết kế: Đơn giản, dễ dàng lắp đặt sản xuất, lắp ráp và bảo trì
- Di chuyển: Nhanh, linh hoạt trên bề mặt sàn bằng phẳng
- Địa hình gồ ghề: Việc di chuyển khó khăn không được linh hoạt trên các địa hình có bề mặt không được bằng phẳng, bùn lầy hoặc địa hình đất đá
- Khả năng leo dốc: Khả năng hạn chế vì phải phụ thuộc vào độ bám, độ dốc của bánh xe và công suất của động cơ
2.3.1.2 Robot di động có chân:
Về thành phần cấu tạo
- Khung robot (Chassis): Cấu trúc chính để gắn các bộ phận khác Có thể làm từ các vật liệu nhẹ và bền như nhôm hoặc composite
- Chân (Legs): Bao gồm nhiều khớp nối (joints) và động cơ để cung cấp khả năng di chuyển Số lượng chân có thể thay đổi (2, 4, 6 hoặc nhiều hơn)
- Động cơ (Motors): Động cơ servo hoặc động cơ bước để điều khiển các khớp nối của chân
- Cảm biến (Sensors): Bao gồm cảm biến khoảng cách (ultrasonic, infrared), camera, lidar, cảm biến vị trí khớp nối (joint position sensors), và cảm biến gia tốc để nhận biết môi trường và điều khiển chuyển động của chân
- Bộ điều khiển (Controller): Bộ vi xử lý hoặc máy tính nhúng (như Arduino, Raspberry Pi) để xử lý dữ liệu cảm biến và điều khiển các động cơ
- Nguồn năng lượng (Power Source): Pin lithium-ion hoặc các nguồn năng lượng khác để cung cấp năng lượng cho robot hoạt động
- Hệ thống điều khiển chuyển động (Motion Control System): Thuật toán và phần mềm để điều khiển chuyển động của chân, lập kế hoạch đường đi và tránh chướng ngại vật Bao gồm các thuật toán cân bằng và điều chỉnh động học
Hình 2.10: Robot ANYmal (nguồn: ieee)
- Khả năng di chuyển trên địa hình phức tạp: Có thể di chuyển trên các bề mặt không bằng phẳng, leo trèo và vượt chướng ngại vật
- Linh hoạt: Có thể thay đổi hướng và độ cao của từng chân để thích ứng với môi trường
- Khả năng thích ứng cao: Thích hợp cho các nhiệm vụ trong môi trường khắc nghiệt như rừng rậm, đồi núi, hoặc đống đổ nát
- Tiêu thụ năng lượng cao: Di chuyển bằng chân tiêu tốn nhiều năng lượng hơn so với bánh xe
- Thiết kế phức tạp: Yêu cầu kỹ thuật cao trong thiết kế và sản xuất
- Tốc độ chậm: Di chuyển chậm hơn so với robot có bánh xe trên bề mặt phẳng
- Bảo trì khó khăn: Phức tạp hơn trong việc bảo trì và sửa chữa các khớp nối và động cơ
2.3.2 Robot di động dưới nước
Robot di động dưới nước hay phương tiện tự lái dưới nước có thể tự định hướng và di chuyển trong nước (Hình 2.11)
Về thành phần cấu tạo
- Khung (Frame): Cấu trúc chính của AUV, thường được làm từ các vật liệu bền và nhẹ như hợp kim nhôm hoặc composite để chịu áp lực nước
- Vỏ bọc (Hull): Bao bọc bên ngoài khung, giúp bảo vệ các thiết bị bên trong khỏi nước và áp lực dưới nước Thường được thiết kế có khả năng chịu áp suất cao ở độ sâu lớn
- Động cơ (Thrusters): Sử dụng động cơ điện để đẩy AUV di chuyển trong nước Có thể có nhiều động cơ để điều khiển hướng và tốc độ di chuyển
- Pin (Batteries): Nguồn năng lượng chính cho AUV, thường là pin lithium-ion hoặc các loại pin có dung lượng cao khác để cung cấp năng lượng cho các hệ thống của AUV
- Máy tính nhúng (Embedded Computer): Bộ vi xử lý để điều khiển các hoạt động của AUV, xử lý dữ liệu từ cảm biến và thực hiện các thuật toán điều hướng
- Phần mềm điều khiển (Control Software): Thuật toán và phần mềm để lập kế hoạch đường đi, điều khiển động cơ và thực hiện các nhiệm vụ cụ thể
- Cảm biến âm thanh dưới nước (Sonar): Sử dụng sóng âm để xác định vị trí, khoảng cách và hình dạng của các đối tượng dưới nước
- Cảm biến áp suất (Pressure Sensors): Đo độ sâu và áp suất của nước để xác định vị trí của AUV theo độ sâu
- Cảm biến quán tính (Inertial Measurement Unit - IMU): Đo gia tốc và góc quay để cung cấp thông tin về động học và định hướng của AUV
- Camera dưới nước (Underwater Cameras): Chụp ảnh và quay video dưới nước, giúp quan sát và thu thập dữ liệu hình ảnh
- Giao tiếp âm thanh (Acoustic Communication): Sử dụng sóng âm để truyền thông tin giữa AUV và trạm điều khiển hoặc các phương tiện khác dưới nước
- Cảm biến và thiết bị đo lường (Scientific Sensors): Bao gồm các thiết bị đo đạc và thu thập dữ liệu như cảm biến nhiệt độ, độ mặn, pH, và các cảm biến hóa học khác
Hình 2.11: Waste Shark mô hình cá mập hút rác làm sạch dòng sông, ngăn rác thải nhựa chảy ra biển (nguồn: vov) Ưu điểm
- Khả năng thám hiểm sâu: Có thể hoạt động ở độ sâu lớn, vượt xa khả năng của con người và các phương tiện điều khiển từ xa
- Hiệu quả: Có khả năng hoạt động liên tục trong thời gian dài, giúp tăng cường hiệu suất và độ chính xác của các nhiệm vụ dưới nước
- Tự hành: Có khả năng thực hiện nhiệm vụ mà không cần sự can thiệp của con người, giúp giảm tải công việc cho người điều khiển và tăng hiệu suất công việc
- Chi phí sản xuất: Thiết kế và chế tạo AUV đòi hỏi công nghệ cao và vật liệu đặc biệt, dẫn đến chi phí sản xuất đắt đỏ
Tình hình nghiên cứu trong và ngoài nước
Tại Việt Nam, lĩnh vực Mobile Robot trong những năm gần đây đã có những sự phát triển đáng kể và nghiên cứu tập trung trên nhiều khía cạnh khác nhau Chẳng hạn, tác giả Ths Phan Gia Luân và PGS.TS Nguyễn Trường Thịnh đã thực hiện nghiên cứu về hệ thống định vị để giúp robot di chuyển đến vị trí mục tiêu một cách an toàn và hiệu quả trong môi trường có nhiều chướng ngại vật và sự hiện diện của con người (ở Hình 2.13) và mô hình Robot thực nghiệm (ở Hình 2.14)
Hình 2.13: Mobile Robot cho thử nghiệm (nguồn: mdpi)
Hình 2.14: (a) Tập hợp điểm đường dẫn được tạo bằng thuật toán A-Heuristic; (b) tập hợp điểm quan trọng; (c) giảm điểm quan trọng được thiết lập bằng cách sử dụng phương pháp tìm kiếm hồi quy (nguồn: mdpi)
Và cũng gần đây, một dự án khá mới về Mobile Robot tại Việt Nam Alpha Asimov – Robot giao nhận hàng không người lái như Hình 2.15
Hình 2.15: Alpha Asimov (nguồn: vietnamnet)
Tại nước ngoài, lĩnh vực về Mobile Robot mang nhiều màu sắc và sự phong phú đa dạng Chẳng hạn như ở Nhật Bản, có chú gấu Robear (Hình 2.16) được thiết kế để phục vụ, giúp đỡ người cao tuổi di chuyển từ giường sang xe lăn
Hình 2.16: Chú gấu Robear (nguồn: robotek)
Spot chú chó Robot bốn chân của Boston Dynamics (Hình 2.17) được sử dụng trong nhiều ứng dụng như quân sự, cứu hộ và nghiên cứu khoa học có khả năng di chuyển linh hoạt trên nhiều địa hình gồ ghề, leo cầu thang và thực hiện các động tác một cách linh hoạt
Hình 2.17: Chú chó bốn chân Spot của Boston Dynamics (nguồn: bostondynamics)
CƠ SỞ LÝ THUYẾT
Động cơ DC Servo
Cấu tạo: Động cơ DC servo được cấu tạo từ 2 bộ phận chính là stator và rotor ngoài ra động cơ còn được tích hợp thêm một số bộ phận khác
- Stator: phần đứng yên cấu tạo bởi nam châm vĩnh cửu
- Rotor: phần chuyển động cấu tạo bởi các cuộn dây quấn quanh lõi thép Động cơ DC servo gồm 2 loại:
+ Có chổi than: Là loại động cơ sản xuất với chi phí thấp, cấu trúc đơn giản, dễ điều khiển và cũng dễ bảo trì bảo dưỡng
+ Không chổi than: có kích thước nhỏ và trọng lượng nhỏ hơn Tuy nhiên, loại động cơ này phản ứng rất nhanh, quán tính nhanh nhờ mô men xoắn ổn định hơn động cơ DC servo có chổi than
Nguyên lý hoạt động: Động cơ DC servo hoạt động dựa trên nguyên lý tạo ra một lực đối kháng giữa từ tính và dòng điện chạy qua cuộn dây của động cơ Để điều khiển vị trí hoặc tốc độ mong muốn của động cơ thường sử dụng một hệ thống phản hồi - bộ mã hóa (encoder) được tích hợp để liên tục theo dõi vị trí của rotor, từ đó điều chỉnh dòng điện và lực từ để đạt được hiệu suất tối ưu.
Bộ điều khiển PID
PID là một cơ chế điều khiển phản hồi phổ biến được sử dụng rộng rãi trong hệ thống điều khiển công nghiệp hiện đại
Bộ điều khiển PID thường được tích hợp vào các hệ thống điều khiển vòng kín, nơi mà tín hiệu phản hồi được sử dụng để điều chỉnh và duy trì hiệu suất hệ thống Chức năng chính của PID là tính toán giá trị sai số, tức là hiệu số giữa giá trị đo được của thông số biến đổi và giá trị đặt mong muốn Sự kết hợp linh hoạt giữa các thành phần Proportional (P), Integral (I), và Derivative (D) trong PID giúp điều khiển hệ thống một cách hiệu quả, đảm bảo ổn định và chính xác trong các ứng dụng điều khiển và tự động hóa
P (Proportional): Đây được gọi là phương pháp điều chỉnh tỉ lệ Nó có thể tạo tín hiệu nhằm điều chỉnh tỉ lệ và sai lệch đầu vào với thời gian lấy mẫu
I (Integral): Đây được gọi là phương pháp điều khiển tích phân Nó thực hiện bằng cách tạo và điều chỉnh tín hiệu cho độ sai lệch giảm về 0 Với thời gian càng nhỏ thì việc hiệu chỉnh tích phân càng mạnh, đồng thời độ lệch càng nhỏ
D (Derivative): Đây được gọi là phương pháp điều khiển vi phân Nó giúp tạo và điều chỉnh tín hiệu sao cho tỉ lệ với tốc độ thay đổi sai lệch ở đầu vào Khác với phương pháp trên, thời gian càng lớn thì việc hiệu chỉnh vi phân càng mạnh, đồng thời sự thay đổi đầu vào càng nhanh
Một sơ đồ hiệu chỉnh của PID sẽ bao gồm 3 khâu với tổng khâu tỷ lệ, khâu phân tích và khâu vi phân Nó tạo thành các biến điều khiển được ký hiệu là MV và có công thức cụ thể đó là:
MV(t) = P(out) + I(out) + D(out) Với các giá trị P, I, D là những thành phần đầu ra của ba khâu đầu ra điều chỉnh PID.
Hệ điều hành Robot ROS
Robot Operating System 2 (ROS 2) là một nền tảng mã nguồn mở cung cấp những thư viện và công cụ mạnh mẽ để xây dựng các ứng dụng liên quan tới robot Các phiên bản ROS mới được ra mắt và tháng 5 hằng năm, và được thiết kế để chạy trên các phiên bản mới nhất của LTS Ubuntu Mặc dù ROS có thể chạy được trên các bản phân phối Linux khác (kể cả Mac/Windows), nó được hỗ trợ tốt nhất bởi Ubuntu Quá trình phát triển của ROS được giám sát bởi Open Robotics
Trong những năm gần đây, dự án ROS đã trải qua một sự nâng cấp đáng kể, một phiên bản mới hơn ra đời với tên gọi ROS 2 Phần lớn các tài liệu và hướng dẫn dành cho phiên bản ROS ban đầu (thường được gọi là ROS 1), tuy nhiên ROS 1 không còn được cập nhật nữa, vì vậy nhưng hướng dẫn mới ra đời sẽ tập trung vào ROS 2 (chủ yếu chạy trên LTS Ubuntu) Phần lớn các khái niệm trên ROS 1 vẫn đúng với ROS 2, tuy nhiên các câu lệnh và chương trình chạy trên ROS 1 sẽ không hoạt động được trên ROS 2
Mục đích của ROS 2 là cung cấp một nền tảng phần mềm tiêu chuẩn cho các nhà phát triển trên mọi lĩnh vực từ nghiên cứu, phát triển đến triển khai, sản xuất ROS 2 được xây dựng dựa trên nền tảng Dịch vụ Phân phối Dữ liệu DDS (Data Distribution Service), mang lại nhiều lợi ích hơn so với phiên bản ROS 1, bao gồm:
- Hiệu suất cao hơn: ROS 2 sử dụng DDS để truyền thông dữ liệu giữa các nút (node), giúp cải thiện đáng kể hiệu suất và khả năng mở rộng
- Tính linh hoạt cao hơn: ROS 2 hỗ trợ nhiều ngôn ngữ lập trình hơn, bao gồm C++, Python, Java và JavaScript Điều này giúp các nhà phát triển dễ dàng lựa chọn ngôn ngữ phù hợp nhất với nhu cầu
- Bảo mật tốt hơn: ROS 2 tích hợp các tính năng bảo mật nâng cao, giúp bảo vệ hệ thống robot khỏi các mối đe dọa mạng
- Dễ sử dụng hơn: ROS 2 cung cấp một số công cụ và tài nguyên giúp cho việc bắt đầu sử dụng trở nên dễ dàng hơn
Hệ thống ROS được tạo thành từ một loạt các chương trình nhỏ hơn chạy cùng lúc và giao tiếp với nhau Mỗi chương trình này được gọi là một node ROS node rất giống với bất kỳ chương trình dòng lệnh nào khác, ngoại trừ việc nó có thể sử dụng các thư viện ROS và các phần khác của hệ sinh thái ROS sẽ biết về nó Một node thường được thiết kế để thực hiện một nhiệm vụ cụ thể như một phần của hệ thống lớn hơn Một số tác vụ mẫu mà node có thể thực hiện:
- Đọc dữ liệu từ cảm biến
- Gửi tín hiệu điều khiển đến động cơ
- Nhận điều khiển của người vận hành từ cần điều khiển Hiển thị hình ảnh trực quan cho người vận hành
- Tính toán quỹ đạo để đi theo
Cách các ROS nodes giao tiếp với nhau là thông qua các topics và messages Topic là một vị trí được đặt tên mà một (hoặc đôi khi nhiều) nodes có thể gửi messages tới Các node này được gọi là publisher (nhà xuất bản) và các nodes khác (được gọi là subscriber, người đăng ký) có thể đăng ký topic để nhận chúng Như đã đề cập ở trên, khi sử dụng các topics, không cần phải lo lắng về việc publisher node và subscriber node có ở trên cùng một máy tính hay không, ROS sẽ lo việc đó Tất cả những gì cần làm là chỉ định tên của topic và loại message sẽ được gửi Một node có thể là publisher cho một topic và là subscriber cho một topic khác Hệ thống topic rất tuyệt vời vì nó cho phép người dùng viết các node nhỏ hơn, đơn giản hơn, làm tốt một việc và có thể giao tiếp với nhau để giải quyết các vấn đề lớn hơn
Không giống như các topic cho phép một node chia sẻ nhiều messages với bất kỳ ai quan tâm lắng nghe, các services cung cấp một giao tiếp yêu cầu/trả lời duy nhất từ node này sang node khác Nội dung của câu trả lời có thể là thông tin hữu ích, chẳng hạn như kết quả tính toán hoặc có thể chỉ là dấu hiệu cho thấy yêu cầu đã được nhận
Hai tính năng mạnh mẽ mà ROS mang lại khi làm việc với các node là parameters (thông số) và remapping Parameters là các tùy chọn để thay đổi hành vi của một node Ví dụ: nếu có hai lidar được kết nối cùng một lúc, người dùng sẽ cần hai node điều khiển và mỗi node sẽ cần biết cổng nối tiếp nào sẽ giao tiếp Lập trình viên đã viết node có thể chỉ định bất kỳ parameters nào họ muốn người dùng có thể đặt
Remapping cho phép người dùng thay đổi tên của các topics mà một publisher node và subscriber node Điều này hữu ích nhất khi có hai node cần liên lạc với nhau nhưng dự kiến topic sẽ có tên khác
Khi làm việc trên một dự án ROS, người dùng thường sẽ chạy đi chạy lại cùng một node với cùng các tham số và ánh xạ lại Việc này trở nên khá mất thời gian vì cần phải nhớ mở tất cả các terminal và nhập đúng tất cả các thông số, sau đó dừng tất cả chúng khi hoàn tất Để giải quyết vấn đề này, ROS cung cấp một hệ thống tập lệnh có tên là "launching" (khởi chạy) cho phép định cấu hình và khởi chạy một loạt nodes cùng nhau trong một nhóm Trong ROS 1, hệ thống khởi chạy dựa trên các tệp XML và mặc dù ROS 2 không hỗ trợ về mặt kỹ thuật định dạng XML, nhưng hiện tại cách tiếp cận phổ biến và mạnh mẽ hơn là hệ thống dựa trên Python
Cấp độ tổ chức đầu tiên của hệ thống ROS được gọi là package Package là một cách mà người dùng có thể nhóm một loạt các tệp có liên quan chặt chẽ với nhau và đặc biệt (nhưng không phải luôn luôn) để người dùng có thể sử dụng lại code chung trong các dự án khác nhau Một package có thể chứa nhiều thứ khác nhau, chẳng hạn như một node, một tập hợp các node và tệp cấu hình, mô hình cho robot, thư viện phần mềm hoặc bất kỳ thứ gì khác
Thông thường khi cài đặt phần mềm trên máy tính, tất cả các tệp có liên quan sẽ được chuyển đến các vị trí đặc biệt trên máy tính nơi chúng được mong đợi sẽ được tìm thấy Ví dụ: khi nhập lệnh tại terminal, có một danh sách các đường dẫn để kiểm tra xem liệu nó có thể tìm thấy chương trình có tên đó để chạy hay không
Bây giờ ROS có thể sử dụng phương pháp này nếu muốn, nhưng có một số người muốn cài đặt nhiều phiên bản ROS khác nhau và trao đổi giữa chúng, điều này sẽ gây ra xung đột Hiện có một số công cụ khác nhau để giải quyết các vấn đề tương tự, như máy ảo, vùng chứa (ví dụ: Docker) hoặc môi trường ảo (ví dụ: venv hoặc conda), tuy nhiên ROS cung cấp giải pháp riêng
Khi làm việc trên các dự án ROS, người dùng tạo ra một thứ gọi là workspace (không gian làm việc) để giữ tất cả các packages của riêng mình Người dùng có thể quản lý phần này theo cách họ muốn, nhưng nhìn chung, mỗi dự án nên có không gian làm việc riêng, nơi sẽ chứa mọi gói có liên quan đến dự án đó Lưu ý rằng ở đây chúng ta đang nói về các packages được biên dịch từ nguồn (chính hãng), các packages do hệ thống cài đặt sẽ hiển thị với tất cả các không gian làm việc
QoS (Quality of Service, chất lượng dịch vụ) là một tính năng mới trong ROS 2 cho phép publisher và subscriber đặt ra một số tiêu chuẩn hoặc quy tắc quản lý việc truyền message về một topic Ví dụ: đối với một ứng dụng, điều quan trọng là mỗi message đều được subscriber nhận và không có message nào bị bỏ sót, ngay cả khi điều đó dẫn đến một số chậm trễ, tuy nhiên, một ứng dụng khác có thể chỉ quan tâm đến việc nhận tin nhắn nhanh nhất có thể và nếu liên quan đến việc thiếu tin nhắn để có được tin nhắn mới nhất, điều đó không sao cả Tuy nhiên, nếu publisher và subscriber không có bộ tham số QoS tương thích thì message sẽ không được gửi đi Không phải lúc nào người dùng cũng biết rõ khi sử dụng một node(mà
Giao thức MQTT
Message Queuing Telemetry Transport (MQTT) là giao thức truyền thông điệp (message) theo mô hình publish/subscribe (cung cấp / thuê bao), được sử dụng cho các thiết bị IoT với băng thông thấp, độ tin cậy cao và khả năng được sử dụng trong mạng lưới không ổn định Nó dựa trên một Broker (tạm dịch là “Máy chủ môi giới”) “nhẹ” (khá ít xử lý) và được thiết kế có tính mở (tức là không đặc trưng cho ứng dụng cụ thể nào), đơn giản và dễ cài đặt
MQTT là lựa chọn lý tưởng trong các môi trường như:
- Những nơi mà giá mạng viễn thông đắt đỏ hoặc băng thông thấp hay thiếu tin cậy
- Khi chạy trên thiết bị nhúng bị giới hạn về tài nguyên tốc độ và bộ nhớ
- Bởi vì giao thức này sử dụng băng thông thấp trong môi trường có độ trễ cao nên nó là một giao thức lý tưởng cho các ứng dụng M2M (Machine to Machine)
- MQTT cũng là giao thức được sử dụng trong Facebook Messenger Ưu điểm của MQTT
- Truyền thông tin hiệu quả hơn
- Tăng khả năng mở rộng
- Giảm đáng kể tiêu thụ băng thông mạng
- Rất phù hợp cho điều khiển và do thám
- Tối đa hóa băng thông có sẵn
- Rất an toàn, bảo mật
- Được sử dụng trong các ngành công nghiệp dầu khí, các công ty lớn như Amazon, Facebook
- Tiết kiệm thời gian phát triển
- Giao thức publish/subscribe thu thập nhiều dữ liệu hơn và tốn ít băng thông hơn so với giao thức cũ
- Quản lý nhiều thiết bị đòi hỏi tài nguyên máy chủ lớn
- Yêu cầu kết nối liên tục, gây khó khăn trong mạng không ổn định
- Duy trì kết nối liên tục có thể tiêu tốn nhiều tài nguyên mạng và điện năng khi sử dụng số lượng lớn thiết bị
- Không có bảo mật mạnh mẽ theo mặc định, cần thiết lập SSL/TLS cẩn thận
Giao thức truyền thông UART
Universal Asynchronous Receiver-Transmitter (UART) bộ truyền nhận dữ liệu nối tiếp bất đồng bộ, đây là một trong những giao thức truyền thông giữa thiết bị với thiết bị được sử dụng nhiều nhất Giao tiếp UART được sử dụng nhiều trong các ứng dụng để giao tiếp với các module như: Wifi, Bluetooth, Xbee, module đầu đọc thẻ RFID với Raspberry Pi, Arduino hoặc vi điều khiển khác Đây cũng là chuẩn giao tiếp thông dụng và phổ biến trong công nghiệp.
Trong giao tiếp UART, hai thiết bị giao tiếp trực tiếp với nhau thiết bị truyền chuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến thiết bị nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận Để giao tiếp giữa hai thiết bị, cần sử dụng ba đường dây là GND, TX (Transmitter),
RX (Receiver) Hai thiết bị cần nối chung GND để đảm bảo logic của tín hiệu, TX của thiết bị này sẽ nối vào RX của thiết bị kia và ngược lại.
UART truyền dữ liệu không đồng bộ, có nghĩa là không có tín hiệu đồng hồ để đồng bộ hóa đầu ra của các bit từ UART truyền đến việc lấy mẫu các bit bởi UART nhận Thay vì tín hiệu đồng hồ, UART truyền thêm các bit start và stop vào gói dữ liệu được chuyển Các bit này xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu để UART nhận biết khi nào bắt đầu đọc các bit.
Khi UART nhận phát hiện một bit start, nó bắt đầu đọc các bit đến ở một tần số cụ thể được gọi là tốc độ truyền (baud rate) Tốc độ truyền là thước đo tốc độ truyền dữ liệu, được biểu thị bằng bit trên giây (bps – bit per second), có nhiều tốc độ truyền khác nhau từ 9600 bps -> 115200 bps Cả hai UART đều phải hoạt động ở cùng một tốc độ truyền Tốc độ truyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thời gian của các bit bị lệch quá xa.
Cả hai UART cũng 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
UART sẽ truyền dữ liệu nhận được từ một bus dữ liệu (Data Bus) Bus dữ liệu được sử dụng để gửi dữ liệu đến UART bởi một thiết bị khác như CPU, bộ nhớ hoặc vi điều khiển
Dữ liệu được chuyển từ bus dữ liệu đến UART truyền ở dạng song song Sau khi UART truyền nhận dữ liệu song song từ bus dữ liệu, nó sẽ thêm một bit start, một bit chẵn lẻ và một bit stop, tạo ra gói dữ liệu Tiếp theo, gói dữ liệu được xuất ra nối tiếp từng bit tại chân Tx
UART nhận đọc gói dữ liệu từng bit tại chân Rx của nó UART nhận sau đó chuyển đổi dữ liệu trở lại dạng song song và loại bỏ bit start, bit chẵn lẻ và bit stop Cuối cùng, UART nhận chuyển gói dữ liệu song song với bus dữ liệu ở đầu nhận.
UART truyền dữ liệu nối tiếp, theo một trong ba chế độ:
- Full duplex: Giao tiếp đồng thời đến và đi từ mỗi master và slave.
- Half duplex: Dữ liệu đi theo một hướng tại một thời điểm.
- Simplex: Chỉ giao tiếp một chiều.
Dữ liệu truyền qua UART được tổ chức thành các gói Mỗi gói chứa 1 bit bắt đầu, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ tùy chọn và 1 hoặc 2 bit dừng.
Bit khởi đầu: Đường truyền dữ liệu trong giao tiếp UART thường được giữ ở mức điện áp cao khi nó không truyền dữ liệu Để bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ mức cao xuống mức thấp trong một chu kỳ đồng hồ Khi UART 2 phát hiện sự chuyển đổi điện áp cao xuống thấp, nó bắt đầu đọc các bit trong khung dữ liệu ở tần số của tốc độ truyền (Baud rate).
Khung dữ liệu: Khung dữ liệu chứa dữ liệu thực tế đang được truyền Nó có thể dài từ
5 bit đến 8 bit nếu sử dụng bit Parity (bit chẵn lẻ) Nếu không sử dụng bit Parity, khung dữ liệu có thể dài 9 bit Trong hầu hết các trường hợp, dữ liệu được gửi với bit LSB (bit có trọng số thấp nhất) trước tiên.
Bit chẵn lẻ: Bit chẵn lẻ là một cách để UART nhận cho biết liệu có bất kỳ dữ liệu nào đã thay đổi trong quá trình truyền hay không Bit có thể bị thay đổi bởi bức xạ điện từ, tốc độ truyền không khớp hoặc truyền dữ liệu khoảng cách xa Sau khi UART nhận đọc khung dữ liệu, nó sẽ đếm số bit có giá trị là 1 và kiểm tra xem tổng số là số chẵn hay lẻ Nếu bit chẵn lẻ là 0 (tính chẵn), thì tổng các bit 1 trong khung dữ liệu phải là một số chẵn Nếu bit chẵn lẻ là 1 (tính lẻ), các bit 1 trong khung dữ liệu sẽ tổng thành một số lẻ Khi bit chẵn lẻ khớp với dữ liệu, UART sẽ biết rằng quá trình truyền không có lỗi Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ; hoặc bit chẵn lẻ là 1 và tổng số là chẵn, UART sẽ biết rằng các bit trong khung dữ liệu đã thay đổi.
Bit dừng: Để báo hiệu sự kết thúc của gói dữ liệu, UART gửi sẽ điều khiển đường truyền dữ liệu từ điện áp thấp đến điện áp cao trong ít nhất hai khoảng thời gian bit. Ưu điểm của UART
- Chỉ sử dụng hai dây.
- Không cần tín hiệu clock.
- Có một bit chẵn lẻ để cho phép kiểm tra lỗi.
- Cấu trúc của gói dữ liệu có thể được thay đổi miễn là cả hai bên đều được thiết lập cho nó.
- Phương pháp có nhiều tài liệu và được sử dụng rộng rãi.
- Kích thước của khung dữ liệu được giới hạn tối đa là 9 bit.
- Không hỗ trợ nhiều hệ thống slave hoặc nhiều hệ thống master.
- Tốc độ truyền của mỗi UART phải nằm trong khoảng 10% của nhau.
Giao thức UART tham khảo tài liệu từ nguồn [5].
TÍNH TOÁN THIẾT KẾ HỆ THỐNG CƠ KHÍ
Giới thiệu chung
Để thực hiện một dự án về robot, việc tính toán thiết kế hệ thống cơ khí là một điều vô cùng quan trọng Hệ thống cơ khí chính là nền tảng quyết định khả năng vận hành mượt mà và hiệu quả của robot Một thiết kế cơ khí tốt đảm bảo sự phối hợp nhịp nhàng giữa các bộ phận, giúp robot chịu được các tải trọng và áp lực từ môi trường làm việc, và duy trì độ chính xác trong các chuyển động Ngoài ra, việc lựa chọn đúng vật liệu và cơ cấu cơ khí sẽ tối ưu hóa trọng lượng và kích thước của robot, nâng cao tính linh hoạt và khả năng di chuyển Tóm lại, một hệ thống cơ khí được thiết kế chính xác giúp robot thực hiện tốt các yêu cầu đặt ra và đảm bảo tính ổn định của hệ thống.
Yêu cầu kỹ thuật
- Robot phục vụ nhà hàng hoạt động với một số chế độ: Di chuyển chính xác từ vị trí này qua vị trí khác (vị trí nhà bếp sang bàn ăn của khách hàng), phát hiện vật cản và tiến hành di chuyển né vật cản
- Di chuyển trên địa hình bằng phẳng như sàn nhà
- Tạo bản đồ bằng ROS kết hợp với Lidar điều khiển Robot
- Robot hoạt động trong diện tích: 40 – 80 (m 2 )
- Tốc độ tối đa khi ổn định: 0.3 (m/s).
Lựa chọn cơ cấu dẫn động
Ngày nay, mobile robot sử dụng đa dạng các cơ cấu di chuyển để đáp ứng nhu cầu đặc biệt của từng ứng dụng cụ thể Mỗi loại cơ cấu di chuyển mang lại những ưu điểm và nhược điểm riêng, phụ thuộc vào yêu cầu cụ thể của ứng dụng và môi trường làm việc Quá trình lựa chọn cơ cấu di chuyển phù hợp cho robot đòi hỏi sự xem xét kỹ lưỡng về tính linh hoạt, ổn định, và khả năng thích ứng với môi trường khác nhau
4.3.1 Cơ cấu bánh xe Đối với hệ cơ cấu đa hướng Hình 4.1, với cấu trúc đơn giản, di chuyển đa hướng mà không cần phải thay đổi góc quay, ổn định và linh hoạt, thích nghi với không gian hạn chế Tuy nhiên khả năng chịu tải thấp, giá thành cao và khó điều khiển
Hình 4.1: Cơ cấu Robot đa hướng Đối với hệ bánh xe vi sai Hình 4.2, với cấu trúc đơn giản, dễ điều khiển, giá thành thấp, khả năng tải cao Tuy nhiên khả năng di chuyển bị giới hạn, đặc biệt trong các khu vực chật hẹp.
Hình 4.2: Cơ cấu Robot vi sai
Với đề tài này, nhóm đã quyết định chọn mobile robot sử dụng cơ cấu vi sai để đảm bảo sự cân bằng cũng như đảm bảo sự ổn định với tải trọng cần thiết Với 2 bánh chủ động và 2 bánh bị động đa hướng
Chọn bánh xe là một yếu tố vô cùng quan trọng khi thiết kế mobile robot vì nó ảnh hưởng trực tiếp đến khả năng di chuyển, tính ổn định, của robot
4.3.2.1 Lựa chọn bánh xe chủ động (bánh dẫn động)
Bánh chủ động (Hình 4.3) rất quan trọng vì nó quyết định đến hướng di chuyển của robot cũng như vị trí của robot nên cần được lựa chọn kỹ lưỡng Ở đây, nhóm sẽ lựa chọn bánh xe bằng nhôm đảm bảo độ chắc chắn, vỏ ngoài được bọc thêm lớp cao su mềm giúp tăng độ bám với sàn nhà
Hình 4.3: Bánh xe nhôm
- Tải trọng tối đa: 50 kg
4.3.2.2 Lựa chọn bánh xe bị động (bánh bị dẫn)
Trên thị trường có có rất nhiều loại bánh xe khác nhau, thường được sử dụng nhiều nhất là bánh mắt trâu và bánh xe caster Nhóm quyết định lựa chọn bánh xe Caster (Hình 4.4) để phù hợp với độ lớn của bánh dẫn động Bánh xe được làm từ nhựa PU, có độ mềm nhất định, đàn hồi nhỏ nên bánh xe cũng có khả năng giảm xóc nhất định
Hình 4.4: Bánh xe caster
- Đường kính ngoài bánh: 50mm
Lựa chọn cơ cấu khung phần thân
Việc lựa chọn cơ cấu thân cũng vô cùng quan trọng, bởi vì nó đảm bảo sự ổn định cũng như tính chắc chắn cho khay thức ăn bên trên khi di chuyển Đối với cơ cấu thân 1 trục, ưu điểm là thiết kế đơn giản, gọn nhẹ có tính thẩm mỹ cao nhưng tải trọng kém, dễ rung lắc Đối với cơ cấu thân 2 trục, ưu điểm gọn nhẹ, linh hoạt , tải trọng tốt hơn so với cơ cấu thân 1 trục Đối với cơ cấu thân 3 trục trở lên, thiết kế phức tạp, tốn nhiều vật liệu cũng như tính thẩm mỹ kém, tuy nhiên tải trọng sẽ lớn hơn so với các loại còn lại
Trong đồ án này, nhóm lựa chọn cơ cấu thân 2 trục, đảm bảo tính thẩm mỹ cũng như tải trọng mà nhóm đã đề ra.
Lựa chọn động cơ
Trong đồ án này, nhóm lựa chọn động cơ loại DC servo bởi vì nó cung cấp độ chính xác cao trong điều khiển vị trí và tốc độ, khả năng đáp ứng nhanh, hiệu suất ổn định, công suất lớn đảm bảo đáp ứng được yêu cầu đặt ra
28 Động cơ DC servo là một thành phần của hệ thống servo, vận hành dựa trên nguồn điện 1 chiều (DC) Thích hợp cho việc xử lý các ứng dụng quy mô nhỏ, động cơ DC servo được tối ưu hóa để hoạt động với dòng điện thấp hơn so với động cơ AC servo Do đó, nhóm đã quyết định chọn DC servo là động cơ chính
4.5.1 Tính toán lựa chọn động cơ cho bánh chủ động (dẫn động) Để tính toán được các thông số cần thiết của Robot Nhóm đã liệt kê ra bảng các thông số yêu cầu và đặt vấn đề giả tưởng lý thuyết ban đầu của Robot được trình bày như sau:
Bảng 4.1: Bảng thông số đầu vào
Tổng khối lượng chịu tải 20
Lực sinh ra từ động cơ phải thắng được lực ma sát và lực cần thiết để giúp động cơ vận hành:
Tốc độ quay của động cơ là:
= Công suất cần thiết của động cơ là:
Công suất động cơ là:
Từ việc tính toán trên, nhóm đã chọn động cơ Planet với các thông số như sau:
Bảng 4.2: Bảng thông số động cơ Planet
Công suất động cơ 30 Điện áp hoạt động 12-24
Momen xoắn (chưa qua hộp giảm tốc) 0.3628
Tốc độ động cơ (chưa qua hộp giảm tốc) 1200
Tỉ số truyền hộp giảm tốc 1/19.2
Kiểm nghiệm bền
4.6.1 Kiểm nghiệm bền khung Robot chịu lực
Tổng quan về phần khung cơ khí của Robot:
- Khay trên cùng cao nhất (khay 3) có tải trọng tác dụng lên 1 kg tương đương 10 N.
- Hai khay còn lại (khay 1 và khay 2) mỗi khay có tải trọng tác dụng lên 2 kg tương đương 20 N.
- Phần thân trên của Robot có khối lượng là 5 kg tương đương 50 N.
- Phần thân dưới của Robot có khối lượng khoảng 10 kg tương đương 100 N.
Tổng lực tác dụng lên khung Robot: Ftổng = 200 N
Hình 4.5: Mô phỏng kiểm nghiệm bền khung chịu lực
Ta có 3 khay lần lượt là khay 1, 2, 3 (từ dưới đếm lên) Đối với khay 3 ở Hình 4.6, ta sẽ sử dụng để bỏ một số đồ dùng như khăn giấy, Tải trọng tác dụng lên nó xem như 1kg tương đương 10N Đối với 2 khay còn lại ở Hình 4.7 dùng để chứa thức ăn nên tải trọng tác dụng lên mỗi khay xem như 2kg tương đương 20N mỗi khay Nhựa mica được làm từ vật liệu PMMA (poly methacrylate) với độ bền uốn từ 80MPa đến 120MPa nên cả 3 khay đều đảm bảo điều kiện bền
Hình 4.6: Mô phỏng kiểm nghiệm bền của khay thứ 3
Hình 4.7: Mô phỏng kiểm nghiệm bền của khay 1 và khay 2
4.6.3 Kiểm nghiệm bền gá đỡ động cơ và trục động cơ
Ta có 2 bánh dẫn động và 2 bánh bị động, bánh bị động có tải trọng lớn nên đảm lên đến 60kg Giả sử chỉ có 2 bánh dẫn động chịu tải, mỗi bánh chịu tải trọng 12.5kg Khi quay động cơ, giả sự trục quay của động cơ chịu momen xoắn tương đương với momen xoắn tối đa của động cơ (sau khi qua hộp giảm tốc) là 6965.76Nmm
Gá động cơ (Hình 4.8) và trục quay (Hình 4.9) được làm từ thép carbon với ứng suất uốn từ 250 – 400 Mpa nên với ứng suất tối đa là 28.91Mpa của gá động cơ và 108.1 Mpa của trục động cơ thì chúng đảm bảo điều kiện bền
Hình 4.8: Mô phỏng kiểm nghiệm bền gá động cơ
Kiểm nghiệm chuyển vị
Từ Hình 4.5, sau khi mô phỏng bền chịu lực của khung tiến hành kiểm nghiệm chuyển vị của khung Robot (Hình 4.10)
Hình 4.10: Kiểm nghiệm chuyển vị khung Robot
Sau khi kiểm nghiệm chuyển vị khung Robot như ở Hình 4.10 với Ftổng = 200 N, phần trên cao nhất của khung với sự chuyển vị lớn nhất khoảng 0,2156 (mm) không ảnh hưởng đáng kể đến Robot
Phần tiếp theo kiểm nghiệm chuyển vị của gá động cơ, động cơ và bánh xe (Hình 4.11)
Hình 4.11: Kiểm nghiệm chuyển vị của gá động cơ, động cơ và bánh xe
Tiến hành kiểm nghiệm, chuyển vị lớn nhất là 0.02437 mm rất nhỏ nên không ảnh hưởng đến hoạt động của xe khi di chuyển
THIẾT KẾ HỆ THỐNG ĐIỆN – ĐIỀU KHIỂN
Hệ thống điện
5.1.1 Các thiết bị điện – điện tử:
Raspberry Pi 3B+ (Hình 5.1) là một board máy tính nhúng nhỏ gọn, giá rẻ, tiết kiệm điện, hoạt động như một máy tính thường với CPU, cổng USB, chân Input, Output
- Broadcom BCM2837B0, Cortex - A53 (ARMv8) 64 - bit SoC @ 1.4 GHz
- Hỗ trợ WiFi 2.4 GHz, 5 GHz, Bluetooth 4.2, BLE, Gigabit Ethernet
- 1 cổng CSI kết nối camera
- 1 cổng DSI kết nối màn hình cảm ứng
- 1 cổng Micro SD để khởi động hệ điều hành và lưu dữ liệu
- Kích thước: 85 mm x 56 mm x 17 mm
Hình 5.1: Raspberry Pi 3B+ (nguồn: raspberrypi)
Kit STM32F103 (Hình 5.2) là một board mạch sử dụng vi điều khiển STM32F103C8T6, được tích hợp thêm thạch anh 8 MHz, bộ ổn áp nguồn, nút nhấn Reset, cổng Micro USB, chân nạp code, debug và hàng rào các chân Input, Output
- Tần số hoạt động tối đa: 72 MHz
- Bộ nhớ trong 64 KiB Flash, 20 KiB SRAM
- Nguồn cấp 5 V qua chân 5 V hoặc cổng Micro USB, nguồn 3.3 V qua chân 3.3 V
- Hỗ trợ 12 bit ADC, 3 bộ 16bit timer, 1 bộ PWM timer, 2 bộ Watchdog timer, 1 bộ 24 bit Systick Timer
- Hỗ trợ giao tiếp: 3 bộ USART, 2 bộ I2C, 2 bộ SPI, 1 bộ CAN, 1 bộ USB
Hình 5.2: Kit STM32F103 (nguồn: internet) 5.1.1.3 Mạch điều khiển động cơ XY – 160D
Mạch điều khiển động cơ XY-160D (Hình 5.3) là một motor driver có khả năng điều khiển 2 động cơ DC với dòng cấp lên đến 7 A mỗi động cơ, sử dụng 3 chân IN1, IN2, ENABLE để điều khiển (cho 1 động cơ) XY-160D sử dụng MOSFET công suất lớn, với tín hiệu điều khiển được cách ly bằng opto coupler.
- Điện áp hoạt động: 7 - 24 VDC
- Mức điện áp điều khiển: 3.3 V – 5 V
- Số động cơ điều khiển được: 2
- Dòng của tín hiệu điều khiển mỗi chân: 3 – 11 mA
- Dòng hoạt động liên tục của mỗi động cơ: 7 A
- Tần số PWM điều khiển: 0 – 10 KHz
Hình 5.3: Mạch điều khiển động XY – 160D (nguồn: handsontech)
5.1.1.4 Mạch chuyển đổi tín hiệu 4 kênh 3V3 – 5V
Theo lý thuyết driver điều khiển cần có tín hiệu vào 4 chân IN từ 3.3 V đến 5 V, tuy nhiên trên thực tế, khi tín hiệu từ STM sang đã bị giảm áp, do đó có thể tín hiệu nhận được không chuẩn Vì vậy, cần thêm bộ chuyển đổi tín hiệu từ 3.3 V sang 5 V (Hình 5.4) để đảm bảo driver cho thể nhận được tín hiệu từ STM đúng như mong muốn
Hình 5.4: Mạch chuyển đổi tín hiệu 4 kênh 3.3 V – 5 V (nguồn: internet)
5.1.1.5 Cảm biến Lidar RPLIDAR A1M8 360° Laser Range Scanner
RPLIDAR A1M8 (Hình 5.5) là một loại máy quét 2D (LIDAR) giá rẻ có thể quét 360 độ trong khoảng cách 12 m Dữ liệu trả về ở dạng 2D point cloud được dùng trong việc vẽ bản đồ, định vị RPLIDAR A1M8 về cơ bản là một hệ thống đo tam giác laser Nó có thể hoạt động tốt trong cả môi trường trong nhà và ngoài trời mà không bị nhiễu bởi ánh sáng mặt trời
- Độ phân giải khoảng cách: < 0.5 mm đối với khoảng cách < 1.5 m, và < 1% khoảng cách đo được với các trường hợp còn lại
- Độ phân giải góc: 1 độ
- Thời gian lấy mẫu: 0.125 ms
- Tần số lấy mẫu: >= 8000 Hz
- Chế độ giao tiếp: UART
Hình 5.5: Cảm biến Lidar RPLIDAR (nguồn: slamtech) 5.1.1.6 Mini Microphone USB MI-305 Raspberry Pi
Hình 5.6: Mini Microphone USB MI-305 Raspberry Pi (nguồn: internet)
5.1.1.7 Màn hình HMI DWIN 7 inch
- Loại màn hình: IPS, TFT LCD
- Loại cảm ứng: Cảm ứng điện dung
- Chế độ giao tiếp: TTL/RS232
Hình 5.7: Màn hình HMI DWIN 7 inch (nguồn: dwin-global) 5.1.2 Lựa chọn nguồn cho mobile robot
Việc chọn nguồn cho mobile robot đóng vai trò quan trọng và ảnh hưởng rất lớn đến hiệu suất và khả năng hoạt động của nó Nguồn điện là nguồn năng lượng cung cấp cho robot, ảnh hưởng trực tiếp đến thời gian hoạt động, tải trọng,…
Hiệu suất: Việc lựa chọn đúng nguồn năng lượng giúp tối ưu hóa hiệu suất của robot Một nguồn năng lượng hiệu quả không chỉ kéo dài thời gian hoạt động mà còn giảm thiểu các yêu cầu về bảo trì và bảo dưỡng
Thời gian hoạt động: Nguồn năng lượng ổn định và phù hợp là chìa khóa để đảm bảo robot có thể hoạt động liên tục trong thời gian dài Điều này đặc biệt quan trọng trong các ứng dụng yêu cầu robot làm việc liên tục mà không cần sạc hoặc thay pin
Thông số dòng tiêu thụ của các thiết bị được liệt kê trong Bảng 5.1 dưới đây:
Bảng 5.1: Thông số dòng tiêu thụ của các thiết bị điện
Thiết bị Dòng tiêu thụ
Số lượng (cái) Tổng dòng tiêu thụ (A) Điện áp hoạt động (V)
Raspberry Pi 3B+ 1.2 1 1.2 5 Động cơ planet 2.5 2 5 12
Do một số thiết bị được cấp nguồn từ thiết bị điều khiển khác nên ta sẽ tính tổng nguồn như sau: Đối với thiết bị 12V:
- Động cơ hoạt động ở mức điện áp 12 V với tổng dòng tiêu thụ của cả hai động cơ là 5A Do đó, ắc quy 12 V – 7.2 Ah (Hình 5.8), với dòng xả cao cho phép cùng với dung lượng lớn đảm bảo cung cấp đủ công suất cho hệ thống robot hoạt động ổn định
Hình 5.8: Ắc quy 12 V – 7.2 Ah (nguồn: pinaco) Đối với thiết bị 5 V và 3.3 V:
- Raspberry Pi 3B+, Lidar, Microphone, màn hình: nhóm sử dụng sạc dự phòng cấp trực tiếp (Hình 5.9), để đảm bảo nó hoạt động 1 cách độc lập, ổn định Và Raspberry sẽ cấp nguồn cho cảm biến Lidar, Microphone và màn hình qua cổng USB
Hình 5.9: Sạc dự phòng (nguồn: internet)
- Đối với các thiết bị còn lại, bao gồm STM32, led dây, driver động cơ: nhóm sử dụng mạch hạ áp buck để chuyển đổi nguồn ắc quy 12 V sang 5 V Mạch hạ áp có chức năng tạo ra điện áp nhỏ hơn điện áp đầu vào và luôn duy trì mức này cho dù áp đầu vào có thay đổi Ở đây, nhóm sử dụng mạch hạ áp MP1584EN (Hình 5.10)
Hình 5.10: Mạch hạ áp MP1548EN (nguồn: internet)
- Nguồn ắc quy 12V được giảm áp thành 5V cung cấp cho các ngoại vi khác Mạch hạ áp MP1584EN có thông số như sau:
+ Điện áp đầu vào: 4.75 VDC - 28 VDC
+ Điện áp đầu ra: 1.0 VDC - 20 VDC (có thể điều chỉnh, đầu ra < đầu vào) + Dòng điện đầu ra: 3 A
5.1.3 Sơ đồ nguyên lý mạch điều khiển
Hình 5.11, thể hiện tổng quan sơ đồ nguyên lý hệ thống điện Robot bao gồm có hai phần chính là phần nguồn và phần kết nối tín hiệu giữa các thiết bị điện Phần nguồn gồm nguồn 12 V cấp cho động cơ DC và nguồn 5 V cho các thiết bị còn lại Phần tín hiệu có máy tính nhúng và vi điều khiển đóng vai trò điều khiển chính Máy tính nhúng kết nối với Lidar, HMI, Microphone và giao tiếp với vi điều khiển 1 thông qua cổng USB Vi điều khiển 1 nhận
40 tín hiệu từ hai encoder động cơ để tính vị trí của động cơ Vi điều khiển 2 hoạt động độc lập điều khiển đèn led trang trí.
Hệ thống điều khiển
5.2.1 Sơ đồ khối mô hình khối điều khiển
Hình 5.12: Sơ đồ khối mô hình khối điều khiển
- Khối nguồn như đã đề cập ở trên, nó đóng vai trò vô cùng quan trọng trong hệ thống điều khiển Robot, cung cấp điện áp hoạt động cho toàn bộ hệ thống Ở đây, nhóm sử dụng pin sạc dự phòng (khối nguồn 5 V) để cung cấp nguồn cho raspberry, sử dụng ắc quy (khối nguồn 12 V) cung cấp cho các thiết bị còn lại
- Khối ổn áp: Hạ áp từ ắc quy 12 V xuống còn 5 V để cung cấp cho 1 số thiết bị sử dụng điện áp 5 V như STM32F103
- Khối ngoại vi: bao gồm Lidar để xác định vị trí của robot, mini microphone thu âm giọng nói, và led dây dùng để trang trí thêm
- Khối công suất: dùng driver XY – 160D để điều khiển động cơ
- Khối động cơ: sử dụng 2 động cơ DC servo planet với công suất mỗi động cơ lên đến
- Giao diện điều khiển trên máy tính và HMI:
+ Với giao diện trên máy tính: Sử dụng để điều khiển vị trí cho robot cũng như thu thập thông tin dữ liệu gọi món của khách hàng
+ Với giao diện trên HMI: giúp khách hàng có thể lựa chọn món ăn trên HMI, bên cạnh đó còn tích hợp nút ấn hỗ trợ tương tác giọng nói
+ Raspberry: sử dụng Raspberry pi 3B+ để định vị, điều hướng robot, đồng thời điều khiển màn hình
+ STM32: sử dụng để điều khiển vị trí của động cơ thông qua vị trí mà Raspberry gửi xuống, qua đó điều khiển chính xác vị trí của mobile robot
5.2.2 Xây dựng mô hình động học
Robot này được trang bị hai bánh xe chủ động, mỗi bánh được điều khiển bởi một động cơ DC riêng biệt, cùng với hai bánh xe thụ động phục vụ việc hỗ trợ và ổn định Nhờ vào cơ cấu hai bánh xe thụ động này, robot có khả năng di chuyển linh hoạt theo mọi hướng Hình ảnh kèm theo cung cấp cái nhìn từ trên xuống của Robot, đã được đơn giản hóa về mặt hình học nhưng vẫn giữ nguyên được tính chất cho mô hình tổng thể
Hình 5.13: Mặt trên của robot dẫn động vi sai - Trường hợp này, robot đang rẽ trái
Robot này gồm một khung chính và hai bánh xe, với điểm L và R nằm ngay tại trung tâm của mỗi bánh xe Điểm B là điểm nằm ở giữa đường thẳng được nối bởi hai điểm L và
R Vận tốc VL biểu diễn vận tốc của tâm bánh xe trái, VR là vận tốc của tâm bánh xe phải Cả hai vận tốc này đều sinh ra từ việc quay của bánh xe do mô-men xoắn tác dụng bởi động cơ Trong hình minh họa trên, robot đang thực hiện rẽ sang trái do tốc độ tâm bánh xe phải VR lớn hơn tốc độ tâm bánh xe trái VL Điều này dẫn đến việc các điểm L, B, và R đều di chuyển theo đường tròn có cùng tâm, đó là tâm quay tức thời của robot, nơi mà tất cả các vòng quay đồng tâm gặp nhau - ICC (Instantaneous Center of Curvature - Tâm quay tức thời) hoặc ICR (Instantaneous Center of Rotation - Tâm vận tốc tức thời) Ở đây cần lưu ý những điều sau:
- Có thể điều khiển chuyển động của robot bằng cách điều khiển vận tốc góc của bánh xe bên phải và bên trái hoặc góc quay của bánh xe bên phải và bên trái Vận tốc VL và
VR tỷ lệ tuyến tính với vận tốc góc của bánh xe bên phải và bên trái
Các trường hợp chuyển động:
- Chuyển động thẳng: Khi VL = VR, robot di chuyển thẳng và ICR nằm ở vô cực
Hình 5.14: Mặt trên của robot truyền động vi sai Robot đang di chuyển thẳng
- Rẽ phải: Khi VL > VR, robot rẽ phải và ICR là điểm giao nhau của đường thẳng nối từ
L, B, R với đường thẳng được nối từ các điểm cuối của các vector VL, VB và VR
Hình 5.15: Mặt trên của robot dẫn động vi sai Robot đang di chuyển sang phải
- Quay tại chỗ: Khi VL = -VR, robot quay tại chỗ và ICR là điểm B
Hình 5.16: Mặt trên của Robot dẫn động vi sai Trường hợp Robot đang quay quanh điểm B Rút ra được kết luận:
- Thông qua việc điều chỉnh vận tốc tâm của mỗi bánh xe, hoặc nói cách khác, thay đổi vận tốc góc của chúng, chúng ta có thể kiểm soát hướng di chuyển của Robot
Tiến vào phân tích chi tiết động học của Robot dẫn động vi sai Ở đây, sẽ thiết lập các phương trình liên hệ vận tốc góc của hai bánh xe với vận tốc ở tâm robot và vận tốc góc quay của robot Trong bài toán này sẽ thiết lập mối quan hệ giữa vị trí của robot với góc quay của hai bánh xe
Hình 5.17: Sơ đồ động học (vận tốc) của Robot
Hệ tọa độ X -Y là hệ tọa độ cố định (quán tính) Hệ tọa độ XB-YB có tâm tại điểm B là hệ tọa độ được gắn chặt vào thân robot Nó dịch và quay cùng với robot
Trong hình trên C là tâm quay tức thời của robot Từ góc độ phân tích vận tốc, trong một khoảng thời gian ngắn, robot dường như quay quanh tâm quay tức thời Điểm này được xây dựng bằng cách tìm giao điểm của đường nối đỉnh mũi tên vận tốc với đường đi qua tâm của các bánh xe.Ký hiệu ω biểu thị vận tốc góc tức thời
Góc θ là góc quay của thân robot Góc này đồng thời là góc quay của khung vật đối với hệ quy chiếu quán tính X-Y
Giả sử tốc độ không thay đổi trong một khoảng thời gian, các điểm L, B, và R mô tả các đường tròn đồng tâm có tâm tại điểm đó C trong khoảng thời gian đang xét
Hình 5.18: Quỹ đạo được mô tả bởi các điểm L, B và R trong một khoảng thời gian
Hình 5.19: Sơ đồ động học chi tiết đầy đủ các thông số
- X và Y là tọa độ tịnh tiến của khung vật gắn với điểm đối với hệ quy chiếu quán tính
- θ là góc quay của robot đồng thời là góc giữa khung thân và khung quán tính
- XB và YB là các tọa độ trong khung thân, đồng thời biểu thị các trục của khung thân
- C là tâm quay tức thời.S
- ω là vận tốc góc tức thời của thân robot
- L là tâm của bánh xe bên trái
- R là tâm của bánh xe bên phải
- B là điểm giữa giữa các điểm L và R
- VL là vận tốc của tâm bánh xe bên trái
- VR là vận tốc của tâm bánh xe bên phải
- VB là vận tốc của điểm B
- l là khoảng cách giữa điểm và điểm
- r là bán kính của bánh xe
- s là khoảng cách giữa các điểm L và R
- Ẋ là hình chiếu của vận tốc VB lên trục X
- Ẏ là hình chiếu của vận tốc VB lên trục Y
= + Ở đây l và ω cả hai đều không biết được Do đó, ta cần giải hai phương trình này cho l và ω Từ phương trình đầu tiên, ta có thể biến đổi ω thành phương trình như sau:
Sử dụng phương trình (2) này vào phương trình đầu tiên của (1), ta được như sau:
Từ phương trình cuối của phương trình (3), ta biến đổi l thành phương trình sau:
Tiếp đến ta sử dụng phương trình (4) thay vào phương trình (1), ta được phương trình như sau:
Từ phương trình cuối của phương trình (5) ta chuyển vế và thu gọn được phương trình như sau:
Từ việc biến đổi những đại lượng l và 𝜔 không biết trước thành các phương trình từ những đại lượng VL ,VR , s đã biết được, lập thành hệ phương trình sau:
Dựa vào Hình 5.19, ta chiếu đại lượng vận tốc tâm B của thân Robot lên trục X – Y hệ tọa độ cố định, ta có được như sau: cos( ) sin( )
Từ phương trình (8) đưa gọn về dạng ma trận như sau: cos( ) 0 sin( ) 0 (9)
Mặt khác, ta có VB độ lớn vận tốc tâm B của khung:
Thay các biểu thức cho l và 𝜔 của phương trình (7), vào phương trình (10), ta thu được:
Từ phương trình (11) với phương trình 𝜔 từ phương trình (7), ta thu được phương trình sau:
Từ phương trình (12), ta có thể viết gọn về dạng ma trận:
Thay phương trình (13) vào phương trình (9), ta thu được:
Hệ phương trình cuối cùng có thể được mở rộng như sau: cos( ) sin( )
Tọa độ tâm Robot trong hệ trục tọa độ toàn cục tại thời điểm t2 - với t 2 = t 1 + t được tính như sau:
(Xây dựng mô hình động học trên từ nguồn tài liệu tham khảo [6] , [7])
5.2.3 Tìm hàm truyền và tính toán thông số bộ điều khiển PID
Tìm hàm truyền và thông số PID
Hệ thống cơ bản của động cơ DC Servo như Hình 5.20
Hình 5.20: Mạch tương đương của động cơ DC Servo
Phương trình vi phân của hệ thống điện:
- u: Điện áp đầu vào [V]; ω: Vận tốc góc [rad/s]
- R: Điện trở phần cứng [Ω]; L: Độ tự cảm phần cứng [H]
- Ke: Hằng số emf – sức phản điện động [V/rad/s]; Km: Hằng số mô men xoắn [Nm/A]
- JM: Mô men quán tính của trục động cơ [kg.m2]
- TM : Mô men xoắn của động cơ [Nm]
- b: Độ giảm chấn nhớt [Nm.s]
Sơ đồ khối của động cơ DC Servo:
Hình 5.21: Sơ đồ khối của động cơ DC Servo
G s U s Ls R Js b Km Ke L J s s Km Ke
= : Hằng số thời gian điện – Thời gian đáp ứng nhất thời đối với dòng điện chạy đến phần cứng của động cơ với điện áp nguồn đưa vào
= b : Hằng số thời gian cơ học – Thời gian cần thiết để động cơ không tải đạt 63,2% tốc độ không tải sau khi áp dụng điện áp định mức Nó thường được biểu thị bằng mili giây
Tiến hành tìm hàm truyền cho động cơ DC Servo
XÂY DỰNG HỆ THỐNG ĐIỀU HƯỚNG ROBOT TRÊN ROS
Mô tả robot
Khi tạo một hệ thống robot, có thể có nhiều thành phần phần mềm khác nhau cần biết về các đặc tính vật lý của robot Để nhất quán và đơn giản, tốt nhất là giữ tất cả thông tin này ở một vị trí chung, nơi bất kỳ đoạn code nào cũng có thể tham chiếu đến nó ROS gọi đây là robot description (mô tả của robot) và thông tin được lưu trữ trong tệp URDF
URDF mô tả robot như một cây khâu được kết nối bằng các khớp Các khâu đại diện cho các thành phần vật lý của robot và các khớp thể hiện cách một khâu di chuyển so với khâu khác, xác định hiệu quả vị trí của các liên kết trong không gian Để tăng tốc độ tính toán, giảm độ phức tạp nên chúng tôi chỉ dùng các khâu, khớp đơn giản nhất có thể, ở các vị trí quan trọng bao gồm khung xe, hai bánh xe chủ động, hai bánh xe bị động, cảm biến lidar như Hình 6.1
Hình 6.1: Biểu đồ mô tả Robot
Mô tả Robot từ URDF được dùng trong mô phỏng Gazebo với mục đích khảo sát hoạt động, va chạm của Robot trong môi trường giả lập như Hình 6.2 Ngoài ra, trong trình hiển thị Rviz2, URDF cũng được hiển thị để biểu diễn vị trí, tư thế của Robot
Hình 6.2: Robot được mô tả từ URDF
Điều khiển robot
Để điều khiển động cơ hoạt động theo tính toán của ROS, nhóm sử dụng một vi điều khiển để tính toán PID điều khiển động cơ theo setpoint nhận được Trong ROS2, module dùng để giao tiếp giữa phần điều khiển và động cơ này là ROS2 Control
ROS 2 Control là một framework dùng để điều khiển robot trong thời gian thực của ROS 2 ROS 2 Control là một tập hợp các packages bao gồm giao diện điều khiển (controller interface), quản lý điều khiển (controller manager), truyền động (transmissions), giao diện phần cứng (hardware interface) và bộ công cụ điều khiển (control toolbox) Tất cả các packages này cho phép người dùng tương tác và điều khiển các cơ cấu chấp hành của robot
Cụ thể, trong nội dung đồ án theo Hình 6.3, ROS 2 Control có nhiệm vụ gửi lệnh điều khiển (vị trí cần di chuyển) xuống cho vi điều khiển để điều khiển động cơ robot, đồng thời lấy dữ liệu nhận về (vận tốc, vị trí) của động cơ đó theo một tần số nhất định để ROS 2 có thể tính toán được vị trí thực của robot và từ đó gửi lệnh điều khiển tương ứng
Hình 6.3: Cấu trúc của ros2 control framework
Tạo bản đồ
SLAM (Simultaneous localization and mapping) là một bài toán xây dựng hoặc cập nhật bản đồ của một môi trường không xác định, đồng thời theo dõi vị trí của đối tượng bên trong nó Các thuật toán SLAM dựa trên các khái niệm về phép đo đường, thị giác máy và được sử dụng trong điều hướng robot, tạo bản đồ robot, phép đo đường, thực tế ảo, thực tế tăng cường
Slam Toolbox là một bộ các công cụ có khả năng giải quyết bài toán 2D SLAM bao gồm: tạo bản đồ từ dữ liệu từ các cảm biến như encoder và lidar; vẽ lại, cập nhật bản đồ đã được vẽ trước đó; định vị robot trong quá trình di chuyển
Quá trình xây dựng bản đồ của Slam Toolbox như Hình 6.4 bao gồm 4 phần chính:
- ROS node: SLAM toolbox tạo một node và chạy ở chế độ đồng bộ Node này sẽ subscribe (nhận dữ liệu) từ topic laser scan (từ lidar) và odometry, đồng thời publish (gửi) dữ liệu bản đồ để biến đồ phép đo đường (odom) và bản đồ
- Nhận dữ liệu: khi nhận được dữ liệu, một lệnh callback (gọi lại) sẽ đẩy chúng vào một hàng chờ để thuật toán xử lý
- Xử lý dữ liệu: dữ liệu trong hàng chờ ở dạng PosedScan được chuyển thành đồ thị Pose Sau đó, odometry được đối chiếu lại bằng laser scan Đồ thị Pose được dùng để tính robot pose, và tìm dữ liệu đúng Nếu Pose là đúng thì đồ thị Pose được tối ưu, và Pose xấp xỉ được cập nhật Pose xấp xỉ được dùng để tính toàn và gửi bản đồ đến phép biến đổi đo hình học cho robot
- Tạo bản đồ: Laser scan cùng với mỗi Pose trong đồ thị Pose được dùng để tính toán và xây dựng bản đồ
Hình 6.4: Tổng quan về cách xây dựng bản đồ
68 Để vẽ được bản đồ như Hình 6.5, cần phải điều khiển robot chạy xung quanh môi trường cần vẽ Có thể điều khiển robot trực tiếp bằng Teleop hoặc dùng Navigation 2 để vẽ
Hình 6.5: Bản đồ được vẽ
Điều hướng Robot
Nav2 là một phiên bản kế thừa của ROS Navigation Stack (thuộc ROS 1), cho phép triển khai các công nghệ tối ưu, dành riêng riêng cho các ứng dụng về mobile robot Nav2 cho phép mobile robot điều hướng trong các môi trường phức tạp để hoàn thành các nhiệm vụ được giao như di chuyển theo điểm, theo vật thể
Nav2 cung cấp khả năng lập quỹ đạo di chuyển, điều khiển, định vị, và trực quan hóa để xây dựng một hệ thống tự động có hiệu quả cao Nav2 sẽ tính toán một mô hình môi trường từ dữ liệu cảm biến của robot, lập quỹ đạo động, tính vận tốc cho từng động cơ robot, tránh vật cản
Nav2 sử dụng cây hành vi (Behaviour tree) để tạo các hành vi điều hướng thông minh, dễ chỉnh sửa thông qua việc phối hợp nhiều module độc lập Module đó có thể là bất cứ công việc điều hướng nào như tính toán đường đi, điều khiển động cơ, hành vi Những module riêng lẻ này giao tiếp với cây hành vi, thông qua ROS Một robot có thể có nhiều cây hành vi cho phép thực hiện nhiều nhiệm vụ phức tạp
Sơ đồ mô tả cấu trúc của Nav2 Mỗi module trong Nav2 có thể có nhiều plugins cho bộ điều khiển, bộ tạo đường đi, và phục hồi Chúng có thể được dùng để tạo các hành vi điều hướng theo ngữ cảnh Mỗi module trả về trạng thái của nó cho cây hành vi điều hướng (BT Navigator) để thực hiện các hành vi theo ngữ cảnh dựa trên kết quả nhận được
Hình 6.6 Nav2 gồm có 2 phần chính là phần định vị và phần điều hướng Phần định vị xác định vị trí của robot không gian và gửi tới 2 module chính trong phần điều hướng là planner server và controller server để tìm đường đi và điều khiển robot
Hình 6.6: Cấu trúc tổng quan của Nav2
Hình 6.7 mô tả luồng xử lý tổng quan của hệ thống khi nhận được mục tiêu cần di chuyển Khi nhận được điểm đích, bộ điều khiển toàn cục kiểm tra điểm bắt đầu và điểm đến có hợp lệ hay không Sau đó, sử dụng thuật toán tìm đường tìm ra đường đi ngắn nhấn rồi gửi đường đi này cho bộ điều khiển cục bộ để điều khiển robot bám theo đường đi này bằng cách gửi các lệnh điều khiển xuống cho vi điều khiển thông qua ROS2 Control Trong quá trình di chuyển, nếu cảm biến Lidar phát hiện được có vật cản trong tầm di chuyển (2.5m) thì sẽ bộ điều khiển toàn cục sẽ tìm đường đi mới đồng thời bộ điều khiển cục bộ sẽ liên tục kiểm tra robot đã tới đích
Hình 6.7: Lưu đồ tổng quan khối tìm đường và điều khiển
6.4.1.1 Định vị robot trong môi trường hoạt động Định vị robot là một phần quan trọng của công nghệ robot, cho phép robot xác định vị trí và hướng của nó trong môi trường Định vị robot là quá trình xác định tư thế của robot trong môi trường đã biết hoặc chưa biết Tư thế của robot bao gồm vị trí (x, y, z) và hướng (roll, pitch, yaw) so với hệ tọa độ tham chiếu Có một số phương pháp để định vị robot, bao gồm odometry, GPS và các phương pháp dựa trên mốc Odometry dựa vào việc đo chuyển động quay và dịch chuyển của bánh xe robot hoặc các cơ chế chuyển động khác, trong khi GPS sử dụng tín hiệu vệ tinh để xác định vị trí toàn cầu của robot
Các phương pháp dựa trên mốc dựa vào việc xác định và theo dõi các đặc điểm riêng biệt trong môi trường, chẳng hạn như các bức tường hoặc các góc
Trong Nav2 của ROS2, phương pháp được sử dụng để định vị là Adaptive Monte Carlo Localization (AMCL), đây là một thuật toán xác suất sử dụng bộ lọc hạt để ước tính vị trí và hướng của robot trong thời gian thực AMCL hoạt động bằng cách biểu diễn tư thế của robot dưới dạng phân bố các hạt, trong đó mỗi hạt thể hiện một tư thế có thể có của robot Trong Nav2, thuật toán AMCL hoạt động dựa trên dữ liệu từ odometry (encoder của bánh xe robot) và cảm biến Lidar 2D Ở từng thời điểm, robot thực hiện các phép đo cảm biến và so sánh chúng với bản đồ môi trường để xác định khả năng mỗi hạt là tư thế thực sự của robot Các hạt có khả năng xảy ra thấp sẽ bị loại bỏ, trong khi các hạt có khả năng xảy ra cao được lấy mẫu lại để tạo ra một tập hợp hạt mới cho thời điểm tiếp theo
Quá trình lấy mẫu lại đảm bảo rằng các hạt vẫn được phân bổ xung quanh tư thế thực sự của robot, ngay cả khi chuyển động của robot không chắc chắn hoặc môi trường có thể quan sát được một phần
Một trong những ưu điểm chính của AMCL là khả năng xử lý các mô hình cảm biến phi tuyến tính và phi Gaussian, khiến nó phù hợp với nhiều ứng dụng robot Thuật toán này cũng có hiệu quả về mặt tính toán, cho phép nó chạy trong thời gian thực trên phần cứng tiêu thụ điện năng thấp Tuy nhiên, AMCL có một số hạn chế Một trong những thách thức chính là điều chỉnh các tham số thuật toán, chẳng hạn như số lượng hạt và mô hình cảm biến, để đảm bảo định vị chính xác Ngoài ra, AMCL yêu cầu bản đồ môi trường, bản đồ này có thể không phải lúc nào cũng có sẵn hoặc chính xác Bản đồ cung cấp cho AMCL được tạo từ Slam Toolbox
6.4.1.2 Tìm đường di chuyển của robot
Hệ thống điều hướng Nav2 của ROS2 sử dụng Navfn (Navigation function) là module lập kế hoạch đường đi toàn cục (global planner) để lập kế hoạch đường di chuyển của robot đến điểm mong muốn Navfn hỗ trợ 2 thuật toán tìm đường phổ biến hiện nay là Dijkstra và A*.
Dijkstra là một thuật toán tìm đường ngắn nhất từ một điểm nguồn đến tất cả các đỉnh khác trong đồ thị không có cạnh âm Thuật toán này đảm bảo tìm đường ngắn nhất trong mọi trường hợp.
Thuật toán Dijkstra đặc biệt hiệu quả khi cần tìm đường đi ngắn nhất đến tất cả các đích Tuy nhiên thuật toán này lại không tối ưu cho bài toán cần tìm đường đi đến một đích cụ thể do không gian tìm kiếm quá rộng
Theo như Hình 6.8, thuật toán Dijkstra tìm được đường đi từ điểm đầu đến điểm đích, tuy nhiên không gian tìm kiếm là quá lớn, đồng nghĩa với việc mất nhiều thời gian để tính toán, xử lý
Hình 6.8: Thuật toán Dijkstra trên Navfn Thuật toán A*
Mô phỏng
Gazebo là một trình mô phỏng động 3D với khả năng mô phỏng chính xác, hiệu quả robot trong môi trường phức tạp cả trong nhà và ngoài trời, thường được sử dụng trong trong ROS để kiểm thử và phát triển các hệ thống Robot Gazebo cho phép mô phỏng vật lý với độ chính xác, trung thực cao, có thể tích hợp nhiều cảm biến và giao diện cho cả người dùng và chương trình Cùng với nhiều tính năng như hỗ trợ nhiều loại cảm biến (IMU, Lidar, Camera, GPS), tích hợp với ROS, môi trường mô phỏng phong phú, Gazebo cho phép các nhà phát triển thử nghiệm các thuật toán và hệ thống robot trong môi trường ảo trước khi triển khai trong thực tế
Trong môi trường Gazebo, nhóm tạo một thế giới như Hình 6.10, để chứa các vật thể như ở thế giới thực nhằm mô phỏng hoạt động của robot trước khi chạy thực tế Các cảm biến, cơ cấu trong Gazebo bao gồm hai bánh xe, cảm biến Lidar, đều được thiết lập với các thông số giống với mô hình thực để đảm bảo độ đồng nhất giữa mô phỏng và thực tế
Hình 6.10: Môi trường mô phỏng Gazebo
Trước khi thử nghiệm trên Robot thực, nhóm tiến hành mô phỏng hoạt động vẽ bản đồ và điều hướng trên Gazebo với các thông số giống với Robot thực Hoạt động vẽ bản đồ và điều hướng được thể hiện ở Hình 6.11 và Hình 6.12 Bản đồ thu được sau khi vẽ bản đồ được thể hiện ở Hình 6.13
Hình 6.11: Mô phỏng quét bản đồ
Hình 6.12: Mô phỏng điều hướng
Hình 6.13: Bản đồ sau khi vẽ