Plotando Pose

Criei uma classe em java (PrintMap) que desenha as poses em um mapa. Ela só tem dois métodos: clear() e addPose(Pose p). Veja um exemplo:


Configurando Bluetooth

Se você não quer depender do cabo mais, siga esse pequeno tutorial. Pra instalar o bluetooth, execute os seguintes códigos no terminal.

sudo apt-get install bluetooth bluez-utils blueman
sudo apt-get install libbluetooth-dev

Esses programas irão permitir acesso ao dispositivo Bluetooth. Para procurar um dispositivo use o comando hcitool scan. Anote o código MAC do seu dispositivo.

Pode ser tenham muitos dispositivos com o mesmo nome (NXT). Se o seu tiver esse nome (veja na pimeira linha da tela no menu principal), conecte o cabo USB e digite no terminal nxjcontrol. Nesse programa você poderá mudar várias configurações, incluindo nome e som.

Após saber o endereço do seu dispositivo conecte ele com bluetooth-agent "senha" "endereço MAC". Se a senha for a original, será 1234.

Nesse link vocês tem um pequeno tutorial de como interagir com seu robô via terminal.


Projeto 4 - Caminhar a 20cm

Em muitos códigos as pessoas usaram Delay.msDelay(). Quando usamos isso, pode ser que sejam obtidos resultados diferentes. Um exemplo:

pilot.forward();
Delay.msDelay();

Quanto o robô andou? Mesmo que a velocidade seja estabelecida não é possível sabe e o comportamento pode variar de execução para execução.

Também não use Delay.msDelay() entre movimentos. Se seu robô está indo para frente, ele não precisa ficar um tempo parado antes de virar.

Um bom uso do Delay.msDelay() se dá em:

Button.waitForAnyPress();
Delay.msDelay(1000);

Nesse exemplo esperamos 1 segundo para o robô não começar a andar enquanto o dedo do usuário esteja perto dele.

Sobre a Avaliação


Projeto 2 - Quadrado

Apesar de ser um programa bem simples existiram pessoas que se confundiram um pouco. A primeira questão a se chamar a atenção foi a ocorrência em mais de um grupo de:

Motor.A.stop(true);
Motor.B.stop(true);
Delay.msDelay(500);

Essa maneira de resolver o problema não é eficiente, pois pode ser que o motor demore mais do que 500 ms para parar - isso dificilmente irá ocorrer, mas pode. Para resolver isso use um Motor.A.stop(true) e Motor.B.stop(false).

Existem algumas pessoas que estavam com preguiça de escrever um for. Para essas pessoas marquei o código com um menos. Também marquei com um menos aqueles que tiveram erros de formatação, como excesso de linhas.


Projeto 1 - Robô Chutador

Alguns códigos passados em sala apresentam import lejos.nxt.*, no entanto isso não é uma boa prática. De preferência por descrever o que foi usado e não importar tudo.

Uma boa prática nesse projeto é dividir as ações do robô em métodos (funções). Dessa maneira o código ficaria mais claro e eles poderiam ser reutilizados. Um exemplo disso seria criar um turn180() para virar o robô, isso poderia ser utilizado no próximo desafio.

Quando realizamos uma modificação no robô e depois realizamos outras ações é interessante que ele fique no “estado inicial”. Ou seja, quando ele chutar a bola, deixe o chutador voltar para o estado inicial.

Por ultimo gostaria de pedir encarecidamente que colocassem o seu nome e número USP no cabeçalho do código, assim como o do colega.