Bài viết này sẽ đề cập đến một dự án mẫu hiển thị trang tổng quan báo cáo trạng thái liên lạc giữa robot với robot bằng VEXlink và cả trạng thái với Jetson. Dự án ai_demo được lưu trữ trên Githubcủa chúng tôi. Dự án demo này thu thập dữ liệu từ bộ xử lý Jetson thông qua kết nối nối tiếp USB. Sau khi nhận được dữ liệu, nó sẽ được hiển thị trên màn hình của V5 Brain và cũng được truyền đến robot V5 đối tác được kết nối qua VEXlink.

Lưu ý: Dự án này yêu cầu phiên bản mới nhất của Tiện ích mở rộng mã VS cho V5. Tải xuống tiện ích mở rộng VS Code cho V5 tại đây.


Truyền thông não NVIDIA Jetson Nano đến VEX V5

Bộ xử lý Jetson chứa một ứng dụng thu thập dữ liệu sau từ phần mềm VEX AI:

Sơ đồ minh họa quá trình sử dụng VEX AI, giới thiệu các thành phần chính và quy trình làm việc để triển khai hiệu quả trong hệ thống robot V5.

Dữ liệu vị trí robot:

  • Vị trí X,Y của Robot tính bằng mét tính từ tâm sân.
  • Góc phương vị (Tiêu đề), Độ cao (Cao độ), Xoay (Cuộn) của Robot đều tính bằng radian.

Dữ liệu phát hiện đối tượng (ba loại):

Sơ đồ minh họa các thành phần của hệ thống VEX AI và tương tác của chúng, cho thấy cách VEX AI nâng cao chức năng robot trong danh mục V5.

Phát hiện hình ảnh (loại một):
  • Dữ liệu này đại diện cho một đối tượng được phát hiện bởi Camera VEX AI Intel.
  • Dữ liệu này mô tả đối tượng có tham chiếu đến hình ảnh camera.
  • Các giá trị cho X, Y, chiều rộng và chiều cao tính bằng đơn vị pixel. Các giá trị pixel được tham chiếu đến góc trên cùng bên trái của hộp phát hiện hình ảnh và đối tượng. Độ phân giải hình ảnh là 640x480.

 

Sơ đồ minh họa các tính năng và thành phần của VEX AI, nêu bật các ứng dụng và lợi ích của nó trong lĩnh vực robot, như một phần của Mô tả danh mục V5.

Phát hiện bản đồ (loại hai):

  • Dữ liệu này thể hiện vị trí của đối tượng trên thực địa trong cùng hệ tọa độ với Cảm biến GPS, được báo cáo bằng mét.
  • Mỗi đối tượng cũng chứa vị trí của đối tượng so với tâm của trường. Giá trị của X và Y tính bằng đơn vị mét tính từ tâm trường trên trục tương ứng của chúng. Giá trị của Z là mét tính từ ô hiện trường (chiều cao).

Đối tượng phát hiện (loại ba):

Sơ đồ minh họa các thành phần của hệ thống AI VEX và tương tác của chúng, làm nổi bật các tính năng và chức năng chính trong nền tảng robot V5.

  • Điều này gói gọn tất cả thông tin về các đối tượng được phát hiện.
  • Mỗi đối tượng chứa một giá trị đại diện cho việc phân loại đối tượng được phát hiện. (ID lớp: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Mỗi đối tượng cũng chứa một xác suất thể hiện độ tin cậy của VEX AI trong khả năng phát hiện. Đây là sau một bộ lọc trong model.py giúp loại bỏ các phát hiện có xác suất thấp.
  • Ngoài ra, độ sâu của vật thể được báo cáo tính bằng mét từ Camera VEX AI Intel.
  • Phát hiện hình ảnh và Phát hiện bản đồ được gắn vào từng đối tượng để thể hiện tọa độ của đối tượng trên ảnh cũng như trong thế giới thực.

Phân tích chương trình ai_demo:

Main.cpp

Sơ đồ minh họa các tính năng và chức năng của VEX AI trong Danh mục V5, giới thiệu cách sử dụng hiệu quả công nghệ này cho các ứng dụng robot.

Tiêu chuẩn bao gồm cho các dự án VEX:

Sơ đồ minh họa các thành phần của hệ thống VEX AI và tương tác của chúng, như một phần của Mô tả danh mục V5 trong phần Sử dụng VEX AI.

Khai báo một thể hiện của lớp Jetson. Lớp này được sử dụng để gửi yêu cầu dữ liệu tới Jetson cũng như nhận dữ liệu qua kết nối nối tiếp USB.

#define MANAGER_ROBOT 1

Sơ đồ minh họa các tính năng và thành phần của VEX AI trong bối cảnh robot V5, làm nổi bật các chức năng chính và hướng dẫn sử dụng.

Khai báo một thể hiện của lớp robot_link. Đối tượng này sẽ được sử dụng để kết nối và truyền dữ liệu giữa robot này và robot đối tác. Dự án tương tự này có thể được tải xuống hai robot riêng biệt. Một robot sẽ cần có dòng:

//#xác định MANAGER_ROBOT 1

Trước khi tải mã lên robot thứ hai, bạn cần phải nhận xét dòng đó:

Lớp robot_link thiết lập VEXlink của robot và xử lý việc truyền và nhận dữ liệu giữa hai robot. Chúng tôi sẽ không đi sâu vào chi tiết trong bài viết này về cách thức hoạt động của lớp đó. Sẽ là một ý tưởng hay nếu bạn hiểu cách hoạt động của VEXlink trước tiên. Để biết thông tin chi tiết hơn về cách sử dụng API V5 VEXlink, tài liệu này giải thích các thư viện mới và cách sử dụng chúng hiệu quả cho giao tiếp giữa robot với robot.

  • Người xử lý sự kiện cạnh tranh

    Sơ đồ minh họa các tính năng và thành phần của VEX AI trong hệ thống robot V5, làm nổi bật khả năng nâng cao hiệu suất và lập trình của robot.

    Một trong những khác biệt lớn nhất giữa VAIC và VRC là không có thời gian kiểm soát lái xe. Thay vào đó có hai thời kỳ tự trị, thời kỳ cô lập và thời kỳ tương tác. Trong ví dụ này, có các quy trình riêng biệt cho từng giai đoạn tự trị. Vì API VEX không hỗ trợ hai lệnh gọi lại khác nhau nên phải có cờ trong chương trình để xác định quy trình nào sẽ được thực thi. Trong chương trình ví dụ này, “firstAutoFlag” được sử dụng để gọi hàm Cách ly khi tính năng tự động được bật lần đầu tiên và chức năng tương tác khi tính năng tự động được bật lần thứ hai. Một điều cần lưu ý là nếu vì lý do nào đó trận đấu cần được đặt lại, chương trình demo sẽ cần được khởi động lại để có thể đặt lại FirstAutoFlag.

  • Chủ yếu()

    Sơ đồ minh họa các tính năng và chức năng của VEX AI trong Danh mục V5, làm nổi bật các thành phần chính và tương tác của chúng để nâng cao khả năng lập trình và tự động hóa robot.

    Đây là nhiệm vụ chính của dự án này. Nó bắt đầu bằng cách gọi vexcodeInit() để thiết lập chính xác môi trường VEXcode. Tiếp theo, một đối tượng AI_RECORD cục bộ được khai báo để lưu trữ dữ liệu chúng ta nhận được từ Jetson. Một tác vụ riêng cũng được thiết lập để xử lý việc cập nhật màn hình với dữ liệu mới nhất. Mã cho tác vụ đó được chứa trong tệp dash.cpp. Cuộc gọi lại tự trị cũng được đăng ký để xử lý khi bắt đầu giai đoạn tự trị.

    Vòng lặp while() chính bắt đầu bằng cách sao chép dữ liệu mới nhất từ ​​đối tượng jetson_comms vào đối tượng AI_RECORD cục bộ của chúng ta. Sau đó, nó chuyển thông tin vị trí của robot đến đối tượng liên kết để có thể truyền thông tin đó đến robot đối tác của chúng ta. Sau khi xử lý xong dữ liệu, nó sẽ yêu cầu thêm dữ liệu từ Jetson và ngủ trong 66 mili giây. Tỷ lệ bỏ phiếu cho dữ liệu này là 15Hz. Không có lý do gì để thăm dò nhanh hơn vì dữ liệu hệ thống AI cập nhật ở tần số khoảng 15Hz.

    Lưu ý: dữ liệu bản đồ Jetson chỉ cần được yêu cầu bởi một tác vụ duy nhất.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: