1 Chương 1
GIỚI THIỆU
1.1 Giới thiệu
Cùng với phát triển của khoa học kỹ thuật, ngày nay robot có khả năng thay
thế con người làm việc trong những môi trường độc hại, trong sản xuất hoặc bắt
chước con người về hình thức, hành vi và cả suy nghĩ Hiện nay lĩnh vực robot
đang phát triển nhanh nhờ vào sự phát triển liên tục của công nghệ, robot đã và
đang được chế tạo để phục vụ cho nhiều mục đích khác nhau. Với ý tưởng sử dụng
robot thay thế con người thì “Robot hai bánh tự cân bằng” cũng là đề tài hiện đang
được nhiều tác giả quan tâm vì mô hình robot này có khả năng di chuyển nhanh,
linh hoạt nhưng lại không chiếm nhiều không gian [1], [3].
1.2 Mục tiêu của đề tài
Mục tiêu của đề tài là xây dựng mô hình robot hai bánh thực tế có khả năng tự
cân bằng có cấu trúc đơn giản phục vụ cho việc nghiên cứu, giảng dạy tại phòng thí
nghiệm, mô hình sản phẩm trưng bày hay những trò chơi với mục đích giải trí.
1.3 Phương pháp nghiên cứu
Đề tài được tiếp cận dựa trên các phương pháp sau:
Phương pháp khảo sát tài liệu, tìm hiểu các tài liệu liên quan đến đến đề tài
như: cấu trúc robot hai bánh tự cân bằng, cảm biến IMU, mạch điều khiển động cơ.
Phương pháp khảo sát các thuật toán lọc nhiễu cho cảm biến IMU như: bộ
lọc Kalman, bộ lọc Complementary và thuật toán điều khiển PID.
Phương pháp thực nghiệm tiến hành xây dựng các thuật toán trên mô hình
robot hai bánh thực tế.
1.4 Giới hạn của đề tài
Đề tài tập trung vào việc xây dựng mô hình phần cứng robot như: kết cấu cơ
khí, mạch điều khiển động cơ, các thuật toán trên vi điều khiển như bộ lọc Kalman
2
Hình 1.3 Robot hai bánh cân bằng EquipoiseBot
4 1.5.2.3 WobblyBot
WobblyBot thực chất là mô hình sử dụng con lắc ngược, được gắn dưới phần
thân ở giữa hai bánh xe. WobblyBot được thiết kế với phần dưới của robot nặng
hơn nhiều so với phần trên giúp robot có khả giữ cân bằng tốt nhất.
Hình 1.4 Robot hai bánh cân bằng WobblyBot
1.5.2.4 tiltOne
tiltOne là một robot hai bánh cân bằng với chiều cao 90 cm và có khả năng
chở tải trọng lên tới 50 kg. Nguyên lý hoạt động cũng giống như các robot hai bánh
có kích thước nhỏ hơn, sử dụng hai cảm biến là cảm biến gia tốc và cảm biến con
quay hồi chuyển và thuật toán PID để điều khiển robot cân bằng.
Hình 1.5 Robot hai bánh cân bằng tiltOne
5 1.5.2.5 Robot kiểu rolling của hãng TOYOTA
Đây là robot có công dụng phục vụ con người do hãng TOYOTA thiết kế.
Mẫu robot này có khả năng di chuyển nhanh và ít chiếm không gian. Đồng thời đôi
tay của robot có thể làm nhiều công việc khác nhau, chủ yếu được sử dụng với mục
đích giải trí. Hình 1.6 Robot hai bánh của hãng TOYOTA
7 Chương 2
THIẾT KẾ MÔ HÌNH HỆ THỐNG
2.1 Sơ đồ khối của hệ thống
Cảm biến IMU
GY-86
Arduino Due
AT91SAM3X8E
Mạch điều khiển
động cơ cầu H
Nguồn cung cấp
góc 20
0
so với góc tại vị trí cân bằng
8 Như mô tả trong Hình 2.2 để robot có thể giữ được cân bằng khi ngã thì
robot phải di chuyển một đoạn đường là trong khoảng thời gian cho phép để
có thể hứng được trọng tâm của robot, các giá trị này được tính toán như sau:
(2.1)
50 cm
a) Robot ở trạng
thái cân bằng
50 cm
20
0
70
0
A B
C
α
17.1 cm
t = ?
b) Trạng thái robot đang ở
góc nghiêng 20 so với góc
tại vị trí cân bằng
0
88.32
0
88.05
0
88.23
0
88.41
0
100
88.01
0
87.77
0
87.89
0
88.12
0
150
88.80
0
88.68
88.07
0
88.41
0
300
87.69
0
87.45
0
87.17
0
88.10
0
350
87.38
0
87.18
0
86.85
0
85.27
0
85.13
0
85.57
0
85.91
0
550
84.08
0
84.49
0
85.21
0
84.63
0
600
83.30
0
83.92
82.66
0
750
80.12
0
80.71
0
80.40
0
81.61
0
800
78.12
0
79.01
0
77.44
0
79.48
0
64.82
0
66.54
0
70.19
0Dữ liệu thu thập được trong Bảng 2.1 cho thấy khi thả robot ngã tự do từ vị trí
cân bằng là 88
0
(đây là góc nghiêng tại vị trí cân bằng thu được từ cảm biến trên mô
hình thực tế, góc này sai lệch so với góc nghiêng lý tưởng do giới hạn về cơ khí của
mô hình) đến góc nghiêng giới hạn 88 ± 20
0
trong khoảng thời gian trung bình là
950 ms, đây cũng là giá trị thời gian giới hạn cần thiết để robot di chuyển để giữ
được cân bằng.
Giả sử chọn bánh xe có bán kính là 5cm và moment xoắn của động cơ là 63
Ncm thì lực đẩy sẽ được tính theo công thức sau:
(2.2)
Suy ra vận tốc cần thiết của động cơ:
Đề tài sử dụng bo mạch Arduino Due AT91SAM3X8E đóng vai trò như “bộ
não” của robot, điều khiển cho robot giữ cân bằng. Khung robot được chế tạo từ
inox với hai động cơ DC được đặt đồng trục, cho phép robot có thể di chuyển được
theo hai hướng trước và sau. Hai động cơ được điểu khiển bởi hai mạch cầu H sử
dụng IC IR2184 để điều khiển kích FET, cảm biến IMU GY-86 được sử dụng để
xác định góc nghiêng của robot. Hai động cơ DC 24V, 60W tốc độ 468 vòng/phút,
encoder 500 xung/vòng. Hai bánh xe được bọc cao su có nhiều rãnh để tăng độ bám
cao giúp robot cân bằng tốt hơn.
Cảm biến
IMU GY-86
Mạch điều khiển
động cơ cầu H
Bo Arduino Due
AT91SAM3X8E
Nút nhấn
điều khiển
Pin Li-PO
550 mm
450 mm
Động cơ DC
Hình 2.4 Mô hình robot hai bánh tự cân bằng
11 2.4 Hệ thống điện trên mô hình robot
2.4.1 Mạch điều khiển Arduino Due
Arduino Due là bo mạch sử dụng vi điều khiển của hãng Atmel SAM3X8E
ARM Cortex-M3 CPU. Đây là bo Arduino đầu tiên dựa trên bộ vi điều khiển lõi
ARM 32-bit. Bo Arduino Due có 54 ngõ vào/ngõ ra là tín hiệu số (trong đó có 12
DC Current for 3.3V Pin
800 mA
DC Current for 5V Pin
800 mA
Flash Memory
512 KB all available for the user applications
SRAM
96 KB (two banks: 64KB and 32KB)
Clock Speed
84 MHz
2.4.2 Mạch điều khiển động cơ
Mạch cầu H dùng IC kích FET chuyên dụng IR2184 cho phép điều khiển động
cơ với dòng liên tục 10A và dòng tức thời lên đến 30A. Mạch này được thiết kế
dành cho các ứng dụng điều khiển tốc độ và vị trí cho động cơ DC.
Hình 2.6 Mạch điều khiển động cơ cầu H
Đặc tính kỹ thuật của mạch:
Dòng liên tục 10A
Dòng đỉnh 30A (200 ms)
Điện áp cấp từ 24V
Có Led báo nguồn cho mạch
Có Led báo chiều động cơ
Bảo vệ ngắn mạch
Dùng IC kích FET chuyên dụng IR2184 13
Hình 2.8 Động cơ DC Planet
Các thông số kỹ thuật của động cơ DC
Bảng 2.4 Thông số kỹ thuật của động cơ DC Planet
Động cơ
DC planet
Điện áp
24V
Công suất
60W
Moment xoắn
63 N.cm
Endcoder
HEDL 5540 12
Kích thước
Trục
Tốc độ chưa qua bộ giảm tốc
9000 vòng/phút
Tốc độ khi đã qua bộ giảm tốc
468 vòng/phút
2.4.5 Nguồn điện
Pin LI-PO được sử dụng làm nguồn cung cấp năng lượng cho robot hoạt động.
15
Hình 2.9 Pin LI-PO sử dụng cho robot
2.5.2 Giao thức I
2
C
Giao thức ưu tiên truyền thông nối tiếp được phát triển bởi Philips
Semiconductor và được gọi là bus I
2
C. Vì nguồn gốc được thiết kế là để điều khiển
liên thông IC (Inter Intergrated Circuit) nên được đặt tên là I
2
C. Tất cả các chip có
tích hợp và tương thích với I
2
C đều có thêm một giao diện tích hợp trên chip để
truyền thông trực tiếp với các thiết bị tương thích I
2
C khác. Việc truyền dữ liệu nối
tiếp theo hai hướng 8 bit được thực thi theo 3 chế độ sau: chuẩn (standard) -
100Kbits/sec, nhanh (fast) - 400Kbits/sec, tốc độ cao (high speed) - 3.4Mbits/sec.
17 Đường bus thực hiện truyền thông nối tiếp I
2
C gồm hai đường là đường truyền dữ
liệu nối tiếp SDA và đường truyền nhịp xung đồng hồ nối tiếp SCL. Vì cơ chế hoạt
động là đồng bộ nên cần có một nhịp xung tín hiệu đồng bộ. Các thiết bị hỗ trợ I
2
C
đều có một địa chỉ định nghĩa trước, trong đó một số bit địa chỉ thấp có thể cấu
hình. Thiết bị khởi tạo quá trình truyền thông là thiết bị chủ và cũng là thiết bị tạo
2
C hỗ trợ cơ chế xác
định địa chỉ.
18
Hình 2.11 Sơ đồ kết nối theo giao thức I
2
C
Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông
qua một điện trở kéo lên (pullup resistor). Sự cần thiết của các điện trở kéo này là
vì chân giao tiếp I
2
C của các thiết bị ngoại vi thường là dạng cực máng hở (open
drain or opencollector). Giá trị của các điện trở này khác nhau tùy vào từng thiết bị
và chuẩn giao tiếp, thường dao động trong khoảng 1KΩ đến 4.7KΩ.
2.5.3 Giao tiếp UART
UART là viết tắt của (Universal Asynchronous Receiver Transmitter). Thường
là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy
tính và các thiết bị ngoại vi. Rất nhiều vi điều khiển hiện nay đã được tích hợp
UART, vì vấn đề tốc độ và độ điện dung của UART không thể so sánh với các giao
tiếp mới hiện nay nên các dòng PC và Laptop đời mới không còn tích hợp cổng
UART.
Cũng như giao tiếp SPI và I
2
C có 1 dây truyền dữ liệu và 1 dây được sử dụng
để truyền xung clock (SCL) để đồng bộ trong giao tiếp. Với UART thì không có
dây SCL, vấn đề được giải quyết khi mà việc truyền UART được dùng giữa hai vi
xử lý với nhau, đồng nghĩa với việc mỗi vi xử lý có thể tự tạo ra xung clock.
20 2.6 Thu thập dữ liệu Hình 2.13 Mô tả hoạt động thu thập dữ liệu
Để thu thập được dữ liệu từ cảm biến thì một trong những UART của bo
Arduino Due được sử dụng. UART đã được chuyển đổi với các thiết bị USB tích
hợp và gửi dữ liệu đến máy tính thông qua cổng USB. Dữ liệu sau đó được hiển thị
trong "Serial monitor" được hỗ trợ bởi phần mềm Arduino và dữ liệu này được sử
dụng để vẽ dạng sóng ngõ ra của cảm biến trên phần mềm Labview.
21 Chương 3
XÂY DỰNG THUẬT TOÁN ĐIỀU
KHIỂN CÂN BẰNG
3.1 Nguyên lý điều khiển cân bằng
sẽ tiếp tục hoạt động như thế nào. Trong một hệ thống phức tạp không phải lúc nào
cũng có thể đo đạc được các biến, bộ lọc Kalman cung cấp thông tin không phải
bằng cách đo trực tiếp mà bằng phương pháp ước lượng giá trị của các biến này và
ước lượng nhiễu phép đo. Bộ lọc Kalman có thể được sử dụng để điều khiển quy
trình sản xuất, máy bay, tàu thủy, tàu vũ trụ và robot. Bộ lọc Kalman được sử dụng
để dự đoán trạng thái tương lai của hệ thống, trạng thái mà con người rất khó hoặc
không thể thực hiện như: dự đoán dòng chảy của các dòng sông trong cơn lũ, giá cả
giao dịch của thực phẩm … [5].
3.2.2 Bộ lọc Kalman rời rạc
3.2.2.1 Quá trình ước lượng
Bộ lọc Kalman đề cập đến bài toán tổng quát nhằm ước lượng trạng thái
của một quá trình được mô hình hóa một cách rời rạc theo thời gian bằng
một phương trình ngẫu nhiên tuyến tính như sau:
(3.1)
Với giá trị đo đạc là
:
trình cập nhật giá trị đo. Phương trình cập nhật thời gian chịu trách nhiệm dự đoán
trước (theo thời gian) sử dụng giá trị hiện tại và hiệp biến số ước lượng để dự đoán
ước lượng tiền nghiệm cho thời điểm kế tiếp. Phương trình cập nhật giá trị đo chịu
trách nhiệm đối với sự phản hồi nghĩa là kết hợp giá trị mới với ước lượng tiền
nghiệm nhằm hiệu chỉnh ước lượng hậu nghiệm.
Phương trình cập nhật thời gian có thể được xem như là phương trình dự đoán,
trong khi phương trình cập nhật phép đo có thể xem như phương trình hiệu chỉnh.
Thật vậy, thuật toán ước lượng cuối cùng rất giống với thuật toán dự đoán, hiệu
chỉnh nhằm giải quyết các vấn đề số như trong Hình 3.2 [5].
24
Hình 3.2 Quy trình của bộ lọc Kalman
Các công thức tương ứng với quá trình cập nhật thời gian được cho trong công
thức (3.5) và (3.6). Công thức tương ứng với quá trình cập nhật phép đo được cho
trong công thức (3.7), (3.8) và (3.9).
(3.5)
(3.8)
(3.9)
Việc đầu tiên trong quá trình cập nhật giá trị đo là tính giá trị độ lợi Kalman,
. Bước kế tiếp là đo giá trị thực của quá trình
và sau đó tìm ra giá trị hậu
nghiệm ước lượng bằng cách kết hợp với kết quả đo như trong công thức (3.8).
Bước cuối cùng là tìm hiệp biến số hậu nghiệm bằng công thức (3.9).
Sau mỗi bước cập nhật thời gian và cập nhật phép đo, quá trình được lặp lại
với ước lượng hậu nghiệm trước đó để dự đoán một ước lượng tiền nghiệm mới.
Quá trình lặp lại tự nhiên này là một đặc điểm khá thu hút của bộ lọc Kalman làm
cho việc xây dựng bộ lọc Kalman dễ thực hiện hơn so với bộ lọc Wiener vốn được
thiết kế để hoạt động trực tiếp trên tất cả các dữ liệu ước lượng. Thay vì vậy, bộ lọc
Kalman tham chiếu các giá trị ước lượng hiện tại với tất cả các phép đo trước đó.