Este benchmark visa desenvolver um programa que controla um robô Pioneer para seguir uma parede.

Objetivo

O robô tem exatamente 1 minuto para ir o mais longe possível, enquanto tenta ficar a uma distância de 50 cm da parede.

O benchmark calculará primeiro um caminho "ideal". O primeiro segmento deste caminho é uma linha direta que vai da posição inicial do robô até o ponto mais próximo que fica a 50 cm da parede. O caminho continua paralelo à parede, a uma distância de exatamente 50 cm.

O desempenho do seu robô será calculado com base na distância média para esse caminho "ideal". Observe que o robô está sempre de frente para a parede em sua posição inicial, então a primeira parte será sempre avançar até que a parede esteja a 50cm de distância.

Além disso, se o robô tentar pegar um atalho, ele receberá uma penalidade por cada segmento ignorado. A qualquer momento, o segmento do caminho mais próximo do robô é considerado como o segmento atual, e qualquer segmento anterior ao segmento atual que não tenha sido visitado será considerado como ignorado.

Como melhorar o desempenho?

O controlador (em Python) é baseado no valor recebido pelos sensores do sonar do robô.

O controlador básico é extremamente simplista e usa apenas 2 dos sensores disponíveis no robô. Por causa disso, e por causa de como os sensores de sonar funcionam (veja abaixo), ele é muito ruim para lidar com curvas fechadas e basicamente só funcionará enquanto a parede estiver quase reta.

Uma primeira melhoria simples seria considerar a orientação do robô em relação à parede, por exemplo, se você está muito longe da parede, mas o robô já está indo em direção à parede, você não precisa girar mais. Para fazer isso, você pode usar o fato de o robô ter 2 sensores de cada lado e usar a diferença entre os dois para estimar a orientação.

Em uma segunda vez, você precisa considerar os valores dos sensores frontais, caso contrário, o robô não conseguirá detectar um ângulo mais nítido na parede e provavelmente colidirá com ela.

Também pode ser útil detectar quando o robô atingiu a parede e fazer o robô retroceder quando isso acontecer.

Os sensores do Pioneer 3-DX têm a seguinte configuração:

Existe um ângulo de 20° entre os sensores adjacentes, exceto os sensores laterais (so0, so7, so8 e so15), que possuem um ângulo de 40°. O alcance máximo dos sensores é de 5m.

Como os sensores do Pioneer 3-DX são sonares, eles só podem detectar um obstáculo dentro de seu ângulo de incidência, que neste caso é de 22,5°. Em outras palavras, os raios de sonar que ficam fora do cone de reflexão de abertura de 45° não são captados pelo sonar, o que torna o obstáculo "invisível" para este sensor em particular.