1. Trang chủ
  2. » Giáo Dục - Đào Tạo

thiết kế và điều khiển robot di động chuyển hàng lên kệ

146 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế và điều khiển robot di động chuyển hàng lên kệ
Tác giả Nguyễn Huy Toàn, Đặng Đình Khôi
Người hướng dẫn PGS.TS Vũ Văn Phong
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công nghệ kỹ thuật điều khiển và tự động hóa
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 146
Dung lượng 11,6 MB

Cấu trúc

  • Chương 1: TỔNG QUAN (19)
    • 1.1 Đặt vấn đề (19)
    • 1.2 Mục tiêu nghiên cứu (21)
    • 1.3 Nội dung nghiên cứu (21)
    • 1.4 Giới hạn đề tài (22)
  • Chương 2: CƠ SỞ LÝ THUYẾT (23)
    • 2.1 Mô hình toán học hệ hai bánh vi sai (23)
      • 2.1.1 Động học thuận hệ robot di động hai bánh vi sai (24)
      • 2.1.2 Động học nghịch hệ robot di động hai bánh vi sai (25)
    • 2.2 Giới thiệu về hệ điều hành dành cho robot (26)
      • 2.2.1 Tổng quan về hệ điều hành ROS (26)
    • 2.4 Các gói hỗ trợ trên ROS (35)
    • 2.5 Giới thiệu về SLAM (37)
      • 2.5.1 Cosmap 2D (37)
      • 2.5.2 Cấu hình cosmap (37)
    • 2.6 Giới thiệu về lidar (38)
    • 2.7 Lập kế hoạch đường đi (40)
      • 2.7.1 Global planner (40)
      • 2.7.2 Tìm hiểu về thuật toán Dijkstra (40)
      • 2.7.3 Local planner (44)
      • 2.7.4 Tìm hiểu về thuật toán DWA (45)
    • 2.8 Các hình thức giao tiếp (51)
      • 2.8.1 Giao tiếp Ros Master (51)
      • 2.8.2 Giao tiếp UART (51)
      • 2.8.3 Giao tiếp I2C (52)
      • 2.8.4 Giao thức RDP (53)
      • 2.8.5 Giao thức websocket (54)
    • 2.9 Tìm hiều về Rosserial (55)
    • 2.10 Thuật toán PID (57)
    • 2.11 Phần mềm hỗ trợ mô phỏng trong ROS (58)
  • Chương 3: THIẾT KẾ HỆ THỐNG (61)
    • 3.1 Mô hình thiết kế trên Solidwork (61)
      • 3.1.1 Vi điều khiển (61)
      • 3.1.2 Máy tính nhúng (62)
      • 3.1.3 Động cơ JGB37-545 (63)
      • 3.1.4 Webcam rapoo WX180 1080P (65)
      • 3.1.5 Bánh xe (65)
      • 3.1.6 Cảm biến gia tốc IMU 6050 (66)
      • 3.1.7 Mạch điều khiển L298N (67)
      • 3.1.8 Động cơ bước-Step motor (68)
      • 3.1.9 Drive TB6600 (69)
      • 3.1.10 Cảm biến encoder (70)
      • 3.1.11 Các linh kiện khác (71)
    • 3.2 Sơ đồ kết nối hệ thống (73)
    • 3.3 Mô hình robot thực tế (74)
    • 3.4 Mô hình kệ hàng (75)
  • Chương 4: THỰC NGHIỆM VÀ THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN (76)
    • 4.1 Lưu đồ giải thuật điều khiển (76)
    • 4.2 Xuất mô hình từ solidwork sang urdf (77)
    • 4.3 Kết nối Raspberry pi với laptop bằng Remote Desktop (77)
    • 4.4 Xây dựng bản đồ (79)
    • 4.5 Điều hướng cho robot (84)
    • 4.6 Thiết kế giao diện điều khiển robot bằng Internet (89)
    • 4.7 Ứng dụng xử lý ảnh (94)
      • 4.7.1 Hiệu chỉnh camera (Camera calibration) (94)
      • 4.7.2 Nhận diện mã đánh dấu (95)
  • Chương 5:KẾT QUẢ VÀ ĐÁNH GIÁ (110)
    • 5.1 Mô phỏng động học cho hệ robot hai bánh vi sai (110)
    • 5.2 Khảo sát độ ổn định PID (112)
    • 5.3 Kết quả chạy mô hình thực nghiệm từng bước (113)
      • 5.3.1 Điều hướng đến các vị trí trên bản đồ (0)
      • 5.3.2 Chạy điều hướng khi có vật cản cố định (123)
      • 5.3.3 Chạy điều hướng khi có vật cản bất ngờ (127)
      • 5.3.4 Kết quả xử lý ảnh (129)
    • 5.4 Kết quả chạy mô hình hoàn chỉnh (137)
  • Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI (142)
    • 6.1 Kết luận (142)
    • 6.2 Hướng phát triển đề tài (142)
  • TÀI LIỆU THAM KHẢO (144)

Nội dung

Lập trình mô phỏng và thực nghiệm mô hình trên nền tảng Ubuntu.Robot dùng cảm biến lidar để tạo bản đồ sau đó robot có khả năng đến vị trí mong muốn để thực hiện nhiệm vụ, kết hợp với th

TỔNG QUAN

Đặt vấn đề

Với sự phát triển của công nghệ, robot đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của chúng ta Trong đó, robot tự hành đóng vai trò quan trọng trong nhiều lĩnh vực sản xuất và cuộc sống con người

Theo sự tiến bộ của tự động hóa, robot tự hành được áp dụng rộng rãi trong các ngành công nghiệp, thương mại, y tế, giáo dục… mang lại nhiều giá trị quan trọng cho xã hội Việc thay thế lao động của con người trong môi trường khắc nghiệt giúp tăng hiệu suất lao động và đóng góp vào sự công nghiệp hóa và hiện đại hóa đất nước

Với những lợi ích lớn đó, việc sử dụng robot ngày càng phổ biến với nhiều kích thước, hình dạng và cách hoạt động khác nhau Robot tự hành có thể điều hướng bằng nhiều cách như nhận diện mã vạch, theo dõi đường line hoặc sử dụng cảm biến quét laser.Tình hình nghiên cứu ngoài nước

➢ Tình hình nghiên cứu trong nước

Robot tự hành đang được đầu tư phát triển và vận hành trong nhiều nhà máy Các nước tiên phong như Mỹ, Nhật Bản, Trung Quốc và châu Âu đang dẫn đầu trong lĩnh vực này

Hình 1-1 Syrius Robot vận chuyển hàng hóa tại công ty Nhật Bản ĐỒ ÁN TỐT NGHIỆP 2

Hình 1-2 Robot chuyển hàng của Amazon tại Mỹ

Hình 1-3 Robot lấy đơn hàng của công ty BRIGHTPICK

Tổng quan, tình hình nghiên cứu robot tự hành ngoài nước đang phát triển mạnh mẽ và tạo ra nhiều tiến bộ đáng chú ý Các nước tiên phong đang đầu tư về cả khả năng kỹ thuật và ứng dụng thực tế của robot tự hành, đẩy mạnh sự phát triển và mang lại những tiềm năng lớn cho lĩnh vực này trong tương lai

➢ Tình hình nghiên cứu trong nước ĐỒ ÁN TỐT NGHIỆP 3 Ở Việt Nam robot tự hành đang được quan tâm ở các trường đại học và nhiều doanh nghiệp Các nhóm nghiên cứu và dự án đang tập trung vào các lĩnh vực như tự động hóa công nghiệp, dịch vụ công cộng, y tế và nông nghiệp thông minh Các nghiên cứu liên quan đến cảm biến, hệ thống điều khiển, trí tuệ nhân tạo và học máy đang được thực hiện để cải thiện khả năng nhận diện môi trường, định vị và điều hướng của robot tự hành

Hình 1-4 Tiki ứng dụng robot chuyển hàng trong ngành logistic

Chính vì những ứng dụng rộng rãi của robot tự hành, nhóm sinh viên đã cùng nhau thực hiện đề tài “Thiết kế và điều khiển mô hình robot di động chuyển hàng lên kệ” cho đồ án tốt nghiệp.

Mục tiêu nghiên cứu

- Mục đích thực hiện đề tài là thiết kế robot tự hành có khả năng di chuyển đến mục đích, né vật cản kết hợp cơ cấu nâng hàng và đẩy vào kệ dùng camera quét mã aruco để tính toán vị trí robot và kệ hàng

- Đề tài ứng dụng những kiến thức đã học liên quan đến robot, xử lý ảnh và các kiến thức chuyên ngành khác để ứng dụng và thiết kế vào hệ thống robot chuyển hàng lên kệ

- Mô hình có thể điều khiển và giám sát từ xa bằng internet

- Dùng xử lý ảnh tính toán được khoảng cách và góc của robot đến kệ hàng.

Nội dung nghiên cứu

- Thi công và thiết kế mô hình, lựa chọn các thiết bị phù hợp để đáp ứng cho mô hình hệ thống ĐỒ ÁN TỐT NGHIỆP 4

- Nghiên cứu về nền tảng ROS, ứng dụng để mô phỏng Rviz, Gazebo và các thuật toán của robot di động

- Nghiên cứu về mô hình động học và PID cho động cơ

- Dùng phần mềm Solidword để thiết khiết kế mô hình robot

- Thiết kế giao diện điều khiển cho robot

- Sử dụng máy tính nhúng Raspberry pi 4 để điều khiển từ xa cho robot

- Xây dựng bản đồ cho mobile robot

- Điều hướng robot đến mục tiêu có khả năng tìm đường đi và né vật cản.

Giới hạn đề tài

- Với hạn chế về mặt chi phí nên nhóm chỉ thiết kế mô hình nhỏ, phù hợp với các loại hàng nhẹ

- Do mô hình robot không có cảm biến tiệm cận phía sau nên khi robot đi lùi sẽ không phát hiện được vật cản, vì vậy khi chạy mô hình không có vật cản phía sau robot

- Do thiết kế mô hình robot phù hợp với chức năng đề tài nên cảm biến lidar chỉ quét được 220 độ ( từ 110 độ đến -110 độ) ĐỒ ÁN TỐT NGHIỆP 5

CƠ SỞ LÝ THUYẾT

Mô hình toán học hệ hai bánh vi sai

Hình 2-1 Mô tả robot di động Differential Drive hệ non-holonomic

Bằng cách thay đổi vận tốc của hai bánh xe, chúng ta có thể thay đổi quỹ đạo mà robot di chuyển Khi quay quanh điểm ICC ta phải cấp vận tốc tương đương nhau cho cả hai động cơ Tốc độ của bánh xe làv=2r T/ , với T là thời gian để xe hoàn thành xoay quanh một vòng đối với điểm ICC,  là là vận tốc góc của robot được định nghĩa là 2 / Trad s Kết hợp các phương trình cho v và  , ta có được phương trình sau: v= r (2.1)

Với các đại lượng có trong hình 2.1 ta có các phương trình sau:

Với l là khoảng cách giữa hai trục bánh xe, Vr, Vl là vận tốc bánh phải và bánh trái được tính dựa trên xung đọc được từ encoder R là khoảng cách từ điểm ICC đến điểm chính giữa của trục hai bánh xe Trong bất cứ thời điểm nào khi điều hướng, ta có thể tính được giá trị của R và  như sau:

2.1.1 Động học thuận hệ robot di động hai bánh vi sai

Trong Hình 2-1, giả sử rằng robot đang ở vị trí (x ,y ), hướng của robot là góc  tạo với trục X của hệ toạ độ, với trục X nằm dọc theo chiều dài robot Khi có Vl và Vr được tính từ số xung encoder, kết hợp với công thức (2.4) ta có thể xác định được vị trí ICC như sau:

Tại thời điểm t +  t vị trí và hướng của robot là: cos( ) sin( ) 0 sin( ) cos( ) 0

Phương trình (2.6) 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 góc  Để biễu diễn đơn giản động học thuận của hệ Differential Drive Robots, bài báo số [1] đã đưa ra phương trình sau: cos cos 0 sin sin 0

Với q =  x y   T , (x, y ) là vị trí của robot,  vẫn là góc quay quanh trục Z của robot, tương ứng với góc lệch so với trục X của robot Giá trị v là vận tốc trung bình của robot được tính dựa trên công thức sau:

Giá trị của vận tốc góc  được tính dựa trên công thức: r l

Tại thời điểm t +  t vị trí và hướng của robot là: ĐỒ ÁN TỐT NGHIỆP 7

2.1.2 Động học nghịch hệ robot di động hai bánh vi sai

Ta có thể mô tả vị trí của robot theo một hướng cụ thể ( ) t với vận tốc v(t) là:

Kết hợp với công thức (2.8), (2.9) ta viết lại như sau:

Bài toán động học nghịch là khi muốn robot tiến đến vị trí mục tiêu ( x,y, ) và chúng ta cần cung cấp vận tốc cho từng bánh như thế nào để đạt được vị trí ấy Tuy nhiên đối với robot Differential Drive Robots được gọi là hệ non-holonomic thì robot chỉ di chuyển theo phương X của robot mà không thể di chuyển theo phương Y Và để robot dịch sang bên phải một đoạn thì sẽ không dễ dàng để di chuyển, điều đó tương tự như việc đỗ xe đòi hỏi một loạt các thao tác lái phức tạp Vì vậy không hề đơn giản chỉ định một vị trí ( x,y, ) cụ thể và tìm ra vận tốc đưa robot đến đó Đối với các trường hợp đặc biệt V r = = V l v (robot đi thẳng và hướng robot là 0 0 ) thì phương trình (2.6) được viết lại như sau: cos( ) sin( ) x x v t y y v t

(2.17) ĐỒ ÁN TỐT NGHIỆP 8 Nếu V r = − =V l v thì robot sẽ quay tại chỗ với tâm là điểm chính giữa trục nối hai bánh xe, phương trình (2.6) được viết lại như sau:

Tóm lại, đối với hệ này, ta có các trường hợp đặc biệt đối với vận tốc từng bánh:

1 Nếu V l = V r ( V l , V r > 0) thì robot sẽ chuyển động tuyến tính theo đường thẳng về phía trước và ngược lại V l = V r ( V l , V r < 0) thì robot sẽ chuyển động về phía sau

2 Nếu V l = − V r thì robot sẽ xoay quanh điểm chính giữa trục của hai bánh xe, lúc này robot coi như xoay quanh tại chỗ

3 Nếu V l  V r thì robot sẽ di chuyển phía trước về hướng bên trái.Ngược lại, V l  V r robot sẽ di chuyển phía trước về hướng bên phải

4 Nếu V l = 0và V r  0 thì robot sẽ quanh quanh tâm tại bánh trái với bán kính là l / 2 , tương tự với trường hợp ngược lại.

Giới thiệu về hệ điều hành dành cho robot

2.2.1 Tổng quan về hệ điều hành ROS

ROS (Hệ điều hành rô-bốt) là phần mềm mã nguồn mở, do Open Robotics phát triển và bảo trì, giúp tạo và triển khai các ứng dụng rô-bốt Bộ thư viện và công cụ của ROS cho phép các nhà phát triển dễ dàng tạo ra các ứng dụng rô-bốt phức tạp, nâng cao hiệu quả phát triển.

➢ Các phiên bản của ros:

• ROS1: Phiên bản gốc của ROS, được sử dụng rộng rãi trong nhiều ứng dụng robot

• ROS2: Phiên bản mới hơn của ROS, được thiết kế với mục tiêu cải thiện hiệu suất, tính bảo mật, và khả năng mở rộng, đồng thời hỗ trợ thời gian thực tốt hơn

➢ Ứng dụng ros trong thực tiễn

• Robot di động: ROS được sử dụng rộng rãi trong các dự án robot di động như robot tự hành, robot dịch vụ, và robot tìm kiếm cứu nạn ĐỒ ÁN TỐT NGHIỆP 9

• Cánh tay robot: Điều khiển và lập trình cánh tay robot trong các ứng dụng công nghiệp và nghiên cứu

• Drone: ROS cũng được sử dụng trong điều khiển và phát triển các ứng dụng drone

• Ứng dụng công nghiệp: ROS được áp dụng trong nhiều quy trình tự động hóa công nghiệp, từ sản xuất đến kiểm tra chất lượng

➢ Ưu điểm để chọn ros làm nền tảng lập trình [3]

High-end capabilities: ROS đi kèm với các gói như Simultaneous Localization and

Mapping (SLAM) và Adaptive Monte Carlo Localization (AMCL), khả năng này của ROS giúp phát triển các ứng dụng robot hiện đại như xe tự hành, tự động hóa công nghiệp, và các lĩnh vực khác

Tone of tools: Hệ sinh thái ROS có rất nhiều công cụ để gỡ lỗi, giám sát và mô phỏng

Các công cụ chẳng hạn như rqt_gui, Rviz và Gazebo sẽ được nhóm sử dụng trong quá trình thực đề tài

Support for high-end sensors and actuators: ROS có đa dạng các gói hỗ trợ nhiều loại cảm biến như 2D LIDAR, laser scanners, depth sensor,… cho phép các nhà phát triển robot tận dụng tối đa các cảm biến và cơ cấu chấp hành cao cấp, từ đó tạo ra các hệ thống robot thông minh và hiệu quả hơn

Các nút (node) trong ROS đóng vai trò trung gian giao tiếp giữa các gói phần mềm và chương trình với nhau Những nút này có thể được lập trình bằng nhiều ngôn ngữ như C++, Python, Java, góp phần đảm bảo khả năng tương tác đa nền tảng trong ROS.

Modulary: Một trong những vấn đề có thể xảy ra trong hầu hết các robot độc lập là nếu bất kỳ luồng nào của code chính gặp sự cố thì toàn bộ robot có thể dừng lại Trong ROS thì khác, mỗi quy trình sẽ được đại diện dưới mỗi nodes và các nodes này liên kết với nhau thông qua các topic và nếu một trong số node này bị dừng thì hệ thống vẫn có thể hoạt động và trong lúc đó vẫn có thể tiến hành khắc phục sự cố node đó

ROS chủ yếu được chia thành 3 cấp độ

ROS Filesystem Level.[4] ĐỒ ÁN TỐT NGHIỆP 10

Filesystem chủ yếu là các nguồn tài nguyên của ROS được thực thi trên bộ nhớ lưu trữ hệ thống,bao gồm:

Packages: Một package là một thư mục chứa các chương trình (executable files) và tệp hỗ trợ phục vụ cho một mục đích cụ thể ví dụ như các nodes, các thư viện, các file hoặc bất cứ file nào cho việc tổ chức Các ROS package được đặt trong một thư mục khác gọi là catkin workspace vì chúng được build bằng các công cụ catkin ĐỒ ÁN TỐT NGHIỆP 11

Metapackages: là một pakage chuyên biệt, dùng để phục vụ cho việc thể hiện mối quan hệ một nhóm các pakage khác với nhau Chúng không chứa các thư mục và tập tin như một gói thông thường

Stack: Một stack bao gồm nhiều package để thực hiện một chức năng nào đó Ví dụ như “navigation stack” có chức năng dẫn đường Một stack sẽ bao gồm nhiều thư mục packages con và một file cấu hình manifest.xml

Message types: là mô tả của một thông điệp được gửi qua lại giữa các quá trình được lưu trữ dưới dạng my_pakage/msg/MyMessageType.msg Message định nghĩa cấu trúc dữ liệu cho các thông điệp được gửi đi ĐỒ ÁN TỐT NGHIỆP 12

Những quá trình tính toán, xử lý dữ liệu trong ROS được thực hiện thông qua mạng ROS nodes Mạng này được gọi là “Computation Graph” Computation Graph cơ bản gồm các thành phần: Nodes, Master, Parameter Server, Messages, Services, Topics, và Bags, tất cả các thành phần này đều cung cấp dữ liệu cho Graph bằng những phương thức khác nhau

Nodes Parameter Messages server Master

Hình 2-5 ROS Compiutation graph level

Nodes: ĐỒ ÁN TỐT NGHIỆP 13

Subcribe to topic name Request for topic message

Hình 2-6 Truyền nhận các node trong ROS

Trong một dự án ROS, nhiều nút chạy song song Khi khởi động, mỗi nút phải đăng ký với Master Ví dụ: một nút thu thập dữ liệu cảm biến, sau đó gửi dữ liệu đến nút khác để tính toán và gửi lệnh điều khiển đến nút giao tiếp với thiết bị khác.

Master: Master hoạt động như một dịch vụ đăng kí và khai báo các nodes Nó theo dõi việc publish và subscribe của các node cũng như các topic và service ROS Master được gọi bằng lệnh roscore Chỉ có một ROS Master được phép chạy tại một thời điểm Nếu bạn thử gọi 2 hoặc nhiều cái cùng một lúc, sẽ có báo lỗi

Máy chủ tham số lưu trữ và chia sẻ thông tin cấu hình giữa các nút của hệ thống ROS Nó đóng vai trò là một nơi lưu trữ trung tâm giữ dữ liệu cấu hình cho các nút, cho phép các nút khác nhau dễ dàng truy cập và chia sẻ thông tin cấu hình của nhau.

Messages: Message là một cấu trúc dữ liệu mà các nodes sẽ trao đổi với nhau

Các gói hỗ trợ trên ROS

Hình 2-9 Các gói trong ROS

(1) Key Teleop: Node nhận thông tin điều khiển từ người dùng để chuyển thành vận tốc góc và vận tốc tuyến tính của robot Đầu vào là thông tin điều khiển của người dùng từ bàn phím, ngõ ra là các giá trị vận tốc tuyến tính v (m/s) và vận tốc góc w (m/s) như bảng:

Lệnh di chuyển Vận tốc tuyến tính Vận tốc góc

Bảng 1 Lệnh điều khiển Key Teleop

Node Twist to motor thực hiện chuyển đổi từ vận tốc tuyến tính và vận tốc góc sang giá trị vận tốc cho từng động cơ Mối quan hệ giữa các thông số này được biểu diễn bởi công thức (2.10): v = (vl + vr) / 2 và ω = (vl - vr) / d Trong đó, v là vận tốc tuyến tính, ω là vận tốc góc, vl là vận tốc động cơ bên trái, vr là vận tốc động cơ bên phải, d là khoảng cách giữa hai bánh xe.

(3)Serial Node: Serial Node thực hiện giao tiếp giữa Arduino và ROS thông qua giao tiếp Serial Hai chức năng chính của Serial Node là: ĐỒ ÁN TỐT NGHIỆP 18

- Đọc giá trị encoder trái và phải Những giá trị này được gửi dưới dạng Serial Node sẽ thực hiện xử lí chuỗi để tách giá trị tương ứng Những giá trị này được xuất sang Node Odometry để ước lượng vị trí robot

- Nhận giá trị vận tốc điều khiển hai động cơ và gửi xuống Arduino Hai giá trị vận tốc này được gửi từ Node Twist To Motor

(4)Imu: Node Imu thực hiện nhận giá trị từ module IMU Những giá trị này sẽ được tách và xử lí thành những giá trị Roll Pitch Yaw tương ứng Sau đó sẽ được truyền sang Node Odometry để ước lượng hướng quay của robot

(5)Odometry: Node này sẽ subscribe đến topic chứa vận tốc đọc đượcc tính toán từ xung encoder bánh xe mà Arduino gửi lên qua node Ros serial Sau đó sẽ tính toán vị trí và hướng Sau đó sẽ publish lên topic odom và phát sóng một khung toạ độ transfrom từ vị trí ban đầu so với toạ độ xe để biết vị trí xe đã đi so với điểm ban đầu

Node SLAM thực hiện vẽ bản đồ môi trường dựa trên dữ liệu cảm biến Lidar và ước lượng vị trí của robot Bản đồ này giúp robot định vị và tránh vật cản Node AMCL xác định vị trí của robot trong bản đồ đã vẽ, hoạt động khi robot tự di chuyển Node SLAM và AMCL không chạy đồng thời.

(7)Rplidar: Node Rplidar thực hiện đọc dữ liệu từ cảm biến laser Lidar trả về khoảng cách từ robot đến vật cản trong tầm đo lên đến 12m và góc quét 360° Dữ liệu này được dùng để vẽ bản đồ, định vị vị trí của robot và tránh vật cản

(8) Robot State Publisher: Node này sẽ đọc các dữ liệu được transfrom và nhóm sẽ viết trong ROS để hiển thị các frame lên khung toạ độ trong Rviz, sẽ được liên kết với các link và joint trong file solidworks nhóm đã thiết kế giúp hiển thị một cách trực quan dữ liệu quan sát Realtime từ vị trí robot trong thực tế

(9) Map Server: Node này sẽ thực hiện lưu bản đồ khi robot quét map với SLAM

Sau đó khi triển khai navigation trong bản đồ được tạo thì node này sẽ tải bản đồ lên để thực hiện quá trình điều hướng cho robot

(10) Move Base: Node này sẽ sử dụng vị trí robot từ AMCL và bản đồ từ Map Server để điều khiển robot đến vị trí bằng cách gửi giá trị vận tốc tương đương động học nghịch để truyền giá trị vận tốc tuyến tính và vận tốc góc xuống node Control Motor bằng thuật toán tìm đường Dijkstra và thuật toán né vật cản động DWA ĐỒ ÁN TỐT NGHIỆP 19

Giới thiệu về SLAM

Costmap 2D trong ROS là một thành phần quan trọng của hệ thống điều hướng (Navigation Stack) được sử dụng để đại diện và quản lý thông tin về môi trường xung quanh robot Costmap 2D tạo ra một bản đồ lưới (grid map) 2D, trong đó mỗi ô lưới có một giá trị chi phí phản ánh mức độ khả thi hoặc nguy hiểm khi robot di chuyển qua đó Những giá trị này được sử dụng để lập kế hoạch đường đi và tránh chướng ngại vật trong quá trình di chuyển của robot

Các Thành Phần Chính của Costmap 2D

➢ Bản đồ toàn cục (Global Costmap):

Chức năng: Sử dụng để lập kế hoạch đường đi toàn cục Bản đồ này bao gồm toàn bộ khu vực mà robot có thể di chuyển

Thông tin tĩnh và động: Bao gồm các chướng ngại vật tĩnh từ bản đồ đã có sẵn và các chướng ngại vật động được phát hiện bởi cảm biến

Khung tham chiếu: Thường sử dụng khung "map", một khung tham chiếu cố định

➢ Bản đồ cục bộ (Local Costmap):

Chức năng: Sử dụng để lập kế hoạch đường đi cục bộ và tránh chướng ngại vật thời gian thực Bản đồ này chỉ đại diện cho khu vực xung quanh robot

Cập nhật động: Liên tục cập nhật theo thời gian thực để phản ánh trạng thái hiện tại của môi trường, bao gồm các chướng ngại vật động

Cửa sổ cuộn (Rolling Window): Sử dụng một cửa sổ cuộn di chuyển cùng với robot, cung cấp cái nhìn cục bộ về môi trường

Khung tham chiếu: Thường sử dụng khung "odom", một khung di chuyển cùng với robot

Chúng ta chỉ có thể cập nhật các giá trị được trả về từ thông tin laser trên bề mặt vật cản Những thông tin này giúp xây dựng được bản đồ, nhưng vẫn không thể nhận biết được toàn bộ vật cản.

- Thuộc tính inflation_radius là thông số để giữ khoảng cách nhỏ nhất giữa tâm của robot và vật cản

- Thuộc tính laser_scan_sensor dùng để khai báo các thông tin về loại cản biến và được dụng để thêm/xoá vật cản trong costmap

- Thông tin về khai báo biến cho file global_costmap_params Yaml ĐỒ ÁN TỐT NGHIỆP 20

- Thuộc tính global_frame và robot_base_frame định nghĩ các frame toàn cục và frame gắn với mobile base

- Thuộc tính update_frequency dùng để khai báo tần số cập nhật cho costmap

- Thuộc tính static_map để dùng khai báo có hay không dùng bản đồ đã dựng trước đó

- Thông tin về khai báo biến cho file local_costmap_params Yaml

- Thuộc tính Publish_frequency để xác định tần số cập nhật thông tin

- Thuộc tính rolling_window dùng để giữ costmap nằm ở tâm robot khi di chuyển.

Giới thiệu về lidar

LiDAR, hoặc còn gọi là "Laser Radar", là một công nghệ thông minh sử dụng tia laser để đo khoảng cách và tạo ra bản đồ về môi trường xung quanh Kết hợp với camera, radar và các cảm biến khác, LiDAR giúp xe tự lái nhìn thấy mọi thứ xung quanh mà không cần sự can thiệp của con người

Công nghệ LiDAR hoạt động bằng cách phát tia laser từ một nguồn và sau đó đo thời gian mà tia laser phản xạ từ các vật thể trở lại cảm biến Từ đó, cảm biến LiDAR có thể xác định khoảng cách và hình dạng của các vật thể xung quanh một cách chính xác

Vai trò chính của LiDAR trong xe tự lái là cải thiện khả năng nhận thức của xe Bằng cách gửi tia laser và đo thời gian phản xạ, LiDAR tạo ra một bản đồ 3D chi tiết về môi trường xung quanh xe, bao gồm cả vật thể, người đi bộ và cơ sở hạ tầng đường bộ

Hình 2-10 Công nghệ lidar trên xe tự hành Đề tài này nhóm dùng RPLIDAR A1M1 cho robot đề tài luận văn

Giải pháp SLAMTEC giới thiệu hệ thống quét laser 2D 360 độ (LIDAR) với chi phí thấp Hệ thống này có khả năng quét phạm vi toàn bộ 360 độ trong phạm vi 12 mét,生成 ra dữ liệu đám mây điểm 2D có thể được sử dụng cho các mục đích sau: lập bản đồ, định vị và mô hình hóa đối tượng/môi trường.

Với tần số quét 5,5hz lấy mẫu 1450 điểm trên một vòng tròn, RPLIDAR A1 có thể tùy chỉnh đến 10hz Đây là hệ thống đo tam giác laser hoạt động hiệu quả trong cả môi trường trong nhà và ngoài trời, không chịu ảnh hưởng của ánh nắng trực tiếp.

RPLIDAR A1 sở hữu hệ thống máy quét phạm vi và hệ thống động cơ Sau khi cấp nguồn, các hệ thống này sẽ bắt đầu quay và tiến hành quét theo hướng kim đồng hồ Người dùng có thể lấy dữ liệu quét phạm vi qua giao diện truyền thông (cổng nối tiếp hoặc USB).

Phương thức giao tiếp UART/USB

Phạm vi hệ thống quét

Fix platform (có thể tùy chỉnh)

➢ Cảm biến LiDAR bao gồm các thành phần chính sau đây:

Laser: Cảm biến LiDAR sử dụng một nguồn tia laser để phát ra các tia ánh sáng laser

Laser có thể hoạt động ở các tần số khác nhau, như laser nhìn thấy (visible laser) hoặc laser hồng ngoại (infrared laser)

Bộ thu: Bộ thu trong cảm biến LiDAR nhận và ghi lại tia laser phản chiếu từ các đối tượng trong môi trường Bộ thu có thể sử dụng các cảm biến quang học như APD (Avalanche Photodiode) hoặc PMT (Photomultiplier Tube) để chuyển đổi tín hiệu ánh sáng thành tín hiệu điện Điện tử xử lý: Cảm biến LiDAR có một bộ xử lý điện tử để xử lý tín hiệu từ bộ thu

Bộ xử lý có nhiệm vụ tính toán thời gian bay và khoảng cách của tia laser dựa trên thời gian mà tia laser mất để quay lại sau khi phản chiếu từ các đối tượng ĐỒ ÁN TỐT NGHIỆP 22

Gương quay (Scanner): Cảm biến LiDAR có thể có một gương quay (scanner) để quét tia laser theo nhiều hướng khác nhau Gương quay giúp cảm biến thu thập thông tin không gian 3D bằng cách quét tia laser qua một phạm vi góc rộng

Một số cảm biến LiDAR có bộ nhớ tích hợp cho phép lưu trữ dữ liệu quét, cũng như khả năng kết nối với các thiết bị ngoại vi như máy tính hoặc thiết bị di động để truyền tải dữ liệu Việc có bộ nhớ và khả năng giao tiếp mở rộng chức năng của cảm biến LiDAR, cho phép lưu trữ và chia sẻ thông tin quét, thuận lợi cho các ứng dụng như lập bản đồ, dẫn đường và tránh va chạm.

Vỏ bảo vệ: Cảm biến LiDAR thường được đặt trong một vỏ bảo vệ để bảo vệ các thành phần bên trong khỏi các yếu tố môi trường bên ngoài và đảm bảo hoạt động ổn định.

Lập kế hoạch đường đi

Global Planner là một phần trong 2D Navigation Stack nó được sử dụng để tính toán và tìm ra đường đi toàn cầu từ điểm bắt đầu đến điểm đích trong môi trường đã được biết trước.[8]

Global Planner thực hiện các bước sau, đầu tiên là xây dựng bản đồ dựa trên cảm biến như lidar, camera, sau đó xác định điểm bắt đầu và đích mà robot cần đến Tìm đường đi bằng các thuật toán tìm kiếm như A-start, dijkstra… để tìm ra đường đi tối ưu Tiếp theo, path generation là sinh ra một loạt các điểm hoặc hành động cụ thể mà robot sẽ thực hiện để di chuyển từ điểm bắt đầu đến đích Cuối cùng theo dõi và điều chỉnh khi robot di chuyển, nó sẽ theo dõi vị trí của mình so với đường đi đã lập kế hoạch và điều chỉnh nếu có sai lệch hoặc nếu môi trường thay đổi

2.7.2 Tìm hiểu về thuật toán Dijkstra

Với mục đích tìm đường đi ngắn nhất cho robot đến đích dựa trên bản đồ môi trường đã được lập sẵn Thuật toán Dijkstra là một trong các thuật toán tìm đường đi chính xác và tối ưu nhất được sử dụng hiện nay.[9]

Yêu cầu cơ bản để triển khai thuật toán Dijkstra là đồ thị được biểu diễn dưới dạng một tập hợp các đỉnh và cạnh, đặc biệt hiệu quả với đồ thị có hướng có trọng số và các trọng số cạnh không âm.

Nút nguồn: thuật toán Dijkstra yêu cầu một nút nguồn là điểm bắt đầu cho quá trình tìm kiếm

Nút đích: thuật toán Dijkstra có thể được sửa đổi để kết thúc quá trình tìm kiếm khi đạt đến một nút đích cụ thể ĐỒ ÁN TỐT NGHIỆP 23 Các cạnh không âm: thuật toán Dijkstra chỉ hoạt động trên các đồ thị có trọng số dương, điều này là do trong quá trình thực hiện, các trọng số của cạnh phải được thêm vào để tìm đường đi ngắn nhất Nếu có trọng số âm trong biểu đồ thị thuật toán sẽ không hoạt động chính xác Khi một nút đã được đánh dấu là đã truy cập, đường dẫn hiện tại đến nút đó được đánh dấu là đường dẫn ngắn nhất để đến nút đó

Hình 2-12 Đồ thị các điểm trong thuật toán dijkstra

➢ Quy trình thuật toán Dijkstra:

- Bước 1: Đánh dấu nút nguồn với khoảng cách hiện tại là 0 và phần còn lại là vô cực

- Bước 2: Đặt nút không được truy cập với khoảng cách hiện tại nhỏ nhất làm nút hiện tại

Với mỗi nút lân cận N của nút hiện tại, cộng khoảng cách hiện tại của nút liền kề với trọng số của cạnh kết nối 0→1 Nếu kết quả này nhỏ hơn khoảng cách hiện tại của nút N, hãy đặt kết quả đó làm khoảng cách hiện tại mới của nút N.

- Bước 4: Đánh dấu nút hiện tại 1 là đã truy cập

- Bước 5: Chuyển sang bước 2 nếu có bất kỳ nút nào chưa được truy cập

Bản đồ môi trường chính là một graph mà trong đó các node chính là các pixel trên bản đồ Nếu pixel nào biểu thị vật cản, tường,… thì khoảng cách từ các pixel lân cận đến pixel đó là ∞ Dựa vào giá trị của các pixel trên bản đồ, giải thuật tìm đường đi Dijkstra sẽ tính toán khoảng cách từ vị trí ban đầu đến mọi pixel trên bản đồ, từ đó tìm ra đường đi ngắn nhất từ vị trí ban đầu đến đích ĐỒ ÁN TỐT NGHIỆP 24

Hình 2-13 Quá trình tìm đường đi bằng thuật toán Dijkstra trên bản đồ lưới

➢ Mô tả về hoạt động của thuật toán trên mô hình robot

1/ Robot đang ở vị trí bất kỳ trên bản đồ ĐỒ ÁN TỐT NGHIỆP 25

(a) 2/ Ta chọn mục tiêu cho robot di chuyển

(b) 3/ Thuật toán tính toán các vùng lân cận ĐỒ ÁN TỐT NGHIỆP 26

(c) 4/ Tính khoảng cách ngắn nhất từ robot tới mục tiêu

Hình 2-14 Mô tả thuật toán tìm đường đi bằng thuật toán Dijkstra

Trong khi global planner tập trung vào việc tìm kiếm đường đi tối ưu từ điểm bắt đầu đến điểm đích trên một bản đồ toàn cầu, local planner đảm bảo rằng robot có thể di chuyển an toàn và hiệu quả trong môi trường thực tế, tránh các chướng ngại vật và điều chỉnh hành động theo thời gian thực.[10]

➢ Vai trò của Local Planner:

Tránh chướng ngại vật: Local planner sử dụng dữ liệu từ các cảm biến (Lidar, sonar, camera, v.v.) để phát hiện và tránh chướng ngại vật trong thời gian thực ĐỒ ÁN TỐT NGHIỆP 27 Theo dõi đường đi: Local planner theo dõi đường đi được cung cấp bởi global planner và điều chỉnh hành động của robot để đảm bảo nó vẫn đi đúng hướng Điều chỉnh tốc độ và hướng: Local planner kiểm soát tốc độ và hướng di chuyển của robot dựa trên các điều kiện hiện tại của môi trường

➢ Các bước chung của Local Planner:

Thu thập dữ liệu cảm biến: Robot liên tục thu thập dữ liệu từ các cảm biến để cập nhật thông tin về môi trường xung quanh

Phát hiện và phân loại chướng ngại vật: Xử lý dữ liệu cảm biến để phát hiện và phân loại các chướng ngại vật trong môi trường

Xác định hành động khả thi: Tính toán các hành động tiềm năng dựa trên ràng buộc động lực của rô bốt và các chướng ngại vật hiện tại.

Lựa chọn hành động tối ưu: Chọn hành động tối ưu để tiếp tục theo đường đi đã lên kế hoạch và tránh các chướng ngại vật, đảm bảo robot di chuyển an toàn và hiệu quả

Thực hiện hành động: Gửi lệnh điều khiển đến các động cơ của robot để thực hiện hành động đã chọn

2.7.4 Tìm hiểu về thuật toán DWA

Dynamic Window Approach là một thuật toán điều khiển di chuyển cục bộ được thiết kế để điều khiển chuyển động của robot di động trong môi trường động Nó tính toán và đánh giá tốc độ và hướng tiềm năng cho robot để chọn các hành động tốt nhất cho phép di chuyển an toàn và hiệu quả Thuật toán xem xét trạng thái hiện tại của robot, chẳng hạn như vị trí, tốc độ và hướng, cũng như môi trường xung quanh, bao gồm chướng ngại vật và các đối tượng động.[11]

Thuật toán DWA được chia làm 2 phần chính là không gian tìm kiếm (search space) và hàm mục tiêu (objective function):

- Không gian tìm kiếm vận tốc của robot được chia làm ba bước:

Quỹ đạo tròn: thuật toán chỉ xem xét quỹ đạo tròn được xác định bởi vận tốc dài và vận tốc góc của robot (v w , )

Vận tốc cho phép: là giới hạn và cho phép của vận tốc để đảm bảo quỹ đạo được chọn là an toàn Tại đó (v w , ) được xem xét là cho phép nếu quỹ đạo của robot dừng trước khi va chạm vào vật cản gần nhất

Cửa sổ động là cơ chế giới hạn vận tốc tối đa của robot trong thời gian ngắn với gia tốc hạn chế Khi lập kế hoạch đường đi cho robot, hàm mục tiêu đánh giá vị trí, hướng hiện tại và các khía cạnh liên quan để lựa chọn quỹ đạo tối ưu nhất.

G w   heading w  dist w  ve wl  Với   , , là các trọng số của heading, dist, vel tương ứng

làm làm mịn tổng trọng số của ba thành phần heading, dist, vel tương ứng Để xem xét gia tốc giới hạn của động cơ, không gian tìm kiếm tổng thể được giảm xuống, dynamic window chỉ chứa vận tốc có thể đạt được trong khoảng thời gian tiếp theo

Hình 2-15 Mô tả thuật toán

Tính gần đúng của thuật toán DWA

1.Vận tốc không đổi từng phần trong một khoảng thời gian

Hình 2-16 Tính toán vận tốc của thuật toán ĐỒ ÁN TỐT NGHIỆP 29

2 Quỹ đạo của robot được tính gần đúng bằng một chuỗi các cung tròn

Hình 2-17 Quá trình thực hiện thuật toán cho mình

Hoạt động của thuật toán

1/ Thông gian tìm kiếm a) Tạo quỹ đạo tròn

Tạo quỹ đạo tròn được xác định duy nhất bởi cặp (v,w) vận tốc tịnh tiến và vận tốc quay

Hình 2-18 Bước 1 của thuật toán b) Lựa chọn vận tốc cho phép

Vận tốc có thể được coi là chấp nhận được nếu robot có thể dừng lại trước khi gặp chướng ngại vật ĐỒ ÁN TỐT NGHIỆP 30

Hình 2-19 Bước 2 của thuật toán c) Tạo dynamic window

Giới hạn vận tốc cho phép ở mức có thể đạt được trong khoảng thời gian ngắn với gia tốc hạn chế của robot

Hình 2-20 Bước 3 của thuật toán

2/Tối ưu hóa thuật toán

G w   heading w  dist w   ve wl  (2.1) a) Heading

Các hình thức giao tiếp

ROS Master là phần mềm trung gian quan trọng trong hệ thống ROS, giúp quản lý thông tin và điều phối giao tiếp giữa các node Nó đảm bảo các node có thể tìm thấy nhau và trao đổi thông tin thông qua các dịch vụ như tên miền, danh sách node, topics và services Nhiệm vụ chính của ROS Master là duy trì bản đồ của hệ thống.[12]

Giao tiếp với ROS Master đóng vai trò quan trọng trong hệ thống ROS Nó cho phép các thành phần (nodes) kết nối, trao đổi thông tin và thực hiện các hoạt động cần thiết để điều khiển và ứng dụng robot hiệu quả.

UART (Universal Asynchronous Receiver-Transmitter) là giao thức truyền thông phần cứng sử dụng để truyền dữ liệu không đồng bộ và có thể điều chỉnh tốc độ truyền Giao thức UART bao gồm hai đường truyền riêng biệt là TX (truyền) và RX (nhận), dữ liệu được truyền tải dạng các khung dữ liệu (data frame) có cấu trúc chuẩn bao gồm các thành phần như bit bắt đầu, số bit dữ liệu, bit kiểm tra chẵn lẻ và bit dừng.

Tx (Transmit): Chân truyền dữ liệu

Rx (Receive): Chân nhận dữ liệu

GND (Ground): Chân nối đất, chung cho các thiết bị

Vcc (Optional): Cung cấp điện áp cho thiết bị (nếu cần) ĐỒ ÁN TỐT NGHIỆP 34

UART truyền và nhận dữ liệu tuần tự, từng bit được gửi trên một dây truyền (Tx) và nhận trên một dây nhận (Rx) Cấu trúc này cho phép truyền dữ liệu hiệu quả trong các hệ thống nhúng và các ứng dụng yêu cầu truyền dữ liệu đáng tin cậy qua các khoảng cách dài.

Tốc độ truyền dữ liệu được xác định bởi một thông số gọi là baud rate (tốc độ baud), đơn vị là bps (bits per second) Các tốc độ thông dụng bao gồm 9600, 115200 bps, v.v

UART hoạt động không đồng bộ, tức là không yêu cầu một tín hiệu clock chung giữa các thiết bị truyền và nhận Thay vào đó, cả hai bên phải thiết lập cùng một tốc độ baud trước khi truyền thông

Một khung dữ liệu UART gồm các thành phần sau:

• Start Bit: Một bit báo hiệu bắt đầu của khung dữ liệu (thường là bit 0)

• Data Bits: Chuỗi các bit dữ liệu (thường từ 5 đến 9 bit)

• Parity Bit (Optional): Bit kiểm tra chẵn/lẻ để phát hiện lỗi

• Stop Bits: Một hoặc hai bit báo hiệu kết thúc của khung dữ liệu (thường là bit 1)

I2C (Inter-Integrated Circuit) là chuẩn truyền thông nối tiếp được dùng nhiều trong hệ thống nhúng, cho phép kết nối vi điều khiển và các thiết bị ngoại vi.

SDA (Serial Data Line): Dây truyền dữ liệu nối tiếp

SCL (Serial Clock Line): Dây truyền tín hiệu xung clock

GND (Ground): Chân nối đất, chung cho các thiết bị

Vcc (Optional): Cung cấp điện áp cho thiết bị (nếu cần)

I2C là một giao thức truyền thông đồng bộ, sử dụng một tín hiệu clock chung (SCL) để đồng bộ hóa dữ liệu truyền qua dây dữ liệu (SDA) I2C hỗ trợ kết nối nhiều thiết bị trên cùng một bus, với mỗi thiết bị có một địa chỉ duy nhất để xác định

Mỗi thiết bị trên bus I2C được gán một địa chỉ 7-bit hoặc 10-bit Địa chỉ này được ĐỒ ÁN TỐT NGHIỆP 35 sử dụng bởi thiết bị chủ để chọn thiết bị đích khi gửi hoặc nhận dữ liệu

Master : Thiết bị khởi tạo truyền thông và điều khiển quá trình truyền dữ liệu

Slave : Thiết bị nhận lệnh và thực hiện theo yêu cầu của master

Một khung dữ liệu I2C gồm các thành phần sau:

Start Condition (Bắt đầu): Master kéo dây SDA xuống thấp trong khi SCL cao để báo hiệu bắt đầu truyền thông

Address Frame (Khung địa chỉ): Master gửi địa chỉ của thiết bị đích và bit đọc/ghi

Data Frame (Khung dữ liệu): Chuỗi các byte dữ liệu được truyền giữa master và slave

Stop Condition (Kết thúc): Master kéo dây SDA lên cao trong khi SCL cao để báo hiệu kết thúc truyền thông

RDP chính là viết tắt của thuật ngữ Remote Desktop Protocol một giao thức độc quyền được phát triển bởi Microsoft, cung cấp cho người dùng giao diện đồ họa để kết nối với một máy tính khác qua kết nối mạng Remote Desktop cho phép quản lý và truy cập vào các máy tính khác từ xa thông qua mạng internet

RDP hỗ trợ cho các giao thức tương thích như VNC – Virtual Network Computing cho Linux, ICA – Independent Computing Architecture hoặc NX Do vậy, nếu có nhu cầu cài đặt RDP trên máy chủ,nên phải đảm bảo có sẵn hệ điều hành Windows có sẵn Remote Desktop Services và Hệ điều hành Linux có VNC Server ĐỒ ÁN TỐT NGHIỆP 36

Hình 2-26 Kết nối RDP giữa hai thiết bị

WebSocket là một công nghệ giúp truyền dữ liệu hai chiều giữa server và client thông qua một kết nối TCP duy nhất Điều đặc biệt là WebSocket được thiết kế để sử dụng cổng

80 và 443, là một phần của HTML5, nên có thể hoạt động trên các cổng web tiêu chuẩn mà không gặp vấn đề về việc mở cổng hay bị chặn bởi tường lửa hay proxy server.[13]

WebSocket cho phép truyền dữ liệu song công liên tục giữa máy chủ và máy khách mà không cần yêu cầu bên máy khách Kết nối này giúp thông tin được trao đổi nhanh chóng và liên tục khi cần thiết Máy chủ có thể chủ động gửi dữ liệu đến máy khách mà không phải chờ yêu cầu và ngược lại, máy khách cũng có thể gửi dữ liệu đến máy chủ bất kỳ lúc nào Nhờ đó, độ trễ giảm đáng kể Để sử dụng WebSocket, ngoài sự hỗ trợ của trình duyệt, còn đòi hỏi phải có máy chủ WebSocket được tạo bằng bất kỳ ngôn ngữ nào hỗ trợ server-side Node.js được ưa chuộng do viết bằng JavaScript và có nhiều ưu điểm so với các ngôn ngữ khác.

Tìm hiều về Rosserial

Other Node ROS serial node

Hình 2-28 Truyền nhận dữ liệu Rosserial

➢ Mô tả chi tiết về Rosserial trong ROS:

Rosserial architecture consists of two main components: ROS Client and ROS Server The ROS Client runs on the embedded device (e.g., Arduino), while the ROS Server resides on the host ROS computer.

Giao tiếp nền tảng độc lập: Rosserial sử dụng giao thức giao tiếp độc lập nền tảng, chẳng hạn như UART (Universal Asynchronous ReceiverTransmitter), để truyền thông tin giữa các thiết bị nhúng và máy tính chủ ROS Điều này cho phép Rosserial hoạt động trên nhiều nền tảng nhúng khác nhau ĐỒ ÁN TỐT NGHIỆP 38 Chức năng chính: Rosserial cho phép gửi và nhận các tin nhắn ROS giữa thiết bị nhúng và máy tính chủ ROS Tin nhắn ROS là cách truyền thông tin giữa các phần ROS khác nhau như các cảm biến, trạng thái robot, và lệnh điều khiển

Cấu hình và kết nối: Rosserial đòi hỏi phải cấu hình và kết nối đúng giữa thiết bị nhúng và máy tính chủ ROS Gói Rosserial cần được cài đặt và cấu hình trên cả hai bên, đồng thời thiết lập kết nối vật lý như sử dụng cáp UART hoặc USB để kết nối thiết bị nhúng với máy tính chủ.

Khi kết nối đã được thiết lập, Rosserial cho phép thiết bị nhúng và máy tính chủ ROS liên lạc và trao đổi thông tin Thiết bị nhúng có thể gửi tin nhắn ROS đến máy tính chủ để báo cáo trạng thái hoặc cảm biến, hoặc nhận lệnh điều khiển từ máy tính chủ để thực hiện các tác vụ như di chuyển, đo đạc hoặc điều khiển các thiết bị khác.

Tích hợp với ROS: Rosserial được tích hợp tốt với cấu trúc ROS và cung cấp cách dễ dàng để nối các thiết bị nhúng vào mạng lưới ROS Với Rosserial, các thiết bị nhúng có thể trở thành một phần của hệ thống ROS tổng thể, tiếp nhận và gửi tin nhắn ROS như bất kỳ nút ROS nào khác

Sensor_msgs/Range Ros messages

Rosserial_arduino Libraries/ros_lib

Hình 2-29 Truyền nhận dữ liệu giữa Arduino và ROS

Arduino là công cụ để lập trình phần cứng nhanh chóng và dễ dàng Sử dụng gói rosserial_arduino, ta có thể sử dụng ROS trực tiếp với Arduino IDE rosserial cung cấp giao thức truyền thông ROS hoạt động trên UART của Arduino Nó cho phép Arduino của thành một nút ROS chính thức, có thể trực tiếp xuất bản và đăng ký các thông báo ROS, xuất bản các biến đổi TF và lấy thời gian của hệ thống ROS Cho phép Arduino gửi và nhận thông điệp ROS, điều này mở rộng khả năng của hệ thống ROS sang các thiết bị phần cứng đơn giản hơn ĐỒ ÁN TỐT NGHIỆP 39

Thuật toán PID

Bộ điều khiển PID là một bộ điều khiển vòng kín được sử dụng rộng rãi trong hệ thống tự động hóa Mục tiêu của bộ điều khiển PID là điều chỉnh giá trị điều khiển ở ngõ ra Ouput sao cho sai lệch giữa giá trị đo được của hệ thống với giá trị cài đặt mong muốn nhỏ nhất có thể đạt được sự ổn định và có đáp ứng nhanh.[15]

Hình 2-30 Sơ đồ khối của bộ điều khiển PID

Thuật toán PID tính toán ra một tín hiệu điều khiển dựa trên ba thành phần chính:

- Thành phần tỷ lệ tính toán tín hiệu điều khiển dựa trên sự chênh lệch giữa giá trị hiện tại của biến điều khiển và giá trị mục tiêu

- Nếu giá trị chênh lệch lớn, tín hiệu điều khiển tăng lên một mức đáng kể

- Thành phần tích phân tính toán tín hiệu điều khiển dựa trên tổng lượng lỗi tích phân trong quá trình điều khiển

- Thành phần này giúp khắc phục lỗi tạm thời và giúp đạt được độ chính xác dài hạn

- Nếu tổng lượng lỗi tích phân lớn, tín hiệu điều khiển sẽ tăng hoặc giảm theo hướng phù hợp

- Thành phần đạo hàm tính toán tín hiệu điều khiển dựa trên tốc độ thay đổi của giá trị biến điều khiển

- Thành phần này giúp dự đoán xu hướng thay đổi của biến điều khiển và ổn định hệ ĐỒ ÁN TỐT NGHIỆP 40 thống

- Nếu tốc độ thay đổi lớn, tín hiệu điều khiển sẽ được điều chỉnh để hạn chế đột biến

Thuật toán PID tính toán tổng cộng của ba thành phần trên để tạo ra tín hiệu điều khiển cuối cùng Công thức toàn bộ của thuật toán PID có thể được biểu diễn như sau:

- u(t) là tín hiệu điều khiển cuối cùng được đưa vào hệ thống

- Kp, Ki và Kd là các hệ số điều chỉnh, được sử dụng để điều chỉnh đáp ứng của hệ thống PID Chúng được xác định thông qua thử nghiệm và tinh chỉnh để đạt được hiệu suất tốt nhất cho hệ thống cụ thể

- e(t) là sự chênh lệch giữa giá trị hiện tại của biến điều khiển và giá trị mục tiêu.

Phần mềm hỗ trợ mô phỏng trong ROS

Rviz (ROS Visualization) là một công cụ hiển thị 3D mạnh mẽ và phổ biến trong Robot Operating System (ROS) Nó cho phép người dùng hiển thị và tương tác với dữ liệu từ các cảm biến và hệ thống robot trong một môi trường 3D ĐỒ ÁN TỐT NGHIỆP 41

Dưới đây là một số điểm tổng quan về Rviz:

Hiển thị đa dạng dữ liệu: Rviz có khả năng hiển thị nhiều loại dữ liệu khác nhau như điểm, đường, lưới, mô hình robot, bản đồ và hình ảnh Điều này cho phép người dùng xem và tương tác với thông tin từ các cảm biến như camera, lidar, bản đồ và trạng thái robot

Hiển thị trạng thái robot: Rviz cho phép người dùng hiển thị các trạng thái và thông tin về robot, bao gồm vị trí, hướng, vận tốc, các khung tham chiếu và cấu trúc khung tham chiếu

Tích hợp với ROS: Rviz được thiết kế để hoạt động tốt với ROS Nó có thể kết nối trực tiếp với các nút ROS và lắng nghe dữ liệu từ các topic ROS Điều này giúp người dùng dễ dàng hiển thị và tương tác với dữ liệu robot trong hệ thống ROS

Gazebo là một chương trình mô phỏng 3D, nghĩa là nó cho phép bạn giả lập rô-bốt và môi trường xung quanh với các đặc tính vật lý như trọng lực, tốc độ, gia tốc, v.v., tương tự như trong thế giới thực Khi bạn không có robot thật hoặc bạn muốn kiểm tra robot của mình trong môi trường ảo trước khi thử ngoài đời thì bạn nên sử dụng Gazebo ĐỒ ÁN TỐT NGHIỆP 42

Hình 2-32 Phần mềm Gazebo Để tích hợp robot vào Gazebo với Ros, chúng ta cần sử dụng tệp URDF của robot và sử dụng công cụ gazebo_ros để chuyển đổi URDF thành SDF và triển khai robot trong Gazebo Bằng cách này, chúng ta có thể mô phỏng robot của mình và kiểm tra hiệu suất của các thuật toán điều khiển trên môi trường ảo ĐỒ ÁN TỐT NGHIỆP 43

THIẾT KẾ HỆ THỐNG

Mô hình thiết kế trên Solidwork

Hình 3-1 Mô hình thiết kế trên solidworks

Sử dụng arduino mega 2560 để điều khiển động cơ DC và động cơ bước step được thiết kế cho những dự án đòi hỏi nhiều chân I/O và bộ nhớ lớn

Số lượng chân I/O lớn: Với 54 chân I/O kỹ thuật số, trong đó 14 chân PWM, 16 chân ADC Arduino Mega 2560 cho phép kết nối với nhiều cảm biến, motor, đèn LED và các module khác, phù hợp cho các dự án lớn và phức tạp Arduino Mega có khả năng nhận tín hiệu từ các encoders (bộ mã hóa) của động cơ, từ đó xử lý và tính toán thông tin về vị trí, tốc độ và hướng di chuyển của xe

Bộ nhớ lớn: Bộ nhớ Flash 256 KB, SRAM 8 KB và EEPROM 4 KB cho phép lưu trữ và xử lý dữ liệu lớn hơn so với các phiên bản khác như Arduino Uno

Nhiều cổng giao tiếp: Hỗ trợ giao tiếp qua các cổng Serial, I2C và SPI, tạo điều kiện thuận lợi cho việc kết nối với nhiều loại module và thiết bị ngoại vi ĐỒ ÁN TỐT NGHIỆP 44

Raspberry Pi 4 là máy tính nhúng nhỏ gọn, mạnh mẽ, được thiết kế cho nhiều mục đích: từ giáo dục đến phát triển dự án IoT, rô bốt và ứng dụng nhúng.

• Bộ vi xử lý (CPU): Broadcom BCM2711, Quad-core Cortex-A72 (ARM v8) 64- bit SoC@ 1.5GHz

• Bộ nhớ RAM: Có các phiên bản với 2GB, 4GB, và 8GB LPDDR4-3200 SDRAM

• GPU: VideoCore VI, hỗ trợ OpenGL ES 3.x, 4Kp60 hardware decode of HEVC video

• Bộ nhớ lưu trữ: Sử dụng thẻ nhớ microSD để lưu hệ điều hành và dữ liệu Có cổng USB 3.0 cho việc mở rộng lưu trữ

Các cổng kết nối và giao Tiếp

• USB: 2 cổng USB 3.0 và 2 cổng USB 2.0

• Ethernet: Cổng Ethernet gigabit hỗ trợ tốc độ mạng lên tới 1Gbps

• Wi-Fi: Wi-Fi 802.11ac (2.4 GHz và 5.0 GHz)

• HDMI: 2 cổng micro-HDMI, hỗ trợ độ phân giải lên tới 4K

• Audio: Jack cắm tai nghe 3.5mm với hỗ trợ âm thanh nổi và video composite

• GPIO: 40 chân GPIO để kết nối với các module và thiết bị ngoại vi ĐỒ ÁN TỐT NGHIỆP 45

Hình 3-3 Máy tính nhúng raspberry pi 4

3.1.3 Động cơ JGB37-545 Động cơ DC Servo JGB37-545 DC Geared Motor đã được trang bị thêm Encoder hai kênh AB để giúp đọc và điều khiển vị trí, chiều quay của động cơ một cách chính xác trong các ứng dụng cần độ chính xác cao như điều khiển PID, Robot tự hành,

Với cấu tạo bằng kim loại, Động cơ DC Servo JGB37-545 DC Geared Motor mang lại độ bền và ổn định cao, phù hợp cho việc sử dụng trong các mô hình robot, xe, thuyền, Hộp giảm tốc của động cơ có nhiều tỉ số truyền giúp bạn dễ dàng lựa chọn giữa lực kéo và tốc độ (lực kéo càng lớn thì tốc độ càng chậm và ngược lại) Động cơ này sử dụng nguyên liệu chất lượng cao như lõi dây đồng nguyên chất, lá thép 407, nam châm từ tính mạnh, để mang lại sức mạnh và độ bền vượt trội hơn so với các loại động cơ giá rẻ khác trên thị trường hiện nay (sử dụng lõi dây nhôm, nam châm từ tính yếu)

• Điện áp sử dụng: 12VDC

• Tỉ số truyền 168:1 (động cơ quay 168 vòng trục chính hộp giảm tốc quay 1 vòng)

• Dòng chịu đựng tối đa khi có tải: 5A

• Tốc độ không tải: 30RPM (30 vòng 1 phút)

• Tốc độ chịu đựng tối đa khi có tải: 24RPM (24 vòng 1 phút)

• Lực kéo Moment định mức: 21KG.CM

• Lực léo Moment tối đa: 84KG.CM

• Chiều dài hộp số L: 26.5mm ĐỒ ÁN TỐT NGHIỆP 46

Sơ đồ ký hiệu chân

➢ Tính toán lựa chọn động cơ cho hệ thống

Khối lượng mỗi bánh xe chịu lực: m1= 𝑚

Hệ số an toàn để lựa chọn động cơ: α=1.5

Xem hằng số ma sỏt giữa bỏnh xe và mặt sàn là: à=0.7 Áp dụng định luật II Newton: F-Fms=m1α

Lực tác dụng của bánh xe tối thiểu để xe di chuyển: F-Fms>0 => F>Fms

Moment tối thiểu của động cơ để xe di chuyển: 𝜏 =FR.348 x 0.04 =0.49 Nm Moment cần thiết để lựa chọn động cơ: 𝜏ct>α.𝜏=1.5 x 0.49=7.55 kg.cm

Nên động cơ JGB37-545 phù hợp với tải trọng của mô hình

Hình 3-5 Sơ đồ nối dây động cơ ĐỒ ÁN TỐT NGHIỆP 47

Webcam có thiết kế nhỏ gọn và trọng lượng nhẹ, hiện đại cùng khả năng tương thích tốt nhiều hệ điều hành, thu hình với độ sắc nét cao Tầm quan sát 80 độ giúp thu trọn vẹn hình ảnh mà không sợ bị cắt hình Webcam có độ linh hoạt 360 độ giúp linh hoạt thay đổi góc quay

Bánh xe V3 85mm khớp lục giác 12mm là loại thường được sử dụng nhất trong các thiết kế robot có động cơ kim loại Bánh xe có chất lượng rất tốt, giá thành phải chăng, dễ lắp ráp và ứng dụng vào thiết kế

• Model: 85mm Hexagon Motor Coupling 12mm wheel V3

• Chất liệu: Nhựa, mút, cao su

• Độ rộng bánh: 38mm ĐỒ ÁN TỐT NGHIỆP 48

Bánh đa hướng V1 25mm universal wheel có kích thước nhỏ gọn thường được sử dụng như bánh cân bằng của Robot, bánh có chất lượng tốt, chuyển hướng nhanh và rất êm, phù hợp cho nhiều loại thiết kế robot khác nhau

Hình 3-8 Bánh xe đa hướng

3.1.6 Cảm biến gia tốc IMU 6050

Cảm biến GY-521 6DOF IMU MPU6050 được ứng dụng rộng rãi để đo lường 6 thông số cho robot, bao gồm 3 trục góc quay (Gyro) và 3 trục gia tốc hướng (Accelerometer) Đây là loại cảm biến gia tốc phổ biến nhất hiện nay do tính chính xác và độ tin cậy cao.

• Điện áp giao tiếp: 3~5VDC

• Giá trị Gyroscopes trong khoảng: +/- 250 500 1000 2000 degree/sec

• Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g

• Board mạch mạ vàng, linh kiện hàn tự động bằng máy chất lượng tốt nhất

Hình 3-9 Cảm biến gia tốc MPU 6050

L298N là module điều khiển động cơ trong các xe DC và động cơ bước Module có một IC điều khiển động cơ L298 và một bộ điều chỉnh điện áp 5V 78M05 Module L298N có thể điều khiển tối đa 4 động cơ DC hoặc 2 động cơ DC với khả năng điều khiển hướng và tốc độ

• IC chính: L298 – Dual Full Bridge Driver

• Điện áp đầu vào: 5~30VDC

• Công suất tối đa: 25W 1 cầu (lưu ý công suất = dòng điện x điện áp nên áp cấp vào càng cao, dòng càng nhỏ, công suất có định 25W)

• Dòng tối đa cho mỗi cầu H là: 2A

• Mức điện áp logic: Low -0.3V~1.5V, High: 2.3V~Vss

• Kích thước: 43x43x27mm ĐỒ ÁN TỐT NGHIỆP 50

Hình 3-10 Mạch điều khiển động cơ L298N

3.1.8 Động cơ bước-Step motor Động cơ bước (hay Stepper Motor) là một loại động cơ điện quay theo các bước góc nhỏ, chính xác và điều khiển được Mỗi bước là một góc quay cụ thể mà động cơ thực hiện khi nhận được một tín hiệu điện điều khiển Động cơ bước có thể giữ vị trí và di chuyển với độ chính xác cao mà không cần các cảm biến phản hồi vị trí

- Thông số kỹ thuật với loại size 42 nema 17

• Model: Stepper Motor Usongshine 17HS4401

• Loại động cơ bước: 2 Phase

• Kích thước: 42x42x48mm ĐỒ ÁN TỐT NGHIỆP 51

TB6600 là mạch điều khiển động cơ bước thông dụng, được tin dùng trong các dự án đòi hỏi sự điều khiển động cơ bước chính xác và ổn định Khả năng điều khiển động cơ bước của mạch dao động từ điện áp 9V đến 42V và cường độ dòng điện lên đến 4,5A.

Thông Số Kỹ Thuật Chính

• Điện áp cung cấp: 9V - 42V DC

• Dòng điện tối đa: 4.5A (có thể điều chỉnh)

• Microstepping: Hỗ trợ các chế độ bước vi mô từ 1/1, 1/2, 1/4, 1/8, 1/16, 1/32

• Tần số đầu vào: Tối đa 200 kHz

• Bảo vệ quá dòng, quá áp, quá nhiệt

• Kích thước nhỏ gọn và thiết kế dễ dàng lắp đặt

- 3 Cấu Trúc và Chân Kết Nối

• ENA+ và ENA-: Kích hoạt mạch (Enable)

• DIR+ và DIR-: Chân điều khiển hướng (Direction)

• PUL+ và PUL-: Chân điều khiển bước (Pulse)

• A+, A-, B+, B-: Kết nối với các cuộn dây của động cơ bước ĐỒ ÁN TỐT NGHIỆP 52

• VCC và GND: Nguồn cung cấp cho mạch điều khiển

Mạch cảm biến tốc độ Encoder V1 bao gồm 1 mắt phát và 1 mắt thu hồng ngoại đặt cách nhau qua 1 ke hở, khi ánh sáng từ mắt phát đi được tới mắt thu (xuyên qua lỗ của dĩa encoder) thì sẽ có tín hiệu mức cao (5v) phát ra khỏi chân out, khi bị che lại thì chân out phát ra tín hiệu mức thấp (0v)

• Điện áp sử dụng: 3.3~5VDC

• Mức tín hiệu xuất raDigital: TTL

• Ngõ ra: Ananlog và Digital

• Khoảng cách giữa hai mắt phát và thu: 5mm

• GND: Cấp nguồn mass 0VDC

• DO: Xuất Digital Low (0VDC) hoặc High (3.3-5VDC)

Hình 3-12 Driver điều khiển động cơ bước ĐỒ ÁN TỐT NGHIỆP 53

Hình 3-15 Nhôm định hình ĐỒ ÁN TỐT NGHIỆP 54

 Bộ bàn trượt nhôm định hình V-slot

Hình 3-16 Bộ bàn trượt v-slot

Hình 3-17 Trục vít me T8 kèm đai ốc

Hình 3-18 Gối đỡ trục vít me ĐỒ ÁN TỐT NGHIỆP 55

Sơ đồ kết nối hệ thống

Hình 3-19 Sơ đồ kết nối phần cứng hệ thống ĐỒ ÁN TỐT NGHIỆP 56

Mô hình robot thực tế

Hình 3-20 Mô hình robot thực tế ĐỒ ÁN TỐT NGHIỆP 57

Mô hình kệ hàng

Hình 3-21 Mô hình kệ hàng ĐỒ ÁN TỐT NGHIỆP 58

THỰC NGHIỆM VÀ THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN

Lưu đồ giải thuật điều khiển

Có tín hiệu gửi về từ GUI ?

Tính toán góc và khoảng cách

Robot đạt vị trí kệ ? Đặt mục tiêu ở kệ có vị trí k

Nhận diện ArUco Đẩy hàng vào kệ có số tầng t Đặt mục tiêu ở vị trí ban đầu

Hình 4-1 Lưu đồ giải thuật của chương trình ĐỒ ÁN TỐT NGHIỆP 59

Xuất mô hình từ solidwork sang urdf

Hình 4-2 Mô hình solidwork xuất sang urdf

Hình 4-3 Mô hình robot trên gazebo

Kết nối Raspberry pi với laptop bằng Remote Desktop

Ta kết nối wifi hoặc mạng cho laptop và Raspberry pi cùng chung một hệ thống mạng Sau đó dùng IP Ranger-Angry IP Scanner để tra địa chỉ IP của Raspberry pi ĐỒ ÁN TỐT NGHIỆP 60

Hình 4-4 Kết nối và đăng nhập vào hệ thống

Hình 4-5 Kết nối và đăng nhập vào hệ thống ĐỒ ÁN TỐT NGHIỆP 61

Xây dựng bản đồ

Sau khi hiết lập robot, ta thực hiện vẽ bản đồ 2D của môi trường bằng phương pháp Gmapping Đầu tiên khởi động robot, khởi tạo môi trường cho robot hoạt động, kết nối các port thiết bị như arduino, lidar, camera với Raspberry pi

($ roslaunch package_bringup package_robot.launch)

Sau đó khởi chạy nút Gmapping Slam bẳng phương pháp gmapping

($ roslaunch package_slam package_slam.launch slam_methods:=gmapping)

Hình 4-6 Slam bằng phương pháp Gmapping

($ roslaunch package_teleop package_teleop_key.launch) ĐỒ ÁN TỐT NGHIỆP 62

Moving around: w a s d x w,s tăng/giảm linear velocity a,d tăng/giảm angular velocity space key, s: dừng

( $ rosrun map_server map_saver –f ~/mapname)

Hình 4-7 Kích thước phòng C304 thực tế

Khảo sát quá trình slam bản đồ tại phòng C304 stt Chiều dài (m) Chiều rộng (m) Chu vi (m) Độ chính xác so với thực tế

Bảng 2 So sánh kích thước khi SLAM và kích thước thực tế

Hình 4-8 Bản đồ thu được sau khi slam ĐỒ ÁN TỐT NGHIỆP 64

Hình 4-9 Kích thước chiều ngang bản đồ

Hình 4-10 Kích thước chiều dọc bản đồ

 Nhận xét: Bản đồ do robot xây dựng có tỷ lệ gần đúng với bản đồ thực tế Dùng Gimp để sửa map ĐỒ ÁN TỐT NGHIỆP 65

Hình 4-11 Phần mềm gimp để chỉnh sửa map

Hình 4-12 Map sau khi chỉnh sửa ĐỒ ÁN TỐT NGHIỆP 66

Hình 4-13 Các node trong quá trình SLAM

Điều hướng cho robot

➢ Thiết lập các thông số cosmap_common_param.yaml obstacle_range: 10 raytrace_range: 15 footprint: [[-0.175, -0.17], [-0.175, 0.17], [0.175, 0.17], [0.175, -0.17]]

#robot_radius: 0.105 inflation_radius: 0.5 cost_scaling_factor: 1.5 map_type: costmap observation_sources: scan scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true}

• obstacle_range: Khoảng cách tối đa mà các vật cản được phát hiện Các vật cản nằm ngoài khoảng cách này sẽ không được xem xét trong quá trình xây dựng bản đồ chi phí (costmap)

Giá trị `raytrace_range` quyết định khoảng cách tối đa mà các tia quét được truyền qua không gian trống trước khi chúng gặp một vật cản Những tia quét này được sử dụng để xác định ranh giới của vật cản, đóng vai trò quan trọng trong việc tạo ra cảnh chân thực trong kết xuất 3D.

• footprint: Đây là dạng hình dạng của robot, được định nghĩa bằng danh sách các điểm trong không gian tọa độ robot Đây là để xác định khu vực của robot và sẽ được sử dụng để tính toán va chạm và ranh giới trong bản đồ chi phí

• inflation_radius: Bán kính phồng rộng (inflation radius) là khoảng cách từ ranh giới của các vật cản đến ranh giới của robot trong bản đồ chi phí Nó đại diện cho khu vực an toàn xung quanh robot và giúp tránh va chạm ĐỒ ÁN TỐT NGHIỆP 67

• cost_scaling_factor: Yếu tố này được nhân với giá trị chi phí Vì là tỷ lệ thuận nghịch nên tham số này tăng lên, chi phí giảm xuống

➢ Thiết lập global_common_params.yaml: global_costmap: global_frame: map robot_base_frame: base_footprint update_frequency: 10.0 publish_frequency: 10.0 transform_tolerance: 0.5 static_map: true

• global_frame: Đây là phần cấu hình cho costmap toàn cục (global costmap), là một bản đồ chi phí rộng hơn để định vị toàn cục và lập kế hoạch di chuyển của robot

• global_frame: Đây là khung tọa độ toàn cục (global frame) được sử dụng để xác định vị trí toàn cục của robot trong bản đồ Trong trường hợp này, khung tọa độ toàn cục được đặt là "map"

Robot_base_frame chính là hệ trục tọa độ căn chỉnh của robot, tức vị trí và hướng của robot trên bản đồ Trong trường hợp này, hệ trục tọa độ căn chỉnh được đặt tên là "base_footprint".

• update_frequency: Tần số cập nhật của costmap toàn cục, tức là tần số mà costmap được cập nhật và tính toán lại Trong trường hợp này, tần số cập nhật là 10.0 Hz, tức là costmap được cập nhật 10 lần mỗi giây

• publish_frequency: Thông số này chỉ định rằng node hoặc service sẽ publish thông điệp với tần số 10 lần mỗi giây

• transform_tolerance: chỉ định độ trễ trong dữ liệu biến đổi (tf) có thể chấp nhận được tính bằng giây Tham số này dùng như một biện pháp bảo vệ để tránh mất liên kết trong tf trong khi vẫn cho phép một lượng độ trễ nhất định người dùng cảm thấy thoải mái khi tồn tại trong hệ thống

Configure local_common_params.yaml with local_costmap settings Specify odom as the global frame, base_footprint as the robot base frame, update frequency of 10Hz, publish frequency of 10Hz, transform tolerance of 0.5m, disable static map, enable rolling window, set window dimensions to 3x3, and resolution to 0.05m.

• global_frame: Đây là khung tọa độ toàn cục (global frame) được sử dụng để xác định vị trí toàn cục của robot trong bản đồ, khung tọa độ’ toàn cục được đặt là

"odom", có nghĩa là robot sẽ xác định vị trí của mình trong hệ tọa độ odom

• robot_base_frame: Đây là khung tọa độ căn chỉnh (base frame) của robot Nó đại diện cho vị trí và hướng của robot trong bản đồ, khung tọa độ căn chỉnh được đặt là

• update_frequency: Tần số cập nhật của local costmap là tần số mà costmap được cập nhật và tính toán lại, tần số cập nhật là 10.0 Hz là costmap được cập nhật 10 lần mỗi giây

• publish_frequency: Tần số công bố của local costmap là tần số mà costmap được gửi đi để sử dụng bởi các thành phần khác trong hệ thống, tần số công bố cũng là 10.0 Hz là costmap được gửi đi 10 lần mỗi giây

• static_map: Xác định xem local costmap sẽ được xây dựng dựa trên bản đồ tĩnh (static map) hay không Trong trường hợp này, static_map là false, tức là local costmap sẽ không sử dụng bản đồ tĩnh

Thiết kế giao diện điều khiển robot bằng Internet

Rosbridge là cầu nối giữa ROS và các ứng dụng trang web, cung cấp giao diện Websocket cho các node ROS, cho phép gửi và nhận dữ liệu từ ROS qua trình duyệt web hoặc các ứng dụng hỗ trợ Websocket Đầu tiên ta cần khai báo ROSBRIDGE_SERVER_IP và

Rosbridge Websocket server started at ws://0.0.0.0:9090

Chạy lệnh để khởi động roslaunch rosbridge_server rosbridge_websocket.launch ĐỒ ÁN TỐT NGHIỆP 72

Hình 4-16 Trang web chưa được kết nối với ROS

Hình 4-17 Trang web đã kết nối với ROS

Giao diện trang một giới thiệu tên trường, khoa, logo, chuyên ngành, tên đề tài, học tên sinh viên thực hiện và họ tên giảng viên hướng dẫn ĐỒ ÁN TỐT NGHIỆP 73

Hình 4-18 Giao diện giới thiệu

- Giao diện trang hai có nút joystick để điều khiển robot, hiển thị giá trị Position (x, y, orientation), Velocities(Linear Velocity, Angular Velocity)

- Map hiển thị bản đồ và có khả năng điều hướng trên bản đồ đó

- 8 nút nhấn gửi dữ liệu đến robot, robot nhận giá trị vị trí và tầng của kệ hàng để thực hiện nhiện vụ ĐỒ ÁN TỐT NGHIỆP 74

Hình 4-19 Giao diện điều khiển robot

➢ Cấu hình cho trang web sử dụng ROSBridge đề kết nối với ROS

CMD_VEL_TOPIC: "/cmd_vel",

POSE_TOPIC: '/amcl_pose' ĐỒ ÁN TỐT NGHIỆP 75

Có chức năng điều khiển robot di chuyển tương tự như teleop_key trên bàn phím.Tạo một publisher trong ROS sử dụng ROSLIB để gửi dữ liệu vận tốc cho robot thông qua topic ‘cmd_vel’

➢ Hiển thị giá trị Position(x,y,Orientation) và Velocity( Linear Velocity, Angular Velocity)

Hình 4-21 khối hiển thị vị trí và vận tốc cấp vào

Có chức năng hiển thị giá trị Position(x,y,orientation) và Velocity ( Linear Velocity, Angular Velocity)

Các nút nhấn gửi vị trí và tầng của kệ hàng đến robot, robot sẽ di chuyển đến vị trí và đẩy hàng vào kệ đã quy định, sau khi thực hiện xong nút nhấn sẽ đổi màu để biết vị trí đó đã có hàng

Hình 4-22 khối nút nhấn Hình 4-20 nút joystick ĐỒ ÁN TỐT NGHIỆP 76

Ứng dụng xử lý ảnh

4.7.1 Hiệu chỉnh camera (Camera calibration)

Hiệu chỉnh camera là quá trình quan trọng để cải thiện độ chính xác của ảnh cho các ứng dụng như đo đạc hoặc thu thập dữ liệu tư thế marker Đối với máy ảnh lỗ kim thường gặp 2 loại biến dạng: xuyên tâm và tiếp tuyến Biến dạng xuyên tâm làm đường thẳng thành đường cong, tăng dần xa tâm ảnh Biến dạng tiếp tuyến xảy ra khi thấu kính không song song với ảnh, tạo cảm giác một số vùng gần hơn các vùng khác.

Biến dạng xuyên tâm có thể được biểu diễn bằng phương trình: x distored =x(1 k r+ 1 2 +k r 2 4 +k r ) 3 6 (4.1) y distored = y(1 k r+ 1 2 +k r 2 4 +k r ) 3 6 (4.2)

Thông thường chỉ cần 2 hệ số k1 và k2 là đủ cho việc hiệu chỉnh Trong trường hợp biến dạng phức tạp hơn như sử dụng ống kính góc rộng, ta phải cần thiết sử dụng tới k3 Biến dạng tiếp tuyến có thể được biểu diễn bằng phương trình: x distored = +x [2p xy p (r 1 + 2 2 +2x )] 2 (4.3) y distored = +y [p (r 1 2 +2x ) 2p xy] 2 + 2 (4.4) Để có thể khử biến dạng, ta cần tìm 5 tham số, các tham số này gọi là hệ số biến ĐỒ ÁN TỐT NGHIỆP 77 dạng:

Trong đó: x,y: tọa độ của điểm ảnh không bị biến dạng distored distored x , y : tọa độ điểm ảnh tương ứng bị biến dạng

1 2 3 k , k , k hệ số biến dạng xuyên tâm

1 2 p , p hệ số biến dạng tiếp tuyến

Ngoài ra, ta còn cần các thông số về đặc tính bên trong của máy ảnh bao tiêu cự (focal length) và tâm quang học (optical centers) Tiêu cự và tâm quang là yếu tố tạo thành ma trận camera, nó có chức năng khử biến dạng do ống kính của một camera cụ thể Ma trận

Camera được biểu diễn dưới dạng ma trận 3x3: x x y y f 0 c

4.7.2 Nhận diện mã đánh dấu

Mã đánh dấu chuẩn (Fiducial marker) là thuật ngữ dùng để chỉ các dấu hiệu hoặc điểm tham chiếu có thể nhận dạng và có thể sử dụng để xác định vị trí hoặc căn chỉnh các đối tượng trong không gian Các mã là một thành phần không thể thiếu trong việc ước lượng tư thế của vật thể, ứng dụng rộng rãi trong các hệ thống công nghiệp, thực tế ảo, điều hướng cho robot, tương tác giữa người và máy, … ĐỒ ÁN TỐT NGHIỆP 78

Hình 4-24 Các dạng Mã đánh dấu phổ biến

Mã QR (QR Code) là một loại mã phổ biến nhất hiện nay, thường có dạng hình vuông với hai màu đen trắng Tuy vậy, ngày nay đã có rất nhiều loại mã khác nhau với hình dạng, màu sắc, cách thức hoạt động và ứng dụng đa dạng, phù hợp với từng tình huống cụ thể.

Hình 4-25 Mã Aruco với các kích thước

Thoạt nhìn, mã ArUco có phần giống với ARTag và ARToolkit nhưng ArUco cho phép người dùng có thể cấu hình nhiều thư viện, nên nó có bộ mã rộng hơn và tính toán nhanh hơn so với ARTag và ARToolkit Vì thế, nhóm đã chọn bộ mã ArUco cho đồ án này

Bao quanh toàn bộ mã ArUco là một viền đen dày Viền này giúp tách mã ra khỏi nền và làm cho việc nhận dạng dễ dàng hơn Bên trong viền đen, mã ArUco bao gồm một lưới các ô vuông trắng và đen Các ô này tạo thành một ma trận nhị phân (binary matrix), nơi mỗi ô vuông đại diện cho một bit dữ liệu, với ô trắng là bit 0 và ô đen là bit 1 Ma trận nhị phân này chứa một mẫu cụ thể được mã hóa để tạo ra một ID duy nhất cho mỗi mã ArUco

Mã ArUco có thể có kích thước ma trận khác nhau, ví dụ 4x4, 5x5, 6x6 hoặc 7x7, tùy thuộc vào yêu cầu về độ phân giải và số lượng ID khác nhau ĐỒ ÁN TỐT NGHIỆP 79

Từ điển là một tập hợp các mã ArUco được định nghĩa trước, mỗi mã có một mẫu duy nhất và một ID duy nhất Những từ điển này được sử dụng để nhận diện và xác định mã trong các ứng dụng thị giác máy tính, giúp nhận diện và theo dõi các đối tượng hoặc điểm mốc trong không gian Mỗi mã ArUco trong từ điển là một hình vuông với một mẫu nhị phân độc nhất,được thiết kế để dễ dàng nhận diện và giải mã

Nhận hình ảnh từ máy ảnh

Trích xuất đường viền Chuyển sang ảnh mức xám

Phát hiện các hình vuông

Giải mã nội dung của ArUco

Nội dung của ArUco khớp với từ điển Ước lượng tư thế

Hình 4-26 Lưu đồ giải thuật của chương trình nhận diện mã ArUco

• Chuyển ảnh sang hình mức xám ĐỒ ÁN TỐT NGHIỆP 80

Hình 4-28 Phân đoạn ảnh ĐỒ ÁN TỐT NGHIỆP 81

Hình 4-29 Nhận dạng đường biên

Hình 4-30 Phát hiện các hình vuông

• Giải mã nội dung của ArUco và sao sánh với từ điển Để giải mã ta cần tách các bit thông tin của mã Trước tiên nhóm thực hiện khử biến dạng phối cảnh cho mã, sau đó phân đoạn ảnh dùng thuật toán Otsu để phân biệt hai màu ĐỒ ÁN TỐT NGHIỆP 82 trắng đen

Hình 4-31 Khử biến dạng phối cảnh và phân đoạn ảnh

Sau đó ta chia mã thành một lưới với số ô bằng với số bit của mã sau đó loại bỏ các bit màu đen ở viền ngoài

Để xác thực mã ArUco đã tìm thấy, khoảng cách Hamming được sử dụng để so sánh mã với thư viện các ma trận có cùng kích thước Khoảng cách Hamming đo lường sự khác biệt giữa hai chuỗi nhị phân có cùng chiều dài, được tính bằng số vị trí mà các bit trong hai chuỗi khác nhau.

Nếu khoảng cách Hamming giữa hai ma trận khác 0, ta sẽ tiếp tục xoay ma trận 90 độ cho đến khi khoảng cách Hamming bằng 0 Tuy nhiên, nếu sau khi thực hiện xoay mà khoảng cách Hamming vẫn khác 0, điều này có nghĩa rằng mã ArUco không hợp lệ Giá trị 1100111 được giải mã thành số 3.

Bài toán dựa trên mô hình hình học của quá trình chụp ảnh Theo công thức hình chiếu (projection geometry) cho biết các điểm ở tọa độ thế giới được ánh xạ lên mặt phẳng hình ảnh   u, v : ĐỒ ÁN TỐT NGHIỆP 83

Hệ tọa độ thế giới (u,v)

Hình 4-33 Mô hình máy ảnh w w c w w u X v K T Y

Tư thế sau khi được ước lược phụ thuộc vào vector tịnh tiến (tvec) và vector xoay (rvec) hay ma trận xoay khi biến đổi tọa độ của một điểm từ hệ tọa độ thế giới sang hệ tọa độ camera ĐỒ ÁN TỐT NGHIỆP 84 c w c c w w c w

(4.11) Ở đây ta có vector tịnh tiến: x y z t t t t

Nhóm dùng hàm được cung cấp bởi OpenCV để tính toán vector tịnh tiến và vector xoay: aruco::estimatePoseSingleMarkers( corners, marker_size, intrinsic_matrix, distortion_coefficients, rotation_vectors, translation_vectors);

QUẢ VÀ ĐÁNH GIÁ

Mô phỏng động học cho hệ robot hai bánh vi sai

Thông số của mô hình: l=0.35,w=0.25; d=0.17,a=0.04 trong đó l là chiều dài của mô hình, w là chiều rộng mô hình, d là khoảng cách từ tâm đến bánh xe, a là đường kính bánh xe a) Trường hợp 1:

• Vị trí ban đầu của xe: x=0; y=0; psi=0

Hình 5-1 Đáp ứng động học của hệ robot hai bánh vi sai trong trường hợp 1 ĐỒ ÁN TỐT NGHIỆP 93

 Nhận xét: Robot đứng yên tại chỗ khi vận tốc bằng 0

• Vị trí ban đầu của xe: x=0; y=0; psi=0

Hình 5-2 Đáp ứng động học hệ robot hai bánh vi sai trong trường hợp 2

 Nhận xét: Khi cấp vận tốc bằng 0.5 thì robot sẽ di chuyển thẳng theo phương x

Vị trí ban đầu của xe: x=0; y=0; psi=0

VelLinear=0.5; AngLinear=0.5 ĐỒ ÁN TỐT NGHIỆP 94

Hình 5-3 Đáp ứng động học hệ robot hai bánh vi sai trong trường hợp 3

 Nhận xét: Khi cấp vận tốc tịnh tiến và vận tốc góc, robot di chuyển theo cung hình tròn.

Khảo sát độ ổn định PID

Bộ điều khiển PID cho động cơ bánh phải với giá trị setpoint là 0.25m/s

Hình 5-4 Đồ thị biễu diễn sự ổn định của vận tốc bánh phải Đường line màu xanh là vận tốc thực tế của động cơ bánh phải, trung bình vận tốc thực tế dao động trong khoảng 19 giây là 0.22-0.24 m/s ĐỒ ÁN TỐT NGHIỆP 95

Hình 5-5 Đồ thị biễu diễn sự ổn định của vận tốc bánh trái Đường line màu xanh là vận tốc thực tế của động cơ bánh phải, trung bình vận tốc thực tế dao động trong khoảng 19 giây là 0.22-0.24 m/s

Nhận xét: Bộ thông số PID gần đáp ứng với tốc độ đặt ra và trong quá trình quan sát thực tế, thông số PID cũng đáp ứng tương đối với các mục tiêu đặt ra về tốc độ và vị trí mong muốn của robot.

Kết quả chạy mô hình thực nghiệm từng bước

5.3.1 Điều hướng đến các vị trí trên bản đồ

Ta chọn các vị trí ở tọa độ (1,0); (2,1); (3,-0.5); (-2,-2); (0,-4) trên bản đồ ĐỒ ÁN TỐT NGHIỆP 96 x y (0,0) (1,0) (2,1) (3,-0.5)

Hình 5-6 Xác định các vị trí để robot di chuyển x y

Hình 5-7 Đánh dấu vị trí(1,0); (2,-1);(3,0.5) trên bản đồ thực tế so với bản đồ trên Rviz ĐỒ ÁN TỐT NGHIỆP 97

Hình 5-8 Đánh dấu vị trí (-2,-2); (0,4) trên bản đồ thực tế so với bản đồ trên Rviz (a)

1/ Chạy điều hướng khi không có vật cản

 Di chuyển từ vị trí ban đầu tọa độ (0,0) đến tọa độ (1,0) ĐỒ ÁN TỐT NGHIỆP 98

Hình 5-9 Quá trình robot di chuyển từ (0,0) đến (1,0) ĐỒ ÁN TỐT NGHIỆP 99

Hình 5-10 Thông số tọa độ (1,0) trên hệ thống

 Di chuyển từ tọa độ (1,0) đến tọa độ (3,-0.5)

Hình 5-11 Quá trình robot di chuyển từ tọa độ (1,0) đến tọa độ (3,-0.5)

Hình 5-12 Thông số tọa độ (3,-0.5) trên hệ thống

 Di chuyển từ tọa độ (1,0) đến tọa độ (2,1) ĐỒ ÁN TỐT NGHIỆP 101

Hình 5-13 Quá trình robot di chuyển từ tọa độ (1,0) đến tọa độ (2,1) ĐỒ ÁN TỐT NGHIỆP 102

Hình 5-14 Thông số tọa độ (2,1) trên hệ thống

 Di chuyển từ tọa độ (3,0.5) đến tọa độ (-2,-2)

Hình 5-15 Quá trình robot di chuyển từ tọa độ (3,0.5) đến tọa độ (-2,-2)

Hình 5-16 Thông số tọa độ (-2,-2) trên hệ thống

 Di chuyển từ tọa độ (-2,-2) đến tọa độ (0,-4) ĐỒ ÁN TỐT NGHIỆP 104

Hình 5-17 Quá trình robot di chuyển từ tọa độ (-2,-2) đến tọa độ (0,-4) ĐỒ ÁN TỐT NGHIỆP 105

Hình 5-18 Tọa độ điểm 0 -3 trên hệ thống

Mục tiêu hướng đến Thực tế Độ sai số x y x y Theta

Bảng 3 Bảng so sánh tọa độ giữa thực tế và tọa độ đặt

Đánh giá cho thấy robot di chuyển tương đối ổn định, đạt được chính xác vị trí và hướng mong muốn Tỷ lệ chính xác giữa mô hình trên Rviz (Robot Visualization) và thực tế gần như trùng khớp.

5.3.2 Chạy điều hướng khi có vật cản cố định

➢ Robot né một vật cản trên đường di chuyển ĐỒ ÁN TỐT NGHIỆP 106

Hình 5-19 Robot phát hiện vật cản và tạo đường đi né vật cản

Hình 5-20 Quá trình robot di chuyển né 1 vật cản cố định trên bản đồ

➢ Robot né nhiều vật cản trên đường di chuyển

Hình 5-21 Quá trình di chuyển né nhiều vật cản cố định

 Nhận xét: Robot phát hiện được vật cản nhờ cảm biến lidar, robot tìm được đường đi mới và né được các vật cản mà không bị va chạm ĐỒ ÁN TỐT NGHIỆP 109

5.3.3 Chạy điều hướng khi có vật cản bất ngờ

Hình 5-22 Quá trình di chuyển né vật cản bất ngờ

5.3.4 Kết quả xử lý ảnh

➢ Kết quả chương trình nhận diện ArUco:

Nhóm thực hiện hiệu chỉnh camera theo gói camera_calibration hỗ trợ bởi ROS Nhóm sử dụng một hình dạng bàn cờ có kích thước 8x7 ô, kích thước mỗi ô 2.5cm Vì hiệu chỉnh camera dựa trên đỉnh chung của 4 hình vuông nên một bàn cờ kích thước 8x7 sẽ có 7x6 đỉnh chung

Hình 5-23 Bàn cờ được nhóm sử dụng để hiệu chỉnh

Hình 5-24 Hiệu chỉnh bằng gói camera_calibration ĐỒ ÁN TỐT NGHIỆP 112

Hình 5-25 Thông số sau khi hiệu chỉnh

Sau khi thực hiện hiệu chỉnh, ta thu được ma trận hệ số biến dạng và ma trận camera:

➢ Kết quả chương trình điều hướng thứ cấp:

Phần này nhóm tiến hành chương trình điều hướng thứ cấp cho robot Robot sẽ thực hiện trong hai giai đoạn như Hình 5-26 và nhóm tiến hành cho các góc và  ngẫu nhiên cho robot để thử nghiệm ĐỒ ÁN TỐT NGHIỆP 113 a) Giai đoạn 1 b) Giai đoạn 2

Hình 5-26 Hai giai đoạn quá trình điều hướng thứ cấp

+ Trường hợp góc θ = 0, ε =0, khoảng cách bằng 1m ĐỒ ÁN TỐT NGHIỆP 114

Hình 5-27 Tư thế ban đầu của robot ĐỒ ÁN TỐT NGHIỆP 115

Hình 5-28 Tư thế kết thúc

Hình 5-29 Tư thế kết thúc nhìn từ phía trên

+ Trường hợp góc θ = 10, ε = -10 độ, khoảng cách bằng 1m ĐỒ ÁN TỐT NGHIỆP 116

Hình 5-30 Tư thế ban đầu ĐỒ ÁN TỐT NGHIỆP 117

Hình 5-31 Tư thế kết thúc

Hình 5-32 Tư thế kết thúc nhìn từ phía trên

+ Trường hợp góc θ = -10, ε = -30 độ, khoảng cách bằng 0.75m ĐỒ ÁN TỐT NGHIỆP 118

Hình 5-33 Tư thế ban đầu

Hình 5-34 Tư thế kết thúc ĐỒ ÁN TỐT NGHIỆP 119

Hình 5.36 Tư thế kết thúc nhìn từ phía trên Ở tư thế kết thúc nhìn từ phía trên, màu đỏ thể hiện cho mặt phẳng chứa mã ArUco, robot được viền vàng để dễ quan sát và đối chiếu với mã Trong các trường hợp, ngoại trừ trường hợp =0, đều có hiện tượng lệch hướng của nhưng không đáng kể và vẫn có thể đẩy hàng vào thành công Nhưng hiện tượng lệch hướng có thể xuất hiện thường xuyên khi góc lớn hơn 20 độ và góc lệch lớn hơn 35 độ Tuy nhiên do chương trình điều hướng chính của Robot thực hiện khá tốt việc điều chỉnh hướng và góc nên hiện tượng góc xuất phát lớn xảy ra không nhiều.

Kết quả chạy mô hình hoàn chỉnh

Nhóm tiến hành chạy Robot trên mô hình thực Đặt 4 kệ chứa hàng có số thứ tự quy định bởi mã ArUco như hình dưới đây để mô phỏng nhà kho ĐỒ ÁN TỐT NGHIỆP 120

Hình 5-35 Bố trí mô hình thực nghiệm Đầu tiên Robot sẽ nhận tín hiệu từ GUI, tách số thứ tự của kệ hàng và số tầng sau đó di chuyển đến điểm gần kệ hàng có số thứ tự tương ứng từ vị trí Home Ở đây nhóm thử nghiệm kệ hàng có số thứ tự là 1 và tầng 1

Hình 5-36 Robot di chuyển đến vị trí gần kệ hàng

Sau khi đến được vị trí của kệ hàng robot tiến hành sử dụng camera để thực hiện điều hướng thứ cấp đến vị trí của kệ hàng và dừng lại khi đủ khoảng cách an toàn, ở đây nhóm đã đặt là 16 cm ĐỒ ÁN TỐT NGHIỆP 121

Hình 5-37 Chương trình điều hướng thứ cấp tiếp tục thực hiện việc đi vào kệ

Hình 5-38 Robot dừng lại khi đủ khoảng cách

Robot tiến hành đẩy hàng vào kệ theo số tầng đã biết ĐỒ ÁN TỐT NGHIỆP 122

Hình 5-39 Robot đẩy hàng vào kệ

Sau khi đặt hàng vào kệ xong, robot sẽ gửi tín hiệu cho GUI thông báo robot đã thực hiện thành công và cho biết ô tương ứng đã có hàng Tiếp đến robot sẽ trở về vị trí Home ban đầu, chờ đợi chu kỳ tiếp theo

Hình 5-40 Robot đang trở về Home

Khi trong một khung hình có nhiều hơn hai mã ArUco, Robot sẽ so sánh dữ liệu về số thứ tự của kệ mà GUI gửi với số ID của các mã ArUco Vì thế robot chỉ tính toán khoảng cách và góc từ mã ArUco có số thứ tự đã chọn, không bị nhầm lẫn với các mã khác

Hình 5-41 Robot nhận hai mã ArUco ĐỒ ÁN TỐT NGHIỆP 123

Hình 5-42 Trường hợp robot nhận số thứ tự 1

Hình 5-43 Trường hợp robot nhận số thứ tự 2 ĐỒ ÁN TỐT NGHIỆP 124

Ngày đăng: 26/09/2024, 11:07

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Hà Trọng Nghĩa, Trần Thanh Kết, Nguyễn Tấn Lũy "DISTRIBUTED FORMATION CONTROL AND OBSTACLE AVOIDANCE OF MULTI-ROBOT SYSTEM," Tạp chí Khoa học và Công nghệ, Số 40, 2019 Sách, tạp chí
Tiêu đề: DISTRIBUTED FORMATION CONTROL AND OBSTACLE AVOIDANCE OF MULTI-ROBOT SYSTEM
[2] Trinh Nguyen (2023), ROS (Robot Operating System) là gì? “https://robodev.blog/ros- la-gi”, xem ngày 10/02/2024 Sách, tạp chí
Tiêu đề: https://robodev.blog/ros-la-gi
Tác giả: Trinh Nguyen
Năm: 2023
[3] Lentin Joseph, “ Mastering ROS for Robotics Programming”, Packt Pub Ltd, 31/12/2015, Page 2, Chapter 3 Sách, tạp chí
Tiêu đề: Mastering ROS for Robotics Programming
[7] Open Robotics, Setup and Configuration of the Navigation Stack on a Robot, “ https://wiki.ros.org/navigation/Tutorials/RobotSetup” Sách, tạp chí
Tiêu đề: Setup and Configuration of the Navigation Stack on a Robot, "“ https://wiki.ros.org/navigation/Tutorials/RobotSetup
[11] Adel Alaeddini, Pranav Bhounsule, Lyle Hood, “ PARAMETER SELECTION IN THE DYNAMIC WINDOW APPROACH ROBOT COLLISION AVOIDANCE ALGORITHM USING BAYESIAN OPTIMIZATION” THE UNIVERSITY OF TEXAS AT SAN ANTONIO, May 2020 Sách, tạp chí
Tiêu đề: PARAMETER SELECTION IN THE DYNAMIC WINDOW APPROACH ROBOT COLLISION AVOIDANCE ALGORITHM USING BAYESIAN OPTIMIZATION
[4] Understanding the ROS file system level, https://subscription.packtpub.com/book/iot-andhardware/9781783551798/1/ch01lvl1sec11/understanding-the-ros-file-system-level,xem ngày 15/02/2024 Link
[5] Understanding the ROS computation graph level, https://subscription.packtpub.com/book/iotandhardware/9781783551798/1/ch01lvl1sec12/understanding-the-ros-computation-graphlevel#:~:text=The%20computation%20in%20ROS%20is,Topics%2C%20Services%2 C%20and%20Bags., xem ngày 15/02/2024 Link
[6] Understanding ROS community level, https://subscription.packtpub.com/book/iot-andhardware/9781783551798/1/ch01lvl1sec13/understanding-ros-community-level,xemngày 15/02/2024 Link
[8]Tìm hiểu về Global planner, https://wiki.ros.org/global_planner, xem ngày 05/03/2024 [9]Thuật toán Dijkstra và ứng dụng https://viblo.asia/p/thuat-toan-dijkstra-va-ung-dung-aWj53zgQl6m , xem ngày 05/03/2024 Link
[10] Tìm hiểu về Local planner, https://wiki.ros.org/base_local_planner, xem ngày 05/03/2024 Link

HÌNH ẢNH LIÊN QUAN

Hình 1-1 Syrius Robot vận chuyển hàng hóa tại công ty Nhật Bản - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 1 1 Syrius Robot vận chuyển hàng hóa tại công ty Nhật Bản (Trang 19)
Hình 1-2 Robot chuyển hàng của Amazon tại Mỹ - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 1 2 Robot chuyển hàng của Amazon tại Mỹ (Trang 20)
Hình 1-3 Robot lấy đơn hàng của công ty BRIGHTPICK - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 1 3 Robot lấy đơn hàng của công ty BRIGHTPICK (Trang 20)
Hình 1-4 Tiki ứng dụng robot chuyển hàng trong ngành logistic - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 1 4 Tiki ứng dụng robot chuyển hàng trong ngành logistic (Trang 21)
Hình 2-2 ROS filesystem level - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 2 2 ROS filesystem level (Trang 28)
Hình 3-1 Mô hình thiết kế trên solidworks - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 3 1 Mô hình thiết kế trên solidworks (Trang 61)
Hình 3-19 Sơ đồ kết nối phần cứng hệ thống - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 3 19 Sơ đồ kết nối phần cứng hệ thống (Trang 73)
Hình 3-20 Mô hình robot thực tế - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 3 20 Mô hình robot thực tế (Trang 74)
Hình 3-21 Mô hình kệ hàng - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 3 21 Mô hình kệ hàng (Trang 75)
Bảng 2 So sánh kích thước khi SLAM và kích thước thực tế - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Bảng 2 So sánh kích thước khi SLAM và kích thước thực tế (Trang 81)
Hình 4-11 Phần mềm gimp để chỉnh sửa map - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 4 11 Phần mềm gimp để chỉnh sửa map (Trang 83)
Hình 4-15 Các node trong quá trình điều hướng - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 4 15 Các node trong quá trình điều hướng (Trang 89)
Hình 4-30 Phát hiện các hình vuông - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 4 30 Phát hiện các hình vuông (Trang 99)
Hình 4-36 Lưu đồ điều khiển Robot trong điều hướng thứ cấp - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 4 36 Lưu đồ điều khiển Robot trong điều hướng thứ cấp (Trang 106)
Hình 5-1 Đáp ứng động học của hệ robot hai bánh vi sai trong trường hợp 1 - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 1 Đáp ứng động học của hệ robot hai bánh vi sai trong trường hợp 1 (Trang 110)
Hình 5-5 Đồ thị biễu diễn sự ổn định của vận tốc bánh trái - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 5 Đồ thị biễu diễn sự ổn định của vận tốc bánh trái (Trang 113)
Hình 5-6 Xác định các vị trí để robot di chuyển - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 6 Xác định các vị trí để robot di chuyển (Trang 114)
Hình 5-7 Đánh dấu vị trí(1,0); (2,-1);(3,0.5) trên bản đồ thực tế so với bản đồ trên Rviz - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 7 Đánh dấu vị trí(1,0); (2,-1);(3,0.5) trên bản đồ thực tế so với bản đồ trên Rviz (Trang 114)
Hình 5-8 Đánh dấu vị trí (-2,-2); (0,4) trên bản đồ thực tế so với bản đồ trên Rviz (a) - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 8 Đánh dấu vị trí (-2,-2); (0,4) trên bản đồ thực tế so với bản đồ trên Rviz (a) (Trang 115)
Hình 5-9 Quá trình robot di chuyển từ (0,0) đến (1,0) - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 9 Quá trình robot di chuyển từ (0,0) đến (1,0) (Trang 116)
Hình 5-13 Quá trình robot di chuyển từ tọa độ (1,0) đến tọa độ (2,1) - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 13 Quá trình robot di chuyển từ tọa độ (1,0) đến tọa độ (2,1) (Trang 119)
Hình 5-15 Quá trình robot di chuyển từ tọa độ (3,0.5) đến tọa độ (-2,-2) - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 15 Quá trình robot di chuyển từ tọa độ (3,0.5) đến tọa độ (-2,-2) (Trang 121)
Hình 5-17 Quá trình robot di chuyển từ tọa độ (-2,-2) đến tọa độ (0,-4) - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 17 Quá trình robot di chuyển từ tọa độ (-2,-2) đến tọa độ (0,-4) (Trang 122)
Hình 5-21 Quá trình di chuyển né nhiều vật cản cố định - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 21 Quá trình di chuyển né nhiều vật cản cố định (Trang 126)
Hình 5-26 Hai giai đoạn quá trình điều hướng thứ cấp - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 26 Hai giai đoạn quá trình điều hướng thứ cấp (Trang 131)
Hình 5-27 Tư thế ban đầu của robot - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 27 Tư thế ban đầu của robot (Trang 132)
Hình 5-30 Tư thế ban đầu - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 30 Tư thế ban đầu (Trang 134)
Hình 5-32 Tư thế kết thúc nhìn từ phía trên - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 32 Tư thế kết thúc nhìn từ phía trên (Trang 135)
Hình 5.36 Tư thế kết thúc nhìn từ phía trên - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5.36 Tư thế kết thúc nhìn từ phía trên (Trang 137)
Hình 5-35 Bố trí mô hình thực nghiệm - thiết kế và điều khiển robot di động chuyển hàng lên kệ
Hình 5 35 Bố trí mô hình thực nghiệm (Trang 138)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w