Đả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 V5
- Cấu hình Mã màu với Cảm biến AI Vision trong VEXcode V5
Cảm biến thị giác AI 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:
Lấy dữ liệu hình ảnh 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à ai_vision_1
.
chụp ảnh
Phương pháp take_snapshot
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ụ:
ai_vision_1__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 bộ 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ị giác 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 bộ dữ liệu.
Trong ví dụ này, biến vision_objects
lưu trữ một bộ chứa các Chữ ký màu "Tím" được phát hiện từ Cảm biến thị giác AI có tên là ai_vision_1
. Nó hiển thị số lượng đối tượng được phát hiện và chụp một ảnh chụp nhanh mới cứ sau 0,5 giây.
while True:
# Lấy ảnh chụp nhanh của tất cả các Chữ ký màu tím và lưu trữ trong vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Kiểm tra để đảm bảo rằng một đối tượng đã được phát hiện trong ảnh chụp nhanh trước khi kéo dữ liệu.
if vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Số lượng đối tượng:", len(vision_objects))
wait(0,5, GIÂY)
Thuộc tính đối tượng
Mỗi đối tượng trong ả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 đó. 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
- điểm
- tồn tại
Để truy cập thuộc tính của đối tượng, hãy sử dụng tên biến lưu trữ bộ, theo sau là chỉ mục đối tượng.
Chỉ mục đối tượng cho biết thuộc tính cụ thể của đối tượng 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 số chỉ mục là 0, các đối tượng nhỏ hơn sẽ nhận được số chỉ mục cao hơn.
Ví dụ, gọi chiều rộng của đối tượng lớn nhất bên trong biến vision_objects
sẽ là: vision_objects[0].width
.
nhận dạng
Thuộc tính id
chỉ khả dụng cho AprilTags và AI Classifications.
Đối vớiAprilTag, thuộc tính id
biểu thị số IDAprilTag(s) được phát hiện.
Việc xác định AprilTag cụ thể 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 đến 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 báo để đ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.
Việc xác định Phân loại AIcụ thể cho phép rô-bốt chỉ tập trung vào các đối tượng cụ thể, chẳng hạn như chỉ muốn điều hướng 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 kích hoạt tính năng phát hiện của 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 vật thể gần Cảm biến thị giác AI hơn sẽ có tọa độ CenterY thấp hơn vật thể ở xa hơn.
Trong ví dụ này, vì tâm 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 Chữ ký màu xanh lam và lưu trữ trong vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Kiểm tra để đảm bảo rằng có phát hiện thấy vật thể trong ảnh chụp nhanh trước khi kéo dữ liệu.
if vision_objects[0].exists == True
# Kiểm tra xem vật thể có nằm ở giữa chế độ xem của Cảm biến thị giác AI không.
if vision_objects[0].centerX > 150 và 170 > vision_objects[0].centerX:
# Tiếp tục rẽ phải cho đến khi vật thể ở giữa chế độ xem.
drivetrain.turn(RIGHT)
else:
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 vật thể đượ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ếp cận vật thể cho đến khi chiều rộng đạ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 Chữ ký màu xanh lam và lưu trữ trong vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__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.
if vision_objects[0].exists == True
# Kiểm tra xem đối tượng lớn nhất có gần Cảm biến thị giác AI hay không bằng cách đo chiều rộng của nó.
if vision_objects[0].width < 250:
# Lái xe lại gần đối tượng cho đến khi nó rộng hơn 250 pixel.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(5, MSEC)
góc
Thuộc tính góc chỉ khả dụng choMã màu vàAprilTag
Điều này thể hiện nếu Mã màuhoặc AprilTag được phát hiện có định hướng khác nhau.
Bạn có thể xem robot có định hướng khác nhau theo Mã màu hayAprilTag 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, AI có thể xác định chính xác 99% Phân loại 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 quan được chỉ định có được phát hiện trong ảnh chụp nhanh cuối cùng hay.
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.