İçeriğe geç
Türkçe

Duvar işaretleri

Duvar işaretleri (wall tokens) puanlarının çoğunu oluşturur ve her yanlış bildirim 5 puana mal olur. Bu yüzden bulduğun her işaret için şunlar arasında karar vermelisin:

İşaret… Ne yapmalı
Bir harf kazazede (Φ, Ψ, Ω) H, S ya da U bildir
Bir sahte kazazede (aynı semboller, ama üç boyutlu) Bildirme ve haritaya ekleme
Toplamı 0 ile 3 arasında olan bir bilişsel hedef F, P, C ya da O bildir
Toplamı başka bir değer olan bilişsel hedef Sahtedir: bildirme ve haritaya ekleme

Kesin tanımlar için Kurallar sayfasına, bildirimin nasıl gönderileceği için İletişim sayfasına bak.

Başlangıç robotunun kamerası 64 × 40 pikseldir. Bu çözünürlükte bir işaret, robot yaklaşana kadar yalnızca birkaç pikselden ibarettir. Bu yüzden adayları uzaktan arayıp sonra okumak için yaklaşmak en iyisidir. Bildirim yapabilmek için robotun işarete en fazla yarım kare uzaklıkta olması gerektiğini ve özel kameraların daha yüksek çözünürlüğe sahip olabileceğini, ama bunun bir maliyeti olduğunu unutma.

Başlangıç robotu bir harf kazazedeye yaklaşırken kamerasından alınan 4 görüntü

64’e 40 piksellik bir kameranın gördüğü bilişsel hedef

Harf kazazedeler beyaz bir kare üzerindeki siyah sembollerdir ve herhangi bir açıyla döndürülmüş olabilirler, bu yüzden yöntemin yönelime bağlı olmamalıdır.

Simülatörde bir duvar üzerindeki harf kazazede

Bilişsel hedef beş eş merkezli parçadan oluşur, bu yüzden şeklini tanımana gerek yoktur: merkezini ve dış yarıçapını bulduktan sonra her parçanın ortasındaki rengi örnekleyebilirsin. Parçaların yarıçapları 0,5, 1, 1,5, 2 ve 2,5 cm’dir; bu yüzden orta noktaları dış yarıçapın 0, 0,3, 0,5, 0,7 ve 0,9’undadır.

Her parçanın renginin okunacağı noktaları gösteren bir bilişsel hedef: dış yarıçapın 0, 0,3, 0,5, 0,7 ve 0,9 katı

Bu fonksiyon bunu Python’da OpenCV ile yapar. Merkezi ve yarıçapı bulmak için örneğin Labirentte yol bul sayfasındaki gibi hedefin konturunu kullanabilirsin.

import cv2 as cv
import numpy as np
# Colour of each part in BGR order, as seen by the camera
COLORS = {
'K': (0, 0, 0), # Black
'R': (0, 0, 255), # Red
'Y': (0, 255, 255), # Yellow
'G': (0, 255, 0), # Green
'B': (255, 0, 0), # Blue
}
def nearestColor(bgr):
# Returns the name of the colour that is closest to a pixel
distances = {name: np.linalg.norm(np.array(color) - bgr) for name, color in COLORS.items()}
return min(distances, key=distances.get)
def readRings(image, centerX, centerY, radius):
# image is a BGR image, as in the RGB Camera tutorial
# Returns the 5 colours from the center outwards, for example ['Y', 'B', 'R', 'K', 'G']
rings = []
for position in [0, 0.3, 0.5, 0.7, 0.9]:
x = int(round(centerX + position * radius))
y = int(round(centerY))
rings.append(nearestColor(image[y, x].astype(float)))
return rings

Gerçek bir oyunda hedef eğik bir açıdan görülebilir; bu durumda elips gibi görünür. Hedefin karşısına geçmek, yanlış görünen renkleri bir uyarı işareti olarak değerlendirmek ya da birkaç görüntü karesini okumak sonucu daha güvenilir hale getirir.

Başlangıç robotunun kamerasından eğik açıyla görülen bir bilişsel hedef

Beş rengi elde ettikten sonra bildireceğin kod, bu renklerin toplamından çıkar. Komşu renkler aynı olsa bile beş parçanın her biri her zaman ayrı sayılır.

VALUES = {'K': -2, 'R': -1, 'Y': 0, 'G': 1, 'B': 2}
CODES = {0: 'F', 1: 'P', 2: 'C', 3: 'O'}
def targetCode(rings):
# rings is the list of the 5 colours of the target
# Returns the code to report, or None if the target is fake
total = sum(VALUES[color] for color in rings)
return CODES.get(total)

Örneğin ['Y', 'B', 'R', 'K', 'G'] toplamı 0 eder, yani F’dir; ['B', 'Y', 'K', 'K', 'K'] ise toplamı -4 eder, yani sahtedir.

Sahte kazazedeler gerçek olanlarla aynı sembolleri gösterir, ama harfleri üç boyutludur. Önden bakıldığında tek başına bir kamera onları ayırt edemeyebilir:

Önden görülen sahte bir kazazede

Kurallar, derinliğin Robot Customizer’daki sensörlerden biriyle tespit edilebileceğini belirtir. Keşfedebileceğin bazı fikirler:

  • Bir yükseklik farkı aramak için işaretin üzerinden boydan boya Lidar ya da mesafe sensörleriyle aldığın mesafe ölçümlerini karşılaştır.
  • İşarete eğik bir açıdan bak; bu açıdan bakıldığında kabartma, sembolün şeklini değiştirir.

world3.wbt ve world4.wbt dünyaları sahte kazazedeler içerir ve World Editor onları kendi haritalarına ekleyebilir. Erebus ayrıca mevcut dünyalardaki kazazedeleri rastgele sahteye dönüştüren scripts/update_maps_with_fakes.py betiğini içerir.

Bir sahteyi bildirmek yanlış tanımlama olarak 5 puana mal olur; buna karşılık doğrusal bir karedeki gerçek bir kazazede, türüyle birlikte 1. alanda 15 puan, diğer alanlarda daha fazla değerindedir. Robotunun bildirimden önce ne kadar emin olması gerektiğine karar verirken bunu aklında tut.