Đảm bảo bạn đã cấu hình Chữ ký màu và Mã 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ấu hình chữ ký màu với chữ ký AI Vision trong VEXcode EXP
- Cấu hình Mã màu với AI Vision Signature trong VEXcode EXP
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:
- Phân loại AI với Cảm biến thị giác AI trong VEXcode EXP
- AprilTags với Cảm biến thị giác AI trong VEXcode EXP
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.
- 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ụ:
-
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 và AI Classifications.
Đố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.
Đố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ề AprilTags và AI Classifications và cách bật tính năng phát hiện chúng trong AI Vision Utility.
tâm X và tâm Y
Đây là tọa độ trung tâm của đối tượng được phát hiện tính bằng pixel.
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.
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);
}
originX và originY
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.
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ộng và chiề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á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.
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
Thuộc tính góc chỉ khả dụng choMã màu vàAprilTags.
Đ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.
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 đó.
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.
Đ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.
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);
}