You are on page 1of 50

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.

HỒ CHÍ MINH
KHOA CƠ KHÍ CHẾ TẠO MÁY

BỘ MÔN CƠ ĐIỆN TỬ

ĐỒ ÁN CƠ ĐIỆN TỬ
Đề tài: NGHIÊN CỨU THUẬT TOÁN
TỐI ƯU HÓA QUỸ ĐẠO DI CHUYỂN CHO
ROBOT VẬN CHUYỂN HÀNG HÓA

Giảng viên hướng dẫn: Th.S. LÊ THANH TÙNG

Sinh viên thực hiện: BÙI SĨ THUẬN MSSV: 20146215

ĐẶNG CHÍ PHÚC MSSV: 20146520

TRƯƠNG ĐƯC THẮNG MSSV: 20145196

Lớp: 201461

Khóa: 2020 - 2024


TP.HCM, tháng 1 năm 2024
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA CƠ KHÍ CHẾ TẠO MÁY

BỘ MÔN CƠ ĐIỆN TỬ

ĐỒ ÁN CƠ ĐIỆN TỬ
Đề tài: NGHIÊN CỨU THUẬT TOÁN
TỐI ƯU HÓA QUỸ ĐẠO DI CHUYỂN CHO
ROBOT VẬN CHUYỂN HÀNG HÓA

Giảng viên hướng dẫn: Th.S. LÊ THANH TÙNG

Sinh viên thực hiện: BÙI SĨ THUẬN MSSV: 20146215

ĐẶNG CHÍ PHÚC MSSV: 20146520

TRƯƠNG ĐƯC THẮNG MSSV: 20145196

Lớp: 201461

Khóa: 2020 - 2024


TP.HCM, tháng 1 năm 2024
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HCM CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CƠ KHÍ CHẾ TẠO MÁY Độc lập - Tự do – Hạnh phúc

BỘ MÔN CƠ ĐIỆN TỬ

NHIỆM VỤ ĐỒ ÁN CƠ ĐIỆN TỬ
Học kỳ 1/ năm học 2023-2024

Giảng viên hướng dẫn: Ths. Lê Thanh Tùng


Sinh viên thực hiện:
1. Bùi Sĩ Thuận MSSV: 20146215
2. Đặng Chí Phúc MSSV: 20146520
3. Trương Đức Thắng MSSV: 20145196

1. Tên đề tài: Nghiên cứu thuật toán tối ưu hóa quỹ đạo di chuyển cho robot vận
chuyển hàng hóa

2. Các số liệu, tài liệu ban đầu:

3. Nội dung chính của đồ án:


4. Các sản phẩm dự kiến

5. Ngày giao đồ án:


6. Ngày nộp đồ án:
7. Ngôn ngũ trình bày: Bản báo cáo: Tiếng Anh £ Tiếng Việt R
Trình bày bảo vệ: Tiếng Anh £ Tiếng Việt R

TRƯỞNG KHOA TRƯỞNG BỘ MÔN GIẢNG VIÊN HƯỚNG DẪN


(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)

£ Được phép bảo vệ ………………………………………………..


TÓM TẮT ĐỒ ÁN
MỤC LỤC
NHIỆM VỤ ĐỒ ÁN CƠ ĐIỆN TỬ..........................................................................................................3
TÓM TẮT ĐỒ ÁN.....................................................................................................................................5
MỤC LỤC..................................................................................................................................................6
DANH SÁCH HÌNH ẢNH........................................................................................................................8
DANH SÁCH BẢNG.................................................................................................................................9
DANH SÁCH TỪ VIẾT TẮT.................................................................................................................10
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI...............................................................................................11
1.1.Giới thiệu........................................................................................................................................11
1.2.Lý do chọn đề tài............................................................................................................................11
1.3.Tính cấp thiết của đề tài................................................................................................................11
1.4.Mục tiêu nghiên cứu......................................................................................................................11
1.5.Phương pháp nghiên cứu..............................................................................................................12
CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG................................................................................................13
2.1. Cấu tạo tổng quát của Mobile Robot...........................................................................................13
2.2. Lựa chọn cơ cấu di chuyển...........................................................................................................13
2.3. Tính toán, lựa chọn động cơ.........................................................................................................13
2.3.1. Thông số đầu vào...................................................................................................................13
2.3.2. Cơ sở lí thuyết để chọn động cơ............................................................................................13
2.3.3. Lựa chọn động cơ...................................................................................................................15
2.4. Thiết kế khung, vỏ cho Robot......................................................................................................16
2.5. Các thiết bị điện tử.......................................................................................................................17
2.5.1. STM32F103C8T6 Blue Pill...................................................................................................17
2.5.2.Mạch điều khiển động cơ L298..............................................................................................20
2.5.3. Cảm biến dò line TCRT5000.................................................................................................22
2.5.4. Mạch thu phát sóng RF SPI LORA RA-02 SX1278 433mHz.............................................22
2.5.5. Raspberry Pi 4 Model B........................................................................................................23
2.6. Thiết kế mạch ra chân..................................................................................................................26
2.7. Lựa chọn nguồn............................................................................................................................28
CHƯƠNG 3. HỆ THỐNG ĐIỀU KHIỂN VÀ THUẬT TOÁN............................................................29
3.1. Sơ đồ tổng quan hệ thống điều khiển..........................................................................................29
3.2. Hệ thống điều khiển Robot..........................................................................................................30
3.2.1 Điều khiển động cơ.................................................................................................................30
3.2.2 Điều khiển robot đi theo line..................................................................................................34
CHƯƠNG 4. THUẬT TOÁN..................................................................................................................37
4.1. Các phương pháp thuật toán tìm đường.....................................................................................37
4.1.1. Phương pháp trường thế năng..............................................................................................37
4.1.2. Phương pháp thuật toán di truyền.......................................................................................38
4.1.3. Phương pháp thuật toán BFS................................................................................................39
4.1.4. Thuật toán Dijstra.................................................................................................................40
4.2. Thuật toán Dijkstra vào tìm đường ngắn nhất...........................................................................41
4.3. Ứng đụng thuật toán Dijkstra......................................................................................................43
CHƯƠNG 5. KẾT LUẬN, HƯỚNG PHÁT TRIỂN.............................................................................48
5.1. Kết quả đạt được..........................................................................................................................48
5.2. Hạn chế của đề tài.........................................................................................................................48
5.3 Hướng phát triển...........................................................................................................................49
TÀI LIỆU THAM KHẢO.......................................................................................................................50
DANH SÁCH HÌNH ẢNH
DANH SÁCH BẢNG
DANH SÁCH TỪ VIẾT TẮT
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI

1.1. Giới thiệu


Robot là một loại thiết bị có thể thực hiện những công việc một cách tự động bằng sự điều khiển của
máy tính hoặc các vi mạch điện tử được lập trình. Robot có một trong các đặc điểm sau đây: do con người
sáng tạo ra, có khả năng nhận biết môi trường xung quanh và tương tác với những vật thể trong môi
trường, có khả năng đưa ra các lựa chọn dựa trên môi trường và được điều khiển một cách tự động theo
những trình tự đã được lập trình trước, có thể điều khiển được bằng các lệnh để có thể thay đổi tùy theo
yêu cầu của người sử dụng, có thể di chuyển quay hoặc tịnh tiến theo một hay nhiều chiều và khéo léo
trong vận động.[1]
Robot tự hành (mobile robot) là robot có khả năng tự di chuyển, chúng di chuyển trong môi trường
của chúng, không cố định vào một vị trí thực. Robot tự hành có thể là "tự trị" có nghĩa là chúng có khả
năng điều hướng một môi trường không kiểm soát được mà không cần các thiết bị hướng dẫn vật lý hoặc
cơ điện. Ngoài ra, robot tự hành có thể dựa vào các thiết bị hướng dẫn cho phép nó di chuyển tuyến
đường định hướng được xác định trước trong không gian tương đối được kiểm soát. Nó khác với robot
công nghiệp thường đặt gần cố định và hoạt động bằng các cánh tay. [1]
Robot tự hành đóng vai trò quan trọng trong nhiều lĩnh vực khác nhau, mang lại nhiều lợi ích đối với
cuộc sống hiện đại. Trong lĩnh vực sản xuất và công nghiệp, chúng tăng cường năng suất bằng cách thực
hiện các nhiệm vụ lặp đi lặp lại mà không cần nghỉ ngơi, giảm thiểu chi phí lao động và thời gian. Robot
tự hành có tiềm năng ứng dụng trong rất nhiều lĩnh vực như giáo dục, y tế, giao thông, khám phá..
Robot tự hành đóng vai trò quan trọng trong ngành công nghiệp, mang lại nhiều lợi ích quan trọng.
Bằng cách thực hiện các nhiệm vụ lặp lại mà không yêu cầu sự can thiệp của con người, robot tự hành
không chỉ giúp tăng cường hiệu suất sản xuất mà còn làm cho môi trường làm việc trở nên an toàn hơn,
đặc biệt là trong các điều kiện làm việc nguy hiểm. sự hiện diện của robot tự hành không chỉ làm thay đổi
cảnh quan công nghiệp mà còn mở ra những tiềm năng mới trong việc tối ưu hóa sản xuất và cung ứng.
Chúng đóng vai trò quan trọng trong việc đưa ngành công nghiệp vào kỷ nguyên mới, nâng cao hiệu suất
và sự an toàn trong môi trường làm việc.
1.2. Lý do chọn đề tài
Trong bối cảnh sự phát triển không ngường của khoa học kỹ thuật và nhu cầu của con người ngày
một tăng cao, việc sáng tạo ra những sản phẩm mang lại tiện ích đối với cuộc sống trở nên vô cùng quan
trọng. Xây dựng một robot tự hành, có khả năng thay thế con người trong những công việc nặng nhọc
hàng ngày. Việc sử dụng robot tự hành trong nhà kho không chỉ mang lại những lợi ích về hiệu suất mà
còn làm thay đổi cách chúng ta quản lý và vận hành các quy trình lưu kho. Những robot này không chỉ
nhanh chóng và chính xác trong việc thực hiện các nhiệm vụ vận chuyển, giảm thời gian xử lý đơn hàng
và tăng cường hiệu suất toàn bộ quy trình. Điều này giúp doanh nghiệp tiết kiệm chi phí nhân sự và tăng
tính cạnh tranh trong thị trường.
1.3. Tính cấp thiết của đề tài
Trong điều kiện kinh tế xã hội và khoa học kỹ thuật ngày càng phát triển, thì năng suất lao động luôn
cần phải cải thiện để đáp ứng đủ nhu cầu của con người. Vì vậy, Robot tự hành đóng vai trò quan trọng,
mang lại nhiều lợi ích to lớn. Bằng cách thực hiện các nhiệm vụ lặp lại mà không yêu cầu sự can thiệp
của con người, robot tự hành không chỉ giúp tăng cường hiệu suất sản xuất mà còn làm cho môi trường
làm việc trở nên an toàn hơn, đặc biệt là trong các điều kiện làm việc nguy hiểm.
1.4. Mục tiêu nghiên cứu
Mục tiêu của đồ án này là xây dựng được thuật toán tối ưu hóa quỹ đạo di chuyển cho robot vận
chuyển hàng hóa trong nhà kho.
Trong phạm vi đồ án Cơ Điện Tử, nhóm và giáo viên hướng dẫn đã thống nhất với nhau là hoàn thiện
phần cứng, điều khiển động cơ, lập trình cho robot có thể di chuyển theo line có sẵn và thuật toán đường
đi cho một robot.
1.5. Phương pháp nghiên cứu
Trong đề tài này, nhóm đã kết hợp giữa thực nghiệm song song với nghiên cứu lý thuyết. Về lý
thuyết, nhóm đã tham khảo một số tài liệu về cơ khí, điện-điện tử. Về thực nghiệm, nhóm đã tính toán
thiết kế mô hình, tính toán bộ điều khiển và thuật toán đường đi cho robot.
CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG

2.1. Cấu tạo tổng quát của Mobile Robot


Robot tự hành trong nhà kho được thiết kế gồm có khung cơ khí, cơ cấu chấp hành (động cơ và
bánh xe), mạch điều khiển và các ngoại vi.
2.2. Lựa chọn cơ cấu di chuyển
Hiện nay, các dòng robot tự hành được áp dụng đa dạng các cơ cấu di chuyển khác nhau, với
mỗi cơ câu sẽ sử dụng một loại bánh khác nhau và đều có ưu nhược điểm riêng biệt.
Với yêu cầu của đề tài là tìm thuật toán cho nhiều robot hoạt động và robot di chuyển theo line và
trong môi trường “indoor” nên nhóm sẽ lựa chọn cơ cấu chuyển động gồm 2 bánh chủ động và một
bánh điều hướng nhằm tiết kiệm chi phí. Với ưu nhược điểm của cơ cấu này là:
Ưu Điểm:
- Giá thành rẻ, cấu tạo đơn giản, nhưng vẫn đảm bảo được tính linh hoạt của robot.
- Lực kéo của động cơ được tối ưu sơ với các cơ cấu di chuyển khác và cơ cấu này sử dụng ít
động cơ hơn.
Nhược điểm:
- Chỉ có thể di chuyển trên một trục cố định.
- Dễ xảy ra tình trạng trượt bánh khi vào cua.
2.3. Tính toán, lựa chọn động cơ
2.3.1. Thông số đầu vào
Dựa vào bảng thông số dưới đây để tính toán các thông số cần thiết cho động cơ.

STT Thông số Kí hiệu Giá trị Đơn vị


1 Vận tốc tối đa νmax 0.5 m/s
2 Khối lượng bánh xe m 0,3 kg
3 Bán kính bánh xe R 0,0325 m
4 Khối lượng Robot M 5 kg
6 Hệ số an toàn k 2 -

Bảng 2.1. Thông số đầu vào

2.3.2. Cơ sở lí thuyết để chọn động cơ


Để robot chuyển động, động cơ có sẽ cung cấp momen cho các bánh xe. Bánh xe lúc này chịu
ảnh hưởng đáng kể của khối lượng Robot, ma sát giữa bánh và bề mặt di chuyển. Mô hình toán cho
bánh xe được biểu hiện như sau:
Hình 2.1. Mô hình toán học cho bánh xe chủ động

Trong đó:
I: momen quán tính (kgm2) M: khối lượng Robot (kg)
m: khối lượng bánh xe (kg) a: gia tốc của robot (m/s2)
R: bán kính bánh xe (m) ω: vận tốc góc (rad/s)
𝜏: momen quay của động cơ (Nm) v: vận tóc (m/s)
𝛾: gia tốc góc (rad/s2) P: công suất động cơ (W)
Fms: lực ma sát (N) n: tốc độ của động cơ (vòng/phút)
k: hệ số an toàn

+ Momen quán tính của bánh xe

(2.1)

+ Phương trình cân bằng momen quanh tâm bánh xe

(2.2)

=> (2.3)

+ Điều kiện của momen để bánh xe không bị trượt

(2.4)

+ Phương trình định luật II Newton

(2.5)
+ Từ (2.3) và (2.5) ta có

(2.6)

+ Tốc độ tối đa của động cơ

 (2.7)

+ Công suất của động cơ

 (2.8)

2.3.3. Lựa chọn động cơ


Từ cơ sở lý thuyết ở mục 2.3.2, ta xác định được các thoogn số cần thiết của động cơ:
+ Công suất: P = 2.8 (W)
+ Tốc độ: n = 245 (vòng/phút)
Với các thông số trên ta chọn động cơ GA25-370 có hộp giảm tốc với các thông số ở bảng sau:

Thông số Giá trị


Tốc độ không tải 280 vòng/phút
Công suất động cơ 4.31 W
Dòng tiêu thụ 0.07 A
Điện áp 12 VDC
Encoder 11 xung/1 kênh/1 vòng, 2 kênh A B
Bảng 2.2. Thông số động cơ

Hình 2.2. Động cơ GA25-370 [2]


Hình 2.3. Bản vẽ thiết kế động cơ [2]

2.4. Thiết kế khung, vỏ cho Robot


Khung vỏ của robot không chỉ là một phần trang trí hay làm đẹp mà còn đóng vai trò quan trọng
trong nhiều khía cạnh của chức năng và hiệu suất của robot. Khung vỏ bảo vệ các thành phần nội tại
của robot khỏi tác động của môi trường bên ngoài. Nó giúp ngăn chặn bụi bẩn, ẩm, và các yếu tố khác
từ việc xâm nhập vào bên trong, giữ cho các bộ phận quan trọng của robot hoạt động một cách ổn
định và bền bỉ.
Yêu cầu của nhóm là mô hình robot nên khung được chế tạo với kích thước nhỏ, vừa phải. Khung
được làm bằng công nghệ in 3D với nhựa PLA-FS vì khối lượng nhẹ và có giá thành hợp lí

Hình 2.4. Mô hình 3d của robot


Hình 2.5. Hình thực tế của robot

2.5. Các thiết bị điện tử


2.5.1. STM32F103C8T6 Blue Pill
Kit STM32F103C6 Blue Pill là một sản phẩm phổ biến trong cộng đồng nhà phát triển và người
học lập trình nhúng. Được thiết kế dựa trên vi điều khiển ARM Cortex-M3 STM32F103C6T6, kit này
mang lại sức mạnh tính toán cao và khả năng linh hoạt trong việc phát triển ứng dụng nhúng đa dạng.
STM32F103C6 Blue Pill được biết đến với kích thước nhỏ gọn và giá trị chi phí hiệu quả, làm
cho nó trở thành lựa chọn lý tưởng cho các dự án DIY (tự làm) và các ứng dụng nhúng chuyên sâu.
Kit này thường đi kèm với một loạt các chân GPIO, cổng giao tiếp như USART, I2C, SPI, và nhiều
tính năng khác, tạo điều kiện thuận lợi cho việc kết nối và kiểm soát các thành phần khác nhau.

Hình 2.6. Kit phát triển STM32F103C8T6 [3]

Với khả năng tích hợp các giao thức truyền thông như Wi-Fi, Bluetooth, và LoRa, STM32
F103C8T6 trở thành lựa chọn hàng đầu cho các dự án IoT, từ hệ thống giám sát thông minh đến các
ứng dụng liên quan đến môi trường số. Trong lĩnh vực ô tô, nó thường được tích hợp vào các hệ thống
điều khiển động cơ và giải trí.
STM32F103C8T6 cũng đóng vai trò quan trọng trong lĩnh vực điện tử tiêu dùng, từ đồng hồ
thông minh đến tai nghe không dây và các điều khiển từ xa. Trong ngành công nghiệp, nó được ứng
dụng rộng rãi trong các hệ thống nhúng và điều khiển công nghiệp, đảm bảo sự ổn định và hiệu suất
trong môi trường khắc nghiệt.
Ngoài ra, STM32 F103C8T6 cũng là sự lựa chọn của nhiều ứng dụng y tế, máy in, thiết bị văn
phòng thông minh, và thậm chí trong điều khiển robot và drone. Tính linh hoạt và khả năng tích hợp
của nó đã tạo ra một dấu ấn mạnh mẽ trong thế giới của vi điều khiển và điện tử nhúng.
 Thông số kỹ thuật

Operating voltage 3.3V


Analog inputs 10
Digital I/O pins 37
DC source/sink from I/O
6mA
pins
Flash memory (KB) 64/128
SRAM 20KB
Frequency (clock speed) 72MHz max
Communication I2C, SPI, UART, CAN, USB
Bảng 2.3. Thông số kỹ thuật

 Sơ đồ chân kết nối

Hình 2.7. Sơ đồ chân kết nối [3]


Category Pin Name Details

 3.3V – Regulated output voltage from


Power 3.3V, 5V, the onboard regulator (drawing
GND current is not recommended), can also
be used to supply the chip.
 5V from USB or onboard regulator can
be used to supply the onboard 3.3V
regulator.
 GND – Ground pins

Analog Pins PA0 – PA7 Pins act as ADCs with 12-bit resolution

PB0 – PB1

Input/output PA0 – PA15 37 General-purpose I/O pins.


pins
PB0 – PB15

PC13– PC15

Serial TX1, RX1 UART with RTS and CTS pins

TX2, RX2

TX3, RX3

External PA0 – PA15 All digital pins have interrupt capability


interrupts
PB0 – PB15

PC13– PC15

PWM PA0 – PA3 15 PWM pins total


PA6 – PA10

PB0 - PB1

PB6 – PB9

SPI MISO0, 2 SPI


MOSI0,
SCK0, CS0

MISO1,
MOSI1,
SCK1, CS0

Inbuilt LED PC13 LED to act as a general-purpose GPIO indicator

I2C SCL1, SDA1 Inter-Integrated Circuit communication ports

SCL2, SDA2

CAN CAN0TX, CAN bus ports


CAN0RX

Bảng 2.4. Chân kết nối [3]

2.5.2.Mạch điều khiển động cơ L298


L298 là một vi mạch điều khiển động cơ mạnh mẽ và đa chức năng, thường được sử dụng trong
các ứng dụng điều khiển động cơ đa chiều. Vi mạch này được thiết kế để cung cấp khả năng điều
khiển chính xác và hiệu quả cho động cơ, thích hợp cho nhiều dự án nhúng và điều khiển robot.
L298 tích hợp hai cầu H (H-bridge), cho phép kiểm soát hướng và tốc độ của động cơ một cách
linh hoạt. Với khả năng chịu được dòng lớn, L298 thích ứng cho việc điều khiển cả động cơ DC và
bước (stepper motor), làm cho nó trở thành lựa chọn phổ biến trong các dự án điều khiển robot và ô tô
tự động.
Một ưu điểm quan trọng của L298 là khả năng chịu được điện áp cao, giúp nó hoạt động ổn định
trong nhiều ứng dụng khác nhau.

Hình 2.8. Mạch điều khiển L298 [4]

 Thông số kỹ thuật
- Điện áp hoạt động: 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
 Chân kết nối

Hình 2.9. Chân kết nối L298 [4]

2.5.3. Cảm biến dò line TCRT5000


Thanh 5 cảm biến dò line TCRT5000 Line Follower Sensor được thiết kế với 5 cảm biến hồng
ngoại TCRT5000 xếp thẳng hàng giúp phát hiện được độ tương phản của các màu sắc khác nhau như
đen và trắng, thường được ứng dụng để làm xe robot dò line.

Hình 2.10. Cảm biến TCRT5000 [5]

 Thông số kỹ thuật
- Điện áp hoạt động: 3.3~5VDC
- Khoảng cách phát hiện: 10~15mm.
- Ngõ ra dạng tín hiệu số Digital TTL dễ dàng kết nối với Vi điều khiển.
- Có LED hiện thị ngõ ra cho từng cảm biến.
- Kích thước:19 x 96mm

2.5.4. Mạch thu phát sóng RF SPI LORA RA-02 SX1278 433mHz
Mạch thu phát sóng RF SPI LoRa RA-02 SX1278 433MHz là một mô-đun truyền thông không
dây mạnh mẽ, sử dụng công nghệ LoRa (Long Range) để cung cấp khả năng truyền thông ổn định và
xa phạm vi. Được thiết kế dựa trên chip SX1278 của Semtech, mô-đun này là một công cụ quan trọng
cho các ứng dụng IoT, truyền dữ liệu từ xa và thuật toán mạng không dây.
Tích hợp giao tiếp SPI (Serial Peripheral Interface), RA-02 dễ dàng kết nối với các vi điều khiển
như Arduino, Raspberry Pi, hoặc các hệ thống nhúng khác. Với tần số hoạt động ở 433MHz, nó cung
cấp khả năng truyền thông xa và chống nhiễu tốt, làm cho nó thích hợp cho các ứng dụng yêu cầu
phạm vi truyền thông lớn và độ ổn định cao.
Mạch RA-02 LoRa cung cấp khả năng truyền và nhận dữ liệu ổn định ở các môi trường nhiễu,
giảm độ trễ và tiêu tốn năng lượng thấp. Điều này làm cho nó lựa chọn phổ biến cho việc xây dựng
các dự án thu phát không dây, từ hệ thống giám sát môi trường đến các ứng dụng cảm biến từ xa.
Với khả năng linh hoạt, hiệu suất và chi phí thấp, mạch thu phát sóng RF SPI LoRa RA-02
SX1278 433MHz là một công cụ quan trọng trong thế giới của phát triển IoT và truyền thông không
dây, giúp nhanh chóng và dễ dàng tích hợp kết nối không dây vào các dự án nhúng và ứng dụng trí
tuệ nhân tạo.
Hình 2.11. Mạch thu phát RF LORA SX1278 [6]

 Thông số kỹ thuật
- Chuẩn không dây: 433MHz
- Dải tần số: 420 - 450MHz
- Giao tiếp: SPI / GPIO
- Điện áp hoạt động: 1.8 - 3.7V, mặc định 3.3V
- Nhiệt độ làm việc: -40 đến +85 độ.
 Chân kết nối

Hình 2.12. Chân kết nối SX1278 [6]

2.5.5. Raspberry Pi 4 Model B


Raspberry Pi 4 là một bước tiến đột phá trong dòng sản phẩm máy tính nhúng. Máy tính nhỏ gọn
này được trang bị nhiều tùy chọn bộ nhớ RAM, từ 2GB đến 8GB, giúp nâng cao hiệu suất và khả
năng xử lý dữ liệu. Với cổng HDMI hỗ trợ 4K, người dùng có thể trải nghiệm đồ họa sắc nét và chất
lượng cao, làm cho Raspberry Pi 4 trở thành lựa chọn tuyệt vời cho các dự án đa phương tiện và giáo
dục.
Raspberry Pi 4 được trang bị các cổng kết nối đa dạng như USB 3.0, Gigabit Ethernet, Wi-Fi, và
Bluetooth, tạo điều kiện thuận lợi cho việc kết nối với các thiết bị ngoại vi và mạng. Ngoài ra, GPIO
(General Purpose Input/Output) trên bo mạch mở ra nhiều khả năng mở rộng và tùy chỉnh cho các dự
án nhúng.
Với sức mạnh tích hợp và chi phí thấp, Raspberry Pi 4 không chỉ là một công cụ mạnh mẽ cho
những người muốn tìm hiểu lập trình và điện tử, mà còn là một nền tảng chủ chốt cho các ứng dụng
như máy chủ nhỏ, trạm đa phương tiện, và hệ thống giáo dục. Điều này đã tạo ra một cộng đồng đa
dạng và sáng tạo xung quanh Raspberry Pi, làm cho nó trở thành một trong những sản phẩm nhúng
phổ biến nhất trên thị trường.

Hình 2.12. Raspberry Pi 4 Model B [7]

 Thông số kỹ thuật [7]


- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
- 4GB or 8GB LPDDR4-2400 SDRAM (depending on model)
- 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE
- Gigabit Ethernet
- 2 USB 3.0 ports / 2 USB 2.0 ports
- Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous
boards)
- 2 × micro-HDMI ports (up to 4kp60 supported)
- 2-lane MIPI DSI display port
- 2-lane MIPI CSI camera port
- 4-pole stereo audio and composite video port
- H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode)
- OpenGL ES 3.0 graphics
- Micro-SD card slot for loading operating system and data storage
- 5V DC via USB-C connector (minimum 3A*)
- 5V DC via GPIO header (minimum 3A*)
- Power over Ethernet (PoE) enabled (requires separate PoE HAT)
- Operating temperature: 0 – 50 degrees C ambient
 Chân kết nối

Hình 2.13. Chân kết nối Raspberry Pi 4 Model B [7]


2.6. Thiết kế mạch ra chân
Trong đề tài này vì nhóm sử dụng nhiều thiết bị điện tử nên nhóm đã thiết kế mạch ra chân nhằm
dùm việc đi dây kết nối trở nên dễ dàng hơn và đảm bảo thẩm mỹ.

Hình 2.14. Sơ đồ mạch


Hình 2.15. Bản vẽ PCB
2.7. Lựa chọn nguồn
Để robot có thể tự hành, di chuyển một cách linh hoạt thì cần cấp nguồn điện riêng cho hệ thống.
Nguồn cung cấp cần phải đáp ứng đủ được yêu cầu về điện áp của từng thiết bị. Thông số điện áp của
các thiết bị thể hiện trong bảng dưới:

Điện
Thiết bị
áp (V)
Động cơ 12
STM32F103C8T6 3.3
L298 12
SX1278 3.3
TCRT5000 5

Bảng 2.5. Thông số điện áp

Từ thông số dòng tiêu thụ của các thiết bị, nhóm dùng 4 viên pin cell 18650 2600mAh 3.7V ghép
thành một bộ 14.8V để cấp nguồn cho động cơ. Vì điện áp động cơ cần tối đa là 12V mà điện áp bộ
nguồn là 14,8V nên nhóm chọn băm xung PWM tối đa cho động cơ là 83% để đảm bảo không gây hư
hỏng động cơ.

Hình 2.16. Bộ nguồn


CHƯƠNG 3. HỆ THỐNG ĐIỀU KHIỂN VÀ THUẬT TOÁN
3.1. Sơ đồ tổng quan hệ thống điều khiển
Người dùng sẽ nhập điểm đến cho robot, Raspberry sẽ nhận thông tin và tính toán đưa ra lộ trình
di chuyển phù hợp cho từng robot và gửi xuống vi điều khiển STM32 cho từng robot. Từng robot sẽ
dựa vào dữ liệu đã được xử lí từ Raspberry để di chuyển tới vị trí người dùng muốn

Hình 3.1. Sơ đồ hệ thống điều khiển


3.2. Hệ thống điều khiển Robot

Hình 3.2. Sơ đồ hệ thống điện

3.2.1 Điều khiển động cơ


3.2.1.1 Đọc Encoder chế độ 4X
Encoder gồm 2 pha A, Bb đặt lệch nhau 90o để xác định số vòng quay.

Hình 3.3. Giản đồ xung Clock Encoder [8]

Quy ước khi động cơ quay theo chiều thuận thì pha A sớm hơn pha B và ngược lại. Có ba chế độ
đọc xung Encoder là x1, x2, x4. Chế độ x1 chỉ đọc cạnh lên của pha A. Chế độ x2 đọc cạnh lên và
cạnh xuống của pha A. Chế độ x4 sẽ đọc cạnh lên và cạnh xuống của pha A và pha B. Đây cũng là
chế độ cho độ phân giải cao nhất.
Pha A sớm hơn pha B, khi A có cạnh lên thì B sẽ ở cạnh xuống và ngược lại. Khi quay thuận thì
biến đếm ở các chế độ tăng lên một tại các thời điểm đọc được và ngược lại. Từ lý thuyết đọc
Encoder trên, ta thấy rằng việc đọc xung Encoder cho những loại Encoder có 𝑃𝑃𝑅 lớn với phương
pháp sử dụng ngắt ngoài bắt cạnh hai pha A và B sẽ rất tốn thời gian xử lý. Ngoài ra còn có các yếu tố
khác ảnh hưởng đến quá trình đọc như nhiễu trên đường truyền, méo dạng xung…sẽ gây ra sai số. Để
khắc phục khuyết điểm trên, nhóm quyết định sử dụng timer để đọc xung Encoder.
3.2.1.2 Điều khiển vận tốc động cơ bằng thuật toán PID

Hình 3.4. Sơ đồ thuật toán PID [8]

PID, viết tắt của Proportional-Integral-Derivative, là một hệ thống điều khiển tự động được ứng
dụng phổ biến trong nhiều lĩnh vực công nghiệp và tự động hóa. Điều khiển PID hoạt động dựa trên
việc đánh giá sự chênh lệch giữa giá trị đặt trước và giá trị thực tế của biến điều khiển, và từ đó tinh
chỉnh đầu ra của hệ thống để đạt được hiệu suất tốt nhất.
PID Controller được áp dụng trong nhiều hệ thống điều khiển như điều khiển nhiệt độ, điều khiển
động cơ, và quy trình sản xuất công nghiệp. Khả năng tinh chỉnh các hệ số P, I, và D giúp người điều
khiển đạt được sự ổn định và đáp ứng mong muốn, làm cho PID trở thành một công cụ quan trọng
trong lĩnh vực tự động hóa và điều khiển tự động.
Để có thể điều khiển được đối tượng PID phải lấy được giá trị đầu ra của hệ thống. Sau đó so
sánh với giá trị đặt từ đó tìm ra sai số e. PID xử lý sai số e để tìm ra tác động u tác động vào đối
tượng, giúp cho ra trị ngõ ra y bám theo giá trị đặt (Setpoint) ban đầu.
Bộ điều khiển PID gồm 3 khâu điều khiển gồm: Tỉ lệ (P), tích phân (I) và vi phân (D).
Ngõ ra của bộ điều khiển PID chính là tổng ngõ ra của ba khâu:

Khâu tỉ lệ là tích giữa sai số hiện tại với độ lợi Kp:

Trong đó:
- Pout: thừa số tỉ lệ của đầu ra
- Kp: độ lợi tỉ lệ
- e: sai số
- t: thời gian tức thời
Khâu tích phân là tích giữa tổng sai số tức thời theo thời gian với độ lợi KI:
Trong đó:
- Iout: thừa số tích phân của đầu ra
- KI: độ lợi tích phân
- 𝜏: biến tích phân trung gian
Khâu vi phân là tích giữa độ dốc sai số theo thời gian với độ lợi vi phân K D:

Trong đó:
- Dout: thừa số vi phân của đầu ra
- KD: độ lợi vi phân
Vậy ngõ ra tác động là:

Hàm truyền của bộ điều khiển PID liên tục:

Sự phát triển của các hệ thống điều khiển nên cần có những bộ điều khiển rời rạc. Do đó thuật
toán điều khiển PID rời rạc cũng được sử dụng rộng rãi. Chuyển đổi về miền thời gian rời rạc cho
từng khâu như sau:
Khâu tỉ lệ:

Khâu tích phân:

Khâu vi phân:

Với T là chu kì lấy mẫu theo thời gian (s). Từ đó có ngõ ra tác động u(kT) là:

3.2.1.3 Phương pháp xác định bộ thông số PID


Trong đồ án này, nhóm đã sử dụng phương pháp bán thực nghiệm Cohen Coon để tìm ra bộ PID
phù hợp cho điều khiển động cơ với các bước như sau:
 Bước 1: Tiến hành chạy thực nghiệm, từ đó có được đồ thị vận tốc theo thời gian.

Hình 3.5. Đồ thị vận tốc và thời gian

 Bước 2: Từ đồ thị thu được tính toán độ lợi K và thời gian đáp ứng 𝜏 .
Độ lợi K được tính bằng tỉ lệ giữa ΔCV(Controlled Valuable) và ΔMV(Manipulated
Valuable)
Thời gian đáp ứng 𝜏 diễn tả độ trễ của hệ thống trong quá trình đáp ứng đối với biến đầu
vào.
𝜏 = 𝜏63,2 – 𝜏0

 Bước 3: Tính toán hệ số của các khâu P, I, D theo phương pháp Cohen Coon.

 Bước 4: Thêm Anti-windup ở khâu I và Lowpass filter ở khâu D để hạn chế Overshoot và lọc
nhiễu.
Hàm truyền PID của 2 bánh xe lần lượt là
24.6973
G1(s) = 2.6105 + s + 0.2759*s
35.81
G2(s) = 2.0053 + s + 0.1123*s

3.2.2 Điều khiển robot đi theo line


Trong robot dò đường line, PID Controller thường được sử dụng để điều khiển và duy trì vị trí
của robot trên đường line một cách chính xác. Hệ thống PID sẽ đánh giá sự chênh lệch giữa vị trí hiện
tại của robot và đường line, và điều chỉnh tốc độ và hướng di chuyển để đưa robot về lại tâm đường
line một cách ổn định và chính xác.
+ Giá trị tỉ lệ (P) xác định độ lệch của hiện tại.
+ Giá trị tích phân (I) xác định tác động của tổng các độ lệch trước đó.
+ Giá trị đạo hàm (D) giá trị vi phân xác định tác động của tốc độ biến đổi độ lệch (Nghĩa là xác
định xem Robot đang đi ra khỏi line một cách nhanh hay chậm ) từ đó dự đoán độ lệch tương lai.

Hình 3.6. Sơ đồ thuật toán PID

Từ trên, ta có thuật toán để tính giá trị điều khiển:

Hình 3.7. Sơ đồ thuật toán PID

 e là độ lệch hiện tại


 e0 là độ lệch của lần trước đó
 I là độ lệch của toàn bộ quá trình (tích phân)
 D là xu hướng lệch (vi phân)
Khi giá trị cảm biến trả về so với setpoint là giá trị cảm biến khi xe thẳng làn có độ lệch thì error được
tính là : setpoint - current . Nếu xe lệch trái giá trị cảm biến trả về nhỏ hơn setpoint nên error mang
giá trị dương, ngược lại khi xe lệch sang phải thì error trả về giá trị âm, dựa vào độ lệch ta sẽ tính toán
ra giá trị pwm output của hàm pid và cộng trừ thêm vào giá trị pwm gốc ứng với từng động cơ.
Ta sử dụng phương pháp Ziegler-Nichols để tìm thông số Kp, Ki, Kd

Hình 3.8. Sơ đồ thuật toán PID


Các bước xác định các hệ số k của từng khâu P, I, D theo phương pháp Ziegler Nichols:
- xây dựng phương trình hàm truyền tổng quát với đầu vào là giá trị trả về của cảm biến được
biến đổi thành một giá trị thể hiện trạng thái theo làn của xe tương ứng. Đầu ra của hàm là biến
thêm hoặc số số xung PWM cấp cho từng động cơ để tăng giảm tốc độ mỗi bánh xe để xe duy trì
trạng thái mong muốn.
- Tăng dần giá trị Kp ở khâu tỉ lệ và gán giá trị cho 2 hệ số ki và kd là 0. Tinh chỉnh hệ số kp đến
khi xe dao động điều hòa qua lại giữa làn theo một chu kì cố định. Lúc này K là hệ số giới hạn để
xe đạt trạng thái điều hòa.
- Áp dụng phương pháp Zigler Nichols ta tính được các hệ số kp, ki, kd theo công thức:

Trong đó:
Ku là hệ số tỉ lệ giới hạn để xe dao động điều hòa quanh vị trí mong muốn

𝜏u là chu kì dao động


- Sau khi thay thế các hệ số tính được vào hàm truyền PID đã xây dựng trước đó, tiến hành thực
nghiệm để giám sát đáp ứng của hệ với các hệ số tính được đã dạt yêu cầu chưa, qua đó tinh giảm
để hệ thống đáp ứng tốt hơn.
- Khi hệ thống đã đáp ứng với độ chính xác và thời gian đáp ứng mong muốn, ta có được hệ số k
cho 3 khâu và hàm truyền PID cho hệ thống đáp ứng theo làn như sau:
kp = 0.09;
ki = 1.8;
kd = 0.01125;

Hàm truyền:

1.8
G(s) = 0.09 + s + 0.01125*s


CHƯƠNG 4. THUẬT TOÁN
4.1. Các phương pháp thuật toán tìm đường
4.1.1. Phương pháp trường thế năng
Thuật toán trường thế năng (Potential Field) là một thuật toán trong lĩnh vực robot tự động hóa và
điều khiển, được sử dụng để điều khiển chuyển động của robot trong môi trường chứa các vật cản. Ý
tưởng cơ bản của thuật toán là tạo ra một trường thế năng xung quanh robot và các vật cản, trong đó
robot được thúc đẩy đi theo hướng giảm giá trị của trường thế năng. Thuật toán Potential Field sử
dụng hai loại trường thế năng: trường thế năng hấp dẫn (attractive potential field) và trường thế năng
đẩy (repulsive potential field). Trường thế năng hấp dẫn được sử dụng để tạo ra một lực hướng về
mục tiêu, trong khi trường thế năng đẩy được sử dụng để tạo ra một lực đẩy từ các vật cản xung
quanh robot.
Khi áp dụng thuật toán Potential Field, robot sẽ tính toán các lực hấp dẫn và đẩy từ trường thế
năng và sử dụng chúng để điều khiển chuyển động của mình. Cụ thể, robot sẽ cảm nhận môi trường
xung quanh thông qua các cảm biến và tính toán các lực hấp dẫn điều khiển robot tiến gần mục tiêu
và các lực đẩy để tránh các vật cản. Một ưu điểm của thuật toán Potential Field là tính đơn giản và
tính linh hoạt trong việc xử lý các tình huống phức tạp trong môi trường. Nó cũng cho phép robot di
chuyển một cách mượt mà và tự nhiên trong môi trường có nhiều vật cản.
Tuy nhiên, thuật toán Potential Field cũng có một số hạn chế. Ví dụ, trong một số tình huống,
robot có thể bị mắc kẹt trong các vùng cận mục tiêu hoặc các vùng trường thế năng đẩy quá mạnh có
thể khiến robot tránh xa các vật cản quá xa mục tiêu. Ngoài ra, thuật toán cũng không đảm bảo tìm
được lời giải tối ưu trong mọi trường hợp.
Ưu điểm:
- Đơn giản: Thuật toán Potential Field có tính đơn giản trong cách triển khai và hiểu quả
trong việc điều khiển chuyển động của robot. Với một số lượng nhỏ các thông số và quy tắc, thuật
toán có thể được triển khai nhanh chóng.
- Tính linh hoạt và dễ tùy chỉnh: Potential Field cho phép dễ dàng tùy chỉnh các trường thế
năng để ứng phó với các tình huống cụ thể và các yêu cầu cụ thể của môi trường. Điều này cho phép
thuật toán được áp dụng trong nhiều loại môi trường và ứng dụng khác nhau.
- Tốc độ tính toán: Potential Field có thể được tính toán nhanh chóng, vì các lực hấp dẫn
và đẩy chỉ phụ thuộc vào khoảng cách tới mục tiêu và vật cản gần nhất. Do đó, thuật toán thích hợp
cho các ứng dụng có yêu cầu về tốc độ xử lý thời gian thực.
- Điều khiển mượt mà: Potential Field tạo ra một lực hấp dẫn liên tục hướng về mục tiêu
và các lực đẩy từ các vật cản xung quanh. Điều này giúp robot di chuyển một cách mượt mà và tự
nhiên trong môi trường có vật cản.
Nhược điểm:
- Mắc kẹt và cận mục tiêu: Trong một số trường hợp, robot có thể bị mắc kẹt trong các
vùng cận mục tiêu, trong đó lực hấp dẫn vượt quá lực đẩy từ các vật cản. Điều này có thể làm cho
robot không thể tiến gần đến mục tiêu hoặc không thể thoát khỏi vùng mắc kẹt.
- Không đảm bảo lời giải tối ưu: Potential Field không đảm bảo tìm ra lời giải tối ưu trong
tất cả các trường hợp. Do thuật toán chỉ xem xét các lực hấp dẫn và đẩy từ mục tiêu và vật cản gần
nhất, nó có thể không tìm ra lời giải tối ưu từ một quỹ đạo chuyển động toàn cục.
- Dễ bị ảnh hưởng bởi vật cản động: Potential Field không xử lý tốt các tình huống khi có
các vật cản động trong môi trường. Vì thuật toán chỉ tính toán các lực từ trạng thái hiện tại của các vật
cản, nó có thể không đủ nhạy bén để phản ứng với các vật cản đột ngột di chuyển.
- Độ phức tạp của bài toán: Trong một số môi trường phức tạp, thuật toán Potential Field
có thể gặp khó khăn trong việc tìm ra lời giải chính xác và hiệu quả. Điều này đặc biệt đúng khi có
nhiều vật cản gần nhau hoặc khi mục tiêu nằm trong một vùng phức tạp của môi trường.
Tổng quan, Potential Field là một thuật toán đơn giản và dễ triển khai, có tính linh hoạt vàTính
tùy chỉnh cao, và có tốc độ tính toán nhanh. Tuy nhiên, nó cũng có một số hạn chế, bao gồm khả năng
bị mắc kẹt và cận mục tiêu, không đảm bảo tìm lời giải tối ưu trong mọi trường hợp, dễ bị ảnh hưởng
bởi vật cản động, và gặp khó khăn trong môi trường phức tạp.
4.1.2. Phương pháp thuật toán di truyền
Phương pháp thuật toán di truyền (Genetic Algorithm) là một thuật toán tìm kiếm và tối ưu được
lấy cảm hứng từ quá trình tiến hóa trong tự nhiên. Thuật toán di truyền sử dụng các khái niệm như cá
thể, gen, quần thể, lai ghép và đột biến để tìm ra giải pháp tốt nhất cho một vấn đề tối ưu hóa.
Cơ bản, thuật toán di truyền hoạt động như sau:
Khởi tạo quần thể: Ban đầu, một quần thể ban đầu gồm nhiều cá thể (giải pháp) được tạo ra ngẫu
nhiên. Mỗi cá thể thường được biểu diễn bằng một chuỗi gen, có thể là một vectơ số, một chuỗi ký tự
hoặc các biểu diễn khác tùy thuộc vào bài toán cụ thể.
Đánh giá cá thể: Mỗi cá thể trong quần thể được đánh giá bằng một hàm mục tiêu (hàm fitness)
để đo lường chất lượng của giải pháp tương ứng với cá thể đó. Hàm fitness thường được thiết kế để
đo lường mục tiêu tối ưu của bài toán.
Lựa chọn quần thể: Các cá thể tốt nhất (có giá trị fitness cao nhất) được chọn để tiếp tục vào thế
hệ tiếp theo. Quá trình lựa chọn có thể dựa trên các phương pháp như chọn theo tỷ lệ phần trăm, chọn
theo hạng bậc hoặc chọn theo giải pháp roulette-wheel.
Lai ghép (Crossover): Các cá thể được chọn để lai ghép tạo ra một thế hệ mới của quần thể. Quá
trình lai ghép kết hợp các gen của hai cá thể cha mẹ để tạo ra các cá thể con mới. Các phương pháp
lai ghép phổ biến bao gồm một điểm cắt (single-point crossover) hoặc nhiều điểm cắt (multi-point
crossover).
Đột biến (Mutation): Một số gen trong quần thể mới có thể bị đột biến (mutation) một cách ngẫu
nhiên. Quá trình đột biến thay đổi một gen trong cá thể để tạo ra sự đa dạng và khám phá thêm không
gian tìm kiếm.
Tiến hóa thế hệ: Quá trình lựa chọn, lai ghép và đột biến được lặp lại cho đến khi đạt
được tiêu chuẩn dừng (ví dụ: số thế hệ, giá trị fitness đủ cao, hoặc thời gian chạy).
Kết quả: Kết quả cuối cùng của thuật toán di truyền là cá thể tốt nhất tìm thấy trong quần
thể cuối cùng. Đây là giải pháp tối ưu (hoặc gần tối ưu) cho bài toán tối ưu hóa.
Ưu điểm của thuật toán di truyền bao gồm khả năng tìm kiếm trên không gian tìm kiếm lớn, khả
năng tìm giải pháp gần tối ưu, tính song song và khả năng áp dụng cho các bài toán phức tạp. Tuy
nhiên, thuật toán di truyền có thể gặp khó khăn khi đối mặtvới các bài toán có không gian tìm kiếm
liên tục và liên tục, hoặc khi hàm mục tiêu không liên tục. Một số cải tiến và biến thể của thuật toán
di truyền đã được phát triển để xử lý những hạn chế này, bao gồm thuật toán di truyền nhanh (Fast
Genetic Algorithm), thuật toán di truyền hạt nhân (Genetic Algorithm with Elite Particle Swarm
Optimization), và thuật toán di truyền đa mục tiêu (Multi-Objective Genetic Algorithm).
4.1.3. Phương pháp thuật toán BFS
Phương pháp thuật toán BFS (Breadth-First Search) là một thuật toán tìm kiếm đồ thị rất cơ bản
và phổ biến. Thuật toán BFS được sử dụng để tìm kiếm qua các đỉnh của đồ thị theo chiều rộng, từ
đỉnh xuất phát và duyệt qua tất cả các đỉnh có thể đạt được từ đỉnh xuất phát.
Cơ bản, thuật toán BFS hoạt động như sau:
Khởi tạo: Chọn một đỉnh xuất phát và khởi tạo hàng đợi (queue) rỗng. Đánh dấu đỉnh xuất phát là
đã được thăm và đưa nó vào hàng đợi.
Lặp lại cho đến khi hàng đợi trống:
Lấy một đỉnh từ đầu hàng đợi.
Kiểm tra các đỉnh kề (các đỉnh kết nối trực tiếp với đỉnh hiện tại) chưa được thăm. Đánh dấu các
đỉnh này là đã được thăm và đưa chúng vào hàng đợi.
Kết quả: Khi thuật toán BFS kết thúc, tất cả các đỉnh đã được thăm theo thứ tự tăng dần của
khoảng cách từ đỉnh xuất phát. Điều này có nghĩa là thuật toán đã tìm ra một đường đi ngắn nhất từ
đỉnh xuất phát đến tất cả các đỉnh đã được thăm.
Thuật toán BFS thường được sử dụng để tìm kiếm đường đi ngắn nhất trong đồ thị không có
trọng số hoặc trọng số bằng nhau trên các cạnh. Nó cũng có thể được sử dụng để kiểm tra tính liên
thông của đồ thị, tìm kiếm trong các cấu trúc dữ liệu như cây và đồ thị, và giải quyết một số bài toán
khác như tìm kiếm trong trò chơi, kiểm tra đồ thị hai phía (bipartite graph) và kiểm tra chu trình trong
đồ thị. Ưu điểm của thuật toán BFS bao gồm tính đơn giản và dễ hiểu, khả năng tìm kiếm đường đi
ngắn nhất (khi không có trọng số) và tính toàn diện (duyệt qua tất cả các đỉnh có thể đạt được từ đỉnh
xuất phát). Tuy nhiên, độ phức tạp của thuật toán BFS là O(V + E), trong đó V là số đỉnh và E là số
cạnh của đồ thị. Điều này có nghĩa là thuật toán BFS có thể trở nên chậm khi áp dụng cho đồ thị lớn.
Ưu điểm:
- Tìm kiếm đường đi ngắn nhất: BFS tìm kiếm qua các đỉnh theo chiều rộng, vì vậy nó có
khả năng tìm ra đường đi ngắn nhất từ đỉnh xuất phát đến mọi đỉnh được tìm thấy. Điều này rất hữu
ích trong nhiều bài toán tìm kiếm và định tuyến.
- Độ toàn diện: BFS duyệt qua tất cả các đỉnh có thể đạt được từ đỉnh xuất phát. Điều này
đảm bảo rằng nếu có một đường đi từ đỉnh xuất phát đến đỉnh đích, BFS sẽ tìm ra đường đi đó.

- Dễ hiểu và triển khai: Thuật toán BFS có cấu trúc đơn giản và dễ hiểu. Nó có thể được
triển khai một cách đơn giản bằng cách sử dụng một hàng đợi (queue) để lưu trữ các đỉnh đang được
duyệt.
- Kiểm tra tính liên thông: BFS có thể được sử dụng để kiểm tra tính liên thông của đồ thị.
Nếu BFS duyệt qua tất cả các đỉnh trong đồ thị, thì đồ thị được coi là liên thông.
Nhược điểm:
- Độ phức tạp không gian: Thuật toán BFS cần lưu trữ tất cả các đỉnh trong hàng đợi, điều
này đòi hỏi một lượng bộ nhớ đáng kể. Với đồ thị lớn hoặc không gian bộ nhớ hạn chế, điều này có
thể tạo ra vấn đề.
- Độ phức tạp thời gian: Độ phức tạp thời gian của thuật toán BFS là O(V + E), trong đó V
là số đỉnh và E là số cạnh của đồ thị. Điều này có nghĩa là thời gian thực thi của thuật toán có thể tăng
lên đáng kể với đồ thị lớn.
- Không giải quyết được vấn đề trọng số: BFS không thích hợp cho các đồ thị có trọng số
trên các cạnh. Thuật toán này không xem xét trọng số của các cạnh, nên không thể tìm kiếm đường đi
ngắn nhất trong các đồ thị có trọng số khác nhau trên các cạnh.
- Không phù hợp cho đồ thị vô hạn: Trong trường hợp đồ thị vô hạn, BFS sẽ không bao giờ
kết thúc vì nó sẽ không bao giờ duyệt qua toàn bộ đồ thị.
4.1.4. Thuật toán Dijstra
Thuật toán Dijkstra là một thuật toán tìm kiếm đường đi ngắn nhất từ một đỉnh xuất phát đến tất
cả các đỉnh khác trong một đồ thị có trọng số không âm. Thuật toán này được đặt theo tên của nhà
toán học Edsger W. Dijkstra và được sử dụng rộng rãi trong các ứng dụng liên quan đến định tuyến và
tìm kiếm đường đi trong mạng.
Cơ bản, thuật toán Dijkstra hoạt động như sau:
Khởi tạo: Chọn đỉnh xuất phát và gán khoảng cách từ đỉnh xuất phát đến chính nó là 0. Đặt các
khoảng cách từ đỉnh xuất phát đến tất cả các đỉnh khác là vô cùng (hoặc giá trị lớn nhất có thể).
Lặp lại cho đến khi tất cả các đỉnh đều được xét:
Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát.
Đánh dấu đỉnh này là đã xét.
Cập nhật khoảng cách từ đỉnh xuất phát đến các đỉnh kề chưa xét thông qua đỉnh đang xét. Nếu
khoảng cách mới nhỏ hơn khoảng cách hiện tại, cập nhật khoảng cách mới và đỉnh cha.
Kết quả: Khi thuật toán Dijkstra kết thúc, ta có thể xây dựng đường đi ngắn nhất từ đỉnh xuất phát
đến bất kỳ đỉnh nào bằng cách theo dấu của các đỉnh cha đã lưu trữ trong quá trình thuật toán.
Thuật toán Dijkstra đảm bảo tìm ra đường đi ngắn nhất từ đỉnh xuất phát đến tất cả các đỉnh còn
lại trong đồ thị có trọng số không âm. Nó cũng có thể được sử dụng để tìm đường đi ngắn nhất từ
đỉnh xuất phát đến một đỉnh đích cụ thể.
Ưu điểm:
- Tìm kiếm đường đi ngắn nhất: Thuật toán Dijkstra đảm bảo tìm kiếm đường đi ngắn nhất
từ đỉnh xuất phát đến tất cả các đỉnh còn lại trong đồ thị có trọng số không âm.
- Độ chính xác: Kết quả trả về từ thuật toán Dijkstra là chính xác, không bỏ sót đường đi
ngắn nhất.
Nhược điểm:
- Độ phức tạp thời gian: Độ phức tạp thời gian của thuật toán Dijkstra là O(V^2), trong đó
V là số đỉnh của đồ thị. Điều này có nghĩa là thời gian thực thi của thuật toán có thể tăng lên đáng kể
với đồ thị lớn. Tuy nhiên, có thể cải thiện độ phức tạp thời gian bằng cách sử dụng cá8c cấu trúc dữ
liệu như hàng đợi ưu tiên (priority queue) để lưu trữ các đỉnh theo thứ tự tăng dần của khoảng cách.
- Không xử lý được trọng số âm: Thuật toán Dijkstra không hoạt động đúng nếu đồ thị có
cạnh có trọng số âm. Trong trường hợp này, thuật toán Bellman-Ford hoặc thuật toán tìm kiếm A* có
thể được sử dụng thay thế.
- Độ phức tạp không gian: Thuật toán Dijkstra yêu cầu lưu trữ khoảng cách từ đỉnh xuất
phát đến tất cả các đỉnh khác trong đồ thị. Vì vậy, nếu đồ thị quá lớn, thuật toán có thể tiêu tốn một
lượng bộ nhớ lớn.
Kết luận: thuật toán Dijkstra là một thuật toán quan trọng trong tìm kiếm đường đi ngắn nhất. Nó
có thể tìm kiếm đường đi ngắn nhất từ một đỉnh xuất phát đến tất cả các đỉnh khác trong đồ thị có
trọng số không âm. Tuy nhiên, nó có nhược điểm về độ phức tạp thời gian và không xử lý được trọng
số âm.
4.2. Thuật toán Dijkstra vào tìm đường ngắn nhất
Để áp dụng thuật toán Dijkstra cho bài toán tìm đường đi ngắn nhất, chúng ta cần một đồ thị có
trọng số không âm và một đỉnh xuất phát. Bài toán thường yêu cầu tìm đường đi ngắn nhất từ đỉnh
xuất phát đến một đỉnh đích cụ thể. Dưới đây là quy trình áp dụng thuật toán Dijkstra:
 Khởi tạo: Thiết lập khoảng cách từ đỉnh xuất phát đến chính nó là 0 và khoảng cách từ
đỉnh xuất phát đến các đỉnh khác là vô cùng (hoặc giá trị lớn nhất có thể). Đặt đỉnh xuất
phát là đỉnh hiện tại.
 Lặp lại cho đến khi tất cả các đỉnh trong đồ thị đều được xét:
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Ban đầu, đỉnh xuất
phát sẽ được chọn.
 Đánh dấu đỉnh này là đã xét.
 Cập nhật khoảng cách từ đỉnh xuất phát đến các đỉnh kề chưa được xét thông qua đỉnh
đang xét. Nếu khoảng cách mới nhỏ hơn khoảng cách hiện tại, cập nhật khoảng cách mới
và đỉnh cha.
 Kết quả: Khi thuật toán Dijkstra kết thúc, ta có thể xây dựng đường đi ngắn nhất từ đỉnh
xuất phát đến đỉnh đích bằng cách theo dấu của các đỉnh cha đã lưu trữ trong quá trình
thuật toán.
Ví dụ, giả sử chúng ta có một đồ thị vô hướng với các đỉnh A, B, C, D, E và F, và các trọng số
tương ứng như sau:
(A, B): 4
(A, C): 2
(B, D): 5
(C, D): 1
(C, E): 6
(D, E): 3
(D, F): 8
(E, F): 2
Giả sử chúng ta muốn tìm đường đi ngắn nhất từ đỉnh A đến đỉnh F bằng thuật toán Dijkstra. Quá
trình áp dụng thuật toán sẽ diễn ra như sau:
 Khởi tạo: Đặt khoảng cách từ A đến chính nó là 0 và khoảng cách từ A đến các đỉnh khác
là vô cùng. Đặt đỉnh hiện tại là A.
 Lặp lại cho đến khi tất cả các đỉnh đều được xét:
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Ban đầu, A sẽ được
chọn.
 Đánh dấu A là đã xét.
 Cập nhật khoảng cách từ A đến các đỉnh kề chưa được xét thông qua A:
 Khoảng cách từ A đến B là 4 (từ A đến B trực tiếp).
 Khoảng cách từ A đến C là 2 (từ A đến C trực tiếp).
 Cập nhật đỉnh cha cho B và C là A.
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Lần này, C sẽ được
chọn.
 Đánh dấu C là đã xét.
 Cập nhật khoảng cách từ A đến các đỉnh kề chưa được xt thông qua C:
 Khoảng cách từ A đến D là 3 (từ A đến C rồi từ C đến D).
 Khoảng cách từ A đến E là 8 (từ A đến C rồi từ C đến E).
 Cập nhật đỉnh cha cho D và E là C.
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Lần này, B sẽ được
chọn.
 Đánh dấu B là đã xét.
 Cập nhật khoảng cách từ A đến các đỉnh kề chưa được xét thông qua B:
 Khoảng cách từ A đến D là 3 (từ A đến B rồi từ B đến D).
 Khoảng cách từ A đến E là 7 (từ A đến B rồi từ B đến E).
 Cập nhật đỉnh cha cho D và E là B.
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Lần này, D sẽ được
chọn.
 Đánh dấu D là đã xét.
 Cập nhật khoảng cách từ A đến các đỉnh kề chưa được xét thông qua D:
 Khoảng cách từ A đến E là 6 (từ A đến C rồi từ C đến D rồi từ D đến E).
 Khoảng cách từ A đến F là 11 (từ A đến C rồi từ C đến D rồi từ D đến F).
 Cập nhật đỉnh cha cho E và F là D.
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Lần này, E sẽ được
chọn.
 Đánh dấu E là đã xét.
 Cập nhật khoảng cách từ A đến đỉnh kề chưa được xét thông qua E:
 Không có đỉnh kề chưa được xét thông qua E.
 Chọn đỉnh chưa được xét có khoảng cách nhỏ nhất từ đỉnh xuất phát. Lần này, không còn
đỉnh nào được chọn.
 Kết quả: Khi thuật toán Dijkstra kết thúc, ta có thể xây dựng đường đi ngắn nhất từ A
đến F bằng cách theo dấu của các đỉnh cha đã lưu trữ trong quá trình thuật toán. Trong ví
dụ này, đường đi ngắn nhất từ A đến F là A -> C -> D -> F, với khoảng cách là 11.
4.3. Ứng đụng thuật toán Dijkstra

Hình 5.1. Sơ đồ nhà kho

Dựa vào sơ đồ nhà kho thực tế, nhóm đã tự vẽ lại mô hình nhà kho mới để tối ưu hóa quá trình
quản lý, lưu trữ và vận chuyển hàng hóa để phù hợp với việc mô phỏng và viết thuật toán. Mô hình
nhà kho mới này được thiết kế dựa trên các nguyên tắc và phương pháp hiện đại trong lĩnh vực quản
lý chuỗi cung ứng và logistics.
Mô hình nhà kho mới tập trung vào việc tối đa hóa hiệu suất và giảm thiểu thời gian và công sức
trong quá trình xử lý hàng hóa. Đầu tiên, nhóm đã xác định các khu vực lưu trữ phù hợp, dựa trên tần
suất sử dụng và tính khả dụng của các mặt hàng. Những mặt hàng có tần suất sử dụng cao sẽ được đặt
gần khu vực xuất nhập hàng và được lưu trữ dễ dàng truy cập
Ngoài ra, nhóm đã áp dụng các nguyên tắc của quy trình đặt hàng hiện đại để tối ưu hóa việc vận
chuyển hàng hóa trong nhà kho. Điều này bao gồm việc xác định các tuyến đường tối ưu để di chuyển
hàng hóa từ khu vực lưu trữ đến các khu vực khác trong nhà kho. Bằng cách sử dụng thuật toán
Dijkstra hoặc các phương pháp tối ưu hóa tương tự, nhóm đã xác định các tuyến đường ngắn nhất và
hiệu quả nhất để robot có thể giảm thiểu thời gian và công sức trong việc di chuyển hàng hóa.
Tổng quan, mô hình nhà kho mới dựa vào sơ đồ nhà kho đã được thay đổi và cải tiến để tối ưu
hóa quá trình quản lý, lưu trữ và vận chuyển hàng hóa, mô phỏng và viết thuật toán. Bằng cách áp
dụng các nguyên tắc và phương pháp tìm hiểu để robot đạt được hiệu suất cao, tiết kiệm thời gian và
tối ưu hóa tài nguyên trong hoạt động của nhà kho.
Hình 5.2. Bản đồ của mô hình nhà kho

Giải thích về sơ đồ:


Ban đầu robot xuất phát tại điểm số 1 (start), các robot còn lại sẽ nối đuôi theo robot tại điểm xuất
phát.
Các điểm từ 2 đến 13 sẽ là các tọa độ, nơi mà robot sẽ đến nhận hàng và lấy hàng. Các robot có
thể tự do di chuyển dựa vào những điểm đến được nhập sẵn từ người dùng trước đó để robot có thể
đến đúng nơi chỉ định và lấy hàng. Tại các điểm tọa độ này robot có thể tự do linh hoạt chuyển động
tùy theo ý muốn mà không bị giới hạn hướng chuyển động để đạt đường đi ngắn nhất, hiệu quả,
nhanh chóng và ít va chạm nhất có thể
Các robot có thể đi vào nhiều vị trí tọa độ khác nhau tùy thực vào những input từ người dùng
Các điểm từ 1->2, 1->3, 1->4, 1->5 sẽ bị giới hạn hướng chuyển động. Tức có nghĩa là từ điểm 1
xuất phát tới các điểm 2,3,4,5, các robot chỉ đi được một chiều từ đi chạy về phía trước mà không thể
quay đầu xe được, Mục đích của việc này để ưu tiên điểm số 1 luôn luôn là điểm xuất phát cho các
robot và sẽ luôn chạy về phía trước và cũng là lối đi vào nhà kho chung cho các robot. Với việc này
sẽ thống nhất được lối đi vào nhà kho chung cho các robot và hạn chế việc va chạm trên làn đường di
chuyển của các robot
Các điểm từ 10,11,12,13 đến điểm 14 sẽ bị giới hạn hướng chuyển động. Tức có nghĩa là điểm từ
10,11,12,13 đến điểm 14 các robot chỉ đi được một chiều từ đi chạy về phía trước mà không thể quay
đầu xe được, Mục đích của việc này để ưu tiên điểm số 14 luôn luôn là điểm cuối cùng cho các robot
và sẽ luôn chạy về phía trước và cũng là lối đi ra khỏi nhà kho chung cho các robot. Với việc này sẽ
thống nhất được lối đi ra nhà kho chung cho các robot và hạn chế việc va chạm trên làn đường di
chuyển của các robot và các robot sẽ tập trung lại tại điểm 1 để bắt đầu quá trình lấy hàng tiếp theo
Với mục đích dễ dàng cho việc lập trình cũng như là kiểm tra, kiểm thử và chạy thực nghiệm thì
cách cạnh từ 2->13 thì mỗi cặp cạnh đều có giá trị bằng nhau và bằng nhau với tất cả cạnh có trên bản
đồ.
Áp dụng thuật toán Dijkstra

Hình 5.3. Mô hình thuật toán

Server (Raspberry Pi 4):


Đầu tiên, thuật toán sẽ được triển khai và phát triển trên server (raspberry pi 4), server sẽ nơi triển
khai và cũng như chạy chương trình tính toán thuật toán để đạt được output cuối cùng. Output cuối
cùng sẽ là một mảng đã được mã hóa thành các dãy số được quy định trong source code để xe có thể
hiểu và di chuyển đúng quỹ đạo cũng như quãng đường mà mình mong muốn. Và output đó sẽ được
raspberry pi 4 sử dụng thêm module LoRa để có thể truyền tín hiệu đó đi đến các các slave (MCU)
khác để có thể các slave có thể lấy những tín hiệu đó về xử lý và lên kế hoạch cho đường đi sắp tới
đúng như mong muốn của người dùng
Ngoài ra, server sẽ còn cho phép người dùng nhập vào những giá trị điểm đến mong muốn của
người dùng qua bộ xử lý thuật toán cho ra được output cuối cùng để gửi ra cho các slave
Ở đồ án tốt nghiệp, nhóm sẽ phát triển cho người dùng có thể nhập những điểm đến mong muốn
của người dùng thông qua WEB và server cũng sẽ cho phép người dùng quan sát được chuyển động
của xe cũng như quan sát các xe trong quá trình chuyển để có thể nhanh chóng phát hiện và xử kịp
thời.
Input (Khối nhập lộ trình):
Khối Input là sẽ khối lấy giá trị của người dùng, người dùng sẽ nhập thủ công vào GUI trên WEB
trên server. Trên server sẽ bắt đầu lấy những giá trị đó đưa vào thuật toán để xử lý các thông tin đầu
vào. Có thể cho phép người dùng nhập 1 lượt nhiều địa điểm mà robot muốn đến và sẽ có một số ràng
buộc trong việc nhập giá trị đầu vào để hạn chế những tình huống phần mềm không xử lý được và
cũng có thể dễ dàng quản lý những giá trị output khi xử lý xong
Giá trị đầu vào sẽ là 1 dãy số liên tục và sẽ được lưu vào 1 mảng để chứa các giá trị đó
Thuật toán Dijkstra:

Hình 5.4. Ma trận trọng số


Giải thích ma trạn trọng số:
Để dễ dàng cho việc tính toán và cũng như là lập trình thì ta quy định, ứng với mỗi mũi tên đỏ sẽ
có kích thước là 1 và mặc định các số từ 2->13 sẽ nằm ở giữa. Từ những kích thước trên ta có thể suy
ra được ma trận 14x14 như sau:
Như ma trận trên ta có thể thấy:
(2,1) = 2: có nghĩa là khoảng cách từ điểm 2 -> 1 sẽ bằng 2
(2,2) = 0: có nghĩa là khoảng cách từ điểm 2 -> 2 sẽ bằng 0
(2,5) = 5: có nghĩa là khoảng cách từ điểm 5 -> 2 sẽ bằng 5
Từ đó ta có thể thấy, giá trị x tương ứng với giá trị bắt đầu và giá trị y tương ứng, khi biết được
điểm đầu và điểm kết thúc ta có thể dễ dàng nhìn và đếm giá trị tương ứng với tọa độ trong mảng
(x,y)
Thuật toán sẽ lấy những input từ khối input bên trên kết hợp với ma trận trọng số để làm đầu vào
quá trình xử lý tín hiệu. Giá trị của các input sẽ được đưa vào bên trong mảng chứa các input.
Thuật toán sẽ quét hết tất cả các phần từ có trong mảng, và sẽ xét theo từng cặp (n, n+1). Các cặp
liên tục trong mảng sẽ được đưa vào thuật toán và triển khai Dijkstra cho từng cặp đó.
Thuật toán Dijkstra cách hoạt động và xử lý tín hiệu đã được trình bày ở mục trên. Dựa trên
nguyên lý đó, thuật toán sẽ cho ra 1 dãy các số là đường đi tối ưu nhất và gần nhất mà thuật toán xử
lý được dựa vào những input và ma trận bản đồ được đưa vào ứng với từng cặp (n, n+1) tương ứng.
Các giá trị output khi triển khai thuật toán Dijkstra ứng với từng cặp đó sẽ lần lượt được đưa vào
output của Dijkstra để chuyển qua giai đoạn xử lý tiếp theo là giai đoạn chuyển đổi
Có thể thấy trên hình:
Input nhập vào từ người dùng là: 11 5 8
Ma trận bản đồ: sẽ được tính toán và là 1 mảng 2 chiều có kích thước 14x14, đưa vào và sử dụng
trong quá trình xử lý thuật toán
Output khi dùng thuật toán Dijkstra là: 1 2 6 11 7 5 8 12 14
Bộ chuyển đổi:
Do output của thuật toán Dijkstra là những số hiển thị trên bản đồ để có thể dễ nhìn và dễ kiểm
chứng, nhưng khi gửi xuống vi điều khiển (slave), chúng sẽ không hiểu những giá trị đó khi hiểu. Nên
ta cần thêm một phần code để chuyển đổi những giá trị Dijkstra về những giá trị chúng ta tự định
nghĩa để robot có thể hiểu đúng được những giá trị mã hóa sau khi chuyển đổi từ giá trị output của
Dijkstra
Chúng ta sẽ quy định những giá trị mà chúng ta tự định nghĩa để chuyển từ Output Dijkstra sang
giá trị đã được chuyển để xe có thể hiệu và di chuyển đúng với thuật toán
Nội dung: Bộ chuyển đổi sẽ chuyển đổi hết cặp giá trị liên tục với nhau (n, n+1) trong mảng
output Dijkstra. Ứng với mỗi cặp giá trị liên tục kết hợp với ma trận bản đồ, ta có thể dễ dàng xác
định được các ngã rẽ khi đi từ điểm n đến n+1 của cặp (n, n+1). Ứng với mỗi ngã rẻ ta sẽ gán giá trị
bằng những giá trị sau được quy định như dưới đây:
0: Quẹo trái
1: Quẹo phải
2: Đi thẳng
3: Quay đầu xe ngược lại
Sau khi quét hết tất cả các cặp giá trị liền kề nhau trong mảng các các output của dijkstra thì ta sẽ
được một mảng mới sau khi áp dụng bộ chuyển với những giá trị được định nghĩa để cho xe có thể
hiểu và di chuyển đúng với thuật toán đã triển khai.
Và mảng các giá trị sau khi chuyển đổi sẽ được gửi xuống các slave thông qua giao thức LoRa
mạng truyền thông không dây từ máy chủ server raspberry
CHƯƠNG 5. KẾT LUẬN, HƯỚNG PHÁT TRIỂN
5.1. Kết quả đạt được
Trong đề tài lần này nhóm đã thiết kế được mô hình robot như hình 5.1.

Hình 5.1. Mô hình robot thực tế


Thông số mô hình robot

Thông số Giá trị


Kích thước L233xW188xH73
Khối lượng 5Kg
Thời gian hoạt động 2h

Trong đồ án lần này nhóm đã làm được nhưng việc sau:


 Lựa chọn nguồn, các linh kiện điện tử phù hợp cho robot.
 Thiết kế phần khung vỏ của robot.
 Thiết kế board shield cho các module.
 Tính toán xác định được thông số bộ điều khiển cho robot.
 Triển khai được thuật toán di chuyển cho một xe.

5.2. Hạn chế của đề tài

Cùng với những kết quả đạt được thì cũng có một số mặt hạn chế mà nhóm chưa thể giải quyết
được trong kì đồ án này như:
 MCU không đáp ứng được khi hệ thống phức tạp hơn.
 Đáp ứng của PID chỉ ở mức tương đối.
 Hiện tại thuật toán chỉ mới được triển khai trên một xe.
5.3 Hướng phát triển
Nhóm sẽ tập trung hoàn thiện và phát triển thêm đồ án như sau:
 Sử dụng thêm một MCU song song hoặc nâng cấp lên STM32F4.
 Thực nghiệm thêm để hoàn thiện bộ PID.
 Phát triển + kết hợp thêm các thuật toán mới.
 Thiết kế giao diện điều khiển giám sát trên Web
TÀI LIỆU THAM KHẢO

[1] BAOANAUTOMATION. “Mobile robot là gì”


https://baoanjsc.com.vn/du-an/mobile-robots-la-gi_2_1_31453_vn.aspx
[2] HSHOP. “Động Cơ DC Servo GA25-370 DC Geared Motor”
https://hshop.vn/products/dong-co-dc-servo-giamtoc-ga25-v1
[3] COMPONENT. “STM32F103C8T6 - Blue Pill Development Board”
https://components101.com/microcontrollers/stm32f103c8t8-blue-pill-development-board
[4] HSHOP. “Mạch Điều Khiển Động Cơ L298 DC Motor Driver”
https://hshop.vn/products/mach-dieu-khien-dong-co-dc-l298
[5] HSHOP. “Thanh 5 Cảm Biến Dò Line TCRT5000 Line Follower Sensor”
https://hshop.vn/products/thanh-5-cam-bien-do-line-tcrt5000-line-follower-sensor
[6] ICDAYROI. “Mạch thu phát RF SPI LORA RA-02 SX1278 433MHZ”
https://icdayroi.com/mach-thu-phat-rf-spi-lora-ra-02-sx1278-433mhz
[7] HSHOP. “Máy Tính Raspberry Pi 4 Model B”
https://hshop.vn/products/may-tinh-raspberry-pi-4-model-b
[8] ThS.Võ Lâm Chương. “Giáo trình môn học hệ thống truyền động Servo”, Trường Đại học Sư
Phạm Kỹ Thuật TPHCM

You might also like