sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


componentes

Essa é uma revisão anterior do documento!


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:


Componentes Simples

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

  • 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 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.

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 tipo “Cor” 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()

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

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

* 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#.

componentes.1743546892.txt.gz · Última modificação: 2025/04/15 16:34 (edição externa)