Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghiệp hóa và hiện đại hóa, ngành công nghiệp chế tạo và ứng dụng robot có tốc độ phát triển mạnh mẽ nhằm thay thế con người thực hiện các công việc trong môi trường độc hại, nặng nhọc, nguy hiểm cũng như các tác vụ đòi hỏi độ chính xác cao. Trong các phân hệ robotic, xe tự hành (robot di động) giữ vai trò then chốt nhờ tính linh hoạt, khả năng tự động hóa và phạm vi ứng dụng rộng rãi từ sản xuất công nghiệp đến phục vụ đời sống. Để vận hành tự chủ, xe tự hành cần thu thập dữ liệu môi trường thông qua hệ thống cảm biến và camera, từ đó tự đưa ra quyết định di chuyển. Trong đó, công nghệ xử lý ảnh số đóng vai trò là cơ cấu cảm nhận thị giác quan trọng.
Đề tài "Xe tự động di chuyển dựa vào vật mốc dùng xử lý ảnh" được thực hiện dựa trên sự kế thừa và cải tiến từ các nghiên cứu đi trước:
- Đề tài "Robot Tự Hành Tránh Vật Cản Sử Dụng Thiết Bị Kinect" (xử lý không gian 3D, lập kế hoạch di chuyển trong nhà).
- Đề tài "Triển Khai Thuật Toán Định Hướng Trên ROS Cho Robot Tự Hành Trong Nhà" (ứng dụng giải thuật định hướng trên hệ điều hành ROS và quét bản đồ bằng Kinect).
- Nghiên cứu "Ứng Dụng OpenCV Và Kinect Hỗ Trợ Dò Đường Đi Cho Robot" (sử dụng thư viện OpenCV và thuật toán SIFT để định vị đối tượng).
Nhóm tác giả đã cải tiến bằng cách sử dụng webcam Logitech C270 kết nối trực tiếp với máy tính thay cho thiết bị Kinect nhằm mở rộng tầm quan sát, giảm độ phức tạp phần cứng, đồng thời tích hợp hệ điều hành robot ROS (Robot Operating System) để module hóa và tối ưu hóa quá trình xử lý luồng dữ liệu.
Mục tiêu nghiên cứu:
Thiết kế và thi công hoàn chỉnh mô hình xe tự hành có khả năng tự động bám theo đường line, kết hợp nhận dạng vật mốc thị giác để định hướng đường đi tại các nút giao. Quá trình xử lý dữ liệu ảnh được thực hiện trên máy tính và truyền tín hiệu điều khiển chấp hành xuống Kit Arduino Due.
Nhiệm vụ nghiên cứu:
- Gia công khung cơ khí và bố trí cấu trúc robot.
- Thiết kế và thi công mạch công suất điều khiển động cơ.
- Kết nối toàn bộ hệ thống phần cứng: Camera, máy tính, Arduino Due và mạch công suất.
- Nghiên cứu hệ điều hành ROS (cấu trúc Filesystem, Computation Graph, các cơ chế Message, Topic, Service).
- Nghiên cứu lý thuyết điều khiển tự động: Thuật toán vi tích phân tỉ lệ PID và thuật toán động học hướng rẽ vi sai.
- Lập trình nhúng trên Arduino Due để điều khiển tốc độ động cơ DC Servo bằng PID.
- Nghiên cứu lý thuyết xử lý ảnh số và cấu trúc thư viện thị giác máy tính OpenCV.
- Xây dựng và thực nghiệm chương trình dò line dựa trên kỹ thuật phân vùng và nhị phân hóa ảnh.
- Xây dựng và thực nghiệm chương trình trích chọn đặc trưng và nhận dạng vật mốc bằng thuật toán SIFT.
- Tích hợp chương trình xử lý ảnh dò line và nhận dạng vật mốc trên ROS, truyền thông điệp điều khiển xuống Arduino qua gói
rosserial.
- Chạy thực nghiệm, cân chỉnh hệ số giải thuật và lập báo cáo đồ án tốt nghiệp.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Hệ thống xe tự hành hai bánh chủ động vi sai, các thuật toán xử lý ảnh số (dò line, biến đổi đặc trưng bất biến tỷ lệ SIFT) và thuật toán điều khiển chuyển động PID.
- Phạm vi không gian: Thử nghiệm trong môi trường trong nhà (indoor), mặt sàn bằng phẳng; bề mặt dán đường line có độ tương phản mức xám rõ rệt so với nền; vật mốc được bố trí trong tầm nhìn hiệu dụng của camera.
- Phạm vi thời gian: Đồ án được triển khai và hoàn thành trong khoảng thời gian từ ngày 01/04/2016 đến ngày 07/07/2016.
Cơ sở lý thuyết và phương pháp
Đồ án xây dựng nền tảng tính toán dựa trên các hệ thống lý thuyết chuyên ngành kỹ thuật điện tử, tự động hóa và thị giác máy tính:
1. Hệ điều hành Robot (ROS)
ROS cung cấp nền tảng truyền thông phân tán mã nguồn mở cho hệ thống robot, được cấu trúc theo ba tầng:
- Tầng ROS Filesystem: Quản lý tài nguyên trên bộ nhớ gồm Packages (đơn vị phần mềm cơ bản chứa nodes, thư viện, cấu hình), Manifests (
manifest.xml), Stacks, Stack Manifests (stack.xml), Message types (.msg) và Service types (.srv).
- Tầng ROS Computation Graph: Mạng lưới ngang hàng (peer-to-peer) xử lý dữ liệu theo thời gian thực, bao gồm các thành phần chính: Nodes (các tiến trình tính toán độc lập), Master (cung cấp dịch vụ đăng ký và định danh cho toàn bộ đồ thị), Parameter Server, Messages (cấu trúc dữ liệu chuẩn hoặc lồng nhau), Topics (cơ chế truyền tin một chiều đa điểm publish/subscribe), Services (cơ chế tương tác hai chiều dạng request/reply) và Bags (định dạng lưu trữ và phát lại luồng dữ liệu).
- Tầng ROS Community: Hệ thống phân phối phiên bản (ROS Hydro Medusa), kho lưu trữ mã nguồn mở và cơ sở dữ liệu hướng dẫn kỹ thuật ROS Wiki.
2. Xử lý ảnh số và thư viện OpenCV
Hệ thống xử lý ảnh tuân theo chu trình: Thu nhận ảnh $\rightarrow$ Số hóa $\rightarrow$ Xử lý số $\rightarrow$ Hệ quyết định.
- Không gian màu và biến đổi mức xám: Điểm ảnh biểu diễn trong không gian màu RGB (24-bit, mỗi kênh 8-bit từ 0 đến 255). Quá trình chuyển đổi từ ảnh màu sang ảnh mức xám 8-bit áp dụng công thức chuẩn:
$$I(x, y) = 0.299 \cdot R(x, y) + 0.587 \cdot G(x, y) + 0.114 \cdot B(x, y)$$
- Nhị phân hóa và nhị phân hóa ngược: Phân tách đối tượng và nền dựa trên giá trị ngưỡng $T$ ($T \in [0, 255]$, giá trị mặc định là 128 hoặc thực nghiệm ở $T = 100$).
- Thư viện OpenCV: Sử dụng các module
CxCore (cấu trúc dữ liệu cấp thấp: CvPoint, CvSize, CvMat, IplImage, CvSeq), CV (thuật toán lọc nhiễu Gaussian, trích biên, tìm contour), HighGUI (giao diện, xuất nhập luồng ảnh/video) và CvCam.
3. Phép biến đổi đặc trưng bất biến tỷ lệ (SIFT)
Thuật toán SIFT (David Lowe, 1999) trích xuất các điểm đặc trưng cục bộ (keypoints) bất biến với các phép co giãn, quay ảnh, thay đổi độ sáng và góc nhìn 3D qua 4 giai đoạn:
- Phát hiện cực trị không gian tỉ lệ (Scale-Space Extrema Detection): Sử dụng hàm sai phân Gaussian (Difference-of-Gaussian - DoG) $D(x, y, \sigma) = (G(x, y, k\sigma) - G(x, y, \sigma)) * I(x, y)$ từ không gian tỷ lệ $L(x, y, \sigma) = G(x, y, \sigma) * I(x, y)$ với hàm nhân Gaussian $G(x, y, \sigma) = \frac{1}{2\pi\sigma^2} e^{-(x^2+y^2)/2\sigma^2}$.
- Định vị chính xác điểm đặc trưng (Keypoint Localization): Khai triển Taylor bậc hai của hàm $D(x, y, \sigma)$ để loại bỏ các điểm có độ tương phản thấp hoặc nằm dọc theo cạnh:
$$D(\mathbf{x}) = D + \frac{\partial D^T}{\partial \mathbf{x}} \mathbf{x} + \frac{1}{2} \mathbf{x}^T \frac{\partial^2 D}{\partial \mathbf{x}^2} \mathbf{x}$$
- Gán hướng cho điểm đặc trưng (Orientation Assignment): Tính độ lớn gradient $m(x, y)$ và hướng $\theta(x, y)$ trên cửa sổ lân cận, xây dựng biểu đồ hướng gồm 36 bin (mỗi bin $10^\circ$), gán hướng cực đại để đạt tính bất biến với phép quay.
- Xây dựng bộ mô tả điểm đặc trưng (Keypoint Description): Tính toán ma trận $4 \times 4$ vùng con quanh keypoint, mỗi vùng con tạo biểu đồ hướng 8 chiều, hình thành vector đặc trưng 128 chiều ($4 \times 4 \times 8$). Để nhận dạng đối tượng mẫu trong ảnh phức tạp, hệ thống yêu cầu tối thiểu 3 điểm đặc trưng trùng khớp.
4. Động học chuyển động vi sai và điều khiển PID
- Động học vi sai: Hai bánh chủ động gắn trên trục chung có khoảng cách $L$. Tâm quay tức thời (ICC - Instantaneous Center of Curvature) được xác định dựa trên quan hệ vận tốc dài bánh phải $v_R$ và bánh trái $v_L$:
$$\omega = \frac{v_R - v_L}{L}, \quad v = \frac{v_R + v_L}{2}, \quad R = \frac{L(v_R + v_L)}{2(v_R - v_L)}$$
- Khi $v_L = v_R$: Robot chuyển động thẳng ($R = \infty, \omega = 0$).
- Khi $v_L = -v_R$: Robot quay tại chỗ quanh tâm trục ($R = 0$).
- Khi $v_L = 0$: Robot quay quanh điểm tiếp xúc bánh trái ($R = L/2$).
- Bộ điều khiển PID: Hàm truyền liên tục của bộ điều khiển:
$$G(s) = K_P + \frac{K_I}{s} + K_D s = K_P \left( 1 + \frac{1}{T_I s} + T_D s \right)$$
Phương pháp hiệu chỉnh thực nghiệm: Xác định $K_P$ đến ngưỡng dao động rồi nhân với $0.6$; tăng dần $K_D$ để dập tắt dao động và điều chỉnh $K_I$ từ giá trị nhỏ để triệt tiêu sai số xác lập.
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo cấu trúc điều khiển phân tầng, phân tách rõ ràng giữa tác vụ tính toán thị giác nặng trên máy tính và tác vụ điều khiển động học thời gian thực trên vi điều khiển.
| Phân hệ / Khối |
Phần cứng & Công nghệ sử dụng |
Thông số kỹ thuật / Vai trò |
| Khối nguồn |
Acquy chì-axit RL1212 (Zhongshan Rely Battery Co. Ltd) |
Điện áp: 12VDC; Dung lượng: 1.2Ah; Chu kỳ sử dụng: 14.48 - 15V; Dòng nạp ban đầu: < 0.36A. Cấp nguồn động lực cho động cơ và mạch cầu. |
| Khối thu nhận ảnh |
Webcam Logitech C270 |
Chuẩn kết nối USB 2.0; Độ phân giải video: $1280 \times 720$ pixel; Ảnh chụp phần mềm: Lên đến 3.0 Megapixel; Tích hợp micro giảm ồn. |
| Khối xử lý dữ liệu ảnh |
Máy tính xách tay (PC) chạy Ubuntu 14.04, ROS, OpenCV |
Cấu hình: Intel Core 2 Duo 2.4 GHz, RAM 2 GB, dung lượng trống > 200 MB; Thực hiện thuật toán trích xuất ROI, dò line và nhận dạng vật mốc SIFT. |
| Khối xử lý trung tâm |
Kit vi điều khiển Arduino Due (ARM Cortex-M3) |
Điện áp hoạt động: 3.3V; Xung nhịp: 84 MHz; Nhận lệnh vận tốc qua giao tiếp Serial (rosserial), thực thi thuật toán PID qua ngắt Timer 3, Timer 4, Timer 5. |
| Khối chấp hành & Công suất |
02 Động cơ DC Servo Faulhaber 12V + 02 Module Driver L298N |
Động cơ công suất 17W, tích hợp Encoder kênh A-B lệch pha; Driver công suất 20W/kênh; Điều chế độ rộng xung (PWM) để chỉnh tốc độ hai bánh. |
| Cơ cấu khung vỏ |
Khung xe 2 bánh chủ động + 1 bánh dẫn hướng |
Kích thước cơ khí: Dài 39 cm $\times$ Rộng 36 cm $\times$ Cao 38 cm. |
Quy trình xử lý phần mềm và luồng dữ liệu:
-
Thuật toán dò line:
- Trích xuất vùng quan tâm (ROI - Region of Interest) từ khung hình camera Logitech C270.
- Chuyển đổi ROI sang ảnh xám và áp dụng kỹ thuật nhị phân hóa ngược để làm nổi bật vạch dẫn đường màu trắng.
- Sử dụng thuật toán dò biên tìm kiếm các đường bao (contours), tính toán kích thước chiều rộng và chiều cao để xác định chính xác vùng line.
- Tính toán sai lệch giữa tâm vạch line và tâm khung hình, chuyển đổi thành góc lệch điều khiển.
-
Thuật toán nhận dạng vật mốc SIFT:
- Thu thập và lưu trữ cơ sở dữ liệu các ảnh vật mẫu định hướng.
- Trích xuất tập điểm đặc trưng (keypoints) và bộ mô tả 128 chiều từ ảnh mẫu và ảnh thu nhận thời gian thực từ camera.
- Tiến hành so khớp (feature matching) các vector đặc trưng. Khi số điểm khớp vượt ngưỡng tin cậy ($\ge 3$ điểm), hệ thống xác nhận vật mốc và quyết định hướng rẽ tương ứng.
-
Truyền thông và điều khiển động cơ:
- Dữ liệu hướng di chuyển và vận tốc từ ROS Master được đóng gói thành Message, đẩy vào Topic tương ứng.
- Node
rosserial_python trên PC chuyển tiếp dữ liệu qua cổng /dev/ttyACM0 xuống node ROS chạy trên Arduino Due.
- Các ngắt định thời (Timer Interrupts) trên Arduino Due định kỳ đọc xung encoder hai kênh A-B để tính vận tốc thực tế, thực thi giải thuật PID rời rạc, xuất tín hiệu PWM và mức logic đảo chiều tới IC L298N để điều khiển 2 động cơ Faulhaber bám đúng quỹ đạo.
Nội dung chính theo từng chương
Chương 1: Tổng Quan
- Trình bày tính cấp thiết của đề tài trong xu thế phát triển robot tự hành và công nghệ xử lý ảnh; tổng thuật 3 công trình nghiên cứu liên quan làm tiền đề thiết kế.
- Xác định mục tiêu chế tạo mô hình xe tự hành bám line và nhận dạng vật mốc định hướng; liệt kê 11 nội dung nhiệm vụ nghiên cứu chi tiết.
- Nêu rõ các giới hạn vật lý và kỹ thuật: Kích thước khung vỏ $39 \times 36 \times 38\text{ cm}$, sử dụng 2 động cơ Faulhaber 12V (17W), 2 driver L298N (20W), camera Logitech C270, Kit Arduino Due; điều kiện thử nghiệm trên sàn bằng phẳng trong nhà.
Chương 2: Cơ Sở Lý Thuyết
- Khái quát về hệ điều hành chuyên dụng cho robot (ROS), phân tích chi tiết cấu trúc 3 tầng: Filesystem, Computation Graph và Community Level; làm rõ nguyên lý hoạt động của các cơ chế Topic (Publish/Subscribe), Service (Request/Response) và Message.
- Trình bày lý thuyết xử lý ảnh số: Cấu trúc điểm ảnh, độ phân giải, không gian màu RGB, công thức chuyển đổi ảnh xám $I(x,y)$, phương pháp nhị phân hóa; giới thiệu cấu trúc các module và hàm chức năng trong thư viện OpenCV.
- Phân tích toán học giải thuật SIFT qua 4 bước: Phát hiện cực trị không gian tỷ lệ (DoG), định vị keypoint chính xác bằng khai triển Taylor bậc hai, gán hướng gradient (36 bins) và xây dựng bộ mô tả cục bộ 128 chiều.
- Trình bày lý thuyết điều khiển tự động: Hàm truyền bộ điều khiển PID liên tục $G(s)$, vai trò của từng khâu $K_P, K_I, K_D$, phương pháp chỉnh định hệ số thực nghiệm; xây dựng mô hình toán học động học vi sai của robot hai bánh chủ động, tính toán tâm quay tức thời (ICC), bán kính cong $R$, vận tốc góc $\omega$ và công thức chuyển đổi sang vận tốc quay bánh xe qua chu vi vòng tròn $l = 2\pi r$.
Chương 3: Tính Toán Và Thiết Kế
- Thiết kế sơ đồ khối toàn hệ thống gồm 5 khối chức năng: Khối nguồn, Khối camera, Khối PC và xử lý dữ liệu ảnh, Khối xử lý trung tâm, Khối chấp hành.
- Tính toán và thuyết minh việc lựa chọn các linh kiện phần cứng: Nguồn Acquy chì-axit RL1212 ($12\text{VDC} - 1.2\text{Ah}$), Webcam Logitech C270, máy tính xách tay cấu hình Intel Core 2 Duo 2.4 GHz/RAM 2GB, Kit điều khiển Arduino Due (ARM Cortex-M3), động cơ DC Servo Faulhaber 12V tích hợp encoder, mạch công suất L298N.
- Thiết lập nguyên lý xử lý ảnh phân vùng xác định đường line và quy trình so khớp đặc trưng vật mẫu từ camera theo giải thuật SIFT.
- Xây dựng sơ đồ nguyên lý mạch điện chi tiết kết nối giữa Arduino Due, module L298N, động cơ và nguồn điện.
Chương 4: Thi Công Hệ Thống
- Trình bày quy trình thi công phần cứng: Chế tạo mạch điện điều khiển công suất, gia công khung robot cơ khí, lắp ráp các bộ phận nhựa, bố trí vị trí các module và kết nối vật lý toàn hệ thống.
- Xây dựng lưu đồ giải thuật phần mềm:
- Lưu đồ chương trình chính trên máy tính chạy nền ROS.
- Lưu đồ chương trình con xử lý ảnh dò line (chuyển đổi mức xám, nhị phân hóa ngược, trích xuất contour, xác định tọa độ line).
- Lưu đồ chương trình con nhận dạng vật mốc SIFT (trích chọn keypoints, so khớp vector đặc trưng của 3 vật mẫu).
- Lưu đồ chương trình nhúng trên Arduino Due thực thi ngắt Timer 3, Timer 4 (đọc xung encoder, tính toán PID) và Timer 5 (xử lý quỹ đạo di chuyển).
- Hướng dẫn chi tiết các bước thiết lập môi trường phần mềm (Ubuntu, cài đặt gói ROS, phân quyền thư viện) và quy trình vận hành hệ thống qua các lệnh
rosrun.
Chương 5: Kết Quả - Nhận Xét - Đánh Giá
- Trình bày hình ảnh mô hình robot thực tế sau khi lắp ráp và đấu nối hoàn chỉnh.
- Ghi nhận kết quả thực nghiệm hoạt động của robot trên sa bàn thử nghiệm: Khả năng nhận dạng một đường line đơn; nhận dạng và phân biệt 3 đường line tại ngã tư; nhận dạng vạch line trong điều kiện môi trường ánh sáng yếu; nhận dạng thành công vật mẫu định hướng dựa trên thuật toán SIFT ở nhiều góc độ và hướng quan sát khác nhau.
- Đánh giá tốc độ xử lý khung hình (fps) thu nhận từ camera trong 1 giây nhằm kiểm chứng tính ổn định của hệ thống thị giác máy tính.
Chương 6: Kết Luận Và Hướng Phát Triển
- Tổng kết toàn bộ các kết quả thiết kế, chế tạo và thử nghiệm đã đạt được theo đúng mục tiêu ban đầu.
- Nêu rõ các hạn chế kỹ thuật còn tồn tại của mô hình và đề xuất các giải pháp phát triển mở rộng trong tương lai.
Kết quả và đóng góp
1. Kết quả kỹ thuật đạt được
- Chế tạo hoàn chỉnh phần cứng: Thiết kế và lắp ráp hoàn thiện mô hình xe tự hành vi sai kích thước $39 \times 36 \times 38\text{ cm}$, tích hợp đồng bộ nguồn Acquy RL1212, mạch công suất L298N, 2 động cơ DC Servo Faulhaber 12V có hồi tiếp encoder, webcam Logitech C270 và Kit Arduino Due.
- Xây dựng hệ thống phần mềm phân tán: Thiết lập thành công hệ thống truyền thông ROS trên Ubuntu, phân tách tác vụ xử lý ảnh trên PC và giao tiếp truyền nhận dữ liệu điều khiển nhịp nhàng với Arduino Due qua giao thức
rosserial.
- Thực nghiệm thị giác máy tính:
- Chương trình dò line bằng OpenCV nhận dạng chính xác đường dẫn hướng đơn và các nhánh rẽ tại ngã tư, duy trì khả năng nhận dạng trong điều kiện ánh sáng yếu nhờ kỹ thuật nhị phân hóa ngược vùng quan tâm (ROI).
- Thuật toán SIFT nhận dạng chính xác 3 vật mẫu thử nghiệm ở nhiều góc nhìn, khoảng cách và điều kiện xoay/nghiêng khung hình, bóc tách thành công đối tượng khi đạt tối thiểu 3 điểm đặc trưng tương đồng.
- Điều khiển ổn định: Thuật toán PID và động học vi sai điều khiển 2 động cơ hoạt động chính xác theo tín hiệu điều hướng nhận được, giúp xe chuyển hướng mượt mà tại các nút giao có vật mốc.
2. Giải pháp kỹ thuật do tác giả đề xuất
- Sử dụng webcam thông dụng Logitech C270 thay thế cảm biến Kinect cồng kềnh, giúp giảm tải trọng, tiết kiệm chi phí nhưng vẫn đảm bảo trường quan sát rộng phục vụ đồng thời hai tác vụ dò line mặt sàn và nhận diện vật mốc tầm xa.
- Kết hợp thuật toán SIFT để định hướng di chuyển cho robot, giải quyết triệt để vấn đề mất dấu hoặc nhận dạng sai lệch do hiện tượng rung lắc của xe khi chuyển động hoặc ánh sáng môi trường thay đổi.
- Ứng dụng cấu trúc mạng nút (nodes/topics) của ROS để tách biệt module xử lý ảnh nặng và module điều khiển động lực thời gian thực, nâng cao tính ổn định và tính module hóa của hệ thống nhúng.
3. Đóng góp của đề tài
- Kế thừa và cải tiến các nghiên cứu trước bằng cách tinh giản phần cứng thu nhận hình ảnh, kết hợp thành công hai bài toán xử lý ảnh kinh điển (phân vùng nhị phân dò line và trích chọn đặc trưng bất biến SIFT nhận dạng mốc) trong cùng một hệ thống robot di động thực tế.
- Cung cấp tài liệu thiết kế chi tiết từ sơ đồ nguyên lý mạch điện, lưu đồ thuật toán ROS/OpenCV đến mã nguồn điều khiển nhúng PID đa ngắt Timer trên vi điều khiển ARM Cortex-M3.
Hạn chế và hướng nghiên cứu tiếp
1. Hạn chế của đề tài
- Mô hình chỉ vận hành ổn định trên địa hình bằng phẳng trong nhà; khả năng thích ứng với địa hình gồ ghề ngoài trời chưa được trang bị.
- Xử lý ảnh dò line phụ thuộc vào độ tương phản mức xám giữa đường line và bề mặt sàn; nếu sàn có độ phản quang lớn hoặc mức xám gần bằng đường line sẽ gây nhiễu nhận dạng.
- Trường nhìn của camera cố định phải bao quát cả mặt sàn (để dò line) và không gian phía trước (để tìm vật mốc), dẫn đến tầm nhìn xa bị giới hạn; vật mốc bắt buộc phải đặt trong cự ly phù hợp.
- Thuật toán SIFT trích xuất số lượng lớn điểm đặc trưng (trung bình khoảng 2000 điểm đối với ảnh kích thước $500 \times 500$ pixel), đòi hỏi chi phí tính toán đối sánh lớn, có thể ảnh hưởng đến tốc độ đáp ứng thời gian thực nếu cơ sở dữ liệu vật mốc mở rộng.
2. Hướng nghiên cứu tiếp
- Tối ưu hóa thuật toán xử lý ảnh nhằm nâng cao tốc độ trích xuất đặc trưng và giảm tải tiêu thụ tài nguyên CPU máy tính.
- Nâng cấp phần cứng cơ khí và cấu trúc khung gầm, nghiên cứu bổ sung cảm biến bổ trợ để xe có khả năng hoạt động trên các địa hình phức tạp và môi trường ngoài trời.
Giá trị tham khảo
Tài liệu đồ án có giá trị tham khảo hữu ích cho các đối tượng và chuyên ngành sau:
- Đối tượng thụ hưởng: Sinh viên, học viên cao học và kỹ sư thuộc các chuyên ngành Kỹ thuật Điện tử - Truyền thông, Kỹ thuật Điều khiển & Tự động hóa, Cơ điện tử, Robotics và Công nghệ Thông tin (chuyên ngành Thị giác máy tính/Hệ thống nhúng).
- Các nội dung có giá trị tham khảo chuyên sâu:
- Kiến trúc hệ thống: Phương pháp tích hợp hệ thống điều khiển lai (Hybrid Control Architecture) kết hợp giữa hệ điều hành ROS trên máy tính Linux và vi điều khiển thời gian thực Arduino qua giao tiếp
rosserial.
- Thuật toán xử lý ảnh: Quy trình từng bước lập trình OpenCV để phân vùng ROI dò line và quy trình toán học trích xuất đặc trưng bất biến tỷ lệ SIFT ứng dụng trong bài toán nhận dạng đối tượng thực tế.
- Động học và điều khiển nhúng: Phương pháp xây dựng mô hình toán học động học vi sai (tính toán tâm quay tức thời ICC, bán kính cong $R$, vận tốc góc $\omega$) và kỹ thuật lập trình ngắt định thời (Timer 3, Timer 4, Timer 5) để điều khiển động cơ DC Servo vòng kín bằng giải thuật PID trên vi điều khiển 32-bit.
Câu hỏi thường gặp
1. Hệ thống phần cứng của xe tự hành bao gồm những khối chức năng chính nào?
Hệ thống gồm 5 khối chức năng chính: Khối nguồn (Acquy chì-axit RL1212 12VDC - 1.2Ah), Khối camera (Webcam Logitech C270 chuẩn USB 2.0), Khối PC và xử lý dữ liệu ảnh (máy tính Intel Core 2 Duo chạy Ubuntu 14.04, ROS, OpenCV), Khối xử lý trung tâm (Kit Arduino Due nền ARM Cortex-M3) và Khối chấp hành (02 module driver L298N công suất 20W kết hợp 02 động cơ DC Servo Faulhaber 12V công suất 17W có encoder).
2. Thuật toán SIFT trong đồ án hoạt động qua các giai đoạn nào và điều kiện để xác nhận vật mốc là gì?
Thuật toán SIFT thực hiện qua 4 giai đoạn: (1) Phát hiện cực trị không gian tỷ lệ bằng sai phân Gaussian (DoG); (2) Định vị chính xác điểm đặc trưng bằng khai triển Taylor bậc hai và loại bỏ điểm biên/tương phản thấp; (3) Gán hướng dựa trên biểu đồ gradient 36 bin; (4) Xây dựng bộ mô tả cục bộ 128 chiều từ ma trận $4 \times 4$ vùng con. Để phát hiện và bóc tách thành công một vật mốc trong ảnh thu nhận, hệ thống cần tối thiểu 3 điểm đặc trưng trùng khớp giữa ảnh mẫu và ảnh thực tế.
3. Quy trình xử lý ảnh dò line trên máy tính được thực hiện qua các bước nào?
Quy trình gồm 4 bước: (1) Xác định vùng quan tâm (ROI) trên khung hình camera và chuyển sang ảnh mức xám; (2) Dùng phương pháp nhị phân hóa ngược để biến đổi ảnh xám thành ảnh nhị phân làm nổi bật đường line; (3) Tìm kiếm các đường bao (contours) bao quanh đối tượng màu trắng và tính toán chiều rộng, chiều cao; (4) So sánh kích thước các vùng với ngưỡng quy định để lọc ra vùng line thực tế và xác định sai lệch tâm để điều hướng.
4. Mô hình động học chuyển động vi sai của robot tính toán hướng rẽ và bán kính quay như thế nào?
Dựa vào cơ chế hai bánh xe độc lập trên cùng một trục khoảng cách $L$, hướng rẽ và bán kính quay $R$ quanh tâm quay tức thời (ICC) được xác định qua vận tốc bánh phải $v_R$ và bánh trái $v_L$:
- Vận tốc góc: $\omega = (v_R - v_L) / L$
- Vận tốc dài trung bình: $v = (v_R + v_L) / 2$
- Bán kính quay tức thời: $R = v / \omega = L(v_R + v_L) / [2(v_R - v_L)]$
Tùy thuộc vào tương quan giữa $v_R$ và $v_L$, robot sẽ đi thẳng ($v_L = v_R, R = \infty$), quay tròn tại chỗ ($v_L = -v_R, R = 0$) hoặc quay quanh một bánh ($v_L = 0, R = L/2$).
5. Đồ án đặt ra những giới hạn kỹ thuật và điều kiện vận hành cụ thể nào?
Mô hình xe có kích thước $39 \times 36 \times 38\text{ cm}$, sử dụng 2 động cơ Faulhaber 12V và 2 driver L298N. Xe chỉ hoạt động trên địa hình bằng phẳng trong nhà để hạn chế nhiễu ánh sáng; bề mặt dán đường line đòi hỏi độ chênh lệch mức xám rõ rệt so với nền; do trường nhìn camera bị phân chia cho cả việc bắt line dưới sàn và nhận diện vật thể phía trước, các vật mốc định hướng bắt buộc phải được bố trí ở cự ly và vị trí thích hợp trong tầm quan sát.
Kết luận
Đồ án tốt nghiệp "Xe tự động di chuyển dựa vào vật mốc dùng xử lý ảnh" đã hoàn thành toàn diện các mục tiêu thiết kế và chế tạo một hệ thống xe tự hành hai bánh chủ động vi sai có khả năng tự động bám line và chuyển hướng dựa trên vật mốc thị giác. Bằng việc kết hợp hệ điều hành ROS, thư viện xử lý ảnh OpenCV, giải thuật biến đổi đặc trưng bất biến tỷ lệ SIFT và điều khiển nhúng PID trên Arduino Due, hệ thống đã giải quyết hiệu quả bài toán dẫn hướng tự động trong môi trường trong nhà. Kết quả nghiên cứu cung cấp một tài liệu kỹ thuật hoàn chỉnh và có giá trị tham khảo cao cho các nghiên cứu phát triển robot di động ứng dụng thị giác máy tính.