Nguyên lý hoạt động của hệ thống

Một phần của tài liệu HD3 trần ngọc tiến nghiên cứu, thiết kế, chế tạo xe tự hành sử dụng mạng học sâu nhân tạo (Trang 73)

Hệ thống gồm 2 module là module nhận có nhiệm vụ nhận và module gửi tín hiệu từ máy tính. Hình ảnh thu được từ camera được truyền tới máy tính và khai thác thư viện OpenCV để xử lí thông tin khai thác từ ảnh. Từ chương trình nhận diện làn đường từ máy tính thông qua thuật toán xử lý ảnh để nhận diện làn đường và nhận diện đối tượng thông qua thuật toán YOLO truyền tín hiệu xuống module gửi thông qua giao tiếp serial. Đây là giao tiếp nối tiếp với tốc độ Baud mặc định 9600, đã được tích hợp sẵn trên Arduino. Sau khi nhận diện được độ lệch giữa tâm làn đường và tâm khung hình, nhận diện đối tượng (đèn giao thông, biển...). Chương trình sẽ sử dụng phép toán đã lập trình để quy đổi sang giá trị băm xung để điều khiển tốc độ 2 động cơ. Giá trị này sẽ được máy tính truyền tới module gửi, module nhận sẽ nhận giá trị từ module gửi thông qua NRF24l01. Arduino trong module nhận sẽ truyền xung có độ

rộng tương ứng với giá trị đã nhận vào L298, L298 có nhiệm vụ nhận xung từ Arduino và quy đổi sang mức điện áp tương ứng để điều khiển động cơ.

Hình 3.2 Lưu đồ thuật toán của hệ thống 3.2.2.Thiết kế hệ thống điều khiển xe tự hành

Hệ thống điều khiển gồm như hình gồm 2 module chính:

Module truyền dữ liệu gồm 1 board Arduino và 1 chip NRF24L01+. Chương trình xử lý ảnh sẽ gửi dữ liệu tới xe tự hành qua module truyền dữ liệu.

Hình 3.3. Module truyền dữ liệu của arduino và NRF24L01+

• Module nhận dữ liệu gồm có 1 chip Arduino, nguồn 9v, 2 động cơ motor, module L298 và 1 module NRF24L01+.

Hình 3.4. Module nhận dữ liệu của motor, L298 và NRF24L01+ 3.2.3.Phân tích chân của hệ thống điều khiển và truyền nhận tín hiệu

Arduino Nano:

Hình 3.5. Arduino Nano

• Chân GND (Group pin): Cung cấp đất

• Chân D3 (I/O): Pin I/O kĩ thuật số

• Chân D5 (I/O): Pin I/o kĩ thuật số

• Chân D8 (I/O): Pin kĩ thuật số.

• Chân D11 (I/O): Pin kĩ thuật số

• Chân D12 (I/O): Pin kĩ thuật số

• Chân D13 (I/O): Pin kĩ thuật số

• Chân 3V3 (Đầu ra): + Đầu ra 3V3 (từ FTDI)

• Chân A0 (Đầu vào): Kênh đầu vào tương tự 0

• Chân A1 (Đầu vào): Kênh đầu vào tương tự 1

• Chân A2 (Đầu vào): Kênh đầu vào tương tự 2

• Chân A3 (Đầu vào): Kênh đầu vào tương tự 3

• Chân VIN (VIN pin): Cung cấp hiệu điện thế.

3.2.1.2Module NRF24L01:

Hình 3.6. Module NRF24L01

• Chân CE (Pin chọn mode TX hoặc RX): Ngõ vào số

• Chân CSN (Pin chọn chip SPI): Ngõ vào số

• Chân SCK (Pin clock SPI): Ngõ vào số

• Chân MOSI (SPI Slave Data input): Ngõ vào số

• Chân MISO (SPI Slave Data output, với 3 lựa chọn): Ngõ ra số

3.2.1.3Module L298:

Hình 3.7. Module L298

• Chân12V Power cấp nguồn cho mạch L298 và là nguồn động lực cho động cơ.

• Chân 5V Power có thể dùng cấp nguồn cho Arduino, khi có Jumper 5V Enable.

• Chân GND là chân cấp MASS cho mạch, khi sử dụng khi vi điều khiển thì cần nối GND mạch với GND của vi điều khiển.

• Chân Enable là chân cho phép ngỏ ra động cơ hoạt động hoặc dừng. Mặc định mạch có Jumper A Enable va B Enable như hình là cho phép chạy.

• Chân IN1, IN2 điều khiển chiều và tốc độ động cơ 1 thông qua ngõ ra output A.

• Chân IN3, IN4 điều khiển chiều và tốc độ động cơ 2 thông qua ngõ ra output B.

3.2.1.Thiết lập sơ đồ tín hiệu giao tiếp với xe tự hành

Hình 3.8. Sơ đồ tín hiệu giao tiếp với mobie robot

Chương trình xử lý ảnh trên máy tính sẽ truyền dữ liệu xuống module phát là board Arduino thông qua giao tiếp Serial. Đây là giao tiếp nối tiếp với tốc độ Baud mặc định 9600, đã được tích hợp sẵn trên Arduino.

Hai module NRF24L01 có khả năng truyền nhận hai chiều, giao tiếp qua sóng radio ở tần số 2.4 GHz.

Các board Arduino kết nối với module NRF24L01 qua giao tiếp SPI. Đây là một loại giao tiếp nối tiếp đồng bộ khoảng cách ngắn thường được dùng trong hệ thống nhúng. Các bước để giao tiếp giữa board Arduino và module NRF24L01 như sau:

• Thiết lập chân giao tiếp

• Tạo mảng dữ liệu

• Khởi tạo địa chỉ giao tiếp

• Gán địa chỉ giao tiếp

• Thiết lập mức khuếch đại

Thiết lập module NRF24L01 là module nhận hay phát dữ liệu và truyền, nhận dữ liệu.

Camera của mobie robot giao tiếp với hệ thống sử lý ảnh của robot qua kết nối wifi.

3.2.2.Thiết lập chế độ làm việc cho các linh kiện

3.2.2.1. Arduino Nano

Arduino Nano được trọn làm bộ điều khiển trung tâm của xe tự hành. Arduino Nano rất tiện dụng, đơn giản, có thể lập trình trực tiếp bằng máy tính (như Arduino Uno R3) và đặc biệt hơn cả đó là kích thước của nó. Kích thước của Arduino Nano cực kì nhỏ chỉ tương đương đồng 2 nghìn gấp lại 2 lần thôi (1.85cm x 4.3cm), rất phù hợp, vì giá rẻ hơn Arduino Uno nhưng dùng được tất cả các thư viện của mạch này. Arduino Nano có các đặc tính kỹ thuật để đáp ứng cho mục đích làm đồ án như:

• Vi điều khiển: ATmega328 (họ 8bit)

• Điện áp hoạt động: 5V – DC

• Tần số hoạt động: 16 MHz

• Dòng tiêu thụ: 30mA

• Điện áp vào khuyên dùng: 7-12V – DC

• Điện áp vào giới hạn: 6-20V – DC

• Số chân Digital I/O: 14 (6 chân PWM)

• Số chân Analog: 8 (độ phân giải 10bit)

• Dòng tối đa trên mỗi chân I/O: 40 mA

• Dòng ra tối đa (5V): 500 mA

• Dòng ra tối đa (3.3V): 50 mA

• Bộ nhớ flash: 32 KB (ATmega328) với 2KB dùng bởi bootloader

• SRAM: 2 KB (ATmega328)

• EEPROM: 1 KB (ATmega328)

• Kích thước: 1.85cm x 4.3cm

• Đọc tín hiệu từ Camera.

• Giao tiếp với module NRF24L01 để truyền và nhận dữ liệu.

• Điều khiển hoạt động của robot dựa trên dữ liệu từ camera và dữ liệu nhận được qua giao tiếp không dây.

• Xuất tín hiệu ra module L298 để điều khiển động cơ.

Hình 3.9. Arduino Nano

3.2.2.2. Camera

Camera được sử dụng trong đồ án là camera của điện thoại được kết nối với máy tính thông qua Wifi. Với các thông số kỹ thuật như sau:

• Khả năng quay video chất lượng HD 720p

• Kích thước (55.9 x 46 x 40) mm

• Tự động Focus

• Tự điều chỉnh độ sáng và màu

• Giao tiếp chuẩn

• Tốc độ đọc frame ảnh: 30 frame/s

3.2.2.3. Module thu phát sóng NRF24L01

Module NRF24L01 được sử dụng để truyền nhận dữ liệu giữa module phát và module thu trên xe tự hành. Trong đó, NRF24L01 là chip thu phát sóng radio ở dải tần 2.4-2.5 GHz do hãng Nordic Semiconductor sản xuất. Chip này có thể được thiết lập để hoạt động ở nhiều chế độ và có mức tiêu thụ năng lượng thấp.

Hình 3.10. Module NRF24L01 Một số đặc điểm của module NRF24L01:

• Khoảng cách thu phát lên đến 100 m với địa hình ít vật cản.

• Có khả năng truyền nhận tín hiệu 2 chiều (vừa đóng vai trò module phát và module thu được cùng một lúc).

• Tần số thu phát sóng radio: 2.4Ghz

• Giao tiếp với vi điều khiển thông qua giao tiếp SPI

Trong đồ án, các module NRF24L01 sẽ được thiết kế để thực hiện giao tiếp một chiều với nhau, và giao tiếp với Arduino Nano thông qua giao tiếp SPI.

3.2.2.4. Pin sac litium 18650 3,7v

Thông số kĩ thuật:

• Điện áp 3,7V

• Kích thước dài 65mm

• Dường kính 33mm

Hình 3.11 Pin sạc litium 18650 3,7v Pin được nối với mạch sạc bảo vệ mạch 3s 7A:

Hình 3.12 Mạch sạc bảo vệ mạch 11.1V Li-ion BMS 7A Loại: HX-3S-CM10 Kích thước: 52.8*17.8*3.5mm Dòng cao áp: 7A Dòng trans: 10A Phạm vi: 4.25V +- 0.05V Qúa dải điện áp: 2.7V +- 0.05V Dòng điện tĩnh: thấp hơn 30𝜇a Sạc điện áp: 12.6V-13V

Dòng sạc trên: 5V

3.2.2.5. Động cơ DC giảm tốc XD-25GA370

Hình 3.13 Động cơ DC Servo giảm tốc XD-25GA370

Động cơ giảm tốc XD-25GA370 được sử dụng trong xe mô hình, robot, ổ khóa điện tử, thiết bị thông minh...Động cơ giảm tốc có momen xoắn lớn, có khả năng đảo chiều, độ ồn khi sử dụng thấp, tuổi thọ cao. Ngoài ra động cơ giảm tốc XD-25GA370 có rất nhiều tùy chọn tốc độ khác nhau bạn có thể lựa chọn tùy thuộc vào mục đích sử dụng. Thông số kỹ thuật: • Điện áp cung cấp: 12V • Đường kính trục: 4 mm • Chiều dài trục: 12 mm • Tốc độ: 100 vòng/phút • Đường kính động cơ: 24 mm • Kích thước dài*rộng: 24*53 mm

• Dòng điện tiêu thụ:0.3A

• Dòng điện khởi động: 2A

• Công suất: 5W

• Momen xoắn: 12kg.cm

• Tỉ số truyền: 1/100

Đặc điểm nổi bật: Hiệu quả cao và tiếng ồn thấp. Độ bền cao và thực hiện lâu dài trong cuộc sống. Thích hợp cho DIY hoặc cơ khí làm việc. Động cơ gảm tốc có thời gian sử dụng lâu dài, độ bền cao và thực hiện lâu dài trong cuộc sống.

3.2.2.6. Bánh xe Bánh xe lớn: Bánh xe lớn: • Đường kính ngoài: 85mm • Chiều rộng bánh: 38mm Hình 3.14 Bánh xe lớn Bánh xe dẫn hướng: • Đường kính bánh: 40mm • Tổng chiều cao: 60mm • Chiều rộng bánh: 20mm • Kích thước mặt sàn: 60x43mm • Kích thước lỗ bắt ốc: 45x30mm

Hình 3.15 Bánh xe dẫn hướng

3.2.2.7. Module điều khiển động cơ L298

Hình 3.16.Module điều khiển động cơ L298

Thông thường để điều khiển một động cơ DC thì phải dùng một mạch cầu để có thể điều khiển cả chiều quay và tốc độ. IC L298 với thiết kế gồm 2 mạch cầu tích hợp được ứng dụng rất phổ biến trong điều khiển động cơ. L298 có thể điều khiển động cơ bước hoặc 2 động cơ DC đồng thời. IC này có một số đặc điểm cơ bản sau:

• Driver: L298N tích hợp hai mạch cầu H.

• Điện áp điều khiển: +5 V ~ +12 V

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

• Điện áp của tín hiệu điều khiển: +5 V ~ +7 V

• Dòng của tín hiệu điều khiển: 0 ~ 36mA

• Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)

Module L298 chứa hai mạch cầu H nên có thể được sử dụng để điều khiển tốc độ và chiều quay của 2 động cơ DC của xe tự hành (Hình 3.15). Các trạng thái quay của từng động cơ (quay thuận, quay ngược hay dừng lại) có thể được điều khiển thông qua việc thiết lập mức logic của các chân In1 đến In4 của module. Ngoài ra, tốc độ của động cơ cũng có thể được điều khiển qua module nhờ phương pháp PWM (điều chế độ rộng xung). PWM là phương pháp điều chỉnh điện áp trung bình trên tải bằng cách thay đổi độ rộng xung. Về bản chất thì PWM chính là việc đóng ngắt nguồn cấp cho tải theo một chu kỳ nhất định. Việc đóng ngắt này được thực hiện bằng các khóa điện tử như Transistor hay MOSFET.

Các xung có độ rộng khác nhau sẽ cung cấp điện áp trung bình trên tải khác nhau. Điện áp trung bình đầu ra khi sử dụng phương pháp PWM được tính gần đúng theo:

𝑈𝑑 = 𝑈𝑚𝑎𝑥.𝑡

𝑇 = 𝑈𝑚𝑎𝑥. 𝑑 (3.1)

Với:

• Ud là điện áp trung bình.

• Umax là điện áp tối đa của nguồn.

• t là thời gian xung ở mức logic cao.

• d (duty cycle) là phần trăm giữa thời gian xung ở mức logic cao so với chu kỳ xung.

3.3. Lập trình điều khiển hệ thống

3.3.1.Đào tạo YOLO trên Colab

a) Giới thiệu chung về Google colab

Google Colaboratory (gọi tắt là Google Colab hay Colab) là một sản phẩm của Google Research. Colab dựa trên Jupyter Notebook, người dùng có thể viết và thực thi đoạn mã python thông qua trình duyệt và đặc biệt rất phù hợp với data analysis, machine learning và giáo dục.

Nhìn chung, khi máy tính chúng ta không có đủ tốc độ xử lý do thiếu GPU thì ta sẽ sử dụng Google Colab của Google cung cấp miễn phí để ta đào tạo mô hình yolo trên cloud.

Ưu điểm của Colab:

➢ Cấu hình chip mạnh và nhanh. ➢ Dung lượng RAM lớn.

➢ Được cung cấp miễn phí. Nhược điểm của Colab:

➢ Thời gian sử dụng google colab bị giới hạn (10 - 12 tiếng) do đó không phù hợp với những dự án lớn cần nhiều thời gian.

b) Thu thập dữ liệu hình ảnh cần thiết để đào tạo model yolo trên google colab

Hệ thống sử dụng model Yolov3_tiny nhằm nhận diện biển báo, đèn giao thông, con người và phương tiện giao thông khác (xe hơi). Để mô hình có thể phát hiện được các đối tượng đó, chúng ta cần thu thập một lượng lớn dữ liệu hình ảnh phong phú về các đối tượng cần được nhận diện.

Hình 3.17 Hình ảnh cần gán nhãn.

Khi đã chuẩn bị đủ dữ liệu hình ảnh, ta tiến hành gán nhãn bằng tay cho từng bức ảnh bằng cách sử dụng chương trình labelImg.py:

Nén file dữ liệu hình ảnh đã gán nhãn, đưa lên google drive để tiến hành đào tạo mô hình.

c) Tiến hành đào tạo mô hình trên colab

Bước 1: Kết nối Colab với Google drive, sử dụng code block:

from google.colab import

drive drive.mount('/content/drive')

Bước 2: Lấy mã nguồn file dữ liệu hình ảnh đã upload trên google drive sang Colab:

%cd /content !unzip /content/drive/'My Drive'/ML/darknet.zip %cd /content/darknet

Trong đó, ‘ML’ là thư mục chứa file hình ảnh ‘data.zip’. Bước 3: Biên dịch mã nguồn darknet trên colab.

%cd /content/darknet !make clean

!make

!chmod +x ./darknet

Bước 4: Lưu thư mục chứa model yolov3-tiny đã được đào tạo vào thư mục ‘ML” trên driver.

!rm /content/darknet/backup -r

!ln -s /content/drive/'My Drive'/ML/backup /content/darknet

Bước 5: Chạy lệnh đào tạo mô hình.

%cd /content/darknet

!./darknet detector train yolo.data cfg/yolov3.cfg darknet53.conv.74

3.3.2.Lập trình trên môi trường PyCharm

Pycharm là một chương trình IDE (Môi trường phát triển tích hợp) được tạo cho python. Nó tập hợp tất cả các công cụ phát triển ở một nơi và cung cấp khả năng sử dụng mạnh mẽ và dễ dàng. Nó có hai phiên bản khác nhau; Chuyên nghiệp và Cộng

đồng. Phiên bản Professional được trả phí nhưng cung cấp cho sinh viên sử dụng miễn phí một năm. Phiên bản cộng đồng là hoàn toàn mã nguồn mở và miễn phí.

Python là một ngôn ngữ khá cũ được tạo ra bởi Guido Van Rossum. Thiết kế bắt đầu vào cuối những năm 1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991. Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ. Python dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình.

3.3.3.Code lập trình cho toàn hệ thống

Chương trình python dùng để xử lý xác định làn đường và các đối tượng cần nhận dạng. Và gửi tín hiệu xử lý được sang cho arduino gửi tín hiệu. Dưới đây là một số chương trình chính của xe tự hành:

➢ Hàm xác định độ lệch tâm của làn đường:

➢ Đọc ảnh và chạy model detect mỗi 10 khung hình:

➢ Xét các trường hợp gặp tín hiệu giao thông và chướng ngại vật, điều khiển xem bám theo làn đường:

Phần code arduino: + Code gửi tín hiệu:

Chạy thiết lập ban đầu cho module.

Đọc dữ liệu từ bộ nhớ đệm serial của arduino, sử dụng hàm Serial.parseInt() và gửi dữ liệu thu được tới arduino nhận:

+ Code nhận tín hiệu:

Khai báo chân băm xung, đảo chiều và biến tốc độ. Thiết lập ban đầu cho các chân và module NRF24.

Kết luận chương 3

Trong chương này báo cáo đã nêu ra nguyên lý hoạt động, lưu đồ thuật toán và sơ đồ của hệ thống xe tự hành. Báo cáo trình bày về CNN, YOLO và xử lý ảnh nắm vững cơ sở lý thuyết để chế tạo và lập trình cho hệ thống.

CHƯƠNG 4 CHẾ TẠO, THỰC NGHIỆM VÀ ĐÁNH GIÁ HOẠT ĐỘNG CỦA XE TỰ HÀNH

Một phần của tài liệu HD3 trần ngọc tiến nghiên cứu, thiết kế, chế tạo xe tự hành sử dụng mạng học sâu nhân tạo (Trang 73)

Tải bản đầy đủ (PDF)

(120 trang)