sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


componentes

Componentes

No simulador sBotics, o termo “componentes” refere-se a blocos com comportamentos especiais que podem ser controlados através da programação. Esses componentes permitem que os robôs interajam com o ambiente virtual e realizem tarefas complexas.

Tipos de Componentes

Os componentes são divididos em duas categorias principais:

Nomes

Todo componente acessível possui um nome, que serve como chave de acesso. Em robôs tradicionais, o programador tem que chamar uma função como cor(1) e então descobrir qual sensor do robô corresponde ao sensor na porta de número 1. Já no sBotics você nomeia seu próprio sensor, então você pode chamar seus sensores de cor como SensorCorEsquerdo e SensorCorDireito, e assim o código pode ser executado como Cor(“SensorCorEsquerdo”) ou Cor(“SensorCorDireito”).

Como pode perceber, estes nomes são EXTREMAMENTE importantes para acessar componentes e realizar comandos na programação. Estes nomes são dados na "Oficina de Robôs", clicando em um componente e alterando o nome no campo que aparece a direita e clicando no botão de alterar, como mostrado nas imagens abaixo.

Atenção: Em alguns computadores o botão de alterar está com a ativação um pouco descentralizada, então ao clicar no botão verifique que a mensagem “Editado com Sucesso!” aparece no topo da tela. Caso não apareça inicialmente basta apertar em um local menos centralizado do botão.

Para ver o nome dos componentes do seu robô, basta ir na tela de Robôs e visualizar na parte superior deste menu:


Controlador do Robô

O controlador do robô pode ser considerado por muitos um componente, já que o mesmo é capaz de executar alguns comandos de sensores “embutidos” e de saída.

Comandos do Controlador:

Comando Descrição rEduc / Blockeduc C#
Abrir Console Abre o painel do console. AbrirConsole() IO.OpenConsole();
Escrever Escreve no console logo após o último texto. Escrever("texto") IO.Print("texto" );
Escrever em uma Linha Escreve no console em uma nova linha. EscreverLinha("texto") IO.PrintLine("texto");
Limpar Console Limpa todo o texto do console. LimparConsole() IO.ClearPrint();
Bússola / Direção Retorna a direção (em graus) observada pelo robô. Direcao() Bot.Compass
Inclinação Retorna número que indica a inclinação em graus do robô. Inclinacao() Bot.Inclination
Velocidade Retorna número que indica a velocidade que o controlador (robô como um todo) está se movimentando. Velocidade() Bot.Speed

(Avançado) Arquivo de Registro:

Comando Descrição rEduc / Blockeduc C#
Registrar Escreve no registro logo após o último texto. Registrar("texto") IO.Write("texto" );
Registrar em uma Linha Escreve no registro em uma nova linha. RegistrarLinha("texto") IO.WriteLine("texto");
Limpar Registro Limpa todo o texto do arquivo de registro. LimparRegistro() IO.ClearWrite();
O arquivo de registro é como um console mas que fica inteiramente fora do sBotics em um arquivo separado. Ele pode ser acessado através do painel de console clicando no ícone de “Documento”. Pode ser utilizado para gerar gráficos, csvs e outras implementações que o usuário queira fazer fora do sBotics a partir de dados gerados dentro do sBotics.

Componentes Simples

Os componentes simples são blocos que realizam ações específicas quando programados. O sBotics oferece os seguintes componentes simples:

  • Buzzer: Toca sons, ruído ou notas musicais.
  • LED: Emite luz em uma cor específica.
  • Servomotor: Gira um grupo de blocos em um ângulo definido.
  • Caneta 3D: Desenha linhas no caminho percorrido pelo robô.

Entendendo Melhor o Servomotor

Embora aparentemente o servomotor seja um “simples” componente, ele é o componente mais importante de todo robô, pois ele permite a movimentação programada de grupos de blocos e possui muitas formas de interação.

TODO MOTOR INICIA TRAVADO, sendo necessário DESTRAVAR O MOTOR para usá-lo.
Caso use múltiplos motores, não esqueça de destravá-los individualmente para poder usá-los.
TravarMotor("motor1", falso)
TravarMotor("motor2", falso)
TravarMotor("motor3", falso)
TravarMotor("motor4", falso)

Motores podem ser travados ou destravados. Um motor travado se comporta um pouco como um bloco sólido e cria arrasto/atrito e pode ser usado para realizar curvas (um motor travado e outro destravado, por exemplo). Já um motor solto pode se movimentar livremente, mesmo que não haja uma força sendo aplicada no mesmo, e pode receber comandos para movimentação.


Selecionando um motor genérico no menu de Depuração é possível brincar com cada uma das propriedades do mesmo.

Motores no sBotics se movimentam com duas propriedades: Força e Velocidade Alvo. Para 90% dos usuários, esta informação é irrelevante, basta utilizar o comando Mover("motor", força) em rEduc / Blockeduc para mover o motor. Motores podem se movimentar com velocidades de -500 a 500, sendo o sentido determinado se o número é positivo ou negativo.

Avançado: Para usuários mais avançados, basta entender que a velocidade alvo é a mais importante, pois é a velocidade que o motor vai alcançar, sendo ela positiva (girando no sentido das setinhas) ou negativa (girando contra as setinhas); Já a força é a força a ser aplicada a cada 1/60 segundos para atingir a “velocidade alvo” desejada, sendo assim apenas números positivos.

Por este motivo, no C# a movimentação é dada sempre por dois valores, sendo um a força sendo aplicada e outra a velocidade a ser alcançada. Se você não quer lidar com isso, pode sempre usar o mesmo valor em ambos os campos, mas lembrando que o primeiro parâmetro sempre deverá ser positivo
Bot.GetComponent<Servomotor>("Nome Motor").Apply(100, -500)

Comandos para Componentes Simples

Como cada componente simples possui funções únicas, seus comandos variam. Consulte a tabela abaixo para obter informações detalhadas sobre os comandos de cada componente.

Lembre-se! Para acessar um componente através de um comando é necessário informar o nome do mesmo. Certifique-se que um nome foi informado na Oficina de Robôs e verifique o nome do componente em questão no painel de Robôs.

Buzzer:

Comando Descrição rEduc / Blockeduc C#
Está Tocando? Retorna se o buzzer informado está tocando algo ou não (verdadeiro/falso). EstaTocando("Nome") Bot.GetComponent<Buzzer>( "Nome" ).Playing
Tocar Nota Toca uma nota musical no buzzer informado. TocarNota("Nome", "Sol") Bot.GetComponent<Buzzer>( "Nome" ).PlaySound("Sol");
Tocar Frequência Toca uma frequência específica em Hz no buzzer informado. TocarFrequencia("Nome", 24.5) Bot.GetComponent<Buzzer>( "Nome" ).PlaySound( 24.5 );
Parar Som Desativa o buzzer informado. PararSom("Nome") Bot.GetComponent<Buzzer>( "Nome" ).StopSound();

Luz LED:

Comando Descrição rEduc / Blockeduc C#
Ligar Define a cor do LED informado e o acende. LigarLuz("Nome", 255, 255, 255) Bot.GetComponent<Light>( "Nome" ).TurnOn( new Color(255, 255, 255) );
Desligar Desliga o LED informado. DesligarLuz("Nome") Bot.GetComponent<Light>( "Nome" ).TurnOff();

Servomotor:

Comandos Básicos Descrição rEduc / Blockeduc C#
Travar / Destravar Motor Trava ou Destrava o motor de se mover. TravarMotor("Nome Motor", falso) Bot.GetComponent<Servomotor>("Nome Motor").Locked = false;
Mover Motor Move o servomotor destravado na velocidade informada entre -500 e 500. Motor("Nome Motor", -500) Bot.GetComponent<Servomotor>("Nome Motor").Apply(10, -50)
Comandos Avançados Descrição rEduc / Blockeduc C#
Definir Motor Aplica gradualmente uma força informada para atingir a outra velocidade informada. DefinirMotor("Nome Motor", 10, -500) Bot.GetComponent<Servomotor>("Nome Motor").Apply(10, -50)
Ângulo do Motor* Retorna o ângulo do motor informado. AnguloMotor("Nome Motor") Bot.GetComponent<Servomotor>("Nome Motor").Angle
Força do Motor Retorna a força sendo aplicada no motor informado. ForcaMotor("Nome Motor") Bot.GetComponent<Servomotor>("Nome Motor").Force
Velocidade Alvo do Motor Retorna a velocidade alvo a ser atingida pelo motor informado. VelocidadeAlvoMotor("Nome Motor") Bot.GetComponent<Servomotor>("Nome Motor").Target
Velocidade do Motor Retorna a velocidade (aceleração) do motor informado. VelocidadeMotor("Nome Motor") Bot.GetComponent<Servomotor>("Nome Motor").Velocity
* A função de sensor de ângulos (giroscópico) do sBotics as vezes pode apresentar um erro conhecido devido a limitações na plataforma Unity (plataforma usada para criar o simulador). O erro se manifesta na dificuldade em interpretar corretamente a movimentação do objeto em outros eixos, afetando a leitura do eixo específico desejado.

Soluções alternativas podem ser exploradas, como recolocar o motor e rotacioná-lo de maneiras diferentes (clicando nos botões de rotacionar bloco na "Oficina de Robôs"), tentar rotações aparentemente idênticas com valores distintos ou trocar o bloco onde o motor está ancorado. A correção deste problema é inviável no momento.

Caneta 3D:

Comando Descrição rEduc / Blockeduc C#
Ligar Caneta Define a cor da caneta informada e a liga. LigarCaneta("Nome", 255, 255, 255) Bot.GetComponent<Pen>( "Nome" ).TurnOn( new Color(255, 255, 255) );
Apagar Caneta Apaga tudo que foi desenhado com a caneta informada. ApagarCaneta("Nome") Bot.GetComponent<Pen>( "Nome" ).Clear();
Desligar Caneta Desliga a caneta informada. DesligarCaneta("Nome") Bot.GetComponent<Pen>( "Nome" ).TurnOff();

Ver Todos os Comandos e Explicações Detalhadas


Sensores

Os sensores permitem que os robôs “percebam” o ambiente virtual, coletando informações sobre cores, distâncias, toques e imagens. O sBotics oferece os seguintes sensores:

  • Sensor de Cor: Detecta a cor de uma superfície.
  • Sensor Ultrassônico: Mede a distância até um objeto.
  • Sensor de Toque: Detecta se um objeto está em contato com o sensor.
  • Câmera: Captura imagens do ambiente (funcionalidade incompleta).

Observação: Os sensores de cor e ultrassônico também possuem versões inclinadas, que permitem ler áreas diferentes.

Leitura de Sensores

Cada sensor oferece dois tipos de leitura: A leitura analógica e a leitura digital. Para usuários de rEduc e Blockeduc, esta separação não é tão óbvia, já que todos são tratados por comandos distintos diferentes.

Lembre-se! Para acessar um componente através de um comando é necessário informar o nome do mesmo. Certifique-se que um nome foi informado na Oficina de Robôs e verifique o nome do componente em questão no painel de Robôs.

Leitura Analógica:

Retorna um valor numérico que representa a intensidade da leitura (pode ser um valor numérico, em texto, ou outro*).

Sensor de Cor: Variável do tipo cor* (C#) ou numero/texto (rEduc/Blockeduc).

Comandos Descrição rEduc / Blockeduc C#
Cor Retorna o “nome da cor”** lida pelo sensor informado. Cor("Nome do Sensor") Bot.GetComponent<ColorSensor>( "Nome do Sensor" ).Analog.ToString()
Luminosidade Retorna o valor numérico que representa a intensidade de luz (leitura preta-e-branca) do sensor informado. Luz("Nome do Sensor") Bot.GetComponent<ColorSensor>( "Nome do Sensor" ).Analog.Brightness
Tom de Azul Retorna o valor numérico de azul da cor lida pelo sensor informado. CorAzul("Nome do Sensor") Bot.GetComponent<ColorSensor>( "Nome do Sensor" ).Analog.Blue
Tom de Verde Retorna o valor numérico de azul da cor lida pelo sensor informado. CorVerde("Nome do Sensor") Bot.GetComponent<ColorSensor>( "Nome do Sensor" ).Analog.Green
Tom de Vermelho Retorna o valor numérico de azul da cor lida pelo sensor informado. CorVermelho("Nome do Sensor") Bot.GetComponent<ColorSensor>( "Nome do Sensor" ).Analog.Red

Sensor Ultrassônico: Mede a distância até um objeto.

Comandos Descrição rEduc / Blockeduc C#
Ultrassônico Retorna a distância (nas unidades próprias do simulador) percebida pelo sensor informado. Ultra("Nome do Sensor") Bot.GetComponent<UltrasonicSensor>( "Nome do Sensor" ).Analog

Sensor de Toque: Sensor de toque não possui leitura analógica, apenas digital, por se tratar de um simples botão.

* Outros tipos de retorno só se aplicam a C#
** Os tipos de cores que existem no sBotics são:
rEduc / Blockeduc: "Preto", "Branco", "Verde", "Vermelho", "Azul", "Amarelo", "Magenta", "Ciano".
C#: Colors.Black, Colors.White, Colors.Green, Colors.Red, Colors.Blue, Colors.Yellow, Colors.Magenta, Colors.Cyan.

Leitura Digital:

Retorna um valor booleano (verdadeiro/falso) que indica se uma condição foi atendida.

Sensor de Cor: Variável booleana (verdadeiro ou falso) que informa se o sensor está lendo alguma cor ou não (preto).

Comando Descrição rEduc / Blockeduc C#
Colorido? Retorna se o sensor informado está lendo alguma cor. Colorido("Nome do Sensor") Bot.GetComponent<ColorSensor>( "Nome do Sensor" ).Digital;

Sensor Ultrassônico: Mede a distância até um objeto.

Comando Descrição rEduc / Blockeduc C#
Tem Algo? Retorna se o sensor informado está vendo alguma coisa, independente da distância. TemAlgo("Nome do Sensor") Bot.GetComponent<UltrasonicSensor>( "Nome do Sensor" ).Digital;

Sensor de Toque: Detecta se um objeto está em contato com o sensor.

Comando Descrição rEduc / Blockeduc C#
Toque? Retorna se o sensor informado está sendo pressionado. Toque("Nome do Sensor") Bot.GetComponent<TouchSensor>( "Nome do Sensor" ).Digital;

Importante: A câmera ainda não está totalmente funcional e pode não ser utilizável na maioria dos casos. Ela possui comandos em C# que podem ser visualizados na página de Referência para Programação C#, mas não está na wiki por não ter suporte.

componentes.txt · Última modificação: 2025/04/15 16:34 por 127.0.0.1