Camera logitech C270

Một phần của tài liệu Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành (Trang 36)

Thông số kỹ thuật của Camera logitech C270: - Độ phân giải: lên đến 3MP

- Quay video: lên tới 1024 x 720 pixel

- Công nghê: Công nghệ tinh thể lỏng Logitech Fluid Crystal - Giao tiếp: USB 2.0 tốc độ cao

- Kích thước:15x10x5 cm - Khối lượng: 0.2 KG

3.2.2.3 Khối động cơ

Chức năng chính của khối động cơ là nhận tín hiệu từ Arduino Uno R3 được truyền từ Jetson Nano để xe có thể di chuyển tiến thẳng và dừng lại khi gặp biển báo.

Việc lựa chọn động cơ phải phù hợp với trọng lượng của chiếc xe,các thơng số vịng/phút,điện áp hoạt động,công suất của động cơ,..ảnh hưởng trực tiếp đến sự di chuyển của xe,nhất là khi xe di chuyển trên địa hình thực tế,sự ma sát của mặt đường là rất lớn.

Thơng qua việc tính tốn sơ bộ như trên về tải trọng tối đa mà xe có thể chở được,cũng như là xe di chuyển với vận tốc mong muốn thì động cơ được chọn là loại động cơ RS550

30 Hình 3.8: Động cơ RS550 Thông số kỹ thuật: - Điện áp hoạt động: 12V - Công suất: 35W -Tốc độ: 15000 RPM -Đường kính động cơ: 36mm -Chiều dài thân động cơ: 85mm

31

Để điều khiển được tốc độ của động cơ,đồng thời tránh hiện tượng cháy do q dịng khi sử dụng module L298.Nên nhóm em đã sử dụng module BTS7960 43A để điều khiển

từng động cơ.

Hình 3.10: Module BTS7960 43A

BTS7960 là bộ điều khiển động cơ cho phép điều khiển tốc độ và hướng của động cơ DC.Module có thể điều khiển động cơ có điện áp 6~27V, với dịng điện tối đa lên đến 43A.Tín hiệu logic điều khiển là 3.3~5V.Tần số điều khiển tối đa là 25KHz.Module sẽ tự động shutdown khi điện áp thấp hơn 5.5V.

32

Sơ đồ chân:

- VCC : Nguồn tạo mức logic điều khiển ( 5V – 3V3 ) - GND : Chân đất.

- R_EN = 0 Disable nửa cầu H phải. R_EN = 1 : Enable nửa cầu H phải. - L_EN = 0 Disable nửa cầu H trái. L_EN = 1 : Enable nửa cầu H trái. - RPWM và LPWM : chân điều khiển đảo chiều và tốc độ động cơ. - RPWM = 1 và LPWM = 0 : Mô tơ quay thuận.

- RPWM = 0 và LPWM = 1 : Mô tơ quay nghịch

- RPWM = 1 và LPWM = 1 hoặc RPWM = 0 và LPWM = 0 : Dừng. - R_IS và L_IS : kết hợp với điện trở để giới hạn dòng qua cầu H

Với ứng dụng bình thường RPWM,LPWM nối với GPIO (VD : chân digital 2,3) để điều khiển chiều quay của động cơ.

Chân R_EN , L_EN nối chung lại rồi nối với PWM (VD chân digital 5) để điều khiển tốc độ động cơ.

33 3.2.2.4 Khối điều khiển lái

Chức năng của khối điều khiển lái là nhận tín hiệu từ Arduino Uno R3 truyền xuống sau khi đã qua xử lý của Jetson Nano để điều khiển xe di chuyển sang trái,phải hay ở giữa.

Để dẫn động hướng cho xe nhóm em đã sử dụng động cơ bước size 57.Động cơ có moment xoắn lớn,chạy êm- khơng gây nhiều tiếng ồn,động cơ có thể tùy chỉnh.

Hình 3.13: Động cơ bước

Thơng số của động cơ: - Góc bước: 1.8 độ - Số pha: 2 pha - Dòng điện: 3.0A - Momen xoắn: 1.8Nm - Khối lượng: 1.05KG - Đường kính trục: 6.35mm - Số dây: 4 dây

34

Các chế độ điều khiển động cơ bước:

Hình 3.14: Phương pháp điều khiển động cơ bước

- Điều khiển dạng sóng (Wave): là phương pháp điều khiển cấp xung điều khiển lần lượt theo thứ tự chon từng cuộn dây pha.

- Điều khiển bước đủ (Full step): là phương pháp điều khiển cấp xung đồng thời cho 2 cuộn dây pha kế tiếp nhau.

- Điều khiển nửa bước (Half step): là phương pháp điều khiển kết hợp cả 2 phương pháp đều khiển dạng sóng và điều khiển bước đủ. Khi điều khiển theo phương pháp này thì giá trị góc bước nhỏ hơn hai lần và số bước của động cơ bước tăng lên 2 lần so với phương pháp điều khiển bước đủ tuy nhiên phương pháp này có bộ phát xung điều khiển phức tạp.

- Điều khiển vi bước (Microstep): là phương pháp mới được áp dụng trong việc điều khiển động cơ bước cho phép động cơ bước dừng và định vị tại vị trí nửa bước giữa 2 bước đủ. Ưu điểm của phương pháp này là động cơ có thể hoạt động với góc bước nhỏ,độ chính xác cao. Do xung cấp có dạng sóng nên động cơ hoạt động êm hơn,hạn chế được vấn đề cộng hưởng khi động cơ hoạt động.

Để điều khiển động cơ bước một cách chính xác và dễ dàng hơn thì cách tối ưu nhất là nên sử dụng driver điều khiển động cơ bước.Vì vậy nhóm em sử dụng TB6600 để điều khiển động cơ bước trên.

35

Mạch điều khiển động cơ bước TB6600 sử dụng IC TB6600HQ/HG,dùng cho các loại động cơ bước:42/57/86 2 pha hoặc 4 dây,có dịng tải là 5A/42V DC. Ứng dụng trong làm các máy như CNC,Laser hay các máy tự động khác.

Hình 3.15: Driver TB6600

Điện áp cấp cho driver có thể từ 12- 48V,với dòng điện đầu ra tối đa là 5A đủ để cung cấp cho động cơ bước trên.

TB6600 cách ly Input và Output bằng opto,bảo vệ quá áp,thấp áp,quá dòng,bảo vệ ngắn mạch,tránh gây cháy động cơ.Nhiệt độ hoạt động từ -10 đến 45 độ C.

Cài đặt và ghép nối:

- DC+: Nối với nguồn điện từ 9 - 40VDC - DC- : Điện áp (-) âm của nguồn

- A+ và A -: Nối vào cặp cuộn dây của động cơ bước - B+ và B- : Nối với cặp cuộn dây còn lại của động cơ

- PUL+: Tín hiệu cấp xung điều khiển tốc độ (+5V) từ BOB cho M6600 - PUL-: Tín hiệu cấp xung điều khiển tốc độ (-) từ BOB cho M6600

36

- DIR+: Tín hiệu cấp xung đảo chiều (+5V) từ BOB cho M6600 - DIR-: Tín hiệu cấp xung đảo chiều (-) từ BOB cho M6600

- ENA+ và ENA -: khi cấp tín hiệu cho cặp này động cơ sẽ khơng có lực momen giữ và quay nữa

- Có thể đấu tín hiệu dương (+) chung hoặc tín hiệu âm (-) chung

Hình 3.16: Sơ đồ kết nối TB6600 3.2.2.5 Khối nguồn 3.2.2.5 Khối nguồn

Khối nguồn cung cấp dòng điện và điện áp cho các khối khác hoạt động,dựa vào ngõ vào điện áp,dòng điện cấp vào của các thiết bị để chọn lựa nguồn cho thích hợp.

Dịng điện và điện áp hoạt động của Jetson Nano là 4A và 5 VDC,của Arduino Uno R3 là 30mA và 5VDC.Lựa chọn nguồn cung cấp cho Jetson Nano và Arduino hoạt động cần chú ý đến điện áp và dịng điện.Đặc biệt là dịng điện.

Cơng suất tải trong mạch: - Jetson Nano: 5 x 4 = 20 (W)

37

- Động cơ DC: 2 x 35 W= 70 (W) - Step motor: 12 x 3 = 36 (W) - Tổng công suất P = 126.15 (W)

Lựa chọn bình ắc quy cung cấp nguồn cho sự hoạt động của xe là điều vô cùng quan trọng.Thời gian sử dụng ắc quy được tính như sau:

t = 𝐴 × 𝑉 ×𝑛

𝑃 = 90 ×12 ×0.7

126.15 =6 (h)

Với:A là dung lượng của ắc quy; V là điện áp ngõ ra của ắc quy; n là hệ số sử dụng của ắc quy ( thông thường là 0.7); P là công suất tải (tổng công suất trên mạch).

Hình 3.17: Bình ắc quy Đồng Nai

Thơng số kỹ thuật của bình ắc quy Đồng Nai: - Dung lượng: 12V – 90Ah

38 3.2.3 Sơ đồ nguyên lý toàn mạch

Cuối cùng tiến hành vẽ mạch nguyên lý toàn mạch kết nối các khối đã thiết kế lại như sau:

39 3.3 CHUẨN BỊ LINH KIỆN – MÔ ĐUN

Dựa vào các cơ sở lý thuyết, sơ đồ khối, sự hoạt động của từng khối, sơ đồ mạch nguyên lý đã thiết kế ở phần trước để chuẩn bị linh kiện – mô đun cho phần thi cơng mơ hình.

Bảng 3.1: Các linh kiện, mơ đun sử dụng

STT Tên linh kiện/Mô đun Số lượng

1 Jetson Nano 1 2 Camera Logitech C270 2 3 Arduino Uno R3 1 4 Động cơ DC RS550 2 5 Module BTS7960 2 6 Step Motor 1 7 Driver BT6600 1 8 Servo 2 9 Acquy Đồng Nai 1 10 LCD TFT 1

11 Mơ hình xe điện mini 1

3.4 MƠ HÌNH XE TỰ HÀNH

Để mơ phỏng hình dáng chiếc xe so với thực tế nhóm em sử dụng phần mềm Inventor.Autodesk Inventor là phần mềm xây dựng mơ hình 3D, thiết kế, hình mẫu và kiểm tra sản phẩm.Các cơng cụ mơ phỏng, phân tích được tích hợp trong Inventor cho phép người dùng thiết kế từ cơ bản đến nâng cao như thiết kế chi tiết máy, trực quan hóa sản phẩm.Inventor cịn được tích hợp CAD và các cơng cụ giao tiếp thiết kế nhằm nâng cao năng suất làm việc của CAD và giảm thiểu phát sinh lỗi,tiết kiệm thời gian.Inventor cũng cung cấp một mơi trường thiết kế và phím tắt tương tự với AutoCAD,cho phép người dùng chuyển từ môi trường vẽ 2D hiện hành sang xây dựng mơ hình 3D.

40

Mơ hình xe tự hành sau khi vẽ bằng Inventor:

Hình 3.19: Mơ phỏng xe tự hành

41 3.5 LẬP TRÌNH HỆ THỐNG

3.5.1 Cài đặt hệ điều hành cho jetson nano

Việc cài đặt hệ điều hành cho jetson nano có thể cài đặt trên cả ba hệ điều hành thông dụng là windows, linux, mac os. Với mỗi hệ điều hành sẽ có một chút khác biệt nhỏ dựa trên đặt điểm của hệ điều hành, cơ bản sẽ bao gồm các bước như sau (đối với Windows):

- Bước 1: Tiến hành format thẻ nhớ bằng phần mềm chuyên dụng, ví dụ như SD Memory Card Formatter ( đối với windows). Nên sử dụng phần mềm chuyên dụng thay vì format mặc định của windows khơng thể format thẻ nhớ đã được cài đặt hệ điều hành jetson nano (linux không cần phần mềm chuyên dụng).

42

- Bước 2: Tải phiên bản hệ điều hành của jetson nano tại trang chủ (https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write) và Etcher để tiến hành ghi đè hệ điều hành lên thẻ nhớ. Với phần select image tiến hành chọn phiên bản của hệ điều hành ( chúng em sử dụng jetpack 4.3), select drive để chọn ổ đĩa ghi đè (thẻ nhớ). Và ta tiến hành cài đặt hệ điều hành, quá trình này tốn khoảng 30 phút.

43

- Bước 3: Tiến hành cài đặt thông số hệ điều hành bao gồm ngôn ngữ hệ thống, định dạng bàn phím, thời gian, tên , mật khẩu và tên máy tính.

Hình 3.23: Giao diện hệ điều hành 3.5.2 Cài đặt các chương trình và phần mềm cần thiết 3.5.2 Cài đặt các chương trình và phần mềm cần thiết

Với việc cài đặt jetpack thì trong hệ điều hành đã mặc định có thư viện opencv, cuda và libCudnn. Ngoài ra ta cần cài một số thư viện hệ thống cần thiết. Mở terminal và dùng câu lệnh như sau:

- sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8- dev liblapack-dev libblas-dev gfortran

Cài đặt thư viện pip3 ( hỗ trợ cài đặt thư viện cho python 3.x): - sudo apt-get install python3-pip

- sudo pip3 install -U pip testresources setuptools

Cài đặt thư viện cho python 3 bao gồm numpy, future, mock, h5py, keras_preprocessing, keras_applications, gast, futures, protobuf, pybind11, matplotlib. Bằng câu lệnh như sau:

44

Cài đặt thư viện tensorflow ( tensorflow-gpu). Tải phiên bản tensorflow phù hợp với phiên bản jetpack, với v43 là phiên bản jetpack 4.3, “tensorflow” là phiên bản tensorflow phù hợp với nhu cầu:

- sudo pip3 install --pre --extra-index-url

https://developer.download.nvidia.com/compute/redist/jp/v43 “tensorflow”

3.5.3 Cài đặt chương trình Visual studio code cho jetson nano

Để thuận lợi trong việc viết sửa chương trình cho jetson nano thì chúng em sử dụng visual code. Tuy nhiên jetson nano là hệ điều hành dựa trên ubuntu nhưng chạy trên nền ARM thì việc cài đặt có chút khác biệt so với thơng thường.

- Bước 1: Tải chương trình từ github: git clone https://github.com/JetsonHacksNano/installVSCode.git

- Bước 2: cd installVSCode - Bước 3: ./installVSCode.sh

Sau khi cài đặt hoàn thiện sử dụng lệnh “ code-oss” trên của sổ terminal để khởi động chương trình.

- Bước 4: Trong cửa sổ của visual studio, phía bên trái màn hình ở biểu tưởng 4 ô vng, ta tải python để lập trình code dưới dang python.

- Bước 5: Ấn Ctrl + shift + P để chọn đường dẫn chứa chương trình python.

3.5.4 Cài đặt phần mềm trên máy tính chủ (máy tính dùng để đào tạo mơ hình) 3.5.4.1 Cài đặt Cuda , cuDNN 3.5.4.1 Cài đặt Cuda , cuDNN

Việc cài đặt Cuda và cuDNN nhằm mục đích tận dụng gpu rời của máy tham gia vào việc đào tạo mơ hình deep learning. Việc cài đặt và sử dụng cuda trên windows tương đối phức tạp do hạn chế về dòng card đồ họa hỗ trợ (của nvidia) cũng như sự kém tương thích giữa Cuda và cuDNN trên windows. Để đơn giản hóa vấn đề ta cài đặt các chương trình này trên ubuntu.

Đầu tiên thiết lập card đồ họa nvidia là mặc định, vào mục tìm kiếm chọn software and update chọn diver của nvidia và tiến hành reset máy

45 Hình 3.24: Thiết lập card nvidia là GPU mặc định

Sau đó ta tải phiên bản Cuda và cuDNN trên trang chủ của nvidia và cài đặt theo hướng dẫn (phiên bản tụi em sử dụng là Cuda 10.1 và cuDNN 7.5). Khi q trình cài đặt hồn tất gõ nvidia-smi để kiểm tra, nếu thông số tương tự như hình dưới thì quá trình cài đặt hoàn tất.

46 3.5.4.2 Cài đặt anaconda, Visual studio code

Tác dụng của Visual studio code tương tự như trên jetson nano. Tuy nhiên việc cài đặt trên hệ điều hành máy tính đơn giản hơn rất nhiều đối với cả Visual studio code và anaconda. Đối với anaconda, nó cho phép ta tạo nhiều môi trường với mỗi môi trường tương ứng với một phiên bản python và các gói phần mềm khác nhau. Các mơi trường nay hoạt động độc lập với nhau. Điều này cho phép chúng ta so sanh ưu nhược điểm giữa các phiên bản khác nhau mà không lo bị xung đột tới những nền tảng đã được cài đặt cũng như tự do thử các gói chương trình mới.

Sau khi cài đặt anaconda ta thiết lập môi trường cũng như phiên bản cho python: - Bước 1: Mở cửa sổ terminal (linux) hoặc anaconda promt (Windows) và tạo môi trường : conda create -n <tên môi trường> python==3.6.9 . Việc sử dụng phiên bản python 3.6.x thay vì 3.7.x hoặc cao hơn là vì python 3.6.x có sự tương thích ổn định với phiên bản tensorflow 1.x thay vì tensorflow 2.x cho phiên bản python 3.7.x hoặc cao hơn.

- Bước 2: Tiến hành cài đặt các chương trình như trên jetson nano. Ngồi ra cài một số gói đặc thù cho việc đào tạo mơ hình như keras (phiên bản 2.2.0) và scikit-learn - đào tạo mơ hình deep learning trên keras.

3.5.4.3 Thiết lập cho học sâu hướng đối tượng

So với đào tạo mơ hình deep learning qua keras thì việc đào tạo mơ hình deep learning hướng đối tượng của tensorflow đòi hỏi nhiều thiết lập hơn. Tiến hành cài đặt tensorflow object detection api từ github( tụi em sử dụng phiên bản tf v1.13) như sau:

- Bước 1: Tải tập tin tensorflow từ github cho (linux) ( windows thì chỉ cần tải ngay trên trang web) :

git clone https://github.com/tensorflow/models/tree/r1.13.0 - Bước 2: Tải model zoo phù hợp với nhu cầu đào tạo.

- Bước 3: Thiết lập PYTHONPATH theo địa chỉ của tệp tensorflow vừa tải về Ví dụ: tệp được tải về được lưu trong thư mục tensorflow1. Đối với windows:C:\> set PYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research;C:\tensorflow1 \models\research\slim” đối với linux: “export

PYTHONPATH=home/tensorflow1/models;home/tensorflow1/models/research;tensorflo w1/model/research/slim”.

47

- Bước 4: Tiến hành biên dịch protobufs và chạy file setup.py. Truy cập thu mục research tiến hành chuyển đổi các file có đi .proto sang .py :” protoc object_detection/protos/*.proto --python_out=.” và tiến hành xây dưng và cài đặt “python setup.py build” và “python setup.py install”. vậy là q trình cài đặt hồn tất.

3.5.5 Lưu đồ giải thuật hệ thống

3.5.5.1 Nhận diện Lane

Lưu đồ chạy theo Lane:

48 Hình 3.27: Lưu đồ nhận diện và chạy theo lane (P2)

Khi đã có model đã được huấn luyện ở phần trước,ta sẽ dùng nó để nhận diện và điều

Một phần của tài liệu Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành (Trang 36)

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

(98 trang)