Essa é uma revisão anterior do documento!
Tabela de conteúdos
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
Componentes Simples
Os componentes simples são blocos que realizam ações específicas quando programados. O sBotics oferece os seguintes componentes simples:
Servomotor: Gira um grupo de blocos em um ângulo definido.
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.
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(); |
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.
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:
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#.