Chương Nghiên cứu về Robot của Tôi

Table of Contents

Bài viết này kể lại hành trình về robot của tôi, bắt đầu từ việc khám phá niềm đam mê với robot tại FRC trong thời gian trường trung học vào 2015 cho đến thời gian tôi là trợ lý nghiên cứu tại Phòng Thí nghiệm Robotics Tập trung vào Con Người (HCR) của Trường Colorado School of Mines từ tháng Hai 2021 đến tháng Chín 2021. Lưu ý rằng kể từ cuối năm 2022, Phòng Thí nghiệm HCR đã chuyển từ Trường Colorado School of Mines đến Đại học Massachusetts Amherst, cùng với trang web của nó từ hcr.mines.edu sang hcr.cs.umass.edu.

Bối cảnh

Tôi bắt đầu học đại học tại Trường Colorado School of Mines vào học kỳ Mùa Thu 2018. Chuyên ngành của tôi là Khoa học Máy tính với trọng tâm về Robotics & Hệ thống Thông minh. Và tôi tốt nghiệp vào Mùa Xuân 2022.

Tôi may mắn tìm thấy đam mê của mình khá sớm trong đời. Trong thời trung học, tôi đã dành khá nhiều thời gian để tìm hiểu mình thích gì và mình có thể giỏi điều gì. Sau một số thử nghiệm và sai sót, tôi đã xác định được rằng niềm đam mê của mình là khoa học máy tính. Nhưng cũng chính trong thời gian này tôi đã khám phá ra rằng tôi có một tình yêu mãnh liệt dành cho việc xây dựng thông qua mã.

Tại Mines, tôi có cơ hội làm việc tại Phòng Thí nghiệm Robotics Tập trung vào Con Người (HCR) của Mines dưới sự hướng dẫn của Tiến sĩ Hao Zhang. Tôi lần đầu gặp Tiến sĩ Zhang vào Mùa Xuân 2020 thông qua lớp học của ông “Human Centered Robotics” (CSCI473), và sau những hỗn loạn của COVID và khối lượng học, tôi đã được làm việc trong phòng thí nghiệm của ông vào đầu Mùa Xuân 2021.

Lớp Human Centered Robotics (CSCI473)

Lớp Human Centered Robotics (CSCI473) của Mines là một trong số ít các lớp trong trải nghiệm đại học của tôi có tác động sâu sắc đến tôi. Lớp học được giảng dạy bởi Tiến sĩ Hao Zhang. Toàn bộ điểm số của chúng tôi cho lớp học chỉ gồm ba dự án, mỗi dự án đều đưa ra một vấn đề thách thức giới thiệu các khái niệm cốt lõi của robotics. Các dự án này bao gồm:

  1. Học Hệ điều hành Robot (ROS)
  2. Học tăng cường cho việc theo tường của robot
  3. Robot hiểu hành vi con người bằng cách sử dụng các biểu diễn dựa trên bộ khung xương

Học Hệ điều hành Robot (ROS)

Đây là dự án đầu tiên chúng tôi được giao. Dự án gồm ba nhiệm vụ:

  1. Thiết lập môi trường phát triển
  2. Hiểu bộ mô phỏng Gazebo
  3. Viết một “Hello World” bằng ROS

Đối với nhiệm vụ 1 và 2, chúng tôi chỉ cần thiết lập môi trường phát triển và theo một hướng dẫn giới thiệu về Gazebo. Điều này bao gồm:

Nhiệm vụ 3, ngược lại, là một thách thức thực sự. Nhiệm vụ là sử dụng turtlesim và khiến con rùa vẽ logo “M” của Mines:

Nhiệm vụ này, mặc dù nghe có vẻ đơn giản, lại khó hơn vẻ bề ngoài. Dự án này cuối cùng đã giới thiệu cho tôi khái niệm về hệ thống Mở (Open-Loop) và Hệ thống Đóng (Closed-Loop). Để xem mô tả đầy đủ dự án, hãy xem csci473-p1.pdf hoặc bạn có thể tìm hiểu thêm về dự án này và giải pháp của tôi trên trang dự án ROS Move Turtle.

Học tăng cường cho việc theo tường của robot

Đây là dự án thứ hai chúng tôi được giao, và đó là một trong những dự án khó nhất tôi từng làm ở đại học. Mô tả dự án như sau:

Trong dự án này, sinh viên sẽ thiết kế và triển khai các thuật toán học tăng cường để dạy một robot di động tự hành theo sát một bức tường và tránh va chạm với chướng ngại vật. Sinh viên sẽ sử dụng mô phỏng Gazebo trong ROS Melodic để mô phỏng một robot di động đa hướng tên là Triton, và sử dụng bản đồ môi trường được cung cấp. Sinh viên sẽ sử dụng một máy quét khoảng cách bằng tia laser trên robot để thực hiện việc cảm biến và học, nơi robot được điều khiển bằng các lệnh lái và vận tốc. Sinh viên được yêu cầu lập trình dự án này bằng C++ hoặc Python trong ROS Melodic chạy trên Ubuntu 18.04 LTS (tức là cùng môi trường phát triển đã sử dụng trong Dự án 1). Ngoài ra, sinh viên được yêu cầu viết một báo cáo theo định dạng của các hội nghị robotics tiêu chuẩn của IEEE sử dụng LATEX.

Đối với thuật toán học tăng cường, chúng tôi được hướng dẫn sử dụng Q-Learning. Chúng tôi cũng sử dụng môi trường mô phỏng Gazebo Stingray do lớp cung cấp. Stingray bao gồm mô hình Triton và logic vật lý. Chúng tôi cũng được cung cấp một mê cung để robot theo dõi. Tất cả trong tất cả, môi trường trông như sau:

Tôi không bao giờ công bố giải pháp của mình lên GitHub hay web vì nó không tốt lắm và có nhiều lỗi nghiêm trọng. Ngoài ra, việc chạy mã trong đúng môi trường khá khó khăn và gây phiền toái. Tuy nhiên, tôi có một video demo mà tôi đã nộp cho lớp, trình bày giải pháp của tôi. Bạn có thể xem nó ở đây:

Để xem mô tả đầy đủ dự án, hãy xem csci473-p2.pdf

Robot hiểu hành vi con người bằng các biểu diễn dựa trên bộ khung xương

Đối với dự án thứ ba, mô tả dự án như sau:

Trong dự án này, sinh viên sẽ triển khai một số biểu diễn dựa trên bộ khung xương (Bản Giao Nộp 1) và sử dụng Máy vectơ hỗ trợ (SVMs) (Bản Giao Nộp 2) để phân loại hành vi con người sử dụng một bộ dữ liệu hoạt động công khai được thu thập từ cảm biến Kinect V1. Thêm vào đó, sinh viên được yêu cầu viết một báo cáo theo định dạng của các hội nghị robotics tiêu chuẩn của IEEE sử dụng LATEX trong Bản Giao Nộp 3.

Dự án này thách thức nhưng không khó bằng dự án thứ hai. Mục tiêu chính là sử dụng dữ liệu cảm biến Kinect V1 từ Bộ Dữ liệu Hoạt động Hàng ngày 3D của MSR, và Máy vectơ hỗ trợ (SVM) để phân loại một số hành động/hành vi của con người. Để xem mô tả đầy đủ dự án, hãy xem csci473-p3.pdf hoặc bạn có thể tìm hiểu thêm về dự án này và giải pháp của tôi trên bài đăng blog Dự đoán Hành động Con người Sử dụng LIBSVM.

Kết luận CSCI473

CSCI473 là một trong những, nếu không phải là lớp hay nhất tôi đã học trong thời gian đại học tại Mines. Tất cả những dự án này đã dạy tôi rất nhiều và cho phép tôi có một danh mục dự án thú vị để suy ngẫm và tham chiếu trên sơ yếu lý lịch của mình. Nó cũng là lớp học đầu tiên mà tôi cảm thấy như mình ở đúng chỗ, vì tôi chưa bao giờ giỏi làm bài kiểm tra nhưng lại xuất sắc trong việc hoàn thành dự án. Cũng chính thông qua lớp này tôi đã gặp Tiến sĩ Hao Zhang, người cuối cùng đã giúp tôi có được vị trí trợ lý nghiên cứu tại Phòng Thí nghiệm Robotics Tập trung vào Con Người (HCR) của Mines.

Phiên Lập trình CS (Mùa Hè 2020)

CG_GUI_19

Trong Mùa Hè 2020, giữa việc hoàn thành CSCI473 và gia nhập Phòng thí nghiệm HCR, tôi đã học CSCI370 hay “Kỹ thuật Phần mềm Nâng cao” như một phần của chương trình cử nhân CS tại Trường Colorado School of Mines. CSCI370 là một khóa học bắt sinh viên thiết kế, triển khai và tài liệu hóa các giải pháp liên quan đến phần mềm cho một công ty. Nó cho phép sinh viên áp dụng kiến thức đã học vào các vấn đề khoa học máy tính thực tế. Bạn có thể tìm hiểu thêm về khóa học tại đây.

Trong khóa học, bạn được quyết định dự án/công ty mà bạn sẽ làm việc cùng. Khóa học cung cấp các tệp PDF chi tiết về từng dự án và công ty. Cuối cùng tôi quyết định làm việc trên một dự án được đăng bởi một công ty có tên Lunar Outpost có tên “Phát hiện Trượt Bánh Xe Thời Gian Thực và Sửa Lỗi cho Điều hướng Mặt Trăng Nâng cao”. Vì tên dài, chúng ta tạm gọi dự án là “Phát hiện Trượt Bánh Xe”.

Vấn đề

Lunar Outpost là một công ty khởi nghiệp cố gắng tạo ra các rover tự trị cho mặt trăng. Trên mặt trăng, có nhiều bụi mặt trăng được biết là gây ra nhiều trượt bánh xe. Điều này không lý tưởng vì trượt bánh xe có thể khiến các hệ thống tự hành mất dấu vị trí thực tế của chúng. Trên Trái Đất, vấn đề này được giải quyết bằng cách sử dụng dữ liệu GPS để hiệu chỉnh bất kỳ sai lệch nào do trượt bánh xe gây ra. Nhưng vấn đề với GPS là nó chỉ hoạt động khi có hơn 30 vệ tinh định vị đang liên tục đi vòng quanh Trái Đất trên quỹ đạo và truyền các tín hiệu riêng biệt cho phép máy tính tính toán vị trí của chúng. Tuy nhiên trên mặt trăng, hiện tại không có thứ gì giống như GPS. Biết điều này, một phương pháp khác ngoài GPS phải được sử dụng để phát hiện trượt bánh xe. Một báo cáo chi tiết hơn về vấn đề của dự án có thể được xem tại đây.

Nhóm

Dự án này không đơn giản, vì vậy nó phải được thực hiện theo nhóm. Nhóm gồm năm sinh viên cùng học tại Trường Colorado School of Mines:

Dự án này không đơn giản, vì vậy nó phải được thực hiện theo nhóm. Nhóm này gồm Mehmet Yilmaz (tôi), Kane Bruce, Braedon O’Callaghan, Liam Williams, và Kevin Grant.

Dự án yêu cầu chúng tôi biết một số ROS, C++, Python, Linux, Raspberry Pi, và Arduino. Hầu hết chúng tôi đã có kinh nghiệm với một hoặc nhiều công nghệ này nhưng tôi là người duy nhất có kinh nghiệm với ROS vì tôi đã sử dụng ROS trong lớp Human Centered Robotics (CSCI473) của mình vào học kỳ Mùa Xuân 2020. Do đó, ngay từ đầu, tôi đã giúp mọi người cập nhật về ROS và cách phát triển cho nó.

Những thách thức

Trong dự án này có rất nhiều thách thức. Nhưng thách thức lớn nhất chúng tôi gặp phải là không có quyền truy cập vào một robot thực tế để thử nghiệm. Điều này là do COVID khiến mọi thứ trở nên từ xa và ngăn cản chúng tôi làm việc trong phòng thí nghiệm/các tòa nhà của Tiền Đồn Mặt Trăng. Do đó, chúng tôi buộc phải sử dụng mô phỏng.

Ngoài ra, chúng tôi đã xem qua một số nghiên cứu học thuật từ Phòng Thí nghiệm Điều Hướng WVU để có ý tưởng về cách vấn đề Trượt Bánh Xe có thể được giải quyết cho trường hợp sử dụng của Tiền Đồn Mặt Trăng, điều này đối với chúng tôi, là sinh viên năm hai và năm ba, thì khó hơn chúng tôi mong đợi.

Một thách thức khác mà chúng tôi gặp phải là lượng thời gian chúng tôi có để làm việc cho dự án này. CSCI370 là một lớp học một tháng. Nhưng chính vấn đề này là một vấn đề to lớn mà nhiều công ty và học giả đã cố gắng giải quyết/hoàn thiện trong nhiều thập kỷ. Vì vậy một tháng thì xa là không đủ thời gian để giải quyết vấn đề này. Nhưng, bất chấp tất cả những thách thức này, chúng tôi đã kiên trì và đảm bảo bàn giao.

Kết luận

Sau khi làm việc qua tất cả nghiên cứu và phát triển, chúng tôi xác định rằng gần như không thể mô phỏng chính xác vật lý mặt trăng ở dạng kỹ thuật số, vì vậy thực sự thử thuật toán này trong mô phỏng là không tốt và sẽ không mang lại bất kỳ nghiên cứu ý nghĩa nào về phát hiện trượt bánh xe trong không gian và trên mặt trăng. Chúng tôi kết luận rằng việc thiết lập một môi trường thử nghiệm đúng cách sử dụng thứ gì đó như cát và phần cứng thực, như robot Husky, quan trọng hơn nhiều cho loại nghiên cứu này. Chúng tôi đã cập nhật mã phát hiện trượt bánh xe để hoạt động như một ROS node và nó hoạt động đúng cách và có thể dễ dàng được nhập vào phần cứng thực để thử nghiệm. Dự án này cho phép tôi đảm nhận vai trò lãnh đạo, giáo dục các đồng nghiệp của mình về phát triển ROS, và có được kinh nghiệm với Python, ROS, và Gazebo trong khi giải quyết một vấn đề phức tạp mà tôi chưa từng gặp trước đây. Quan trọng nhất, trải nghiệm này đã củng cố hơn nữa niềm đam mê của tôi đối với robotics và củng cố mong muốn theo đuổi nghiên cứu trong lĩnh vực này, đặt nền tảng cho những gì sẽ đến tiếp theo trong hành trình robotics của tôi.

Bắt Đầu Tại Phòng Thí nghiệm HCR

Sau khi hoàn thành CSCI473, Chương trình Thực địa CS của tôi vào mùa hè năm 2020, và học kỳ Mùa Thu 2020, tôi quyết định theo đuổi nghiên cứu về robotics. Tôi đã có những trải nghiệm tuyệt vời cả với CSCI473 và Chương trình Thực địa CS nên tôi quyết định muốn làm nghiên cứu cho Phòng Thí nghiệm HCR. Vì tôi đã gặp Tiến sĩ Zhang năm trước, tôi quyết định gửi email cho ông và hỏi về bất kỳ cơ hội nào mà phòng thí nghiệm có thể có vào tháng Một 2021. Khoảng trong vòng 2 tuần, Tiến sĩ Zhang bày tỏ quan tâm, trình bày cho tôi các lựa chọn nghiên cứu, và đề nghị cho tôi một vai trò trong phòng thí nghiệm. Sau đó tôi bắt đầu làm việc cho phòng thí nghiệm vào tháng Hai 2021.

Video Giới Thiệu

Đây là video giới thiệu của tôi mà tôi đã ghi vài tháng sau khi bắt đầu ở Phòng Thí nghiệm HCR. Nó được ghi vào tháng Năm 2021 và bao gồm nghiên cứu mà tôi sẽ tập trung tại Phòng Thí nghiệm HCR trong mùa hè 2021:

Dự Án Của Tôi

Trong suốt thời gian ở Phòng Thí nghiệm HCR, tôi chủ yếu tập trung vào dự án Triton. Dự án Triton là một robot di động được phát triển bởi Phòng Thí nghiệm Robot Tập Trung Con Người tại Trường Mỏ Colorado. Nó là một robot mặt đất bánh omni hình tam giác được trang bị NVIDIA Jetson Nano.

Tóm tắt đơn giản, Triton bao gồm các phần sau:

  • NVIDIA Jetson Nano
  • NVIDIA’s Seed Studio A205 Carrier Board
  • Arduino Mega
  • Thẻ Micro SD 64 GB
  • Thân in 3D tùy chỉnh
  • 3 bánh mecanum
  • 1 pin AR
  • Các mạch tùy chỉnh để tối ưu phân phối điện và dây điện
  • Camera Intel Realsense D435
  • Một vài LED

Nó được thiết kế, lắp ráp và sản xuất vào khoảng 2018-2020 như một robot cho mục đích giáo dục. Khi tôi tham gia, Triton đã khá được thiết lập, và phòng thí nghiệm đang cân nhắc làm một phiên bản mới của nó. Tuy nhiên, vấn đề chính với Triton là phần mềm của nó. Triton có thể di chuyển, sạc và hoạt động ở mức cơ bản nhưng không thực sự làm bất kỳ điều gì thông minh. Nó thậm chí thiếu khả năng thực hiện các chuyển động nâng cao hơn.

Thiết lập bộ sạc pin Bố trí khu vực thử nghiệm
Tritons trong giai đoạn thử nghiệm ban đầu Tritons trên kệ

Để bắt đầu giải quyết điều này, phòng thí nghiệm đã thiết lập một khu vực nơi chúng tôi có thể theo dõi Triton. Để làm điều này, họ tạo ra một khu vực 2 mét x 2 mét với 8 camera Optitrack Flex (Hồng Ngoại) đặt theo hình vuông ở độ cao khoảng 6-7 feet so với sàn.

Khu vực I1 Khu vực I2

Cùng với việc xây dựng khu vực này, mỗi Triton có ba quả cầu xám phản chiếu được gắn ở đỉnh phần thân của chúng.

Với thiết lập này, chúng tôi đã hiệu quả tạo ra hệ thống GPS quy mô nhỏ của riêng mình cho phép chúng tôi lấy tọa độ chính xác bằng mét của một Triton trong khu vực quan tâm. Bằng cách sử dụng các camera hồng ngoại Optitrack và các quả cầu xám Optitrack theo hình tam giác, chúng tôi có thể xác định chính xác tọa độ của một Triton trong khu vực của mình. Điều này cho phép chúng tôi áp dụng một hệ thống vòng kín để cải thiện độ chính xác trong chuyển động.

Hệ thống Optitrack cung cấp dữ liệu vị trí và hướng ở khoảng 120Hz với độ chính xác dưới milimét khi được hiệu chuẩn đúng cách. Ba marker phản chiếu của mỗi Triton tạo thành một mẫu tam giác duy nhất mà hệ thống có thể theo dõi như một khối rắn. Hệ trục tọa độ được hiệu chuẩn sao cho (0,0) nằm ở trung tâm khu vực theo dõi, với các trục X và Y căn chỉnh theo hình học của phòng. Nhưng bất chấp dữ liệu định vị chính xác này, Triton vẫn gặp khó khăn trong việc di chuyển.

Với thiết lập này, một tính năng cốt lõi mà chúng tôi muốn cung cấp cho Triton là khả năng di chuyển tới một tọa độ cụ thể. Người dùng, hoặc phần mềm của họ, có thể cung cấp một tọa độ (x, y) trong khu vực quan tâm. Sau đó robot sẽ di chuyển tới tọa độ đó nhanh nhất, chính xác và mượt mà nhất có thể. Khi tôi tham gia, tính năng này đã tồn tại nhưng nó không hoạt động tốt lắm. Đây là một hoạt ảnh đơn giản cho thấy logic di chuyển ban đầu hoạt động như thế nào:

Tôi đã không ghi lại giải pháp ban đầu trong thực tế, vì vậy tôi đã tạo hoạt ảnh đơn giản này để cho bạn thấy logic di chuyển cũ hoạt động như thế nào. Biết được điều này, những vấn đề với phương pháp này là gì?

  1. Nó thực sự chậm
  2. Nó khiến robot chiếm rất nhiều không gian chỉ để đến một điểm cụ thể. Điều này làm cho chúng tôi khó sử dụng giải pháp này khi nhiều Triton đang di chuyển xung quanh.

Vậy tại sao hành vi này xảy ra? Vấn đề là Triton trước hết quay, thay đổi alpha của nó, cho đến khi nó hướng về phía điểm mục tiêu trong một biên sai cụ thể. Sau đó nó sẽ phóng về phía trước, và sau khi theta của nó lệch khỏi mục tiêu một lượng nhất định, nó sẽ dừng lại và bắt đầu quay lại cho đến khi alpha nằm trong phạm vi chấp nhận được cho mục tiêu. Rồi nó lại phóng nhanh và tiếp tục làm điều này cho đến khi đến điểm. Ngoài ra, khi nó càng tiến gần điểm mục tiêu, tốc độ quay và phóng sẽ chậm lại nhiều để đảm bảo nó không đi quá điểm. Điều này dẫn đến chuyển động không tự nhiên của Triton, mất rất nhiều thời gian để đến một điểm mục tiêu, và yêu cầu rất nhiều diện tích chỉ để đến một điểm mục tiêu cụ thể. Vì vậy với tất cả những vấn đề này, và xét tính quan trọng của tính năng này cho sự phát triển của dự án Triton, khi tôi bắt đầu làm việc tại Phòng Thí nghiệm HCR, nhiệm vụ đầu tiên của tôi là phát triển các giải pháp hiệu quả hơn để cho phép Triton điều hướng tốt hơn đến một điểm mục tiêu.

Biết được điều này, tôi đã dành nhiều thời gian nghiên cứu cách tốt nhất có thể để giải quyết vấn đề này. Trớ trêu thay, tôi đang học một lớp gọi là Giới Thiệu Hệ Thống Điều Khiển Phản Hồi (EENG307) tại Mines. Ngay đầu lớp đó, chúng tôi đã học về khái niệm bộ điều khiển vòng hởbộ điều khiển vòng kín. Biết được điều này, và sau một số thảo luận với giáo sư của lớp đó và bạn cùng phòng thông minh của tôi, rõ ràng mục tiêu đưa Triton đến một điểm mục tiêu là một bài toán hệ thống vòng kín.

Sơ đồ hệ thống điều khiển trên bảng trắng

Bây giờ, sau quá trình thử nghiệm và nghiên cứu mở rộng, tôi đã phát triển hai phương pháp điều khiển khác nhau cho các Triton:

Phương pháp 1: Bộ điều khiển Khoảng cách-Theta

Cách tiếp cận này sử dụng hai bộ điều khiển tỉ lệ riêng biệt chạy đồng thời:

  • Bộ điều khiển Khoảng cách: Tính khoảng cách Euclid tới mục tiêu và áp dụng một hệ số tỉ lệ để xác định vận tốc tiến/lùi
  • Bộ điều khiển Theta: Tính lỗi góc giữa hướng hiện tại của robot và hướng mong muốn tới mục tiêu, áp dụng một hệ số tỉ lệ riêng cho vận tốc quay

Thuật toán liên tục tính khoảng cách Euclid tới mục tiêu và lỗi góc giữa hướng hiện tại của robot và hướng mong muốn. Hai hệ số tỉ lệ riêng biệt được áp dụng để tạo ra vận tốc tuyến tính và vận tốc góc tương ứng.

Điều này dẫn đến Triton tự nhiên quay về phía mục tiêu trong khi đồng thời di chuyển tiến, tạo ra các đường cong mượt mà. Ưu điểm chính là robot luôn giữ mặt trước hướng về phía đích, điều này rất quan trọng cho các ứng dụng dựa trên camera.

Phương pháp 2: Bộ điều khiển Tọa độ X-Y

Cách tiếp cận này coi robot như một máy vẽ 2D, với điều khiển độc lập chuyển động X và Y:

  • Bộ điều khiển X: Điều khiển trực tiếp chuyển động đông-tây dựa trên sai số tọa độ X
  • Bộ điều khiển Y: Điều khiển trực tiếp chuyển động bắc-nam dựa trên sai số tọa độ Y

Việc triển khai tính toán sai số tọa độ X và Y một cách độc lập, áp dụng các hệ số tỉ lệ riêng biệt, rồi biến đổi các thành phần vận tốc toàn cục này sang hệ tọa độ cục bộ của robot bằng cách sử dụng ma trận quay. Việc biến đổi này là cần thiết vì hệ truyền động bánh omni của robot yêu cầu vận tốc trong khung tham chiếu của chính nó, chứ không phải trong tọa độ toàn cục. Phương pháp này tạo ra các đường đi trực tiếp nhất đến mục tiêu và nhanh hơn đáng kể, nhưng hướng của robot sẽ trôi dạt vì không có điều khiển hướng rõ ràng.

Đối với phương pháp #1, tôi đã trình bày chi tiết đầy đủ về phương pháp đó trong bài blog Move Turtle (TurtleSim) của tôi. Tôi rất khuyên bạn nên đọc bài blog này để nắm toàn bộ chi tiết về cách hoạt động của bộ điều khiển PID nói chung, cũng như cách phương pháp #1 hoạt động. Tôi đã phát triển phương pháp #1 bằng cách sử dụng TurtleSim của ROS, sau đó chuyển mã đó sang Triton và cập nhật để tính đến môi trường thực tế hơn.

Phương pháp #2 sử dụng một cách tiếp cận khá khác nhưng có hiệu quả tương đương. Thay vì nghĩ về hướng của robot và khoảng cách đến mục tiêu, phương pháp này xử lý chuyển động như một bài toán trên mặt phẳng tọa độ. Bộ điều khiển liên tục tính sai số theo cả hai hướng X và Y một cách riêng biệt. Ví dụ, nếu robot cần di chuyển từ (0,0) đến (2,3), nó xem đây là cần sửa sai số 2 mét theo X và 3 mét theo Y. Hai bộ điều khiển tỉ lệ hoạt động đồng thời: một bộ điều chỉnh vận tốc của robot theo hướng X dựa trên sai số X, trong khi bộ kia xử lý chuyển động theo hướng Y dựa trên sai số Y. Điều này tạo ra đường đi trực tiếp hơn đến mục tiêu, giống như cách đầu máy in 3D di chuyển, và cho phép chuyển động chéo mượt mà. Robot không cần phải quay rõ ràng để đối mặt với mục tiêu, làm cho phương pháp này đặc biệt hiệu quả trong không gian hẹp hoặc khi cần định vị chính xác.

Cả hai phương pháp đã chứng tỏ nhanh hơn và đáng tin cậy hơn nhiều so với cách tiếp cận ban đầu. Để xem các phương pháp mới này hoạt động, hãy xem Danh sách phát Tritons đang Hoạt Động, nơi hiển thị tất cả các Triton hoạt động với các phương pháp mới.

Những gì từng mất 30-45 giây cho một chuyển động điểm-điểm đơn giản giờ chỉ còn khoảng 8-12 giây. Quan trọng hơn, Triton giờ có thể điều hướng hiệu quả hơn trong không gian hẹp, điều này trở nên hữu ích cho các kịch bản đa-robot của chúng tôi.

Thách thức Phát triển và Gỡ lỗi

Việc triển khai các bộ điều khiển này không đơn giản và liên quan đến một số thách thức gỡ lỗi đáng kể:

Biến đổi Hệ tọa độ: Một trong những khía cạnh khó khăn nhất là thực hiện chính xác các biến đổi hệ tọa độ. Hệ thống Optitrack cung cấp dữ liệu trong khung tọa độ của nó, robot có khung tọa độ cục bộ riêng, và tôi cần chuyển đổi giữa chúng một cách chính xác. Các triển khai ban đầu khiến robot di chuyển theo hướng sai vì tôi đã nhầm lẫn trong các phép tính ma trận quay.

Thực tế so với Hành vi Lý tưởng: Thách thức lớn nhất là tính đến các yếu tố thực tế không xuất hiện trong lý thuyết điều khiển sách giáo khoa. Bánh xe của robot có các đặc tính ma sát khác nhau, động cơ không phản hồi giống hệt nhau, và luôn có một số độ trễ trong chuỗi liên lạc từ Optitrack tới phần mềm điều khiển tới Arduino của robot. Tôi đã dành hàng tuần điều chỉnh các hệ số tỉ lệ và thêm bộ lọc vùng chết để tính đến những thực tế vật lý này.

Dao động và Vấn đề Ổn định: Các triển khai ban đầu của tôi gặp vấn đề dao động, nơi robot vượt quá mục tiêu và lắc trở lại qua lại. Điều này đã dạy tôi về tầm quan trọng của thành phần đạo hàm trong bộ điều khiển PID và nhu cầu điều chỉnh hệ số hợp lý. Cuối cùng tôi chọn kiểm soát chủ yếu bằng tỉ lệ với các hệ số điều chỉnh cẩn thận hơn thay vì PID đầy đủ, vì sự giảm chấn vốn có của hệ thống là đủ cho hầu hết ứng dụng.

Can nhiễu Đa-Robot: Khi nhiều robot hoạt động đồng thời, tôi phát hiện ra các mẫu can nhiễu không mong muốn. Robot đôi khi “đấu” lẫn nhau trên cùng một không gian hoặc tạo ra tình huống bế tắc nơi chúng chặn lẫn nhau vô thời hạn. Điều này khiến tôi phải triển khai các cơ chế phối hợp và thuật toán tránh va chạm.

Hệ Thống Điều Khiển Nhiều Triton

Khi tôi đã giải quyết được vấn đề di chuyển của một Triton, thách thức tiếp theo của phòng thí nghiệm là làm thế nào để nhiều Triton hoạt động cùng nhau đồng thời. Đây trở thành một trong những mảng tôi tập trung chính và cuối cùng là đóng góp quan trọng cho dự án.

Hệ thống ban đầu chỉ có thể điều khiển một Triton tại một thời điểm, điều này hạn chế nghiêm trọng khả năng nghiên cứu. Phòng thí nghiệm muốn mô phỏng các kịch bản nơi nhiều phương tiện tự hành cần phối hợp chuyển động của chúng, giống như ô tô tự lái giao tiếp với nhau để tối ưu hóa lưu lượng và tạo các bản đồ SLAM (Định vị và Lập bản đồ Đồng thời) tốt hơn.

Để giải quyết điều này, tôi đã triển khai một cách tiếp cận đa xử lý bằng cách sử dụng thư viện multiprocessing của Python. Mỗi Triton có một tiến trình riêng biệt có thể chạy độc lập trong khi vẫn được điều phối bởi hệ thống điều khiển trung tâm. Điều này cho phép nhiều Triton di chuyển đồng thời mà không can nhiễu vòng điều khiển của nhau.

Thiết kế Kiến trúc Đa Robot

Kiến trúc hệ thống tôi phát triển bao gồm một số thành phần chính:

Tiến trình Bộ điều khiển Chính: Đây đóng vai trò điều phối trung tâm, xử lý tương tác giao diện người dùng, lập kế hoạch đường đi và điều phối mức cao giữa các robot. Nó duy trì trạng thái toàn cục và phân phối lệnh tới các tiến trình robot riêng lẻ.

Các Tiến trình Robot Cá nhân: Mỗi Triton có một tiến trình Python riêng chịu trách nhiệm:

  • Tính toán PID thời gian thực ở ~50Hz
  • Giao tiếp với phần cứng của robot (Arduino/Jetson)
  • Thực thi đường đi cục bộ và tránh chướng ngại
  • Báo cáo trạng thái trở lại bộ điều khiển chính

Giao tiếp Bộ nhớ Chung: Tôi sử dụng multiprocessing.shared_memory và các đối tượng Queue của Python để cho phép giao tiếp hiệu quả giữa các tiến trình. Điều này cho phép phối hợp thời gian thực mà không có chi phí của giao tiếp mạng.

Cơ chế Đồng bộ hóa: Để ngăn xung đột khi nhiều robot cần phối hợp (như tránh va chạm), tôi triển khai semaphore và khóa cho phép robot yêu cầu truy cập độc quyền tới các khu vực nhất định của không gian làm việc.

Thách thức là đảm bảo tất cả robot có thể vận hành các vòng điều khiển của chúng một cách độc lập trong khi vẫn duy trì phối hợp toàn cục. Mỗi tiến trình robot chạy các phép tính PID riêng và gửi lệnh động cơ trực tiếp tới phần cứng, trong khi tiến trình chính xử lý điều phối mức cao như tránh va chạm và lập kế hoạch đường đi.

Kiểm tra giao lộ nhiều Triton Cài đặt nhiều Triton ban đầu

Triton với máy bay không người lái cho công việc đa tác tử trong tương lai

Hệ thống nhiều Triton mở ra những khả năng nghiên cứu hoàn toàn mới. Chúng tôi giờ có thể mô phỏng:

  • Các kịch bản giao tiếp giữa các phương tiện
  • Lập kế hoạch đường đi phối hợp với tránh chướng ngại
  • Hành vi đàn (swarm robotics)
  • Lập bản đồ SLAM đa-tác tử
  • Điều khiển đội hình và hành vi theo dõi

Đây là cách bố trí phòng thí nghiệm trông như thế nào khi nhiều Triton chạy đồng thời:

Robot trên lưới xanh Cài đặt lưới robot

Tôi cũng phát triển một giao diện thân thiện với người dùng cho phép các nhà nghiên cứu xác định trực quan đường đi cho mỗi Triton. Bạn thực sự có thể vẽ đường đi mà bạn muốn mỗi robot theo, và chúng sẽ thực thi những đường đi này với sự phối hợp hoàn hảo. Điều này cực kỳ hữu ích để thiết lập các thí nghiệm phức tạp mà không cần phải mã hóa từng chuyển động bằng tay.

Hệ thống có thể xử lý tối đa 5 Triton cùng lúc, mỗi con chạy bộ điều khiển PID riêng trong khi được điều phối thông qua hệ thống điều khiển trung tâm. Hiệu suất rất ấn tượng, với tất cả robot duy trì độ chính xác cá nhân trong khi làm việc cùng nhau như một đội.

Đây là một danh sách phát cho thấy Triton hoạt động, từ điều khiển đơn-robot đến điều phối đa-robot: Danh sách phát Tritons đang Hoạt Động

Tích hợp Cảm biến Độ sâu và Hiệu chỉnh Tọa độ

Một bước tiến lớn khác mà tôi làm việc là tận dụng các camera độ sâu Intel RealSense D435 được gắn trên mỗi Triton. Trong khi hệ thống Optitrack cung cấp cho chúng tôi dữ liệu định vị vô cùng chính xác, tôi muốn khám phá cách robot có thể sử dụng cảm biến onboard của chúng để cải thiện nhận thức không gian và hiệu chỉnh lỗi tọa độ.

Ý tưởng là các Triton có thể sử dụng cảm biến độ sâu của chúng để phát hiện các Triton khác trong vùng lân cận và đối chiếu vị trí của nhau. Điều này sẽ phục vụ nhiều mục đích:

  1. Hiệu chỉnh Lỗi: Nếu hệ thống Optitrack có bất kỳ trôi hiệu chuẩn nào hoặc che khuất tạm thời, robot có thể sử dụng xác nhận hình ảnh về vị trí của nhau để duy trì hệ tọa độ chính xác.

  2. SLAM được Cải thiện: Bằng cách có nhiều robot với cảm biến độ sâu làm việc cùng nhau, chúng tôi có thể tạo ra các bản đồ môi trường phong phú hơn nhiều với các điểm dữ liệu dư thừa.

  3. Tránh va chạm: Cảm biến độ sâu theo thời gian thực sẽ cho phép các robot phát hiện và tránh nhau ngay cả khi hệ thống điều khiển trung tâm gặp trễ giao tiếp.

Tôi bắt đầu thử nghiệm các thuật toán cho phép các Triton:

  • Phát hiện các Triton khác bằng cách sử dụng hình dạng tam giác đặc trưng và các bộ đánh dấu hình cầu phản quang
  • Tính toán vị trí tương đối và phương hướng bằng dữ liệu độ sâu
  • So sánh các phép đo này với dữ liệu Optitrack để xác định sai lệch
  • Có khả năng điều chỉnh hệ tọa độ của chúng trong thời gian thực để duy trì độ chính xác

Thí nghiệm Thị giác Máy tính

Tôi đã dành khá nhiều thời gian thử nghiệm một quy trình xử lý thị giác máy tính hoạt động qua nhiều giai đoạn:

Hai Triton đối diện nhau cho các bài kiểm tra thị giác máy tính Cảnh cận cảnh camera của Triton
Hai Triton đối mặt để kiểm tra
Hai robot đối diện nhau Hai Triton sắp đua

Xử lý Dữ liệu Độ sâu: Intel RealSense D435 cung cấp cả luồng dữ liệu RGB và độ sâu. Tôi chủ yếu làm việc với dữ liệu độ sâu, được trình bày dưới dạng mảng 640x480 các phép đo khoảng cách ở 30Hz. Thách thức đầu tiên là lọc dữ liệu độ sâu nhiễu này để trích xuất thông tin hình học có ý nghĩa.

Thử nghiệm Phát hiện Đối tượng: Tôi thử nghiệm các thuật toán phát hiện nhiều giai đoạn. Tôi có một vài thành công trong việc phân đoạn ảnh độ sâu để xác định các vật thể ở mức sàn (lọc ra tường, trần, v.v.) và tìm kiếm các vật thể có đặc điểm kích thước phù hợp, khoảng diện tích chân đế 0.3x0.3 mét. Tôi đã cố gắng sử dụng phát hiện cạnh và phân tích hình học để nhận diện diện mạo đặc trưng của Triton, với kết quả đôi khi tốt, đôi khi không.

Thử nghiệm Nhận diện Bộ đánh dấu: Ba quả cầu phản quang trên mỗi Triton có vẻ là đặc trưng phát hiện hứa hẹn nhất. Tôi thử nghiệm các thuật toán phát hiện blob để nhận diện mẫu tam giác đặc trưng gồm ba điểm sáng trong ảnh độ sâu. Tôi có một vài kết quả khả quan trong điều kiện chiếu sáng được kiểm soát, mặc dù nó không đáng tin cậy một cách nhất quán.

Nghiên cứu Hợp nhất Tọa độ: Tôi nghiên cứu các phương pháp hợp nhất ước lượng vị trí dựa trên thị giác với dữ liệu Optitrack, bao gồm các triển khai bộ lọc Kalman cơ bản. Ý tưởng là ưu tiên dữ liệu Optitrack khi có sẵn nhưng dựa vào thị giác khi cần, mặc dù tôi chưa đưa điều này hoạt động hoàn chỉnh trước khi thời gian của tôi tại phòng thí nghiệm kết thúc.

Thách thức Hiệu năng: Việc làm cho tất cả xử lý này chạy theo thời gian thực cùng với các vòng điều khiển của robot thực sự là một thách thức. Tôi thử nghiệm các phương pháp tối ưu hóa để chạy các thuật toán ở khoảng 10-15Hz mà không làm quá tải khả năng xử lý của Jetson Nano.

Thật không may, tôi phải rời phòng thí nghiệm trước khi có thể hoàn thành toàn bộ công việc thị giác máy tính này. Mặc dù tôi có một vài kết quả ban đầu khả quan và học được nhiều về xử lý cảm biến độ sâu, tôi chưa đưa hệ thống đến trạng thái hoàn toàn đáng tin cậy. Đây vẫn là một hướng nghiên cứu thú vị mà người khác có thể xây dựng tiếp.

Đây là một video tôi thử nghiệm các thuật toán thị giác máy tính:

Đây là cách hiển thị cảm biến độ sâu trông như thế nào trong các thí nghiệm của tôi:

Mặc dù tôi chưa hoàn thành công việc tích hợp cảm biến độ sâu, ý tưởng này cho thấy tiềm năng cho các ứng dụng như mô phỏng các kịch bản xe tự lái, nơi các phương tiện cần nhận biết lẫn nhau mà không chỉ dựa vào cơ sở hạ tầng bên ngoài. Hướng nghiên cứu mà tôi bắt đầu khám phá có thể đóng góp cho các công trình tương lai trong phòng thí nghiệm.

Tài liệu và Bảo tồn Kiến thức

Một trong những đóng góp quan trọng nhất của tôi cho Phòng thí nghiệm HCR, và có lẽ là điều tôi tự hào nhất, là tổ chức và bảo tồn toàn bộ tài liệu dự án. Khi tôi gia nhập phòng thí nghiệm, kiến thức về dự án Triton bị phân tán trên nhiều nền tảng và định dạng. Thông tin quan trọng được lan truyền khắp nơi:

  • Nhiều tài khoản Google Drive thuộc về các sinh viên khác nhau đã tốt nghiệp
  • Các email cũ bị chôn trong hộp thư đến
  • Các thư mục Dropbox rải rác
  • Nhiều kho lưu trữ GitHub
  • Các kho GitLab có tổ chức không nhất quán
  • Ghi chú viết tay mà chỉ một số người nhất định mới hiểu được

Tài liệu phân mảnh này là một vấn đề lớn. Sinh viên mới mất hàng tuần chỉ để cố gắng tìm cách bắt đầu, và kiến thức quý giá liên tục bị mất khi mọi người tốt nghiệp hoặc rời phòng thí nghiệm.

Tôi tự nguyện giải quyết vấn đề này một cách có hệ thống. Tôi đã dành vô số giờ để truy tìm mọi mảnh tài liệu, mã nguồn, video và ghi chú liên quan đến dự án Triton. Sau đó tôi tổ chức mọi thứ thành một kho lưu trữ GitLab tập trung với cấu trúc rõ ràng và logic.

Triton trên bàn Nhiều Triton trên bàn (tổng cộng 8, đang chế tạo 5)

Các Triton trên kệ ở góc đẹp

Tài liệu tập trung bao gồm:

  • Hướng dẫn Lắp ráp: Hướng dẫn từng bước để lắp ráp các Triton từ đầu
  • Cài đặt Phần mềm: Hướng dẫn đầy đủ để thiết lập môi trường phát triển
  • Tài liệu Mã nguồn: Mã có chú thích đầy đủ với các giải thích rõ ràng
  • Thông số Phần cứng: Danh sách linh kiện chi tiết, sơ đồ đấu dây và thiết kế PCB
  • Hướng dẫn Khắc phục Sự cố: Các vấn đề thường gặp và cách giải quyết
  • Hướng dẫn bằng Video: Tôi đã tạo và tải lên các video hướng dẫn lên YouTube, bao gồm các hướng dẫn hiệu chuẩn Optitrack chi tiết:

Tôi cũng thiết lập các tiêu chuẩn tài liệu để đảm bảo các đóng góp trong tương lai sẽ được tổ chức và dễ truy cập. Cấu trúc kho lưu trữ mà tôi tạo ra đã trở thành nền tảng cho tất cả công việc tiếp theo trong phòng thí nghiệm.

Ngoài việc tổ chức tài liệu hiện có, tôi đã tạo một số hướng dẫn và bài giảng gốc lấp đầy các lỗ hổng quan trọng trong cơ sở tri thức. Chúng bao gồm hướng dẫn thiết lập chi tiết cho thành viên mới của phòng thí nghiệm, hướng dẫn khắc phục sự cố toàn diện và các video hướng dẫn từng bước các quy trình phức tạp.

Ảnh hưởng là ngay lập tức và lâu dài. Sinh viên mới có thể nắm bắt công việc trong vài ngày thay vì vài tuần. Kho tài liệu tôi tạo vẫn đang được phòng thí nghiệm sử dụng cho đến ngày nay, nhiều năm sau khi tôi rời đi. Nó đã trở thành nguồn thông tin duy nhất cho dự án Triton và tiết kiệm vô số giờ/ngày cho các nhà nghiên cứu tương lai.

Hướng dẫn và Chuyển giao Kiến thức

Một trong những khía cạnh đáng thưởng nhất trong thời gian tôi ở Phòng thí nghiệm HCR là cơ hội hướng dẫn người khác và chia sẻ kiến thức tôi đã tích lũy. Khi công việc của tôi tiến triển và tôi trở nên có kinh nghiệm hơn với hệ thống Triton, tôi đảm nhận ngày càng nhiều trách nhiệm trong việc đào tạo các thành viên mới của nhóm.

Hướng dẫn Người kế nhiệm trong Phòng thí nghiệm

Khi tôi chuẩn bị rời phòng thí nghiệm để tập trung hoàn thành bằng cấp và công việc tại eBay, tôi đảm bảo huấn luyện kỹ lưỡng hai người sẽ tiếp quản dự án Triton sau khi tôi rời đi. Điều này không chỉ là chỉ cho họ cách mọi thứ hoạt động, mà còn đảm bảo họ thực sự hiểu các nguyên tắc cơ bản để tiếp tục đổi mới.

Tôi đã dành nhiều tuần làm việc chặt chẽ với họ, đi qua:

  • Nền tảng toán học của hệ thống điều khiển PID
  • Kiến trúc đa tiến trình để phối hợp nhiều robot
  • Tích hợp cảm biến độ sâu và các thuật toán thị giác máy tính
  • Hệ thống tài liệu và cách duy trì nó
  • Kỹ thuật gỡ lỗi và các chế độ lỗi thường gặp

Việc chuyển giao kiến thức diễn ra vô cùng kỹ lưỡng. Chúng tôi đã cùng nhau trải qua các phiên gỡ lỗi thực tế, tôi yêu cầu họ chỉnh sửa và mở rộng mã hiện có, và tôi đảm bảo họ có thể tự thiết lập các Triton mới từ đầu một cách độc lập.

Chương trình Hướng dẫn cho Học sinh Trung học

Có lẽ phần càng đáng giá hơn là kinh nghiệm của tôi khi hướng dẫn một học sinh trung học thông qua chương trình tiếp cận cộng đồng của phòng thí nghiệm. Đây là một cơ hội tuyệt vời để giới thiệu cho một người về robot, khoa học máy tính và nghiên cứu ở giai đoạn hình thành trong quá trình học tập của họ.

Tôi thiết kế một chương trình giảng dạy toàn diện bao gồm:

Các Nguyên tắc Cơ bản về Khoa học Máy tính:

  • Khái niệm lập trình sử dụng Python làm ngôn ngữ chính
  • Giới thiệu lập trình hướng đối tượng
  • Hiểu biết về thuật toán và cấu trúc dữ liệu

Khái niệm về Robot:

  • Cách cảm biến hoạt động và cách giao tiếp với chúng
  • Điều khiển chấp hành và hệ thống động cơ
  • Những điều cơ bản về hệ thống tự chủ và điều khiển phản hồi

ROS (Hệ điều hành Robot):

  • Hiểu mô hình nhắn tin xuất bản/đăng ký
  • Tạo các nút và dịch vụ
  • Làm việc với tệp khởi chạy và máy chủ tham số

Công việc Dự án Thực hành:

  • Chúng tôi hợp tác tạo một dịch vụ ROS điều khiển hệ thống LED trên đầu của Triton
  • Cô ấy học cách viết mã sạch, có tài liệu và tích hợp với các hệ thống hiện có của chúng tôi
  • Dịch vụ điều khiển LED do cô ấy tạo đã trở thành một phần thường trực của mã nguồn Triton

Điều làm cho việc hướng dẫn này đặc biệt là được chứng kiến cô ấy tiến bộ từ việc hầu như không biết gì về lập trình đến việc đóng góp mã có ý nghĩa cho một dự án nghiên cứu đang hoạt động. Cô ấy đã từ việc hỏi “Một biến là gì?” đến việc tự gỡ lỗi các vấn đề giao tiếp ROS và viết các triển khai dịch vụ của riêng mình.

Hệ thống điều khiển LED cô ấy phát triển cho phép các nhà nghiên cứu dễ dàng thay đổi màu sắc và mẫu của đèn LED trên đầu Triton thông qua các lệnh ROS đơn giản. Điều này nghe có vẻ đơn giản, nhưng nó đòi hỏi hiểu biết về kiến trúc ROS, giao tiếp phần cứng và các mẫu thiết kế phần mềm đúng đắn. Đóng góp của cô ấy vẫn đang được sử dụng trong phòng thí nghiệm ngày nay.

Sự cố vấn vừa mang tính giáo dục đối với tôi vừa đối với cô ấy. Nó buộc tôi phải phân tách các khái niệm phức tạp thành những phần dễ tiêu hóa và thực sự suy nghĩ về những điều cơ bản của những gì chúng tôi đang làm. Dạy người khác đã khiến tôi trở thành một kỹ sư và nhà nghiên cứu tốt hơn.

Hợp tác với Nghiên cứu Tiến sĩ

Một trong những khía cạnh mang lại giá trị nghề nghiệp lớn nhất trong thời gian tôi ở phòng thí nghiệm là làm việc chặt chẽ với Peng, một nghiên cứu sinh tiến sĩ có nghiên cứu tập trung vào các thuật toán cho xe tự lái. Những cải tiến phần mềm mà tôi đã thực hiện đối với hệ thống Triton đã giúp hỗ trợ nghiên cứu tiến sĩ của anh ấy.

Nghiên cứu của Peng đòi hỏi sự phối hợp đa-robot chính xác và đáng tin cậy để mô phỏng các kịch bản xe tự lái. Trước khi tôi cải tiến kiểm soát chuyển động và hệ thống đa-robot, những thí nghiệm này khó thực hiện hơn nhiều. Các robot chạy chậm hơn, kém chính xác hơn và không thể làm việc cùng nhau hiệu quả như vậy.

Những đóng góp của tôi đã giúp nghiên cứu của Peng ở một số lĩnh vực sau:

Nghiên cứu Quản lý Giao lộ: Với các bộ điều khiển PID và phối hợp đa-robot được cải thiện, Peng có thể mô phỏng các kịch bản giao lộ nơi nhiều “phương tiện” (Triton) cần phối hợp chuyển động của chúng. Thời gian và vị trí tốt hơn đã giúp các nghiên cứu này khả thi hơn.

Giao tiếp Giữa Các Phương tiện: Khung đa xử lý mà tôi phát triển cho phép Peng triển khai và thử nghiệm các giao thức giao tiếp giữa các phương tiện mô phỏng. Mỗi Triton có thể đưa ra quyết định trong khi vẫn phối hợp với các con khác, tương tự như cách các xe tự lái có thể cần vận hành.

Nghiên cứu SLAM và Lập bản đồ: Công việc tích hợp cảm biến độ sâu đã cung cấp cho Peng dữ liệu bổ sung cho nghiên cứu định vị đồng thời và lập bản đồ của anh ấy. Việc có nhiều robot với khả năng cảm biến được phối hợp cho phép thực hiện các thí nghiệm lập bản đồ toàn diện hơn.

Điều làm cho sự hợp tác của chúng tôi đặc biệt có giá trị là nó không chỉ là tôi hỗ trợ cho nghiên cứu của anh ấy, mà là một quan hệ đối tác thực sự. Hiểu biết của Peng về các khía cạnh lý thuyết của phương tiện tự hành đã giúp định hướng các triển khai thực tế của tôi. Phản hồi và các yêu cầu của anh ấy đã thúc đẩy tôi làm cho các hệ thống trở nên vững chắc và có năng lực hơn.

Chúng tôi đã dành nhiều giờ ở phòng thí nghiệm cùng nhau, gỡ lỗi các kịch bản, thảo luận các chiến lược điều khiển khác nhau và khám phá những gì nền tảng Triton có thể thực hiện. Peng trở thành cả một đồng nghiệp và một người bạn, và làm việc với anh ấy đã dạy tôi rất nhiều về cách nghiên cứu học thuật thực sự vận hành.

Các hệ thống tôi xây dựng đã trở thành một phần hữu ích trong công trình luận án của Peng. Thấy những đóng góp kỹ thuật thực tế của tôi hỗ trợ nghiên cứu về công nghệ phương tiện tự hành thực sự rất thỏa mãn. Điều đó củng cố thêm sự quan tâm của tôi về cách kỹ thuật vững chắc và nghiên cứu có thể kết hợp để tạo ra những kết quả hữu ích.

Ngay cả sau khi tôi rời phòng thí nghiệm, Peng và tôi vẫn giữ liên lạc. Biết rằng công việc của tôi tiếp tục đóng góp cho nghiên cứu quan trọng ngay cả sau khi tôi rời đi là điều vô cùng đáng hài lòng.

Góc nhìn: Thời kỳ phát triển trước LLM

Đáng lưu ý là tất cả công việc này được hoàn thành trong thời kỳ trước khi các mô hình ngôn ngữ lớn (LLM) có mặt trong phát triển phần mềm. Tất cả những điều này diễn ra trong khoảng 2020 đến 2021 (chủ yếu là 2021), trước khi ChatGPT, Claude, Perplexity, hoặc các công cụ phát triển hỗ trợ AI như Cursor IDE tồn tại.

Mỗi dòng mã đều được viết từ đầu, mọi thuật toán đều được nghiên cứu thông qua các bài báo học thuật và sách giáo khoa, và mỗi phiên gỡ lỗi đều sử dụng các phương pháp truyền thống như câu lệnh in, trình gỡ lỗi và kiểm thử có phương pháp. Khi tôi gặp khó khăn với một phép biến đổi tọa độ hoặc vấn đề điều chỉnh PID, tôi không thể chỉ hỏi một trợ lý AI để giải thích khái niệm hoặc giúp gỡ lỗi vấn đề.

Điều này làm cho quá trình phát triển khó khăn hơn đáng kể nhưng cũng mang tính giáo dục hơn. Tôi phải:

Nghiên cứu Mọi thứ Thủ công: Hiểu lý thuyết điều khiển PID có nghĩa là phải đọc sách giáo khoa và các bài báo học thuật. Tìm hiểu các phép biến đổi tọa độ đòi hỏi phải làm toán bằng tay. Mỗi khái niệm phải được hiểu đầy đủ trước khi triển khai.

Gỡ lỗi Không có Trợ giúp AI: Khi robot di chuyển theo hướng không mong muốn hoặc dao động quanh mục tiêu, tôi phải lần theo logic một cách có phương pháp, thêm các đầu ra gỡ lỗi và kiểm tra các giả thuyết từng cái một. Không có AI nào để gợi ý các vấn đề tiềm ẩn hoặc giúp diễn giải các mẫu lỗi.

Học Từ Các Nguyên lý Cơ bản: Không có khả năng nhanh chóng hỏi “làm thế nào để triển khai đa xử lý trong Python cho rô-bốt?” khiến tôi phải hiểu sâu sắc các khái niệm nền tảng. Điều này buộc tôi xây dựng nền tảng vững chắc về lập trình đồng thời, hệ thống điều khiển và thị giác máy tính.

Tài liệu Rất Quan trọng: Vì tôi không thể dựa vào AI để giải thích mã sau này, tôi phải viết tài liệu và chú thích rất rõ ràng. Kỷ luật này đã chứng tỏ vô giá khi chuyển giao kiến thức cho người khác.

Nhìn lại, trong khi các công cụ AI hiện đại sẽ tăng tốc nhiều khía cạnh của phát triển, làm việc mà không có chúng đã buộc tôi phát triển kỹ năng giải quyết vấn đề sâu hơn và hiểu biết thấu đáo hơn về các hệ thống nền tảng. Thật thú vị khi suy nghĩ dự án này có thể khác như thế nào nếu có các công cụ phát triển ngày nay.

Quyết định Khó khăn khi Rời đi

Dù rất yêu thích công việc ở Phòng thí nghiệm HCR, vào cuối năm 2021 tôi đã phải đối mặt với một quyết định khó khăn mà nhiều sinh viên gặp phải: cân bằng nhiều cơ hội và trách nhiệm. Tôi đang đồng thời làm việc toàn thời gian với vai trò kỹ sư phần mềm tại eBay, hoàn thành bằng cử nhân khoa học máy tính tại Mines, và đóng góp cho nghiên cứu tại Phòng thí nghiệm HCR.

Cơ hội tại eBay là quan trọng; đó là vai trò kỹ sư phần mềm lớn đầu tiên của tôi, cung cấp kinh nghiệm quý báu trong ngành và cho tôi nguồn thu nhập ổn định. Tuy nhiên, cố gắng duy trì công việc toàn thời gian, hoàn thành chương trình học và đóng góp có ý nghĩa cho nghiên cứu là điều không thể bền vững. Phải có thứ gì đó nhường chỗ.

Khi tôi tiếp cận Dr. Zhang về khả năng giảm tải môn học để tập trung nhiều hơn vào công việc phòng thí nghiệm, ông đã khuyên mạnh mẽ chống lại điều đó. Lý do của ông có cơ sở: hoàn thành bằng cấp nên là ưu tiên, và kinh nghiệm trong ngành tại eBay sẽ có giá trị cho sự phát triển nghề nghiệp của tôi. Ông cảm thấy rằng bỏ lớp học để tập trung vào nghiên cứu, dù hấp dẫn, có thể không phải là quyết định tốt về lâu dài.

Vì vậy vào tháng 9 năm 2021, sau khoảng 8 tháng làm việc tích cực tại phòng thí nghiệm, tôi đã đưa ra quyết định khó khăn là rút lui khỏi vai trò trợ lý nghiên cứu để tập trung hoàn thành bằng cấp và công việc tại eBay. Đó là một trong những quyết định nghề nghiệp khó khăn mà tôi đã phải đưa ra vào thời điểm đó.

Ngay cả sau khi chính thức rời phòng thí nghiệm, tôi tiếp tục hỗ trợ khi ai đó cần giúp với các hệ thống tôi đã xây dựng. Tôi cập nhật tài liệu khi cần, trả lời các câu hỏi về gỡ lỗi, và giúp khắc phục sự cố từ xa. Các kết nối mà tôi đã tạo ra và sự đầu tư của tôi vào thành công của dự án không biến mất chỉ vì tôi không còn chính thức là thành viên trong nhóm.

Suy ngẫm và Nhìn Lại

Bây giờ, vào năm 2025, bốn năm sau, tôi thấy mình suy ngẫm về thời gian đó với những cảm xúc phức tạp. Con đường sự nghiệp của tôi đã đi sâu vào phát triển web và kỹ thuật AI/ML, những lĩnh vực đã mang lại phần thưởng to lớn và cung cấp cơ hội lớn để phát triển và tạo ảnh hưởng.

Hình nhìn từ trên xuống của các Triton trên bàn

Tuy nhiên có một phần trong tôi tự hỏi “giá như”. Robotics từng là, và thành thực mà nói vẫn là, niềm đam mê thực sự của tôi. Có điều gì đó về việc làm việc với các hệ thống vật lý, thấy mã của bạn dịch sang chuyển động và hành vi trong thế giới thực, mà phát triển web và ngay cả công việc AI cũng không thể hoàn toàn tái tạo.

Thỉnh thoảng tôi tự hỏi điều gì có thể đã xảy ra nếu tôi chọn một con đường khác. Giá như tôi tìm được cách ở lại nghiên cứu robotics? Giá như tôi theo học sau đại học ngay sau khi hoàn thành bằng cử nhân? Giá như tôi đã chọn ưu tiên công việc phòng thí nghiệm hơn là kinh nghiệm trong ngành?

Nhưng tôi cũng nhận ra rằng mỗi con đường đều có sự đánh đổi. Các kỹ năng tôi phát triển trong phát triển web và AI rất quý giá. Kinh nghiệm trong ngành đã dạy tôi về phát triển phần mềm ở quy mô lớn, thiết kế trải nghiệm người dùng và những thách thức thực tiễn khi xây dựng sản phẩm mà hàng triệu người sử dụng. Những trải nghiệm này đã khiến tôi trở thành một kỹ sư tốt hơn nói chung.

Công việc tôi đã làm ở Phòng thí nghiệm HCR tiếp tục ảnh hưởng đến cách tôi tiếp cận các vấn đề ngày nay. Tư duy có hệ thống cần thiết cho các hệ thống điều khiển PID xuất hiện trong cách tôi thiết kế các vòng phản hồi trong hệ thống phần mềm. Kỹ năng tài liệu và bảo tồn kiến thức mà tôi phát triển đã vô giá trong mọi vai trò kể từ đó. Kinh nghiệm cố vấn và dạy người khác đã định hình cách tôi làm việc với các nhà phát triển cấp dưới và đóng góp vào việc chia sẻ kiến thức trong nhóm.

Quan trọng nhất, trải nghiệm đã dạy tôi rằng tôi phát triển mạnh khi làm việc trên các vấn đề kỹ thuật khó khăn có tác động thực tế. Dù đó là tối ưu hóa các thuật toán di chuyển của robot hay xây dựng hệ thống AI giúp người dùng đạt được mục tiêu, niềm thỏa mãn đến từ việc giải quyết những vấn đề khó mà có ý nghĩa.

Tác động Bền vững

Nhìn lại trải nghiệm tại Phòng thí nghiệm HCR, tôi ấn tượng với khối lượng những gì tôi đã hoàn thành trong khoảng thời gian tương đối ngắn. Các hệ thống tôi xây dựng đã thay đổi căn bản cách nền tảng Triton vận hành, và nhiều cải tiến đó vẫn đang được sử dụng đến ngày nay. Kho lưu trữ tài liệu mà tôi tạo ra đã trở thành cơ sở tri thức cho toàn bộ dự án. Các mối quan hệ cố vấn mà tôi hình thành đã có tác động lâu dài đến những người tôi làm việc cùng.

Nhưng có lẽ điều quan trọng nhất, trải nghiệm đã cho tôi thấy khả năng của bản thân khi làm việc trên những vấn đề mà tôi thực sự đam mê. Trong tám tháng đó, tôi:

  • Cải thiện hệ thống điều khiển chuyển động robot vốn đã giới hạn nền tảng
  • Xây dựng một hệ thống phối hợp nhiều robot từ đầu
  • Tích hợp khả năng thị giác máy tính và hợp nhất cảm biến
  • Tạo ra một hệ thống quản lý tài liệu và tri thức toàn diện
  • Hướng dẫn một số người và hỗ trợ chuyển giao tri thức
  • Hỗ trợ nghiên cứu ở trình độ tiến sĩ về phương tiện tự hành

Điều này không chỉ liên quan đến những thành tựu kỹ thuật, mặc dù những thành tựu đó có ý nghĩa đối với tôi. Nó còn là bài học rằng với sự kiên trì và tư duy có hệ thống, bạn có thể đóng góp những giá trị hữu ích ngay cả khi còn là một sinh viên đại học.

Tương Lai và Robot

Mặc dù sự nghiệp của tôi đã đưa tôi theo những hướng khác, niềm đam mê với robot của tôi vẫn không hề giảm sút. Tôi vẫn theo dõi những diễn biến trong lĩnh vực này, tôi hào hứng với những tiến bộ trong học tập cho robot và các hệ thống tự hành, và thỉnh thoảng tôi làm một vài dự án robot cá nhân trong thời gian rảnh.

Ai mà biết tương lai sẽ ra sao? Những kỹ năng tôi đang phát triển trong AI và học máy ngày càng có liên quan đến robot. Kinh nghiệm trong ngành mà tôi có được đã dạy tôi cách xây dựng các hệ thống mạnh mẽ, có khả năng mở rộng. Có lẽ sẽ có một tương lai nơi những sợi kinh nghiệm khác nhau này hội tụ theo những cách bất ngờ.

Hiện tại, tôi biết ơn khoảng thời gian tôi đã dành trong phòng thí nghiệm HCR và những trải nghiệm mà nó mang lại. Đó là một giai đoạn hình thành đã định hình cả kỹ năng kỹ thuật của tôi lẫn sự hiểu biết của tôi về những loại công việc mà tôi thấy thỏa mãn nhất. Mặc dù đôi khi tôi nhớ nó, tôi biết rằng những bài học tôi học được và những phương pháp tôi phát triển tiếp tục ảnh hưởng đến mọi việc tôi làm.

Các robot Triton vẫn còn đó, vẫn phục vụ các nhà nghiên cứu, vẫn tạo điều kiện cho những công việc quan trọng. Và điều đó thật tuyệt vời.