Khung xe tự hành

Một phần của tài liệu Nghiên cứu và phát triển hệ thống phát hiện đối tượng trên xe tự hành dành cho cuộc đua số của FPT đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 56)

Chương 3 : TỔNG QUAN PHẦN CỨNG VÀ PHẦN MỀM

3.1. Phần cứng

3.1.2. Khung xe tự hành

Khung xe tự hành có kiểu hình Buggy offroad 1/10 (đa địa hình) 4WD. Kết cấu Khung sườn nhôm dày 3,5mm với 2 mép gấp dập khung tăng độ cứng, ngồi ra cịn có 2 thanh chống sườn (trước & sau). Với kích thước dài 40cm, rộng 25cm, cao 15cm.

Truyền động 2 cầu 4 bánh chủ động toàn phần (4WD) – toàn bộ truyền động bạc đạn tốc độ cao. Các chi tiết truyền động trong visai và bánh răng làm bằng thép. Toàn bộ láp truyền động (dog-bone shaft driver) bằng thép.

Hệ thống treo với hệ càng trước kiểu BALL SUSPENSION, đây là loại càng lái tiên tiến cho góc lái rộng và nhạy. Càng treo sau cũng kiểu Ball, giúp tinh chỉnh góc bánh xe rất dễ dàng.

Visai xe được trang bị 2 bộ visai chất lượng cao và siêu bền giúp xe vận hành 4WD tuyệt hảo lúc vào cua và vượt dốc. Bộ số được trang bị bộ 2 số tới (tự động) rất nhạy giúp xe tăng tốc lên 75km/h trong nháy mắt. Phuộc giảm sốc với loại phuộc dầu 11mm - kiểu piston kèm lò xo nhún và dầu silicon đặc chủng, vận hành vơ cùng nhịp nhàng trên mọi địa hình. Bánh xe kiểu Off Road với độ bám đường rất tốt.

47

Hình 3.2. Khung xe mơ hình tự hành – Buggy 1:10 3.1.3. Motor DC giảm tốc 3.1.3. Motor DC giảm tốc

Động cơ điện một chiều hay còn gọi là motor DC ( DC là từ viết tắt của "Direct Current Motors") là động cơ điều khiển trực tiếp có cấu tạo gồm hai dây (dây nguồn và dây mass). DC motor là một động cơ một chiều với cơ năng quay liên tục.

Động cơ giảm tốc hay còn được gọi là motor giảm tốc, motor hộp số, động cơ hộp số… Đây là loại động cơ điện có tốc độ thấp. Tốc độ của motor giảm tốc đã giản đi rất nhiều so với những động cơ thơng thường có cùng số cực và cơng suất. Khi động cơ này quay với tốc độ chậm thì lực mà nó sản sinh ra sẽ mạnh hơn.

Như vậy thì Motor DC giảm tốc là một động cơ điện một chiều và có hộp giảm tốc.

48

3.1.4. Servo

Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PWM) với góc quay nằm trong khoảng bất kì từ 0 – 180 độ. Mỗi loại servo có kích thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mơ mình), có loại thì sở hữu một momen lực bá đạo (vài chục N/m), hoặc có loại thì khỏe và nhơng sắc chắc chắn,...Động cơ servo được thiết kế như hệ thống hồi tiếp vịng kín. Tín hiệu ra của động cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác.

Hình 3.4. Động cơ Servo MG946R 3.1.5. Mạch cầu H 3.1.5. Mạch cầu H

Mạch cầu H dùng để tăng công suất nhằm điều khiển DC Motor thơng qua tín hiệu từ Jetson Nano.

SHB được thiết kế để điều khiển một động cơ DC có chổi than công suất lớn cho những ứng dụng trong điều khiển robot, xe điện, và những ứng dụng DIY khác. Dòng điện điều khiển liên tục đạt đến 20A và dòng đỉnh 50A, dãy điện áp hoạt động rộng từ 12V đến 30V. Sản phẩm cịn được thiết kế cho những ứng dụng có tần số PWM cao, tần số cao nhất đạt được ở 40kHz.

49 SHB còn hỗ trợ giám sát các thơng số trong q trình điều khiển bằng việc đưa ra một số tín hiệu phản hồi như: dịng điện, điện áp, nhiệt độ.

SHB hỗ trợ phần cứng tương thích với các mạch Arduino thơng dụng : Uno, Mega cũng như cung cấp các ví dụ mẫu (điều khiển PWM, tốc độ và vị trí sử dụng PID Controller).

Hình 3.5. Mạch cầu H SHB Tính năng: Tính năng:

– Điều khiển thuận nghịch cho một động cơ DC chổi than.

50 – Cấu hình mạch cầu H với MOSFET kênh N cho hiệu suất tốt hơn, đáp ứng cho những ứng dụng có cơng suất lớn.

– Tương thích với các mạch Arduino.

– Tương thích với CircleTech Motor Control Shield 32bit Microcontroller (CT – MCS).

– Cung cấp các tín hiệu phản hồi như: Dịng điện, điện áp, nhiệt độ. – Có thể gắn thêm tản nhiệt, vỏ hộp.

– Hỗ trợ 3 ngõ vào cho encoder (A, B, Z). – Hỗ trợ mã nguồn mở.

– Phù hợp cho các ứng dụng DIY, Prototype.

3.1.6. Board Jetson Nano

NVIDIA Jetson Nano Developer Kit là một máy tính nhỏ nhưng rất mạnh mẽ cho phép bạn chạy song song nhiều mạng neural sử dụng cho các ứng dụng như phân loại hình ảnh, phát hiện đối tượng, phân đoạn và xử lý giọng nói.

51 Sản phẩm NVIDA Jetson Nano Developer Kit trang bị số lượng cổng kết nối khá đầy đủ: 4 cổng USB 3.0, cổng HDMI, DisplayPort và một cổng Ethernet, cùng với đó là những chuẩn kết nối phổ biến như SDIO, I2C, SPIO và UART. Khơng chỉ vậy, Jetson Nano cịn có cả cổng kết nối M.2, giao thức MIPI-CSI để kết nối với máy ảnh. Người dùng cũng có thể kết nối mạng cho Jetson Nano bằng Wifi nếu không muốn sử dụng dây cáp Ethernet truyền thống.

Thông số kỹ thuật :

– Hỗ trợ GPU này bao gồm 1 CPU 4 nhân 64-bit dựa trên ARM Cortex-A57, RAM 4GB và bộ xử lý video có thể xử lý lên đến 4K 30fps đối với mã hóa và 4K 60fps đối với giải mã, cùng với đó là các khe cắm PCIe và USB 3.0.

– Jetson Nano cung cấp 472 GFLOPS để chạy các thuật tốn AI hiện đại một cách nhanh chóng, với một quad-core 64-bit ARM CPU, một 128-core được tích hợp trên NVIDIA GPU, cũng như bộ nhớ 4GB LPDDR4. Có thể chạy song song nhiều mạng neural và xử lý đồng thời một số cảm biến có độ phân giải cao. Jetson Nano cũng được hỗ trợ bởi NVIDIA JetPack. Bao gồm các gói hỗ trợ board (BSP), CUDA, cuDNN và thư viện phần mềm TensorRT cho deep learning, computer vision, GPU computing, multimedia processing và nhiều ứng dụng khác. SDK cũng bao gồm khả năng cài đặt frameworks Machine Learning (ML) mã nguồn mở như TensorFlow, PyTorch, Caffe/Caffe2, Keras và MXNet, cho phép các nhà phát triển tích hợp các model AI/ framework AI yêu tích của họ vào các sản phẩm một cách nhanh chóng và dễ dàng.

– Khả năng xử lý video của Jetson Nano là khá ấn tượng. Sản phẩm này không phải phục vụ việc xem video 4K, thay vào đó, nó có thể xử lý nhiều luồng video (như các máy bay không người lái drone được tích hợp đa camera) để có thể phát hiện đối tượng, theo dõi hay tránh chướng ngại vật. Ngoài 4K 60fps, Jetson Nano cịn có khả năng giải mã 8 luồng video hay camera với độ phân giải Full HD 30fps. Các luồng này sẽ được giải mã đồng thời ngay lập tức bởi các thuật toán học máy để theo dõi đối tượng.

52

3.1.7. Webcam

Thuật ngữ Webcam (viết tắt là WC) được ghép từ Website camera chỉ những thiết bị ghi hình kỹ thuật số được kết nối với máy tính, để truyền trực tiếp hình ảnh mà nó ghi được lên một website hay một thiết bị kết nối khác thông qua hệ thống mạng internet.

Nhìn chung thì webcam sẽ giống như một máy ảnh kỹ thuật số với cơng dụng ghi hình nhưng chỉ khác ở chỗ: chức năng chính của nó do phần mềm trên máy tính điều khiển và xử lí. Đây là món phụ kiện rất phổ biến và được tích hợp (hoặc có thể mua) trên hầu hết các thiết bị công nghệ hiện nay như laptop, tablet, điện thoại (camera trước), một số mẫu màn hình máy tính và kể cả TV thông minh.

53

3.1.8. Nguồn

Nguồn được tạo thành từ các pin cell 18650 2600mAh 3.7V bằng cách mắc nối tiếp 3 cell với nhau, sau đó mắc song song 3 cell nối tiếp với 3 cell nối tiếp.

Hình 3.8. Pin cell 18650 2600mAh 3.7V

54

3.2. Phần mềm 3.2.1. Python

Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum. Nó 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. Python hồn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động. Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng. Cú pháp lệnh của Python là điểm cộng vơ cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết các nền tảng.

Hình 3.10. Ngơn ngữ Python Tính năng chính của Python: Tính năng chính của Python:

– Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng. Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như C++, Java, C#. Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào những giải pháp chứ không phải cú pháp.

– Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậm chí là dùng nó cho mục đích thương mại. Vì là mã nguồn mở, bạn khơng những có thể sử dụng các phần mềm, chương trình được viết trong Python mà cịn có thể thay đổi mã nguồn của nó. Python có một cộng đồng rộng lớn, khơng ngừng cải thiện nó mỗi lần cập nhật.

55 – Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảng này sang nền tảng khác và chạy nó mà khơng có bất kỳ thay đổi nào. Nó chạy liền mạch trên hầu hết tất cả các nền tảng như Windows, macOS, Linux.

– Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng địi hỏi sự phức tạp rất lớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngơn ngữ khác (có thể gọi được từ C) vào code Python. Điều này sẽ cung cấp cho ứng dụng của bạn những tính năng tốt hơn cũng như khả năng scripting mà những ngơn ngữ lập trình khác khó có thể làm được.

– Ngơn ngữ thơng dịch cấp cao: Không giống như C/C++, với Python, bạn không phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vô nghĩa,... Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngơn ngữ máy tính có thể hiểu. Bạn khơng cần lo lắng về bất kỳ hoạt động ở cấp thấp nào.

– Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một số lượng lớn thư viện tiêu chuẩn giúp cho cơng việc lập trình của bạn trở nên dễ thở hơn rất nhiều, đơn giản vì khơng phải tự viết tất cả code.

– Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng. Lập trình hướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan. Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằng cách tạo ra các đối tượng.

Phạm vi ứng của Python:

– Lập trình ứng dụng web: Bạn có thể tạo web app có khả năng mở rộng (scalable) được bằng cách sử dụng framework và CMS (Hệ thống quản trị nội dung) được tích hợp trong Python. Vài nền tảng phổ biến để tạo web app là: Django, Flask, Pyramid, Plone, Django CMS. Các trang như Mozilla, Reddit, Instagram và PBS đều được viết bằng Python.

– Khoa học và tính tốn: Có nhiều thư viện trong Python cho khoa học và tính tốn số liệu, như SciPy và NumPy, được sử dụng cho những mục đích chung chung trong tính tốn. Và, có những thư viện cụ thể như: EarthPy cho khoa học trái đất, AstroPy cho Thiên

56 văn học,... Ngồi ra, Python cịn được sử dụng nhiều trong machine learning, khai thác dữ liệu và deep learning.

–Tạo nguyên mẫu phần mềm: Python chậm hơn khi so sánh với các ngôn ngữ được biên dịch như C++ và Java. Nó có thể khơng phải là lựa chọn tốt nếu nguồn lực bị giới hạn và yêu cầu về hiệu quả là bắt buộc. Tuy nhiên, Python là ngôn ngữ tuyệt vời để tạo những nguyên mẫu (bản chạy thử - prototype). Ví dụ, bạn có thể sử dụng Pygame (thư viện viết game) để tạo ngun mẫu game trước. Nếu thích ngun mẫu đó có thể dùng C++ để viết game thực sự.

–Ngơn ngữ tốt để dạy lập trình: Python được nhiều cơng ty, trường học sử dụng để dạy lập trình cho trẻ em và những người mới lần đầu học lập trình. Bên cạnh những tính năng và khả năng tuyệt vời thì cú pháp đơn giản và dễ sử dụng của nó là lý do chính cho việc này.

3.2.2. Anaconda

Anaconda là một nền tảng phân phối miễn phí của ngơn ngữ lập trình Python và R cho tính tốn khoa học (khoa học dữ liệu, machine learning, xử lý dữ liệu lớn, phân tích dự đốn,...), nhằm mục đích đơn giản hóa việc quản lý và triển khai gói. Nó có trên cả Windows, MacOS và Linux.

Anaconda chứa tất cả các gói (cơng cụ) phổ biến nhất mà một nhà khoa học dữ liệu cần. Các package trong Anaconda được quản lý bởi trình quản lý riêng của nền tảng này là conda. Ta thường dùng conda để tạo môi trường cô lập các dự án của mình, nhằm sử dụng các phiên bản Python khác nhau hoặc các phiên bản package khác nhau, cũng như dùng nó để cài đặt, gỡ cài đặt và cập nhật các package riêng trong từng dự án.

57

Lợi ích khi dùng Anaconda:

– Anaconda khơng chỉ có Python: Anaconda khơng chỉ gồm có Python, mà cịn có hơn 600 package mở rộng đi kèm, đó là các package cơ bản cho các tác vụ xử lý khoa học dữ liệu như NumPy, Pandas,.... Bạn không cần phải nhập các lệnh trên terminal để tải về nữa, chỉ cần tải Anaconda là có thể sử dụng ngay các package đó, giúp tiết kiệm khá nhiều thời gian cho chúng ta.

– Anaconda cài đặt mà khơng có quyền của quản trị: Bạn có thể cài Anaconda từ hầu hết máy tính mà khơng cần lo tới quyền admin, như là sử dụng máy tính ở thư viện trường,.... Điều này khiến cho Anaconda có thể cài đặt ở bất cứ nơi đâu, miễn là có máy tính.

– Anaconda hoạt động trên mọi nền tảng (Windows, Linux, MacOS): Nếu bạn sử dụng MacOS, thì hầu hết các bản cài đặt MacOS đều đi kèm với Python. Vấn đề là phiên bản Python đi kèm với MacOS đã cũ (thường là Python legacy, Python 2) và phiên bản Python đi kèm với MacOS bị khóa, cần quyền quản trị để chạy. Vì phiên bản Python được cài sẵn trong MacOS yêu cầu đặc quyền của quản trị viên, sẽ dễ xảy ra lỗi trong quá trình chạy các ứng dụng Python. Sử dụng Anaconda thì nó sẽ sử dụng một phiên bản Python tách biệt với Python có sẵn trong Mac, mọi thứ sẽ hoạt động trơn tru, ta làm việc mà chẳng lo lỗi.

– Anaconda giúp quản lý gói và mơi trường ảo dễ dàng hơn: Một trong những ưu điểm lớn nhất của Anaconda là quản lý môi trường ảo (virtual environment) dễ dàng. Nếu bạn mới dùng Anaconda lần đầu tiên, có thể bạn chưa quan tâm lắm đến vấn đề này, tuy nhiên khi bắt đầu với một số project, bạn sẽ thấy virtual environment rất quan trọng, giúp ta tránh xung đột về phiên bản Python cũng như phiên bản package của project nếu có mang đi sang máy khác.

3.2.3. Pycharm

PyCharm là một nền tảng hybrid được JetBrains phát triển như một IDE cho Python. Nó thường được sử dụng để phát triển ứng dụng Python.

Pycharm là một giải pháp phù hợp cho Python developers vì IDE này hỗ trợ nhiều extensions, môi trường ảo (Virtual Environment), nhiều tính năng thơng minh như bộ code

58 completion, tự động thụt lề, phát hiện văn bản trùng lặp và kiểm tra lỗi. Ngồi ra cịn có các tính năng tìm kiếm mã nguồn thơng minh để tìm kiếm từng từ một trong nháy mắt.

Một phần của tài liệu Nghiên cứu và phát triển hệ thống phát hiện đối tượng trên xe tự hành dành cho cuộc đua số của FPT đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 56)

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

(122 trang)