Mã hóa bằng cảm biến thị giác AI trong VEXcode EXP C++

Đảm bảo bạn đã cấu hình Chữ ký màuMã màu với Cảm biến thị giác AI để có thể sử dụng chúng với các khối của bạn. Để tìm hiểu thêm về cách cấu hình chúng, bạn có thể đọc các bài viết dưới đây:

Cảm biến AI Vision cũng có thể phát hiện Phân loại AI và AprilTags. Để tìm hiểu cách bật các chế độ phát hiện này, hãy vào đây:

Để tìm hiểu thêm chi tiết về từng lệnh này và cách sử dụng chúng trong VEXcode, hãy truy cập trang web API.


Thu thập dữ liệu trực quan bằng cảm biến thị giác AI

Mỗi lệnh AI Vision Sensor sẽ bắt đầu bằng tên của AI Vision Sensor được cấu hình. Đối với tất cả các ví dụ trong bài viết này, tên của Cảm biến thị giác AI được sử dụng sẽ là AIVision.

chụp ảnh nhanh

Phương pháp takeSnapshot chụp ảnh những gì Cảm biến thị giác AI đang nhìn thấy và lấy dữ liệu từ ảnh chụp nhanh đó để sử dụng trong một dự án. Khi chụp ảnh nhanh, bạn cần chỉ định loại đối tượng mà Cảm biến thị giác AI sẽ thu thập dữ liệu:

  • AChữ ký màu hoặcMã màu
    • Các Chữ ký trực quan này bắt đầu bằng tên của Cảm biến thị giác AI, dấu gạch dưới kép, sau đó là tên của Chữ ký trực quan, ví dụ: AIVision1__Blue.
  • Phân loại AI - aivision::ALL_AIOBJS
  • Tháng 4Thẻ- aivision::ALL_TAGS

Chụp ảnh nhanh sẽ tạo ra một mảng gồm tất cả các đối tượng được phát hiện mà bạn đã chỉ định. Ví dụ, nếu bạn muốn phát hiện Chữ ký màu "Xanh lam" và Cảm biến thịAI phát hiện 3 vật thể màu xanh lam khác nhau, dữ liệu từ cả ba vật thể sẽ được đưa vào mảng.

Trong ví dụ này, ảnh chụp nhanh được thực hiện từ Chữ ký màu "Xanh lam" từ Cảm biến thị giác AI có tên AIVision1. Nó hiển thị số lượng đối tượng được phát hiện trong mảng và chụp ảnh nhanh mới sau mỗi 0,5 giây.

while (true) {
// Lấy ảnh chụp nhanh của tất cả các đối tượng Màu xanh lam.
AIVision.takeSnapshot(AIVision1__Blue);

// Kiểm tra để đảm bảo rằng có một đối tượng được phát hiện trong ảnh chụp nhanh trước khi kéo dữ liệu.
nếu (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}

các vật thể

Mỗi đối tượng từ ảnh chụp nhanh đều có các thuộc tính khác nhau có thể được sử dụng để báo cáo thông tin về đối tượng đó. Phương thức đối tượng cho phép bạn truy cập các thuộc tính này.

Các thuộc tính có sẵn như sau:

  • nhận dạng
  • centerX và centerY
  • originX và originY
  • chiều rộng
  • chiều cao
  • góc
  • tồn tại
  • điểm

Để truy cập vào thuộc tính của đối tượng, hãy sử dụng tên của AI Vision Sensor, theo sau là phương thức đối tượng và chỉ mục của đối tượng.

Chỉ mục đối tượng cho biết thuộc tính cụ thể của đối tượng nào mà bạn muốn lấy. Sau khi chụp ảnh nhanh, Cảm biến thị giác AI sẽ tự động sắp xếp các đối tượng theo kích thước. Đối tượng lớn nhất được gán chỉ số 0, đối tượng nhỏ hơn sẽ nhận được số chỉ số cao hơn.

Ví dụ, gọi chiều rộng của đối tượng lớn nhất sẽ là AIVision1.objects[0].width.

nhận dạng

Thuộc tính id chỉ khả dụng cho AprilTags AI Classifications.

Ba AprilTag đang được AI Vision Utility theo dõi. Mỗi thẻ được xác định, định vị và phác thảo, cho biết hệ thống đang theo dõi thẻ đó. ID AprilTag trong ví dụ này là 0, 3 và 9.

Đối với AprilTaglà, thuộc tính id biểu thị số IDAprilTag(s) được phát hiện.

Xác định cụ thể AprilTags cho phép điều hướng có chọn lọc. Bạn có thể lập trình cho robot của mình di chuyển theo các thẻ nhất định trong khi bỏ qua các thẻ khác, sử dụng chúng như các biển chỉ dẫn để điều hướng tự động.

Tiện ích AI Vision đang theo dõi bốn vật thể, hai BuckyBall và hai Ring. Mỗi đối tượng được xác định, định vị và phác thảo, cho biết hệ thống đang theo dõi đối tượng đó. Tiện ích này ghi lại ID của đối tượng, trong ví dụ này có một Quả bóng đỏ, một Quả bóng xanh, một Vòng xanh lá cây và một Vòng đỏ.

Đối vớiPhân loại AI, thuộc tính id biểu thị loại Phân loại AI cụ thể được phát hiện.

Xác định các Phân loại AI cụ thể cho phép robot chỉ tập trung vào các đối tượng cụ thể, chẳng hạn như chỉ muốn di chuyển về phía Buckyball màu đỏ, không phải màu xanh.

Truy cập các bài viết này để biết thêm thông tin về AprilTagsAI Classifications và cách bật tính năng phát hiện chúng trong AI Vision Utility.

tâm Xtâm Y

Đây là tọa độ trung tâm của đối tượng được phát hiện tính bằng pixel.

Cảm biến thị giác AI được hiển thị đang theo dõi một quả Buckyball màu xanh. Buckyball có một hình chữ nhật theo dõi xung quanh nó và nhãn ở trên cho thấy nó có vị trí X là 176 và vị trí Y là 117. Tâm của hình chữ nhật theo dõi được tô sáng để chứng minh rằng vị trí được đo từ tâm.

Tọa độ CenterX và CenterY giúp điều hướng và định vị. Cảm biến AI Vision có độ phân giải 320 x 240 pixel.

Cảm biến thị giác AI được hiển thị đang theo dõi hai khối lập phương màu xanh. Các khối lập phương có hình chữ nhật theo dõi xung quanh và một khối ở gần camera hơn nhiều. Vị trí Y càng gần thì càng lớn, vị trí Y càng lớn thì càng nhỏ ...

Bạn có thể thấy rằng một vật thể gần Cảm biến thị giác AI hơn sẽ có tọa độ CenterY thấp hơn so với một vật thể ở xa hơn.

Trong ví dụ này, vì tâm của góc nhìn của Cảm biến thị giác AI là (160, 120) nên robot sẽ rẽ phải cho đến khi tọa độ tâmX của vật thể được phát hiện lớn hơn 150 pixel nhưng nhỏ hơn 170 pixel.

while (true) {
  // Lấy ảnh chụp nhanh của tất cả các đối tượng Màu xanh lam.
  AIVision.takeSnapshot(AIVision__Blue);

  // Kiểm tra để đảm bảo rằng có một đối tượng được phát hiện trong ảnh chụp nhanh trước khi kéo dữ liệu.
  nếu (AIVision.objectCount > 0) {

    nếu (AIVision.objects[0].centerX > 150,0 && 170,0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(phải);
    } nếu không {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

originXoriginY

OriginX và OriginY là tọa độ ở góc trên bên trái của đối tượng được phát hiện tính bằng pixel.

Cảm biến thị giác AI được hiển thị đang theo dõi một quả Buckyball màu xanh. Buckyball có một hình chữ nhật theo dõi xung quanh nó và nhãn ở trên cho thấy nó có vị trí X là 176 và vị trí Y là 117. Góc trên bên trái của hình chữ nhật theo dõi được tô sáng để chứng minh rằng vị trí gốc được đo từ góc trên bên trái của hình chữ nhật đó.

Tọa độ OriginX và OriginY giúp điều hướng và định vị. Bằng cách kết hợp tọa độ này với Chiều rộng và Chiều cao của đối tượng, bạn có thể xác định kích thước hộp giới hạn của đối tượng. Điều này có thể giúp theo dõi các vật thể chuyển động hoặc điều hướng giữa các vật thể.

chiều rộngchiều cao

Đây là chiều rộng hoặc chiều cao của đối tượng được phát hiện tính bằng pixel.

Cảm biến thị giác AI được hiển thị đang theo dõi một quả Buckyball màu xanh. Buckyball có một hình chữ nhật theo dõi xung quanh và nhãn ở trên cho thấy nó có chiều rộng là 80 pixel và chiều cao là 78 pixel. Mũi tên màu đỏ làm nổi bật hình chữ nhật theo dõi để minh họa chiều rộng và chiều cao của nó.

Các phép đo chiều rộng và chiều cao giúp xác định các vật thể khác nhau. Ví dụ, Buckyball sẽ có chiều cao lớn hơn Ring.

Cảm biến thị giác AI được hiển thị đang theo dõi hai khối lập phương màu xanh. Các khối lập phương có hình chữ nhật theo dõi xung quanh và một khối ở gần camera hơn nhiều. Cái gần hơn có chiều rộng là 144 và chiều cao là 113, còn cái xa hơn có chiều rộng là 73 và chiều cao là 84.

Chiều rộng và chiều cao cũng cho biết khoảng cách của vật thể đến Cảm biến thị giác AI. Các phép đo nhỏ hơn thường có nghĩa là vật thể ở xa hơn, trong khi các phép đo lớn hơn cho thấy vật thể ở gần hơn.

Trong ví dụ này, chiều rộng của đối tượng được sử dụng để điều hướng. Robot sẽ tiến lại gần vật thể cho đến khi đạt đến kích thước cụ thể trước khi dừng lại.

while (true) {
  // Lấy ảnh chụp nhanh của tất cả các đối tượng Blue.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Kiểm tra để đảm bảo rằng có một đối tượng được phát hiện trong ảnh chụp nhanh trước khi kéo dữ liệu.
  nếu (AIVision.objectCount > 0) {

    nếu (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(tiến lên);
    } nếu không {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

góc

Hình ảnh động về một hình vuông màu đỏ và một hình vuông màu xanh lá cây được xoay cùng nhau để thể hiện giá trị góc 360 độ.

Thuộc tính góc chỉ khả dụng choMã màuAprilTags.

Điều này biểu thị liệu Mã màu hoặc AprilTag được phát hiện có định hướng khác nhau hay không.

Cảm biến thị giác AI được hiển thị theo dõi Mã màu từ xanh lá cây đến xanh lam. Video cho thấy một khối lập phương màu xanh lá cây xếp chồng lên một khối lập phương màu xanh lam. Giá trị góc của Mã màu được tô sáng và hiển thị là 87 độ, cho biết Mã màu được định hướng theo chiều dọc.

Bạn có thể xem robot có định hướng khác nhau theo Mã màu hoặcAprilTag hay không và đưa ra quyết định điều hướng theo đó.

Cảm biến thị giác AI được hiển thị theo dõi Mã màu từ xanh lá cây đến xanh lam. Nguồn cấp dữ liệu video cho thấy một Khối lập phương xanh lá cây nằm cạnh một Khối lập phương xanh dương, nhưng chúng ở một góc độ khó so với cảm biến. Giá trị góc của Mã màu được tô sáng và hiển thị là 0 độ, cho biết góc của Mã màu không thể đọc được.

Ví dụ, nếu Mã màu không được phát hiện ở góc thích hợp thì vật thể mà nó đại diện có thể không được robot nhận diện đúng cách.

điểm

Thuộc tính điểm được sử dụng khi phát hiệnPhân loại AI bằng Cảm biến thị giác AI.

Tiện ích AI Vision đang theo dõi bốn vật thể, hai BuckyBall và hai Ring. Mỗi đối tượng được xác định, định vị và phác thảo, cho biết hệ thống đang theo dõi đối tượng đó. Tiện ích này cũng liệt kê điểm Phân loại AI của từng đối tượng, trong ví dụ này, mỗi điểm đều là 99%.

Điểm tin cậy cho biết mức độ chắc chắn của Cảm biến thị giác AI về khả năng phát hiện của nó. Trong hình ảnh này, có thể tự tin đến 99% trong việc xác định Phân loại AI của bốn đối tượng này. Bạn có thể sử dụng điểm số này để đảm bảo robot của bạn chỉ tập trung vào những phát hiện có độ tin cậy cao.

tồn tại

Thuộc tính tồn tại được sử dụng để phát hiện xem Chữ ký trực được chỉ định có được phát hiện trong ảnh chụp nhanh cuối cùng hay không.

Tính năng này cho phép bạn kiểm tra xem có bất kỳ đối tượng nào được phát hiện trong ảnh chụp nhanh trước đó hay không. Thuộc tính này sẽ trả về True khi đối tượng tồn tại và False khi đối tượng không tồn tại.


đối tượngCount

Phương thức objectCount trả về số lượng đối tượng được phát hiện trong ảnh chụp nhanh cuối cùng.

Cảm biến thị giác AI được hiển thị đang theo dõi hai khối lập phương màu xanh. Các khối lập phương có hình chữ nhật theo dõi xung quanh và một khối ở gần camera hơn nhiều.

Trong ví dụ này, hai vật thể đã được phát hiện với Chữ ký màu "Xanh lam". Cả hai đều sẽ được đưa vào mảng khi phương thức takeSnapshot được sử dụng.

Đoạn mã này liên tục cập nhật EXP Brain với số lượng đối tượng được phát hiện. Dựa trên ví dụ được cung cấp, nó sẽ liên tục gửi giá trị 2, cho biết đã phát hiện được hai đối tượng.

while (true) {
// Lấy ảnh chụp nhanh của tất cả các đối tượng Blue.
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Kiểm tra để đảm bảo rằng có một đối tượng được phát hiện trong ảnh chụp nhanh trước khi kéo dữ liệu.
nếu (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
chờ (5, msec);
}

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

Last Updated: