this articles is a part of
The FACC'25 event

FACC'25

To OpMode trong Android Studio

Hướng dẫn tạo các OpMode để chạy các thiết bị điện tử trong FTC, bên cạnh đó, cung cấp một số ví dụ về OpMode.

Level

Beginner

Source

Author

Aggregate

Translator

AIoT

Date Published

Sep 22, 2025

Tạo và chạy OpMode

Team Code Module

Sau khi nhập thành công thư mục dự án Android Studio, ta sẽ thấy trong trình duyệt dự án một mô-đun Android có tên TeamCode. Thư mục dự án này sẽ được sử dụng để tạo một phiên bản của ứng dụng Robot Controller, bao gồm các OpMode tùy chỉnh mà ta sẽ viết để điều khiển robot thi đấu.

Khi tạo các lớp và OpMode, ta cần tạo nó trong gói org.firstinspires.ftc.teamcode nằm trong mô-đun TeamCode. Gói này được dành riêng cho ta sử dụng trong thư mục dự án Android Studio.

Thông tin tham khảo Javadoc

Tài liệu tham khảo Javadoc cho SDK có sẵn trực tuyến. Truy cập URL sau để xem tài liệu SDK: https://javadoc.io/doc/org.firstinspires.ftc

Bật Auto Import

Tính năng tự động nhập của Android Studio là một công cụ tiện lợi giúp tiết kiệm thời gian khi viết OpMode. Để kích hoạt tính năng, hãy vào màn hình cài đặt Android Studio và chọn Editor -> General -> Auto Import. Nó hiển thị các cài đặt tự động nhập của trình chỉnh sửa.

Hãy nhấn vào tùy chọn “Add unambiguous imports on the fly” để Android Studio tự động thêm các câu lệnh nhập cần thiết cho các lớp ta muốn sử dụng trong OpMode.

Các OpMode mẫu

Một cách tuyệt vời để học lập trình robot là xem xét các OpMode mẫu được cung cấp trong thư mục dự án Android Studio. Ta có thể tìm thấy các tệp này trong mô-đun FtcRobotController, tại gói org.firstinspires.ftc.robotcontroller.external.samples.

Nếu muốn sử dụng một OpMode mẫu, hãy sao chép nó từ gói org.firstinspires.ftc.robotcontroller.external.samples và chuyển sang gói org.firstinspires.ftc.teamcode.

Trong OpMode vừa sao chép, tìm dòng chú thích sau:
@Disabled

Hãy bình luận hóa dòng này (thêm // phía trước) để kích hoạt OpMode, cho phép nó chạy trên Robot Controller:
//@Disabled

Tạo OpMode đầu tiên

Nhấp chuột phải vào gói org.firstinspires.ftc.teamcode và chọn New -> Java Class từ menu hiện ra. Hộp thoại Create New Class sẽ xuất hiện. Đặt tên cho lớp mới là MyFIRSTJavaOpMode và chọn lớp cha là LinearOpMode trong gói com.qualcomm.robotcore.eventloop.opmode.

Nhấn nút OK để tạo lớp mới. Mã nguồn của lớp mới sẽ xuất hiện trong khung chỉnh sửa của giao diện Android Studio.

Hãy chỉnh sửa phần chính của OpMode để nó trông giống như đoạn mã sau (lưu ý: định nghĩa gói và một số câu lệnh nhập đã được lược bỏ trong mã nguồn dưới đây):

Chúng ta sẽ sử dụng mã nguồn này làm khung cho OpMode đầu tiên của bạn. Lưu ý rằng Android Studio sẽ tự động lưu mã nguồn khi bạn chỉnh sửa.

Xem xét cấu trúc của OpMode

Hãy hình dung một OpMode như một danh sách các nhiệm vụ mà Robot Controller sẽ thực hiện. Với một OpMode tuyến tính (linear OpMode), Robot Controller sẽ xử lý danh sách nhiệm vụ này theo thứ tự. Người dùng cũng có thể sử dụng các vòng lặp điều khiển (như vòng lặp while) để Robot Controller lặp lại một số nhiệm vụ nhất định trong OpMode tuyến tính.

Nếu nghĩ về OpMode như một tập hợp hướng dẫn cho robot, danh sách hướng dẫn bạn tạo ra sẽ được robot thực thi bất cứ khi nào thành viên đội chọn OpMode có tên MyFIRSTJavaOpMode từ danh sách các OpMode có sẵn trên Robot Controller.

Hãy xem xét cấu trúc của OpMode mới tạo. Dưới đây là bản sao của nội dung OpMode (loại bỏ một số chú thích, định nghĩa gói và một số câu lệnh nhập gói):

Ở đầu OpMode, có một chú thích (annotation) xuất hiện trước định nghĩa lớp. Chú thích này chỉ ra rằng đây là một OpMode điều khiển từ xa (tức là do người lái điều khiển): @TeleOp

Nếu bạn muốn chuyển OpMode này thành một OpMode tự động, bạn chỉ cần thay @TeleOp bằng chú thích @Autonomous.

Từ mã mẫu, bạn có thể thấy rằng một OpMode được định nghĩa là một lớp Java. Trong ví dụ này, OpMode có tên là MyFIRSTJavaOpMode và nó kế thừa các đặc tính từ lớp LinearOpMode.

Bạn cũng có thể thấy rằng trình chỉnh sửa OnBot Java đã tạo ra năm biến private cho OpMode này. Các biến này sẽ chứa tham chiếu đến năm thiết bị đã được cấu hình mà trình chỉnh sửa OnBot Java phát hiện trong tệp cấu hình của Robot Controller.

Tiếp theo, có một phương thức được ghi đè tên là runOpMode. Mọi OpMode thuộc loại LinearOpMode đều phải triển khai phương thức này. Phương thức này sẽ được gọi khi người dùng chọn và chạy OpMode.

Ở đầu phương thức runOpMode, OpMode sử dụng một đối tượng có tên hardwareMap để lấy tham chiếu đến các thiết bị phần cứng được liệt kê trong tệp cấu hình của Robot Controller.

Đối tượng hardwareMap có sẵn để sử dụng trong phương thức runOpMode. Đây là một đối tượng thuộc lớp HardwareMap.

Lưu ý rằng khi bạn cố gắng lấy tham chiếu đến một thiết bị cụ thể trong OpMode, tên bạn chỉ định trong đối số thứ hai của phương thức HardwareMap.get phải khớp chính xác với tên được sử dụng để định nghĩa thiết bị trong tệp cấu hình. Ví dụ, nếu bạn đã tạo một tệp cấu hình với một động cơ DC tên là motorTest, thì bạn phải sử dụng đúng tên này (phân biệt chữ hoa chữ thường) để lấy động cơ từ đối tượng hardwareMap. Nếu tên không khớp, OpMode sẽ ném ra một ngoại lệ, báo rằng không thể tìm thấy thiết bị.

Trong vài câu lệnh tiếp theo của ví dụ, OpMode yêu cầu người dùng nhấn nút bắt đầu để tiếp tục. Nó sử dụng một đối tượng khác có sẵn trong phương thức runOpMode, gọi là telemetry. OpMode sử dụng phương thức addData để thêm một thông điệp gửi đến Driver Station. Sau đó, OpMode gọi phương thức update để gửi thông điệp đến Driver Station. Tiếp theo, nó gọi phương thức waitForStart để đợi cho đến khi người dùng nhấn nút bắt đầu trên Driver Station để bắt đầu chạy OpMode.

Lưu ý rằng tất cả các OpMode tuyến tính nên có câu lệnh waitForStart để đảm bảo rằng robot sẽ không bắt đầu thực thi OpMode cho đến khi người lái nhấn nút bắt  đầu.

Sau khi nhận được lệnh bắt đầu, OpMode sẽ đi vào một vòng lặp while và tiếp tục lặp lại trong vòng lặp này cho đến khi OpMode không còn hoạt động (tức là cho đến khi người dùng nhấn nút dừng trên Driver Station):

Khi OpMode lặp lại trong vòng lặp while, nó sẽ tiếp tục gửi các thông điệp telemetry với chỉ mục “Status” và thông điệp “Running” để hiển thị trên Driver Station.

Xây dựng và cài đặt OpMode

Xác minh rằng điện thoại Robot Controller đã được kết nối với máy tính xách tay của bạn và máy tính có quyền gỡ lỗi USB cho điện thoại.

Hoặc, nếu bạn đang sử dụng Control Hub, hãy đảm bảo rằng Control Hub được cấp nguồn bằng pin 12V mới sạc đầy và được kết nối với máy tính xách tay qua cổng USB Type C. Lưu ý rằng Control Hub sẽ tự động được bật quyền gỡ lỗi USB.

Khi sử dụng Control Hub, hãy đảm bảo bạn sử dụng cổng Type C (không phải cổng USB Mini) để kết nối Control Hub với máy tính xách tay dùng để phát triển.

Nhìn lên phía trên giao diện Android Studio, bạn sẽ thấy nút Play hoặc Run màu xanh (biểu tượng hình tam giác màu xanh) bên cạnh dòng chữ Team Code. Nhấn nút xanh này để xây dựng ứng dụng Robot Controller và cài đặt nó lên điện thoại.

Android Studio sẽ yêu cầu bạn chọn thiết bị mục tiêu để cài đặt ứng dụng Robot Controller. Màn hình của bạn có thể trông giống như hình ảnh dưới đây.

Hãy đảm bảo bạn chọn đúng thiết bị mục tiêu. Trong hình trên, điện thoại Motorola được chọn làm thiết bị mục tiêu. Nhấn OK để xây dựng tệp APK và cài đặt nó lên thiết bị mục tiêu.

Lưu ý rằng nếu trước đây bạn đã cài đặt một phiên bản của ứng dụng Robot Controller từ Google Play Store, việc cài đặt ứng dụng mới xây dựng sẽ thất bại trong lần thử đầu tiên. Điều này là do Android Studio phát hiện rằng ứng dụng bạn vừa xây dựng có chữ ký số khác so với phiên bản chính thức của ứng dụng Robot Controller được cài đặt từ Google Play.

Nếu điều này xảy ra, Android Studio sẽ hỏi bạn liệu có đồng ý gỡ cài đặt phiên bản trước (chính thức) của ứng dụng trên thiết bị và thay thế bằng phiên bản mới hay không. Chọn OK để gỡ cài đặt phiên bản trước và thay thế bằng ứng dụng Robot Controller mới mà bạn vừa tạo (xem hình ảnh trên).

Nếu cài đặt thành công, ứng dụng Robot Controller sẽ khởi động trên thiết bị Android mục tiêu. Nếu bạn đang sử dụng điện thoại Android làm Robot Controller, bạn sẽ thấy màn hình chính của ứng dụng Robot Controller hiển thị trên điện thoại.

Mặc dù Control Hub không có màn hình tích hợp, nếu bạn sử dụng Control Hub, bạn có thể xác minh rằng ứng dụng đã được cài đặt đúng bằng cách kiểm tra Driver Station. Nếu Driver Station cho biết nó đã kết nối thành công với Control Hub (sau khi tạm thời mất kết nối trong lúc cập nhật), thì ứng dụng đã được cập nhật thành công.

ADUDU

A proud team of passionate Robotics Enthusiasts competing in nation-wide Technology competitions in Vietnam, the FIRST Tech Challenge and the FIRST Robotics Competition.

Copyright ©

, all rights reserved

Made by aDudu's Programming Department

made by aDudu

Tạo OpMode trong Android Studio

Edit Content