1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế và chế tạo robot tự động điều hướng môi trường trong nhà

82 72 1

Đ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

Định dạng
Số trang 82
Dung lượng 2,7 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cụ thể như trong môi trường công nghiệp ở nước ngoài, AGV là một loại robot được sử dụng để chuyên chở tự động.. Với mong muốn tạo ra những robot có tính ứng dụng cao như vậy cho đời sốn

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CƠ KHÍ

ĐỒ ÁN TỐT NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ

Trang 2

GV duyệt: TS Đặng Phước Vinh

Nội dung đã làm được bao gồm các vấn đề sau:

1 Nhu cầu thực tế của đề tài:

Hiện nay, kĩ thuật robot đã và đang được ứng dụng rộng rãi ở nhiều nước, nó đã đem lại hiệu quả to lớn trong sản xuất công nghiệp, trong quốc phòng, thám hiểm vũ trụ, y tế, xã hội Tuy nhiên, việc ứng dụng robot vào trong sản xuất, phục vụ đời sống

ở Việt Nam vẫn chưa cao Cụ thể như trong môi trường công nghiệp ở nước ngoài, AGV là một loại robot được sử dụng để chuyên chở tự động Hay là robot tự động phục trong nhà hàng, quán cafe

Với mong muốn tạo ra những robot có tính ứng dụng cao như vậy cho đời sống cũng như trong sản xuất công nghiệp nước ta, nhóm chúng tôi đã quyết định chọn đề tài "Thiết kế và chế tạo robot tự động điều hướng môi trường trong nhà" làm đề tài tốt nghiệp

2 Phạm vi nghiên cứu của đề tài tốt nghiệp:

✓ Nghiên cứu, thiết kế và chế tạo robot có thể tạo bản đồ 2D, 3D và tự động điều hướng trên bản đồ

✓ Nghiên cứu và ứng dụng ROS (robot operating system) để chế tao robot

✓ Nghiên cứu và sử dụng cảm biến Kinect

3 Nội dung đề tài đã được thực hiện:

✓ Số trang thuyết minh: 81 trang

✓ Số bản vẽ: 6 bản vẽ A0

✓ Mô hình: 1

Trang 3

4 Kết quả đạt được:

• Phần lý thuyết

✓ Nghiên cứu, ứng dụng thành công ROS để chế tạo robot

✓ Robot có khả năng quét bản đồ và tự điều hướng rất tốt

✓ Thiết kế robot bằng phần mềm Solidwork và vẽ bản vẽ bằng Autocad

✓ Lý thuyết về cảm biển Kinect, encoder, Arduino Mega

✓ Thiết kế mạch bằng phần mền Altium

• Phần tính toán, thiết kế

✓ Thiết kế và chế tạo phần cơ khí

✓ Thiết kế và chế tạo các mạch điền khiển

✓ Đã chế tạo thành công mô hình hoạt động tương đối ổn định

✓ Tính toán và thiết kế hệ thống cảm biến

Đà Nẵng, ngày 1 tháng 6 năm 2018

Sinh viên thực hiện

Trần Lê Thanh Khoa Trần Quốc Hoàng

Trang 4

TT Họ tên sinh viên Số thẻ SV Lớp Ngành

1 Trần Lê Thanh Khoa 101140147 14CDT1 CƠ ĐIỆN TỬ

2 Trần Quốc Hoàng 101140142 14CDT1 CƠ ĐIỆN TỬ

1 Tên đề tài:

Thiết kế và chế tạo robot tự động điều hướng môi trường trong nhà

2 Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện

3 Các số liệu và dữ liệu ban đầu: Tham khảo thực tế

4 Nội dung các phần thuyết minh và tính toán:

a Phần chung:

TT Họ tên sinh viên Nội dung

1 Trần Lê Thanh Khoa - Tính toán, thiết kế và chế tạo kết cấu cơ khí robot

- Thiết kế hệ thống mạch điện điều khiển robot

2 Trần Quốc Hoàng

b Phần riêng

TT Họ tên sinh viên Nội dung

1 Trần Lê Thanh Khoa - Xây dựng lưu đồ thuật toán điều khiển robot

- Lập trình chương trình xử lí

2 Trần Quốc Hoàng -Tìm hiểu cơ cấu động học robot

5 Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ):

a Phần chung:

TT Họ tên sinh viên Nội dung

1 Trần Lê Thanh Khoa Bản vẽ tổng thể robot 1 A0

Bản vẽ sơ đồ nguyên lý 1 A0

2 Trần Quốc Hoàng

Trang 5

b Phần riêng:

TT Họ tên sinh viên Nội dung

1 Trần Lê Thanh Khoa Bản vẽ sơ đồ khối mạch điều khiển 1 A0

Bản vẽ lưu đồ thuật toán 1 A0

2 Trần Quốc Hoàng Bản vẽ sơ đồ động 1 A0

Bản vẽ các chi tiết 1 A0

6 Họ và tên người hướng dẫn: T.S Võ Như Thành

7 Ngày giao nhiệm vụ đồ án: 1/2/2018

8 Ngày hoàn thành đồ án: 1/6/2018

Đà Nẵng, ngày 1 tháng 6 năm 2018

Trưởng Bộ môn Kỹ thuật Cơ điện tử Người hướng dẫn

Trang 6

LỜI NÓI ĐẦU

Ngày nay với sự ảnh hưởng của cuộc cách mạng công nghiệp 4.0, ngành Cơ khí nói chung và ngành Cơ điện tử nói riêng là một trong những ngành phát triển rất mạnh với nhiều thay đổi về kỹ thuật công nghệ cũng như về chất lượng Để đạt được điều đó đòi hỏi người cán bộ kỹ thuật ngoài trình độ chuyên môn của mình còn phải có một tư duy sáng tạo, đi sâu nghiên cứu để tận dụng hết khả năng, nguồn lực của mình

Qua thời gian học tại khoa Cơ khí – Trường Đại học Bách khoa, dưới sự tận tình hướng dẫn, giúp đỡ của các thầy, cô giáo cũng như sự nỗ lực của bản thân, chúng

em đã tích luỹ một số kiến thức như là hành trang để trở thành những kỹ sư tương lai Thước đo những kiến thức ấy chính là đồ án tốt nghiệp Đó thực sự là thách thức lớn đối với sinh viên chúng em khi đây là lần đầu tham gia, giải quyết một khối lượng công việc lớn như thế này

Công việc thực hiện đồ án tốt nghiệp gặp vất nhiều khó khăn, nhiều vấn đề nan giải Tuy nhiên được sự giúp đỡ và hướng dẫn tận tình của thầy Võ Như Thành cũng như các thầy cô giáo khác đã giúp chúng em hoàn thành đồ án này Nhưng với kiến thức hạn hẹp cũng như chưa có kinh nghiệm trong tính toán, thi công thực tế nên khó

có thể tránh được những sai sót Chúng em kính mong tiếp tục được sự chỉ bảo của các thầy, cô để em hoàn thiện kiến thức hơn nữa

Cuối cùng, em xin chân thành cảm ơn các thầy, cô giáo trong khoa Cơ khí – Trường Đại học Bách khoa – Đại học Đà Nẵng, đặc biệt là thầy Võ Như Thành cũng như các bạn cùng gia đình đã động viên và giúp đỡ chúng em trong suốt quá trình thực hiện đồ án này

Đà Nẵng, ngày 1 tháng 6 năm 2018 Sinh viên

Trần Lê Thanh Khoa Trần Quốc Hoàng

Trang 7

CAM ĐOAN

Kính gửi khoa Cơ khí - Trường đại học Bách khoa - Đại học Đà Nẵng

Chúng em xin cam đoan đồ án tuân thủ tốt các quy định về liêm chính học thuật:

• Không bịa đặt, đưa ra các thông tin sai lệch so với nguồn trích dẫn;

• Không ngụy tạo số liệu trong quá trình khảo sát, thí nghiệm, thực hành, thực tập hoặc hoạt động học thuật khác;

• Không sử dụng các hình thức gian dối trong việc trình bày, thể hiện các hoạt động học thuật hoặc kết quả từ quá trình học thuật của mình;

• Không đạo văn, sử dụng từ ngữ, cách diễn đạt của người khác như thể là của mình, trình bày, sao chép, dịch đoạn, hoặc nêu ý tưởng của người khác mà không có trích dẫn

• Không tự đạo văn, sử dụng lại thông tin nghiên cứu của mình mà không có trích dẫn hoặc phân mảnh thông tin về kết quả nghiên cứu của mình để công bố trên nhiều ấn phẩm

Sinh viên thực hiện

Trần Lê Thanh Khoa Trần Quốc Hoàng

Trang 8

MỤC LỤC

TÓM TẮT ĐỒ ÁN TỐT NGHIỆP i

LỜI NÓI ĐẦU v

CAM ĐOAN vi

DANH MỤC BẢNG BIỂU x

DANH MỤC HÌNH VẼ xi

LỜI MỞ ĐẦU 1

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 2

1.1 Xu hướng phát triển của robot hiện đại 2

1.2 Những vấn đề của robot di động 2

1.3 Mục tiêu đồ án và phương pháp thực hiện 3

CHƯƠNG 2: HỆ ĐIỀU HÀNH ROBOT ROS 4

2.1 Giới thiệu hệ điều hành robot ROS 4

2.2 Tổng quan về cách thức hoạt động của ROS 4

2.3 Các khái niệm quan trọng trong ROS 5

2.3.1 Thuật ngữ ROS 5

2.3.2 Chủ đề 8

2.3.3 Dịch vụ 9

2.3.4 Truyền thông trong ROS 10

2.4 Công cụ trực quan 3D (RViz) 11

CHƯƠNG 3: TÍNH TOÁN THIẾT KẾ PHẦN CƠ KHÍ 13

3.1 Cấu tạo của robot 13

3.2 Phương án chọn cơ cấu chuyển động robot [1] 14

3.2.1 Phương án 1: Robot chuyển động đa hướng loại 4 bánh omni 14

3.2.2 Phương án 2: Robot chuyển động đa hướng loại 3 bánh omni 15

3.2.3 Phương án 3: Robot loại 2 bánh vi sai chuyển động độc lập 16

Trang 9

3.3 Tính toán chọn động cơ [2] 16

CHƯƠNG 4: TÍNH TOÁN, THIẾT KẾ MẠCH ĐIỆN ĐIỀU KHIỂN 19

4.1 Sơ đồ khối mạch điều khiển 19

4.2 Tìm hiểu cảm biến Kinect 19

4.2.1 Giới thiệu chung 19

4.2.2 Những thành phần chính của Kinect 20

4.2.3 Tính toán độ sâu 21

4.2.4 Một số đặc tính 25

4.3 Động cơ và giải thuật PID vị trí 26

4.3.1 Động cơ Servo DC 26

4.3.2 Giải thuật PID vị trí [9] 31

4.4 Các linh kiện điện tử 32

4.4.1Mạch hạ áp LM2596 32

4.4.2 Arduino Motor Shield L293D 33

4.4.3 Arduino Mega 2560 34

CHƯƠNG 5: THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN 36

5.1 Nội dung chương trình điều khiển 36

5.1.1 Tổng quan toàn hệ thống 36

5.1.2 Hệ thống robot 37

5.2 Điều hướng 38

5.2.1 Điều hướng của robot di động 38

5.2.2 Bản đồ 39

5.2.3 Vị trí của robot 39

5.2.4 Cảm biến 40

5.2.5 Tính toán đường dẫn và lái xe 40

5.3 SLAM 40

5.3.1 Phần cứng cần thiết của robot để SLAM 40

5.3.2 Di chuyển 40

5.3.3 Đo hình học 40

Trang 10

5.3.4 Cảm biến đo khoảng cách 40

5.4 Giải thuật chương trình cho máy tính xử lý 41

KẾT LUẬN 43

TÀI LIỆU THAM KHẢO 44

PHỤ LỤC 1 1

PHỤ LỤC 2 16

Trang 11

DANH MỤC BẢNG BIỂU

Bảng 3.1 Các thông số kỹ thuật của robot 16

Bảng 3.2 Bảng hệ số ma sát ứng với các loại vật liệu 17

Bảng 4.2 Công suất tiêu thụ trên Kinect [4] 26

Bảng 4.3 Ảnh hưởng của các thành phần 𝐾𝑝, 𝐾𝑖, 𝐾𝑑 đối với hệ kín 32

Trang 12

DANH MỤC HÌNH VẼ

Hình 2.1 Logo hệ điều hành ROS 4

Hình 2.2 Các nút giao tiếp với nhau theo kiểu chủ đề 5

Hinh 2.3 Chủ đề 9

Hình 2.4 Dịch vụ 9

Hình 2.5 Giao tiếp giữa các nút ROS sử dụng topics 10

Hình 2.6 Đang mở vào giao diện Rviz 11

Hình 2.7 Điều hướng sử dụng cảm biến kinect 12

Hình 2.8 Đo khoảng cách sử dụng kinect 12

Hình 3.1 Cấu tạo của robot 13

Hình 3.2 Sơ đồ robot 4 bánh omni 14

Hình 3.3 Sơ đồ robot 3 bánh omni 15

Hình 3.4 Sơ đồ chuyển động 2 bánh vi sai 16

Hình 4.1 Sơ đồ khối mạch điều khiển 19

Hình 4.2 Cảm biến Kinect 20

Hình 4.4 Động cơ trong Kinect 21

Hình 4.5 Cấu tạo bên trong Kinect 21

Hình 4.6 Quá trình thu về bản đồ độ sâu ảnh 22

Hình 4.7 Mẫu hình được chiếu bởi projector và chụp lại bằng IR camera 23

Hình 4.8 Tính toán khảng cách tới một điểm chiếu từ Projector [7] 23

Hình 4.9 Kinect adapter 26

Hình 4.10 Động cơ Servo DC 26

Hình 4.11 Điều chỉnh độ rộng xung PWM 27

Hình 4.12 Dạng sóng áp và dòng trên động cơ 28

Hình 4.13 Optical Encoder 29

Hình 4.14 Hai kênh A và B lệch pha trong encoder 29

Hình 4.15 Encoder đi kèm động cơ Servo DC 30

Hình 4.16 PID vòng kín 31

Hình 4.19 LM2506 33

Trang 13

Hình 4.20 Arduino Motor Shield L293D 34

Hình 4.22 Sơ đồ các linh kiện của của Arduino Mega 2560 35

Hình 5.1 Tổng quan toàn hệ thống 36

Hình 5.2 Giao thức SSH 37

Hình 5.3 Hệ thống robot 37

Hình 5.4 Điều hướng 38

Hình 5.5 Sơ đồ các nodes, topics của robot 41

Hình 5.6 Kết quả quét bản đồ 43

Trang 14

Mục tiêu của đồ án là thiết kế và chế tạo một mô hình robot có khả năng tạo bản đồ 2D và điều hướng robot tự động trong bản đồ đó Thuyết minh được cấu trúc như sau: chương 1 giới thiệu tổng quan về đề tài; chương 2 giới thiệu hệ điều hành robot ROS; chương 3 tính toán và thiết kế phần cơ khí; chương 4 tính toán thiết kế mạch điện điều khiển; chương 5 thiết kế chương trình điều khiển

Trang 15

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

1.1 Xu hướng phát triển của robot hiện đại

Theo dự đoán trong vòng 20 năm nữa mỗi người sẽ có nhu cầu sử dụng một robot cá nhân như nhu cầu một máy tính PC hiện nay và robot sẽ là tâm điểm của một cuộc cách mạng lớn sau Internet Với xu hướng này, cùng các ứng dụng truyền thống khác của robot trong công nghiệp, y tế, giáo dục đào tạo, giải trí và đặc biệt là trong an ninh quốc phòng thì thị trường robot sẽ vô cùng to lớn

Robot đã có những bước tiến đáng kể trong hơn nửa thế kỷ qua Robot đầu tiên được ứng dụng trong công nghiệp vào những năm 60 để thay thế con người làm những công việc nặng nhọc, nguy hiểm trong môi trường độc hại Do nhu cầu sử dụng ngày càng nhiều trong quá trình sản xuất phức tạp nên robot công nghiệp cần có những khả năng thích ứng linh hoạt và thông minh hơn Ngày nay, ngoài ứng dụng sơ khai ban đầu của robot trong chế tạo máy thì các ứng dụng khác như trong y tế, chăm sóc sức khỏe, nông nghiệp, đóng tàu, xây dựng, an ninh quốc phòng đang là động lực cho sự phát triển của ngành công nghiệp robot

Có thể kể đến những loại robot được quan tâm nhiều trong thời gian qua là: tay máy robot (Robot Manipulators), robot di động (Mobile Robots), robot phỏng sinh học (Bio Inspired Robots) và robot cá nhân (Personal Robots) Robot di động được nghiên cứu nhiều như xe tự hành trên mặt đất AGV (Autonomous Guided Vehicles), robot tự hành dưới nước AUV (Autonomous Underwater Vehicles), robot tự hành trên không UAV (Unmanned Arial Vehicles) và robot vũ trụ (Space robots) Với robot phỏng sinh học, các nghiên cứu trong thời gian qua tập trung vào hai loại chính là robot đi bộ (Walking robot) và robot dáng người (Humanoid robot) Bên cạnh đó các loại robot phỏng sinh học như cá dưới nước, các cấu trúc chuyển động phỏng theo sinh vật biển cũng được nhiều nhóm nghiên cứu, phát triển

1.2 Những vấn đề của robot di động

Robot di động được định nghĩa là một loại xe robot có khả năng tự di chuyển,

tự vận động (có thể lập trình lại được) dưới sự điều khiển tự động để thực hiện tốt những công việc được giao Môi trường hoạt động của robot có thể là đất, nước, không khí, không gian vũ trụ hay là sự tổ hợp của các môi trường trên Bề mặt địa hình robot

di chuyển có thể là bằng phẳng hoặc thay đổi lồi lõm Những ứng dụng thực tế đòi hỏi những robot di động có tính tự động cao và những kỹ thuật hiện đại, bao gồm sự đa

Trang 16

dạng của những cảm biến rẻ mà đáng tin cậy và tính toán điện tử công suất làm tăng tính tự động hóa của robot di động Tính tự động hóa có nghĩa là robot phải dựa vào chính khả năng của nó để xuất ra những dữ liệu vận hành có ích từ bộ phận cảm biến

và tự nó đưa ra quyết định thích hợp Một trong các yêu cầu cơ bản của robot tự động thực thụ là khả năng định hướng tốt trong phạm vi môi trường chưa xác định và hình dung ra một bản đồ định hướng Bằng cách sử dụng những quan sát thích hợp từ môi trường, kết hợp với bản đồ cùng lúc để định hướng cho robot đang là một yêu cầu cần nghiên cứu cho robot di động Việc đồng thời định vị và vẽ bản đồ cùng lúc là một phương pháp chung có liên quan đến việc triển khai một hệ thống di động trong môi trường chưa xác định Đối với một robot di động tự động, định hướng là một công việc

để di chuyển một cách an toàn từ nơi này đến nơi khác Việc định hướng gặp nhiều khó khăn do nhiều vấn đề khá phức tạp Vấn đề gây trở ngại chính là những hạn chế của việc ước tính năng lượng, những khó khăn trong việc phát hiện và nhận biết đối tượng, những khó khăn trong việc tránh xung đột với các đối tượng khác nhau, và những khó khăn liên quan tới việc sử dụng thông tin cung cấp từ môi trường

1.3 Mục tiêu đồ án và phương pháp thực hiện

• Mục tiêu đồ án:

Xây dựng mô hình mobile robot có khả năng quét và tạo bản đồ dưới dạng 2D

và tự định hướng về đích với tọa độ đích cho trước lúc bắt đầu khởi động Ngoài khả năng định hướng, robot phải tránh được các vật cản có trên quãng đường di chuyển Mục đích sâu xa của đề tài là phát triển một robot tự động thông minh, có thể được sử dụng trong lĩnh vực vận chuyển hàng trong công nghiệp, phục vụ con người, giúp việc như robot hướng dẫn du khách hoặc làm một số công việc đơn giản trong văn phòng hoặc tại gia như mang café, hút bụi, lau nhà, …

• Phương pháp thực hiện:

Thiết kế mô hình một robot di động tự động, trong đó bao gồm phần gia công

cơ khí, mạch công suất, mạch vi điều khiển, đồng thời sử dụng hệ điều hành robot ROS Khối thị giác được chọn là thiết bị chơi game Kinect, thông qua xử lý từ máy tính nó sẽ kết hợp với mạch vi điều khiển giúp robot có khả năng định hướng về đích

và tránh vật cản hoàn toàn tự động

Trang 17

CHƯƠNG 2: HỆ ĐIỀU HÀNH ROBOT ROS

2.1 Giới thiệu hệ điều hành robot ROS

Hệ điều hành Robot (ROS) là phần mềm trung gian robot (tức là bộ sưu tập các khung phần mềm để phát triển phần mềm robot) Mặc dù ROS không phải là một hệ điều hành , nó cung cấp các dịch vụ được thiết kế cho cụm máy tính không đồng nhất như trừu tượng hóa phần cứng , điều khiển thiết bị cấp thấp , thực hiện chức năng thường được sử dụng, chuyển tin nhắn giữa các quy trình và quản lý gói Chạy các bộ quy trình dựa trên ROS được biểu diễn trong biểu đồ kiến trúc nơi quá trình xử

lý diễn ra trong các nút có thể nhận, đăng và dữ liệu cảm biến đa kênh, điều khiển, trạng thái, lập kế hoạch, bộ truyền động và các thông điệp khác Mặc dù tầm quan trọng của khả năng phản ứng và độ trễ thấp trong điều khiển robot, bản thân ROS không phải là hệ điều hành thời gian thực (RTOS) Tuy nhiên, có thể tích hợp ROS với mã thời gian thực Việc thiếu hỗ trợ cho các hệ thống thời gian thực đã được giải quyết trong việc tạo ra ROS 2.0 , một phiên bản chính của API ROS sẽ tận dụng các thư viện và công nghệ hiện đại cho lõi ROS chức năng và thêm hỗ trợ cho mã thời gian thực và phần cứng nhúng

Hình 2.1 Logo hệ điều hành ROS

2.2 Tổng quan về cách thức hoạt động của ROS

Trước khi chúng ta đi sâu hơn và bắt đầu làm việc với ROS, chúng ta cần xem bức tranh lớn của hệ thống

Nói chung, ROS bao gồm mã và các công cụ giúp mã dự án của bạn chạy và thực hiện công việc được yêu cầu, bao gồm cả cơ sở hạ tầng để chạy nó, giống như các thông điệp truyền giữa các quy trình

Trang 18

ROS được thiết kế để trở thành một hệ thống kết hợp lỏng lẻo trong đó một quy trình được gọi là nút (node) và mỗi nút phải chịu trách nhiệm cho một nhiệm vụ Các nút giao tiếp với nhau bằng cách sử dụng các thông điệp truyền qua các kênh logic được gọi là các chủ đề (topic) Mỗi nút có thể gửi hoặc nhận dữ liệu từ nút khác bằng

mô hình Thuê bao xuất bản/ Thuê bao đăng kí Chúng ta sẽ thấy điều đó trong hành

động sau

Mục tiêu chính của ROS là hỗ trợ tái sử dụng mã trong nghiên cứu và phát triển robot để bạn có thể tìm thấy một hệ thống gói tích hợp Một lần nữa, hãy nhớ rằng ROS không phải là hệ điều hành, thư viện hoặc RTOS Đó là một khung sử dụng khái niệm hệ điều hành

Hình 2.2 Các nút giao tiếp với nhau theo kiểu chủ đề

2.3 Các khái niệm quan trọng trong ROS

2.3.1 Thuật ngữ ROS

• Nodes: Các nút là các quá trình thực hiện tính toán ROS được thiết kế để được mô-đun ở quy mô hạt mịn; một hệ thống điều khiển robot thường bao gồm nhiều nút

Ví dụ: một nút điều khiển công cụ tìm phạm vi laser, một nút điều khiển động cơ bánh

xe, một nút thực hiện nội địa hóa, một nút thực hiện quy hoạch đường dẫn, một nút cung cấp chế độ xem đồ họa của hệ thống, v.v Một nút ROS được viết với việc sử dụng thư viện máy khách ROS, chẳng hạn như roscpp hoặc rospy

• Master: ROS Master cung cấp đăng ký tên và tra cứu phần còn lại của Biểu đồ tính toán Không có Master, các nút sẽ không thể tìm thấy nhau, trao đổi tin nhắn hoặc gọi dịch vụ

• Messages: Các nút giao tiếp với nhau bằng cách gửi tin nhắn Một thông điệp chỉ đơn giản là một cấu trúc dữ liệu, bao gồm các trường được gõ Các kiểu nguyên thủy chuẩn (số nguyên, dấu phẩy động, boolean, v.v.) được hỗ trợ, cũng như các mảng của kiểu nguyên thủy Các thông điệp có thể bao gồm các cấu trúc và mảng được lồng tùy ý (giống như các cấu trúc C)

Trang 19

• Topic: Thực sự giống như một chủ đề trong một cuộc trò chuyện Nút thuê bao xuất bản trước tiên đăng ký chủ đề của nó với Master và sau đó bắt đầu xuất bản các thông báo về một chủ đề Các nút thuê bao đăng kí muốn nhận thông tin yêu cầu chủ

đề của nút thuê bao xuất bản tương ứng với tên của chủ đề đã đăng ký trong bản gốc Dựa trên thông tin này, nút thuê bao đăng kí kết nối trực tiếp với nút thuê bao xuất bản

để trao đổi tin nhắn dưới dạng chủ đề

• Service: là giao tiếp hai chiều đồng bộ giữa máy khách dịch vụ yêu cầu dịch vụ liên quan đến một nhiệm vụ cụ thể và máy chủ dịch vụ chịu trách nhiệm trả lời các yêu cầu

• Service Server: là một máy chủ trong giao tiếp tin nhắn dịch vụ nhận yêu cầu làm đầu vào và truyền phản hồi dưới dạng đầu ra Cả hai yêu cầu và phản hồi đều ở dạng tin nhắn Theo yêu cầu dịch vụ, máy chủ thực hiện dịch vụ được chỉ định và cung cấp kết quả cho khách hàng dịch vụ dưới dạng phản hồi Máy chủ dịch vụ được triển khai trong nút nhận và thực hiện một yêu cầu đã cho

• Publish và Thuê bao xuât bản: Thuật ngữ “publish” là viết tắt của hành động truyền các thông điệp tương đối tương ứng với chủ đề Nút Thuê bao xuât bản đăng ký

thông tin và chủ đề của riêng mình với Master và gửi tin nhắn đến các nút thuê bao đăng kí được kết nối quan tâm đến cùng một chủ đề Thuê bao xuât bản được khai báo

trong nút và có thể được khai báo nhiều lần trong một nút

• Subscribe và subcriber: Thuật ngữ “subscribe”, là viết tắt của hành động nhận

tin nhắn tương đối tương ứng với chủ đề Nút Thuê bao đăng kí đăng ký thông tin và

chủ đề riêng của mình với Master và nhận thông tin Thuê bao xuât bản xuất bản chủ

đề tương đối từ Master Dựa trên thông tin nhà xuất bản nhận được, nút thuê bao đăng

kí trực tiếp yêu cầu kết nối với nút Thuê bao xuât bản và nhận tin nhắn từ nút Thuê bao xuât bản được kết nối Một thuê bao đăng kí được khai báo trong nút và có thể được

khai báo nhiều lần trong một nút Giao tiếp chủ đề là giao tiếp không đồng bộ dựa trên Thuê bao xuât bản và Thuê bao đăng kí và rất hữu ích khi chuyển một số dữ liệu nhất định Do chủ đề liên tục truyền và nhận luồng tin nhắn sau khi được kết nối, nên nó thường được sử dụng cho các cảm biến phải truyền dữ liệu định kỳ Mặt khác, cần có

sự giao tiếp đồng bộ với yêu cầu và phản hồi được sử dụng Do đó, ROS cung cấp một phương thức đồng bộ hóa tin nhắn gọi là “dịch vụ” Một dịch vụ bao gồm máy chủ dịch vụ đáp ứng các yêu cầu và dịch vụ khách yêu cầu đáp ứng Không giống như chủ

đề, dịch vụ là tin nhắn một lần giao tiếp Khi yêu cầu và phản hồi của dịch vụ được hoàn thành, kết nối giữa hai nút bị ngắt kết nối

Trang 20

• Parameter: Tham số trong ROS đề cập đến các tham số được sử dụng trong nút Hãy nghĩ về nó như các tệp cấu hình * ini trong chương trình Windows Giá trị mặc định được đặt trong tham số và có thể được đọc hoặc ghi nếu cần Đặc biệt, nó rất hữu ích khi các giá trị được cấu hình có thể được sửa đổi trong thời gian thực Ví dụ: bạn có thể chỉ định các cài đặt như số cổng USB, thông số hiệu chỉnh máy ảnh, giá trị tối đa và tối thiểu của tốc độ động cơ

• Parameter Server: Khi các tham số được gọi trong gói, chúng được đăng ký với máy chủ tham số được tải trong bản gốc

• Catkin: đề cập đến hệ thống xây dựng của ROS Về cơ bản, hệ thống xây dựng sử dụng CMake (Tạo nền tảng chéo) và môi trường xây dựng được mô tả trong tệp “CMakeLists.txt”, trong thư mục gói CMake đã được sửa đổi trong ROS để tạo ra một hệ thống xây dựng dành riêng cho ROS Catkin bắt đầu thử nghiệm alpha từ ROS Fuerte và các gói cốt lõi bắt đầu chuyển sang Catkin trong phiên bản ROS Groovy Catkin đã được áp dụng cho hầu hết các gói trong phiên bản ROS Hydro Hệ thống xây dựng Catkin giúp dễ dàng sử dụng các bản dựng, quản lý gói và phụ thuộc liên quan đến ROS giữa các gói Nếu bạn định sử dụng ROS vào thời điểm này, bạn nên sử dụng Catkin thay vì xây dựng ROS (rosbuild)

• roscore: là lệnh chạy chủ ROS Nếu nhiều máy tính trong cùng một mạng, nó

có thể được chạy từ một máy tính khác trong mạng Tuy nhiên, ngoại trừ trường hợp đặc biệt hỗ trợ nhiều roscore, chỉ nên chạy một roscore trong mạng Khi ROS master đang chạy, địa chỉ URI và số cổng được gán cho các biến môi trường ROS_MASTER_URI được sử dụng Nếu người dùng chưa đặt biến môi trường, địa chỉ IP cục bộ hiện tại được sử dụng làm địa chỉ URI và số cổng 11311 được sử dụng là

số cổng mặc định cho bản gốc

• rosrun: là lệnh thực thi cơ bản của ROS Nó được sử dụng để chạy một nút trong gói Nút sử dụng biến môi trường ROS_HOSTNAME được lưu trữ trong máy tính mà nút đang chạy dưới dạng địa chỉ URI và cổng được đặt thành một giá trị duy nhất tùy ý

• roslaunch: Trong khi rosrun là một lệnh để thực thi một nút, ngược lại, roslaunch thực thi nhiều nút Đó là một lệnh ROS chuyên thực hiện nút với các chức năng bổ sung như thay đổi tham số gói hoặc tên nút, định cấu hình không gian tên của các nút, đặt ROS_ ROOT và ROS_PACKAGE_PATH và thay đổi biến môi trường khi thực hiện các nút roslaunch sử dụng tệp ‘* launch, để xác định các nút sẽ được thực thi Tệp này dựa trên XML (Ngôn ngữ đánh dấu mở rộng) và cung cấp nhiều tùy chọn dưới dạng thẻ XML

Trang 21

• XML: (Ngôn ngữ đánh dấu mở rộng) là ngôn ngữ đánh dấu rộng và linh hoạt

mà W3C khuyến nghị để tạo các ngôn ngữ đánh dấu mục đích đặc biệt khác XML sử dụng các thẻ để mô tả cấu trúc dữ liệu Trong ROS, nó được sử dụng trong các thành phần khác nhau, chẳng hạn như * launch, * urdf và pack.xml

• TCP/IP: TCP là viết tắt của Giao thức điều khiển truyền dẫn Nó thường được gọi là TCP / IP Lớp giao thức Internet đảm bảo truyền dữ liệu bằng TCP, dựa trên lớp

IP (Giao thức Internet) trong Lớp giao thức Internet Nó đảm bảo việc truyền tuần tự

và tiếp nhận dữ liệu.TCPROS là định dạng tin nhắn dựa trên TCP / IP và UDPROS là định dạng tin nhắn dựa trên UDP TCPROS được sử dụng thường xuyên hơn trong ROS

• Package: là đơn vị cơ bản của ROS Ứng dụng ROS được phát triển trên cơ

sở gói và gói chứa tệp cấu hình để khởi chạy các gói hoặc nút khác Gói này cũng chứa tất cả các tệp cần thiết để chạy gói, bao gồm các thư viện phụ thuộc ROS để chạy các quy trình, bộ dữ liệu và tệp cấu hình khác nhau Số lượng gói chính thức là khoảng 2.500 cho ROS Indigo kể từ tháng 7 năm 2017 và khoảng 1.600 gói cho ROS Kinetic Ngoài ra, mặc dù có thể có một số dự phòng, nhưng có khoảng 4.600 gói được phát triển và phát hành bởi người dùng

• Metapackage: là một tập hợp các gói có một mục đích chung Ví dụ: Navigation chứa 10 gói bao gồm AMCL, DWA, EKF và map_server

• CmakeLists.txt: Catkin, là hệ thống xây dựng của ROS, sử dụng CMake theo mặc định Môi trường xây dựng được chỉ định trong tệp “CMakeLists.txt” trong mỗi gói

2.3.2 Chủ đề

Truyền thông về chủ đề sử dụng cùng một loại thông báo cho cả nhà xuất bản và người đăng ký như trong hình 2.4 Nút thuê bao nhận thông tin của nút nhà xuất bản tương ứng với tên chủ đề giống hệt được đăng ký trong bản gốc Dựa trên thông tin này, nút thuê bao kết nối trực tiếp với nút nhà xuất bản để nhận tin nhắn Ví dụ: nếu vị trí hiện tại của robot được tạo ở dạng thông tin odometry bằng cách tính các giá trị bộ

mã hóa của cả hai bánh của robot di động, thông tin hình học không đồng bộ có thể được truyền liên tục trong luồng không theo hướng sử dụng thông điệp chủ đề (x, y , i) Vì các chủ đề là đơn hướng và vẫn được kết nối để liên tục gửi hoặc nhận tin nhắn, nên nó phù hợp với dữ liệu cảm biến yêu cầu xuất bản tin theo định kỳ Ngoài ra, nhiều người đăng ký có thể nhận được tin nhắn từ nhà xuất bản và ngược lại Nhiều nhà xuất bản và người đăng ký kết nối cũng có sẵn

Trang 22

Hinh 2.3 Chủ đề

2.3.3 Dịch vụ

Giao tiếp trên dịch vụ là giao tiếp đồng bộ hai chiều giữa máy khách dịch vụ yêu cầu một dịch vụ và máy chủ dịch vụ đáp ứng yêu cầu như trong hình 2.5 Phương pháp đã đề cập xuất bản và đăng ký của chủ đề là một phương pháp không đồng bộ, thuận lợi cho việc truyền dữ liệu định kỳ Mặt khác, cần có sự giao tiếp đồng bộ sử dụng yêu cầu và phản hồi Theo đó, ROS cung cấp một phương thức liên lạc tin nhắn được đồng bộ hóa gọi là dịch vụ Một dịch vụ bao gồm một máy chủ dịch vụ chỉ phản hồi khi có yêu cầu và máy khách dịch vụ có thể gửi yêu cầu cũng như nhận phản hồi Không giống như chủ đề, dịch vụ là liên lạc tin nhắn một lần Do đó, khi yêu cầu và phản hồi của dịch vụ được hoàn thành, kết nối giữa hai nút sẽ bị ngắt kết nối Một dịch

vụ thường được sử dụng để ra lệnh cho robot thực hiện một hành động hoặc nút cụ thể

để thực hiện các sự kiện nhất định với một điều kiện cụ thể Dịch vụ không duy trì kết nối, vì vậy rất hữu ích để giảm tải mạng bằng cách thay thế chủ đề Ví dụ, nếu máy khách yêu cầu máy chủ trong thời gian hiện tại như trong hình 2.5 , máy chủ sẽ kiểm tra thời gian và trả lời máy khách, và kết nối bị chấm dứt

Hình 2.4 Dịch vụ

Trang 23

2.3.4 Truyền thông trong ROS

Hãy xem cách hai nút giao tiếp với nhau bằng các chủ đề ROS Sơ đồ sau cho thấy nó xảy ra như thế nào

Hình 2.5 Giao tiếp giữa các nút ROS sử dụng topicsBạn có thể thấy, có 2 nút là talker và listener Nút talker xuất bản một tin nhắn kiểu string được gọi là “Hello” vào một chủ để /talk, và nút listener đăng kí chủ đề này Hãy xem điều gì xảy ra ở mỗi giai đoạn, được đánh dấu (1), (2) và (3):

(1) Trước khi chạy bất kì nút nào trong ROS, chúng ta nên khởi động ROS Master Sau khi đã được bắt đầu, nó sẽ chờ các nút Khi nút talker (thuê bao xuât bản) bắt đầu chạy, nó sẽ kết nối với ROS đầu tiên và trao đổi chi tiết topic xuất bản với Master Điều này bao gồm tên chủ đề, loại thông báo và URI nút xuất bản URI của bản gốc là một giá trị toàn cục và tất cả các nút có thể kết nối với nó Các bậc thầy duy trì các bảng của nhà xuất bản kết nối với nó Bất cứ khi nào chi tiết của nhà xuất bản thay đổi, bảng sẽ tự động cập nhật

(2) Khi chúng ta bắt đầu nút listener (Thuê bao đăng kí), nó sẽ kết nối với master và trao đổi các chi tiết của nút,chẳng hạn như topic sẽ được đăng kí, loại tin nhắn của nó và URI nút Master cũng duy trì một bảng các Thuê bao đăng kí, tương tự như thuê bao xuât bản

(3) Bất cứ khi nào có một thuê bao và nhà xuất bản cho cùng một chủ đề, nút chính sẽ trao đổi URI của nhà xuất bản với thuê bao Điều này sẽ giúp cả hai nút kết nối với nhau và trao đổi dữ liệu Sau khi họ kết nối với nhau, không có vai trò nào

Trang 24

cho chủ Dữ liệu không chảy qua chủ; thay vào đó, các nút được liên kết và trao đổi tin nhắn

2.4 Công cụ trực quan 3D (RViz)

RViz là công cụ trực quan 3D của ROS Mục đích chính là hiển thị các thông báo ROS ở chế độ 3D, cho phép chúng ta xác minh trực quan dữ liệu Ví dụ: nó có thể trực quan hóa khoảng cách từ cảm biến khoảng cách Laser (LDS) đến vật cản, Dữ liệu đám mây điểm (PCD) của cảm biến khoảng cách 3D như RealSense, Kinect hoặc Xtion, giá trị hình ảnh thu được từ một máy ảnh, và nhiều hơn nữa mà không phải phát triển phần mềm riêng biệt

Hình 2.6 Đang mở vào giao diện Rviz

Nó cũng hỗ trợ trực quan hóa khác nhau bằng cách sử dụng đa giác do người dùng chỉ định và đánh dấu tương tác cho phép người dùng thực hiện các chuyển động tương tác với các lệnh và dữ liệu nhận được từ nút người dùng Ngoài ra, ROS mô tả các robot ở dịnh dạng mô tả Robot hợp nhất (URDF) , được thể hiện dưới dạng mô hình 3D mà mỗi mô hình có thể được di chuyển hoặc vận hành theo mức độ tự do tương ứng của chúng, do đó chúng có thể được sử dụng để mô phỏng hoặc điều khiển

Mô hình robot di động có thể được hiển thị và dữ liệu khoảng cách nhận được từ cảm biến khoảng cách Laser (LDS) có thể được sử dụng để điều hướng RViz cũng có thể hiển thị hình ảnh từ camera gắn trên robot như được hiển thị ở góc dưới bên trái của hình 2.8 Ngoài ra, nó có thể nhận dữ liệu từ nhiều cảm biến khác nhau như Kinect, LDS, RealSense và trực quan hóa chúng dưới dạng 3D

Trang 25

Hình 2.7 Điều hướng sử dụng cảm biến kinect

Hình 2.8 Đo khoảng cách sử dụng kinect

Trang 26

CHƯƠNG 3: TÍNH TOÁN THIẾT KẾ PHẦN CƠ KHÍ

3.1 Cấu tạo của robot

Hình 3.1 Cấu tạo của robot 1: Cảm biến Kinect ; 5: Bánh xe điều hướng

2: Vị trí đặt laptop; 6: Vị trí đặt mạch điều khiển

3: Động cơ và gá động cơ; 7: Thanh Inox 4: Bánh xe dẫn động; 8: Gá đặt Kinect

Robot có cấu tạo gồm:

• Cấu tạo kiểu vi sai gồm 2 bánh xe dẫn động 2 bên (4) được nối trực tiếp với động cơ (3) và 2 bánh điều hướng (5) Hai bánh điều hướng di chuyển tự

do được kéo đi bởi hai bánh dẫn động hai bên

• Tầng 1 của robot (6) là khoảng không gian để bố trí các mạch điều khiển,quạt tản nhiệt, vi điều khiển,

• Cảm biến Kinect (1) gắn trên gá (8) được đưa lên cao hơn so với mặt trên của robot để tăng tầm nhìn cho cảm biến

Trang 27

3.2 Phương án chọn cơ cấu chuyển động robot [1]

3.2.1 Phương án 1: Robot chuyển động đa hướng loại 4 bánh omni

Hình 3.2 Sơ đồ robot 4 bánh omni

Ưu điểm:

• Trong thiết kế 4 bánh, 4 bánh Omni được gắn ở 90 ° với nhau Điều này

có nghĩa là bất kỳ hai bánh xe song song với nhau và hai bánh xe khác vuông góc nhau Lợi ích đầu tiên và chính là tính toán đơn giản Vì có 2 cặp bánh xe, mỗi cặp chỉ cần 1 phép tính và 4 bánh xe chỉ cần 2 phép tính

• Tận dụng được hiệu suất động cơ tốt do được bố trí vuông góc

• Ngoài ra tại bất kỳ điểm nào cũng có hai bánh lái và hai bánh miễn phí Điều này làm cho hai bánh lái hiệu quả 100% và điều khiển robot ở tốc độ cao hơn so với thiết kế 3 bánh

Nhược điểm:

• Giá thành cao

• Khó để đảm bảo tiếp xúc khi cả 4 bánh di chuyển, nhất là khi mặt đường không bằng phẳng

• Khó áp dụng thuật toán để điều khiển

• Chúng kém hiệu quả hơn vì không phải tất cả các bánh xe đều được sử dụng đầy đủ để lái và điều khiển robot

• Vì bánh xe Omni là sự kết hợp của nhiều bánh xe / con lăn thành một, nên

có khả năng chống xoay lớn hơn dẫn đến mất năng lượng lớn hơn; tức là Mất do ma sát

• Do robot có bánh xe Omni hoạt động theo nguyên tắc trượt, điều khiển vị trí rất khó

Trang 28

3.2.2 Phương án 2: Robot chuyển động đa hướng loại 3 bánh omni

Hình 3.3 Sơ đồ robot 3 bánh omni

Ưu điểm:

• Ma sát tốt hơn, cân bằng trên mặt phẳng tốt hơn so với 4 bánh omni

• Di chuyển linh hoạt

• Thiết kế ba bánh cung cấp lực kéo lớn hơn vì bất kỳ lực phản kháng nào được phân phối chỉ qua ba điểm

Nhược điểm:

• Đầu tiên từ quan điểm thiết kế, vì các bánh xe được đặt cách nhau 120 °, chỉ một trong số các bánh xe sẽ có hiệu quả 100% Nói cách khác là chỉ một bánh xe lái còn 2 bánh kia tự do khiến cho tốc độ robot thấp hơn

• Tính toán khó vì không có bánh xe nào được xếp cùng một trục nên yêu cầu 3 phép tính toán khác nhau

• Do robot có bánh xe Omni hoạt động theo nguyên tắc trượt, điều khiển

vị trí rất khó

Trang 29

3.2.3 Phương án 3: Robot loại 2 bánh vi sai chuyển động độc lập

Hình 3.4 Sơ đồ chuyển động 2 bánh vi sai

Ưu điểm:

• Là cơ chế điều khiển phổ biến cho người chế tạo robot

• Thiết kế, xây dựng cơ học và thuật toán điều khiển trở nên đơn giản

• Chi phí giá thành thấp

Nhược điểm:

• Một trong những nhược điểm lớn của điều khiển này là robot không lái như mong đợi Nó không lái dọc theo một đường thẳng cũng không quay chính xác ở các góc mong đợi, đặc biệt là khi chúng ta sử dụng động cơ

DC Điều này do sự khác nhau số vòng quay của mỗi bánh xe trong thời gian nhất định

3.3 Tính toán chọn động cơ [2]

Bảng 3.1 Các thông số kỹ thuật của robot

1 Khối lượng robot 5[kg]

2 Tải trọng tối đa 10[kg]

3 Đường kính bánh xe 56[mm]

4 Vận tốc tối đa của robot 0.5[m/s]

Ta có khối lượng của toàn robot tính cả laptop xấp xỉ 10kg Như vậy ta xem như trọng lượng phân bố đều ra cả 4 bánh xe mỗi bánh chịu tải trọng là 2,5 kg

Trang 30

Ta có bản hệ số ma sát ứng với các loại vật liệu như sau:

Bảng 3.2 Bảng hệ số ma sát ứng với các loại vật liệu

Gỗ rắn trên gỗ rắn 0,25

Da trên gỗ 0,4

Da trên Gang 0,28 Thép trên đất cứng 0,2-0,4 Lốp cao su trên đất cứng 0,4-0,6 Thép trên thép 0,2

Ta lựa chọn hệ số ma sát của bánh xe với đất nền là 0,4

Ta có công suất tính momen cản như sau:

𝑃𝑡𝑡 =𝑃𝑚𝑠

𝜂 =

19,6

1 = 19,6 (𝑊) Trong đó:

• 𝑃𝑡𝑡: Công suất cần thiết của động cơ dẫn động

• 𝑃𝑚𝑠: Công suất do momen cản gây ra

• 𝜂: Hiệu suất của nối trục động cơ với bánh xe

Ta tính được tốc độ góc của bánh xe:

𝜔 = 𝜔𝑏𝑥1 = 𝜔𝑏𝑥2 = 𝑣

𝑅𝑏𝑥1,2 =

0,50,562

Trang 31

• Dòng tải tối đa: 1400 mA

• Công suất động cơ : 20W

• Tốc độ vòng quay : 120 vòng/phút

Trang 32

CHƯƠNG 4: TÍNH TOÁN, THIẾT KẾ MẠCH ĐIỆN ĐIỀU KHIỂN

Điều khiển các hoạt động của robot thông qua các mạch điều khiển động cơ, camera

4.1 Sơ đồ khối mạch điều khiển

Hình 4.1 Sơ đồ khối mạch điều khiển Hình 4.1 mô tả sơ đồ khối của mạch điều khiển robot tự động điều hướng môi trường tong nhà bao gồm các khối và chức năng như sau:

• Khối nguồn: sử dụng 4 viên pin sạc 18650 loại 3.6V 2600mAh được ghép nối

tiếp ta có được nguồn 14.4v Sau đó qua mạch hạ áp xuống 12v để nuôi cảm biến Kinect và khối điều khiển động cơ

• Khối xử lý trung tâm: sử dụng Laptop Asus đã cài ROS Kinetic và các gói thư

viện cần thiết để nhận các tín hiệu thu được từ khối vi điều khiển, cảm biến Kinect để xử lí và đưa lệnh điều khiển

• Khối cảm biến : dùng cảm biến Kinect để giả tín hiệu quét laser cũng như làm

tầm nhìn cho robot sử dụng nguồn 12v và giao tiếp với máy tính qua cổng USB

• Khối điều khiển động cơ: sử dụng module L293 để điều khiển động cơ theo

chế độ PWM, module L293 dùng nguồn 12v

• Khối vi điều khiển: sử dụng Arduino mega 2560 nhận tín hiệu của encoder

tính toán vận tốc và gửi về khối xử lí trung tâm thông qua cổng UART đồng thời nhận lệnh từ khối trung tâm để điều khiển động cơ

4.2 Tìm hiểu cảm biến Kinect

4.2.1 Giới thiệu chung

Trang 33

Hình 4.2 Cảm biến Kinect Kinect là sản phẩm của Microsoft dựa trên công nghệ camera được phát triển bởi PrimeSense, những sản phẩm đầu tiên được bán tại Bắc Mỹ vào ngày 4 tháng 11 năm 2010 [3] Kinect được coi như là một thiết bị ngoại vi cho Xbox 360, cho phép giao tiếp với con người thông qua các cử chỉ, đem lại những cảm giác thú vị cho người chơi game trên Xbox Khả năng hiểu được cử chỉ con người của Kinect dựa trên hai đặc tính chính sau: thông tin về độ sâu ảnh (depth map), khả năng phát hiện và bám theo đặc tính cơ thể người (body skeleton tracking)

Kinect đang giữ kỷ lục Guiness thế giới về “Thiết bị điện tử được tiêu thụ nhanh nhất” với 8 triệu sản phẩm trong 60 ngày Mười triệu sản phẩm Kinect đã được phân phối trên thế giới vào ngày 9 tháng 3 năm 2011 Bên cạnh phục vụ cho mục đích chơi game, sản phẩm Kinect còn được dùng vào mục đích nghiên cứu xử lý ảnh 3D, phát hiện cử chỉ (gesture recognition), bám theo người (body tracking) và nhiều mục đích khác Lý do chính cho sự thành công của sản phẩm Kinect là giá cả khá rẻ (khoảng 140$ trên 1 sản phẩm) cho thiết bị có khả năng cung cấp các thông tin 3D với chất lượng chấp nhận được

• Cảm biến độ sâu: độ sâu được thu về nhờ sự kết hợp của hai cảm biến: đèn chiếu

hồng ngoại (IR Projector) và camera hồng ngoại (IR camera)

• Dãy đa microphone: gồm bốn microphone được bố trí dọc Kinect như trên hình

2.2, được dùng vào các ứng dụng điều khiển bằng giọng nói

Trang 34

• Động cơ điều khiển góc ngẩng: là loại động cơ DC khá nhỏ, cho phép ta điều

chỉnh camera lên xuống để bảo đảm camera có được góc nhìn tốt nhất

Hình 4.4 Động cơ trong Kinect Một trong những đặc tính quan trọng nhất của Kinect đó là thu về giá trị độ sâu hay giá trị khoảng cách tới vật thể trong thế giới thực Phần tiếp theo sẽ nói về nguyên lý hoạt động của Kinect trong việc tính toán giá trị này

Trang 35

Hình 4.6 Quá trình thu về bản đồ độ sâu ảnh Khác với kỹ thuật Stereo Camera với việc dùng cặp camera giống nhau để xây dựng nên bản đồ độ sâu, hay kỹ thuật Time-Of-Flight (TOF) định nghĩa khoảng cách bằng ước lượng thời gian di chuyển của tia sáng đi và về trong không gian; kỹ thuật Light Coding dùng một nguồn sáng hồng ngoại chiếu liên tục kết hợp với một camera hồng ngoại để tính toán khoảng cách [5] Công việc tính toán này được thực hiện bên trong Kinect bằng chip PS1080 SoC của PrimeSense Công nghệ mới này được cho là đáp ứng chính xác hơn, giá cả rẻ hơn cho việc sử dụng ở môi trường trong nhà

Projector sẽ chiếu một chùm sáng hồng ngoại, tạo nên những đốm sáng ở không gian phía trước Kinect, tập hợp đốm sáng được phát ra này là cố định Những đốm sáng này được tạo ra nhờ một nguồn sáng truyền qua lưới nhiễu xạ (diffraction gratings) Tập hợp các đốm sáng này được IR camera chụp lại, thông qua giải thuật đặc biệt được tích hợp trong PS1080 SoC [6] cho ra bản đồ độ sâu Bản chất của giải thuật này là các phép toán hình học dựa trên quan hệ giữa hai cảm biến IR camera và Projector mà ta sẽ đề cập sau Hình 4.7 cho ta thấy rõ mẫu hình tập hợp các đốm sáng

từ Projector và được chụp lại bởi IR camera

Trang 36

Hình 4.7 Mẫu hình được chiếu bởi projector và chụp lại bằng IR camera

Để hiểu cách thức Kinect ước lượng khoảng cách tới vật thể trong môi trường như thế nào, ta quan sát hình 4.8 trong trường hợp phân tích với một điểm đơn giản

Hình 4.8 Tính toán khảng cách tới một điểm chiếu từ Projector [7]

Trang 37

Ta giả sử Projector phát đi một tia sáng dọc đường màu xanh lá, nó sẽ được chụp lại dưới dạng một đốm sáng bởi IR camera khi chạm vào bề mặt vật thể trong không gian Ta xét ba mặt phẳng ở ba khoảng cách khác nhau: mặt phẳng gần Kinect (close plane), mặt phẳng ở xa Kinect (distant plane) và mặt phẳng tham chiếu (reference plane) ở giữa hai mặt phẳng trên Trong đó, mặt phẳng tham chiếu ngầm được biết trước bên trong Kinect với đầy đủ thông tin về khoảng cách Ngoài ra, ta cũng đề cập thêm mặt phẳng ảnh (image plane) của IR camera, là mặt phẳng hình chiếu của các điểm trong không gian thu về bởi IR camera Ta xét trong ba trường hợp khi tia sáng màu xanh lá chạm vào ba điểm trên ba mặt phẳng lần lượt là A, B, C; ba điểm này được chiếu lên mặt phẳng ảnh tương ứng là A’, B’, C’ Quan sát vị trí A’, B’ và C’, ta

có nhận xét: điểm A càng gần Kinect (hay close plane càng gần Kinect) thì A’ càng xa B’ về phía bên phải; ngược lại, điểm C càng xa Kinect (hay distant plane càng xa Kinect) thì C’ càng xa B’ về phía bên trái Từ đó: khi ta biết trước hướng, điểm xuất phát của tia sáng từ Projector và vị trí B’ là hình chiếu của điểm B trên mặt phẳng tham chiếu lên mặt phẳng ảnh, ta hoàn toàn có thể tính toán được độ sâu ảnh hay khoảng cách tới vật thể

Kinect làm điều tương tự với tập hợp các đốm sáng còn lại phát đi từ projector, với mặt phẳng tham chiếu biết trước Nó tìm điểm là tâm của đốm sáng mà IR camera chụp lại được và điểm tương đồng của đốm sáng đó trên mặt phẳng tham chiếu (ví dụ: hình 4.8 ta có A và B, C và B là các cặp điểm tương đồng), để tìm khoảng chênh lệch giữa hai điểm này theo chiều ngang khi chiếu về trên mặt phẳng ảnh; và lưu ý là giá trị chênh lệch này được tính bằng đơn vị pixel Tập hợp của tất cả các giá trị chênh lệch

từ tập hợp đốm sáng, sẽ tạo nên bản đồ độ chênh lệch (disparity map), giá trị này càng lớn thì khoảng cách hay giá trị độ sâu ảnh (depth) càng lớn, từ đó mà ta xây dựng được bản đồ độ sâu (depth map) với giá trị tính bằng mét thực sự Tuy nhiên, do tập hợp số lượng đốm sáng phát đi từ projector nhỏ hơn so với tổng số pixel trên mặt phẳng ảnh của IR camera nên một phần giá trị độ sâu ảnh còn lại sẽ được nội suy Theo tính toán của Nicolas Burrus [8], một trong những người mở đường cho việc tìm hiểu về Kinect qua các thí nghiệm của ông Ông đã công thức hóa được quan hệ giữa giá trị khoảng

cách thật z tính bằng mét và giá trị độ chênh lệch d:

−0.0030711016 × 𝑑 + 3.3309495161Trong đó d là con số nguyên biểu diễn dưới dạng 11 bit, tức khoảng thay đổi từ 0÷2047 Với kết quả đo đạc thực nghiệm trên thư viện OpenNI, giá trị z biến thiên trong khoảng 0.5÷6.0 mét và bản đồ độ sâu ổn định trong khoảng 0.5÷5.0 mét Do đó,

Trang 38

giá trị d thực sự biến thiên trong khoảng từ 434÷1030 Như vậy, trong không gian từ 0÷0.5 mét phía trước Kinect, Kinect không thể đưa về bản đồ độ sâu, đây là một nhược điểm

4.2.4 Một số đặc tính

Một số đặc tính khác của Kinect đáng quan tâm: tiêu cự và góc mở camera (field of view), nguồn cung cấp và công suất tiêu thụ, môi trường hoạt động Kinect là sản phẩm thương mại của Microsoft nên các thông số kỹ thuật chi tiết không được công bố Các thông số được trình bày dưới đây là kết quả đo đạc thực nghiệm:

• Tiêu cự, góc mở IR camera và RGB camera:

Hai camera RGB và IR được đặt cách nhau 2.5 cm nên có chút khác nhau ở khung hình thu về từ hai camera Để đảm bảo khung hình RGB có thể chứa được khung hình IR, người ta thiết kế góc mở của RGB camera lớn hơn Điều này cũng dẫn đến tiêu cự của RGB camera nhỏ hơn Các thông số trong bảng 4.1 được đo đạc bằng

thực nghiệm:

Bảng 4.1 Góc mở và tiêu cự của RGB và IR camera [5]

• Nguồn cung cấp và công suất tiêu thụ:

Vì Kinect cần nhiều điện năng để hoạt động nên cổng USB của Xbox-360 không thể đáp ứng mà phải qua một cổng chia để chia thành 2 kết nối riêng là USB và kết nối nguồn, giúp cho thiết bị kết nối với Xbox-360 bằng cổng USB trong khi nguồn điện cần cho Kinect là 12VDC được lấy từ adapter Phiên bản Xbox-360 mới sẽ không cần adapter vì nó có các AUX port đặc biệt để cung cấp cho cổng kết nối Với kết nối USB ta hoàn toàn có thể cho Kinect giao tiếp với máy tính Thay adapter bằng nguồn 12V sau khi đã qua mạch hạ áp từ 14.4V

Trang 39

Hình 4.9 Kinect adapter Công suất tiêu thụ đo bằng thực nghiệm:

Bảng 4.2 Công suất tiêu thụ trên Kinect [4]

Power consumption (idle) ~3.3W

Power consumption (active) ~4.7W

• Môi trường hoạt động:

Kinect là thiết bị được thiết kế cho việc sử dụng ở môi trường trong nhà (indoor) Ở môi trường ngoài trời, kết quả thử nghiệm cho bản đồ độ sâu không chính xác vào thời điểm ánh sáng mạnh, nhưng cho kết quả chấp nhận được khi ánh sáng yếu (vào thời điểm buổi chiều tối)

4.3 Động cơ và giải thuật PID vị trí

4.3.1 Động cơ Servo DC

Động cơ Servo DC là động cơ không đồng bộ Động cơ Servo DC bao gồm hai thành phần chính: động cơ DC và encoder Ngoài ra, động cơ có thể được gắn thêm hộp số (Gear box) có tác dụng tăng momen quay và giảm tốc độ động cơ Động cơ Servo DC được ứng dụng cho việc điều khiển chính xác: góc quay, tốc độ, momen Trong đề tài, cặp động cơ được chọn là động cơ Servo DC Faulhaber công suất 60W,

sử dụng nguồn DC 12V, encoder 2 kênh với độ phân giải 12 xung và được trang bị hộp giảm tốc tỉ số 64:1

Hình 4.10 Động cơ Servo DC

Trang 40

4.3.1.1 Động cơ DC

Động cơ DC là động cơ điện hoạt động với dòng điện một chiều Động cơ điện một chiều ứng dụng rộng rãi trong các ứng dụng dân dụng cũng như công nghiệp Cấu tạo của động cơ gồm có hai phần: stato đứng yên và roto quay so với stato Phần cảm (phần kích từ – thường đặt trên stato) tạo ra từ trường đi trong mạch từ, xuyên qua các vòng dây quấn của phần ứng (thường đặt trên roto) Khi có dòng điện chạy trong mạch phần ứng, các thanh dẫn phần ứng sẽ chịu tác động bởi các lực điện từ theo phương tiếp tuyến với mặt trụ roto, làm cho roto quay

Tùy theo cách mắc cuộn dây roto và stato mà người ta có các loại động cơ sau:

• Động cơ kích từ độc lập: Cuộn dây kích từ (cuộn dây stato) và cuộn dây phần ứng (roto) mắc riêng rẽ nhau, có thể cấp nguồn riêng biệt

• Động cơ kích từ nối tiếp: Cuộn dây kích từ mắc nối tiếp với cuộn dây phần ứng

Đối với loại động cơ kích từ độc lập, người ta có thể thay thế cuộn dây kích từ bởi nam châm vỉnh cữu, khi đó ta có loại động cơ điện một chiều dùng nam châm vĩnh cửu

Đối với loại động cơ kích từ độc lập dùng nam châm vĩnh cửu, để thay đổi tốc

độ, ta thay đổi điện áp cung cấp cho roto Việc cấp áp một chiều thay đổi thường khó khăn, do vậy người ta dùng phương pháp điều xung (PWM):

Hình 4.11 Điều chỉnh độ rộng xung PWM Mạch điều khiển động cơ bằng phương pháp PWM hoạt động dựa theo nguyên tắc cấp nguồn cho động cơ bằng chuỗi xung đóng mở với tốc độ nhanh Nguồn DC được chuyển đổi thành tín hiệu xung vuông (chỉ gồm hai mức 0 volt và xấp xỉ điện áp

Ngày đăng: 14/11/2020, 11:24

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w