Bối cảnh và vấn đề nghiên cứu

Nhu cầu ứng dụng robot tự động nhằm thay thế con người thực hiện các công việc nặng nhọc hoặc hoạt động trong môi trường độc hại ngày càng gia tăng. Trong bối cảnh chuyển dịch nghiên cứu từ robot công nghiệp sang các dòng robot dịch vụ hỗ trợ đời sống xã hội, mô hình robot di động có khả năng tự động bám theo con người mang lại nhiều giá trị thực tiễn: vận chuyển đồ đạc cho người cao tuổi, chuyên chở hàng hóa trong nhà máy, theo sau người chăm sóc hoặc tích hợp vào hệ thống xe lăn tự hành hỗ trợ người khuyết tật.

Trước đây, các giải pháp robot bám theo người chủ yếu sử dụng cảm biến siêu âm (dễ nhầm lẫn vật cản trong không gian hẹp) hoặc định vị toàn cầu GPS (sai số lớn và không hoạt động hiệu quả trong nhà). Sự xuất hiện của cảm biến Microsoft Kinect mở ra hướng tiếp cận mới nhờ khả năng cung cấp dữ liệu hình ảnh chiều sâu (RGB-D) và tự động nhận diện khung xương cơ thể người với chi phí hợp lý.

Đề tài "Lập trình Robot 3 bánh di chuyển theo người sử dụng camera Kinect" do sinh viên Võ Ngọc Thẩm và Nguyễn Hữu Minh Anh thực hiện dưới sự hướng dẫn của ThS. Nguyễn Tấn Như tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (Khoa Đào tạo Chất lượng cao, ngành Công nghệ Kỹ thuật Điện tử Truyền thông, khóa 2013–2017) tập trung giải quyết bài toán điều khiển tự hành này.

Mục tiêu nghiên cứu của đồ án:

  1. Lập trình cho mô hình Robot 3 bánh hoạt động ổn định và chính xác theo các thông số kỹ thuật đặt ra.
  2. Ứng dụng cảm biến Kinect để phát hiện, nhận dạng bộ khung xương và trích xuất tọa độ vị trí của con người.
  3. Điều khiển robot tự động di chuyển bám theo con người và duy trì một khoảng cách xác định $d$.

Các nhiệm vụ nghiên cứu cụ thể được phân chia theo 11 nội dung trong văn bản nhiệm vụ:

  1. Tìm hiểu về động cơ servo DC giảm tốc.
  2. Tìm hiểu về board vi điều khiển Arduino DUE.
  3. Tìm hiểu về cảm biến camera Kinect.
  4. Tìm hiểu phần mềm lập trình cho board Arduino DUE.
  5. Tìm hiểu hệ điều hành mã nguồn mở ROS (Robot Operating System).
  6. Nghiên cứu thuật toán điều khiển PID.
  7. Thiết kế mạch điện bên trong hệ thống.
  8. Viết chương trình xử lý và điều khiển cho board Arduino.
  9. Cho robot chạy thực nghiệm trong các điều kiện thực tế.
  10. Hiệu chỉnh hệ thống để robot hoạt động ổn định.
  11. Biên soạn báo cáo đồ án tốt nghiệp và tổ chức báo cáo đề tài.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Hệ thống robot di động vi sai 3 bánh, cảm biến hình ảnh chiều sâu Kinect, hệ điều hành ROS và bộ vi điều khiển 32-bit ARM Cortex-M3.
  • Phạm vi không gian và kỹ thuật: Thử nghiệm bám người trong môi trường phòng thí nghiệm trong nhà và ngoài trời; khoảng cách nhận dạng mục tiêu tối đa đạt 4 m (khoảng cách hoạt động hiệu quả từ 1,2 m đến 3,5 m); góc quét trường nhìn là 43° theo trục dọc và 57° theo trục ngang; tải trọng vận chuyển thiết kế tối đa là 3 kg; nguồn cấp sử dụng ắc quy DC 12V.
  • Thời gian thực hiện: Từ ngày 21/02/2017 đến ngày 11/07/2017.

Cơ sở lý thuyết và phương pháp nghiên cứu

Đồ án xây dựng trên nền tảng tích hợp giữa thị giác máy tính chiều sâu, lý thuyết điều khiển tự động và mô hình động học robot:

  • Hệ điều hành Robot (Robot Operating System - ROS): Bản phân phối được tham chiếu trong tài liệu là ROS Hydro Medusa. Cấu trúc ROS bao gồm ba tầng: Tầng tập tin (Filesystem Level: stacks, packages, message types, service types), Tầng đồ họa tính toán (Computation Graph: Master, Nodes, Parameter Server, Messages, Topics theo cơ chế publish/subscribe, Services theo chuẩn RPC) và Tầng cộng đồng (Community Level: ROS wiki, kho mã nguồn mở). Giao thức truyền thông chính giữa các nút xử lý là TCPROS qua giao thức mạng TCP/IP.
  • Cảm biến hình ảnh RGB-D và Depth Sensor của Microsoft Kinect: Kinect thu thập đồng thời ảnh màu RGB và ảnh độ sâu D. Cảm biến đo chiều sâu hoạt động dựa trên kỹ thuật ánh sáng có cấu trúc (structured light), bao gồm một máy phát tia hồng ngoại chiếu mạng điểm sáng lên đối tượng và một camera hồng ngoại CMOS (độ phân giải 640x480 pixel, tốc độ 30 khung hình/giây) thu nhận chùm tia phản xạ để dựng bản đồ khoảng cách. Quy trình chuyển đổi và tái tạo hình ảnh 3D trải qua 4 bước: phác thảo bản đồ bề mặt, camera theo dõi định vị đối tượng, hội nhập dữ liệu độ sâu và dựng hình khối 3 chiều bằng kỹ thuật dò tia (raycast). Dữ liệu đám mây điểm bị khuyết hoặc nhiễu được xử lý bằng thuật toán lấy giá trị trung bình từ các điểm ảnh lân cận.
  • Thuật toán chuyển đổi hệ tọa độ (/tf - transformations): Trong ROS, gói /tf liên tục theo dõi mối quan hệ tọa độ giữa các khung hình (frames). Vì hệ tọa độ quang học của Kinect ($Ox_k y_k z_k$) không trùng khớp với hệ tọa độ thực tế của mặt sàn chuyển động ($Ox_w y_w z_w$), tác giả thiết lập công thức chuyển đổi tọa độ thực từ vị trí nhận diện của Kinect: $$x_w = -x_k$$ $$y_w = z_k$$ $$z_w = y_k$$
  • Mô hình động học robot 3 bánh vi sai: Hai bánh dẫn động độc lập (bánh trái M1, bánh phải M2) và một bánh xe dẫn hướng tự do. Phương trình động học được mô tả qua trạng thái $q = (x, y, \theta)$, với vận tốc dài $v$ và vận tốc góc $\omega$: $$\dot{\theta} = \omega = \frac{R}{L}(v_r - v_l)$$ $$v = \frac{R}{2}(v_r + v_l)$$ Từ đó, vận tốc đặt cho bánh phải ($v_r$) và bánh trái ($v_l$) được tính toán: $$v_r = \frac{2v + \omega L}{2R}, \quad v_l = \frac{2v - \omega L}{2R}$$ Trong đó $R$ là bán kính bánh xe và $L$ là khoảng cách giữa hai bánh chủ động.
  • Thuật toán điều khiển PID: Bộ điều khiển PID vòng kín (Closed Loop Control) được ứng dụng ở dạng số rời rạc để triệt tiêu sai số giữa giá trị đặt và giá trị phản hồi. Tác giả áp dụng phép biến đổi Z từ hàm truyền liên tục $G(s)$ sang dạng rời rạc $G(z)$ để tính tín hiệu điều khiển $u(k)$: $$u(k) = u(k-1) + K_p[e(k) - e(k-1)] + K_I T e(k) + \frac{K_D}{T}[e(k) - 2e(k-1) + e(k-2)]$$ Phương pháp Ziegler – Nichols được sử dụng để hiệu chỉnh các hệ số tỉ lệ $K_p$, tích phân $K_I$ và vi phân $K_D$ thông qua xác định giá trị độ lợi giới hạn $K_c$ và chu kỳ dao động tới hạn $P_c$.

Phương pháp nghiên cứu kết hợp giữa nghiên cứu lý thuyết, mô phỏng trên phần mềm (sử dụng gói mô phỏng turtlesim của ROS làm cơ sở thuật toán bám đuổi) và thực nghiệm chế tạo phần cứng, lập trình điều khiển thực tế. Nguồn dữ liệu thực nghiệm được trích xuất từ dữ liệu điểm khung xương người thông qua gói thư viện openni_tracker và xung phản hồi từ cảm biến encoder quang học hai kênh A-B.

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án gồm hai tầng xử lý chính: máy tính cá nhân (PC) đảm nhận tầng tính toán cấp cao và board Arduino DUE đảm nhận tầng điều khiển cấp thấp.

Sơ đồ khối hệ thống gồm 6 khối chức năng chính:

  1. Khối cảm biến Kinect: Thu thập dữ liệu hình ảnh màu và dữ liệu độ sâu, truyền về máy tính qua cổng USB.
  2. Khối xử lý trung tâm (PC chạy ROS): Tiếp nhận luồng dữ liệu Kinect, chạy node openni_tracker để trích xuất tọa độ không gian của khớp khung xương người, tính toán góc lệch $\theta_D$ và khoảng cách $D$, thông qua bộ PID góc để tính ra vận tốc góc $\omega$ và vận tốc dài $v$, sau đó quy đổi thành vận tốc góc mong muốn của hai bánh ($v_l, v_r$).
  3. Khối điều khiển (Arduino DUE): Giao tiếp với PC thông qua giao thức rosserial. Nhận lệnh vận tốc $v_l, v_r$, thực thi thuật toán PID vận tốc độc lập cho từng động cơ dựa trên tín hiệu phản hồi từ encoder, sau đó xuất tín hiệu điều chế độ rộng xung PWM (8-bit, dải giá trị 0–255) và tín hiệu logic điều khiển hướng quay xuống mạch công suất.
  4. Khối công suất (Module mạch cầu H HL298): Tiếp nhận tín hiệu PWM và chiều quay từ Arduino DUE để đóng cắt điện áp cấp nguồn cho các cuộn dây phần ứng động cơ.
  5. Khối chấp hành: Gồm 2 động cơ DC giảm tốc Faulhaber 12V truyền động trực tiếp đến hai bánh xe chủ động.
  6. Khối nguồn: Sử dụng ắc quy khô chì-axit RL1212 cung cấp nguồn điện DC 12V độc lập cho khối công suất và động cơ nhằm tránh sụt áp và nhiễu điện từ sang vi xử lý.
Thông số kỹ thuật Board điều khiển Arduino DUE Cảm biến Microsoft Kinect
Vi xử lý / Cảm biến chính AT91SAM3X8E (32-bit ARM Cortex-M3) Camera RGB + Cảm biến hồng ngoại CMOS
Tần số hoạt động / Tốc độ khung hình 84 MHz 30 fps (ở 640x480), 12 fps (ở 1280x960)
Điện áp hoạt động 3.3V (ngõ vào khuyến nghị 7–12V) 12V DC qua adapter
Bộ nhớ Flash 512 KB, SRAM 96 KB Tích hợp bộ nhớ đệm nội vi
Khả năng giao tiếp / Cổng kết nối 54 I/O số (12 PWM), 4 UART, USB OTG Giao tiếp máy tính qua chuẩn USB 2.0
Phạm vi hoạt động hiệu dụng Giới hạn dòng xuất mỗi chân I/O: 130 mA Khoảng cách đo: 1,2 m – 3,5 m (tối đa 4 m)
Góc quan sát Không áp dụng 43° trục dọc, 57° trục ngang

Kiến trúc phần mềm phân chia thành mạng lưới các nút (nodes) trên ROS:

  • Node /openni_tracker: Định vị khung xương con người và publish dữ liệu tọa độ lên cây biến đổi /tf.
  • Node Tracking PID: Đọc dữ liệu biến đổi tọa độ giữa khung robot và khung người, tính toán sai số khoảng cách và góc lệch, tạo thông điệp điều khiển vận tốc.
  • Node rosserial_server: Cầu nối truyền thông nối tiếp giữa hệ điều hành ROS và thư viện rosserial_arduino trên phần cứng Arduino DUE.
  • Vòng lặp điều khiển PID trên Arduino: Hoạt động theo thời gian thực, đọc ngắt từ các chân tín hiệu kênh A và B của encoder Faulhaber, tính toán vận tốc thực tế, hiệu chỉnh sai số bằng thuật toán PID và xuất chuỗi xung PWM tương ứng.

Nội dung chính theo từng chương

Chương 1: Tổng quan

Chương 1 trình bày tính cấp thiết của đề tài xuất phát từ nhu cầu thay thế sức lao động con người bằng robot tự hành. Tác giả tổng quan các hướng nghiên cứu hiện có như robot bám người dùng sóng siêu âm, robot định vị GPS và các mô hình robot sử dụng Kinect tiêu biểu (Turtlebot1, Turtlebot2). Tác giả xác định rõ mục tiêu chế tạo robot 3 bánh bám theo người, liệt kê 11 bước triển khai và giới hạn kỹ thuật của hệ thống: sử dụng động cơ DC Faulhaber 12V, nhận biết qua Kinect trong phạm vi tối đa 4 m, mang vật nặng tối đa 3 kg.

Chương 2: Cơ sở lý thuyết

Chương 2 cung cấp nền tảng toán học và kỹ thuật của hệ thống. Tác giả đi sâu vào kiến trúc 3 tầng của ROS, cơ chế truyền thông điệp publish/subscribe và dịch vụ RPC. Tiếp theo là nguyên lý chụp ảnh RGB-D và quét 3D của cảm biến Kinect qua 4 bước dò tia (raycast). Tác giả thiết lập hệ tọa độ chuyển đổi /tf giữa Kinect và không gian thực ($x_w = -x_k, y_w = z_k, z_w = y_k$).

Chương này xây dựng mô hình toán học động học cho robot 2 bánh vi sai, công thức xác định góc quay mục tiêu $\theta_D = \arctan\left(\frac{Y_{21} - Y_{11}}{X_{21} - X_{11}}\right)$ và phân bổ hai vòng điều khiển PID: một vòng PID trên ROS giữ góc hướng về người bằng 0, một vòng PID trên Arduino duy trì tốc độ ổn định của hai động cơ. Cuối chương là lý thuyết về bộ điều khiển PID số và phương pháp cân chỉnh Ziegler – Nichols.

Chương 3: Tính toán và thiết kế

Chương 3 trình bày chi tiết sơ đồ khối hệ thống và tính toán chọn lựa linh kiện. Tác giả phân tích cấu trúc phần cứng của kit Arduino DUE với vi điều khiển AT91SAM3X8E 32-bit, đối chiếu bảng thông số kỹ thuật chi tiết. Phần cảm biến Kinect được thuyết minh rõ cấu tạo phần cứng gồm camera màu, bộ phát hồng ngoại, camera độ sâu, dãy micro và động cơ điều khiển góc nghiêng chân đế. Tác giả trình bày cấu tạo động cơ DC kích từ nam châm vĩnh cửu Faulhaber 12V, nguyên lý điều xung PWM 8-bit (255 mức), nguyên lý hoạt động của đĩa encoder gia tăng hai kênh lệch pha để xác định chiều quay và tốc độ, thông số module mạch cầu H HL298 và nguồn ắc quy RL1212. Chương kết thúc bằng sơ đồ nguyên lý kết nối toàn diện của hệ thống.

Chương 4: Thi công hệ thống

Chương 4 mô tả toàn bộ quá trình thi công cơ khí và lập trình điều khiển. Phần cơ khí trình bày bản vẽ hình chiếu đứng, hình chiếu cạnh, hình chiếu bằng của khung xe robot, các bộ phận bằng nhựa và chi tiết gia công gá lắp linh kiện. Phần lập trình mô tả sơ đồ liên kết giữa các ROS Node và lưu đồ giải thuật điều khiển hệ thống. Tác giả xây dựng tài liệu hướng dẫn vận hành chi tiết: quy trình cấu hình phần cứng trên máy tính, mở cổng giao tiếp nối tiếp giữa PC và Arduino, quy trình biên dịch (build) gói phần mềm trên ROS, nạp chương trình vào bo mạch Arduino DUE và các thao tác vận hành thực tế.

Chương 5: Kết quả so sánh, thực nghiệm và phân tích

Chương 5 ghi lại kết quả thử nghiệm thực tế của robot qua hai nhóm nội dung: khả năng nhận dạng người của camera Kinect và chất lượng điều khiển chuyển động của robot.

  • Về nhận dạng: Tác giả tiến hành đo đạc các thông số khoảng cách xa nhất, gần nhất và góc quét trong 4 môi trường (trong nhà, ngoài trời râm mát, ngoài trời nắng gắt và phòng tối).
  • Về điều khiển: Phân tích đồ thị vận tốc hai bánh xe khi người đứng ở giữa, đứng lệch trái, lệch phải hoặc di chuyển tịnh tiến lại gần/ra xa robot; đánh giá tác động của các hệ số khuếch đại góc $K_{p_Angular}$ (khảo sát tại $K_{p_Angular} = 2$ và $K_{p_Angular} = 6$) và hệ số khoảng cách $K_{p_Linear}$. Cuối chương so sánh giữa kết quả mô phỏng trên ROS và phản ứng thực tế của robot.

Chương 6: Kết luận và hướng phát triển

Chương 6 tổng kết việc hoàn thành các mục tiêu đặt ra: chế tạo thành công robot 3 bánh di chuyển bám người hoàn toàn tự động, hệ thống hoạt động ổn định và chính xác trong điều kiện phòng thí nghiệm. Tác giả chỉ ra các mặt hạn chế về kết cấu cơ khí và đề xuất các hướng cải tiến tiếp theo cho hệ thống.

Kết quả và đóng góp

Đồ án đã chế tạo thành công một robot 3 bánh tự hành có khả năng bám theo người thông qua nhận dạng khung xương bằng camera Kinect, vận hành hoàn toàn tự động mà không cần can thiệp điều khiển bằng tay.

Các kết quả thực nghiệm định lượng chính thu được:

Điều kiện môi trường thử nghiệm Khả năng nhận dạng khung xương Khoảng cách nhận dạng xa nhất Khoảng cách nhận dạng gần nhất Đánh giá ảnh hưởng quang học
Trong nhà (ánh sáng đèn thông thường) Tốt, ổn định Đạt xấp xỉ 3,5 m – 4,0 m 1,2 m Hoạt động tối ưu, không bị nhiễu hồng ngoại
Ngoài trời râm mát (không có nắng) Tốt Tương đương trong nhà (~3,5 m – 4,0 m) 1,2 m Ánh sáng tự nhiên khuếch tán không làm mất dữ liệu độ sâu
Ngoài trời nắng gắt Kém, chập chờn hoặc mất dấu Giảm rõ rệt, dưới 2,0 m Tăng lên Tia hồng ngoại từ mặt trời làm lóa cảm biến CMOS hồng ngoại
Không có ánh sáng (phòng tối hoàn toàn) Tốt, nhận dạng bình thường 3,5 m – 4,0 m 1,2 m Bộ phát hồng ngoại của Kinect hoạt động độc lập với ánh sáng khả kiến

Kết quả thử nghiệm điều khiển bám:

  • Khi người đứng ở vị trí trung tâm, vận tốc hai bánh xe cân bằng, robot di chuyển tịnh tiến thẳng.
  • Khi người lệch sang bên phải hoặc bên trái, hệ thống tự động điều chỉnh tốc độ hai bánh chênh lệch nhau để tạo chuyển động quay vi sai hướng tâm camera về phía mục tiêu.
  • Khi khảo sát hệ số khuếch đại góc $K_{p_Angular}$: Tại $K_{p_Angular} = 2$, tốc độ hai bánh đáp ứng chậm hơn nhưng chuyển động êm; khi tăng lên $K_{p_Angular} = 6$, tốc độ bánh xe thay đổi nhanh, giúp robot đổi hướng dứt khoát nhưng có hiện tượng dao động lắc nếu người chuyển hướng đột ngột.
  • Khi khảo sát hệ số tuyến tính $K_{p_Linear}$: Tốc độ bánh xe thay đổi tỷ lệ thuận với khoảng cách dịch chuyển của người, giúp robot tự động dừng khi đạt khoảng cách định trước $d$ và tăng tốc khi người di chuyển ra xa.

Đóng góp của đề tài:

  • Xây dựng thành công hệ thống tích hợp hoàn chỉnh giữa phần mềm mã nguồn mở ROS trên máy tính với phần cứng vi điều khiển Arduino DUE qua rosserial.
  • Ứng dụng thành công gói thư viện openni_tracker và thuật toán biến đổi tọa độ /tf để trích xuất dữ liệu không gian 3 chiều của con người phục vụ bài toán điều khiển phương tiện tự hành.
  • Khắc phục nhược điểm nhận dạng sai mục tiêu của cảm biến siêu âm truyền thống và hạn chế mất sóng trong nhà của hệ thống định vị GPS.

Hạn chế và hướng nghiên cứu tiếp

Các hạn chế được nhóm tác giả ghi nhận trong văn bản:

  • Độ bền và độ vững chắc của phần cơ khí còn hạn chế, các bộ phận bằng nhựa tự chế và khung gá chưa đạt tiêu chuẩn công nghiệp.
  • Khả năng chịu tải của robot thấp, chỉ đáp ứng chuyên chở vật nặng dưới 3 kg.
  • Cảm biến Kinect hoạt động kém hiệu quả khi đưa ra môi trường ngoài trời có ánh nắng trực tiếp do hiện tượng bão hòa cảm biến hồng ngoại.
  • Hệ thống chưa được trang bị thuật toán nhận diện và tránh vật cản động trên đường đi; robot chỉ tập trung bám đuổi tọa độ mục tiêu mà chưa thể tự tìm đường vòng khi có chướng ngại vật chắn ngang giữa robot và người.
  • Kiến trúc còn phụ thuộc vào máy tính xách tay đặt trên thân xe hoặc kết nối ngoài để chạy hệ điều hành ROS.

Hướng nghiên cứu tiếp theo được đề xuất:

  • Cải tiến và gia công lại toàn bộ kết cấu khung vỏ cơ khí bằng vật liệu chịu lực tốt hơn để tăng tải trọng chuyên chở thực tế.
  • Tích hợp thêm các cảm biến phụ trợ hoặc giải pháp lọc quang học để robot có thể hoạt động ổn định dưới ánh sáng mặt trời.
  • Bổ sung cảm biến đo khoảng cách laser (Lidar) và lập trình tích hợp gói điều hướng dẫn đường (Navigation Stack) của ROS cùng các thuật toán SLAM nhằm xây dựng bản đồ và tự động tránh vật cản.

Giá trị tham khảo

Tài liệu đồ án là tài liệu tham khảo hữu ích cho:

  • Sinh viên và học viên các ngành Công nghệ Kỹ thuật Điện tử Truyền thông, Cơ điện tử, Kỹ thuật Điều khiển và Tự động hóa, Kỹ thuật Máy tính làm việc với robot di động (Mobile Robot).
  • Những người nghiên cứu ứng dụng thị giác máy tính chiều sâu (Kinect, cảm biến RGB-D) và hệ điều hành Robot (ROS) trong các bài toán nhận dạng đối tượng và bám mục tiêu.

Các phần nội dung có giá trị tham khảo cao nhất trong đồ án:

  • Chương 2: Phương pháp xây dựng thuật toán chuyển đổi tọa độ /tf từ hệ tọa độ cảm biến sang hệ tọa độ thực tế của robot và phương pháp rời rạc hóa bộ điều khiển PID bằng biến đổi Z.
  • Chương 3 & 4: Sơ đồ phối ghép phần cứng và quy trình thiết lập giao tiếp hai chiều giữa ROS và board vi điều khiển ARM Cortex-M3 (Arduino DUE) qua giao thức rosserial.
  • Chương 5: Bảng dữ liệu thực nghiệm về giới hạn góc quét, khoảng cách hoạt động của camera Kinect trong 4 môi trường ánh sáng khác nhau cùng đồ thị đáp ứng điều khiển góc/khoảng cách của hệ thống vi sai.

Câu hỏi thường gặp

1. Tại sao hệ thống phải thực hiện chuyển đổi hệ tọa độ từ Camera Kinect sang hệ tọa độ thực tế của Robot?
Camera Kinect sử dụng hệ trục tọa độ không gian riêng ($Ox_k y_k z_k$), trong đó trục $z_k$ biểu diễn chiều sâu hướng thẳng ra từ camera, trục $x_k$ là phương ngang và trục $y_k$ là phương đứng. Khi gắn lên robot di động di chuyển trên mặt sàn phẳng 2D ($Ox_w y_w z_w$), hướng tiến lùi của robot tương ứng với chiều sâu $z_k$, hướng lệch trái/phải tương ứng với phương ngang $-x_k$, và độ cao tương ứng với $y_k$. Do đó, tác giả bắt buộc phải áp dụng phép chuyển đổi $x_w = -x_k, y_w = z_k, z_w = y_k$ để robot tính toán chính xác góc quay lệch $\theta_D$ và khoảng cách thực đến mục tiêu.

2. Cảm biến Kinect hoạt động ra sao trong điều kiện hoàn toàn không có ánh sáng và điều kiện ngoài trời nắng?
Trong điều kiện phòng tối hoàn toàn (không có ánh sáng khả kiến), Kinect vẫn nhận dạng khung xương tốt (đạt cự ly 3,5 m – 4,0 m) vì thiết bị sử dụng nguồn phát tia hồng ngoại độc lập và camera hồng ngoại chuyên dụng. Ngược lại, khi ra ngoài trời nắng gắt, bức xạ hồng ngoại mạnh từ ánh sáng mặt trời gây lóa và bão hòa cảm biến CMOS hồng ngoại của Kinect, khiến hệ thống không thể phân tích lưới điểm sáng có cấu trúc, dẫn đến hiện tượng mất khung xương hoặc không thể nhận diện được người.

3. Vai trò của hai bộ điều khiển PID trong hệ thống được phân định như thế nào?
Hệ thống sử dụng hai bộ điều khiển PID phân tầng:

  • Bộ PID thứ nhất nằm trong môi trường ROS (trên PC): Có nhiệm vụ xử lý sai số góc quay giữa hướng di chuyển hiện tại của robot và vị trí của con người, liên tục hiệu chỉnh để giữ góc lệch hướng về mục tiêu bằng 0.
  • Bộ PID thứ hai được lập trình nhúng trên board Arduino DUE: Có nhiệm vụ giám sát xung phản hồi từ encoder của từng động cơ, tính toán và điều chỉnh chu kỳ xung PWM xuất ra mạch công suất HL298 nhằm duy trì tốc độ quay của hai bánh xe M1, M2 luôn bám sát giá trị vận tốc đặt ($v_l, v_r$) truyền xuống từ PC.

4. Vì sao nhóm tác giả lựa chọn board Arduino DUE thay vì các dòng Arduino thông thường?
Arduino DUE sử dụng vi điều khiển 32-bit AT91SAM3X8E nhân ARM Cortex-M3 với xung nhịp 84 MHz, bộ nhớ Flash 512 KB và SRAM 96 KB, vượt trội hoàn toàn so với các dòng vi điều khiển 8-bit (như Arduino Uno dùng ATmega328P 16 MHz, 2 KB SRAM). Cấu hình này đáp ứng yêu cầu tính toán nhanh của giải thuật PID số, xử lý ngắt encoder tần số cao ở cả hai động cơ và quản lý bộ đệm truyền thông nối tiếp tốc độ cao với hệ điều hành ROS thông qua thư viện rosserial mà không gặp hiện tượng tràn bộ nhớ hay trễ đáp ứng.

5. Robot 3 bánh của đề tài thực hiện nguyên lý chuyển động vi sai như thế nào?
Robot gồm hai bánh xe dẫn động độc lập (M1 bên trái, M2 bên phải) và một bánh xe dẫn hướng tự do. Để di chuyển thẳng về phía trước, hai động cơ M1 và M2 quay cùng chiều với tốc độ bằng nhau; để lùi lại, hai động cơ quay đảo chiều. Khi cần rẽ phải, hệ thống giảm tốc độ động cơ M1 và tăng tốc độ động cơ M2; ngược lại, khi cần rẽ trái, hệ thống giảm tốc độ động cơ M2 và tăng tốc độ động cơ M1. Tỷ lệ vận tốc giữa hai động cơ do bộ điều khiển PID phân phối dựa trên vị trí góc lệch của con người so với tâm camera.

Kết luận

Đồ án tốt nghiệp của sinh viên Võ Ngọc Thẩm và Nguyễn Hữu Minh Anh đã thiết kế, chế tạo và lập trình thành công mô hình robot 3 bánh có khả năng tự động bám theo con người bằng việc tích hợp camera Kinect với hệ điều hành ROS và vi điều khiển Arduino DUE. Hệ thống vận hành ổn định trong điều kiện trong nhà và phòng tối, duy trì tốt khoảng cách xác định nhờ sự kết hợp giữa thuật toán chuyển đổi tọa độ /tf và hai vòng điều khiển PID phân tầng. Các dữ liệu thực nghiệm thu được phản ánh chính xác đặc tính quang học của cảm biến Kinect và chất lượng đáp ứng động học của cấu hình xe vi sai, cung cấp nền tảng kỹ thuật có giá trị cho các nghiên cứu phát triển robot dịch vụ hỗ trợ con người trong thực tiễn.