sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


programacao

Essa é uma revisão anterior do documento!


Programação

No sBotics, a programação do robô é a principal atividade a ser realizada pelo usuário. Esta página explora as funcionalidades do menu de programação, os tipos de programas que você pode fazer e os conceitos importantes para a programação de robôs.

Acessando a Tela de Programação

O menu de robôs pode ser acessado através do segundo botão na parte inferior da interface do simulador (HUD).

Menu de Programação

Nesta tela, você pode:

  1. Criar, alterar e excluir programas;
  2. Trocar a linguagem entre BlockEduc, rEduc e C#;
  3. Salvar o programa e enviar para o robô (compilar);
  4. Importar / Exportar arquivos dos programas escritos.

Menu de Programação

Dica! Caso seu programa escrito (que não seja BlockEduc) fique muito grande (+700 linhas), recomendamos que use o vscode para programar no simulador, basta ver o botão “Trocar Modos” com o símbolo do vscode para trocar. O vscode é mais eficiente para códigos muito grandes e evita que o simulador fique muito lento com seu código.

Hierarquia de Dificuldades

As lingugens do sBotics seguem uma hierarquia de dificuldades. Toda programação pode ser convertida para níveis maiores de dificuldade.

Isto é, dada a hierarquia abaixo:

  1. BlockEduc (Mais fácil)
  2. rEduc (Intermediária)
  3. C# (Mais difícil)

É sempre possível programando a partir de uma linguagem mais fácil converter seu código para uma linguagem mais difícil utilizando a função de trocar linguagem no topo da tela de programação.

Isto é, BlockEduc é um conversor/facilitador de rEduc que é um conversor/facilitador de C#. Todo código feito em BlockEduc é convertido em rEduc que é convertido em C# para ser executado pelo simulador (que internamente só processa C#).

No geral, sempre aconselhamos utilizar o rEduc para seus programas, porém caso não tenha familiaridade com programação em texto ou já saiba programação avançada, não há problemas em utilizar BlockEduc e C#, basta entender que cada uma das linguagens vai trazer vantagens e desvantagens, como menor controle das rotinas no caso do BlockEduc e uma curva de aprendizado difícil no caso do C#.

Entendendo a Programação Síncrona (Avançado)

Imagine que o sBotics é como um palco onde o robô executa suas ações. Em um robô tradicional, ele é o seu próprio palco, onde ele faz as coisas dele sem se preocupar muito com o que pode acontecer com o programa. Se o programa for ineficiente e fizer a memória esgotar, o robô vai apenas desligar ou parar. É importante entender que o sBotics e o seu robô compartilham do mesmo palco. Uma função ineficiente no seu robô pode deixar o sBotics inteiro lento, ou até mesmo esgotar a memória do programa como um todo.

Para pessoas mais estudadas de programação: O sBotics roda na mesma “thread” que o programa do usuário pelo Unity. Antigamente utilizávamos programação em múltiplas threads mas era extremamente ineficiente e causava muitos memory leaks.

Como isso afeta a programação? (C#)

  • “Enquanto verdadeiro”: Enquanto verdadeiro indiscriminado trava o sBotics, pois ele fica esperando o robô terminar algo que nunca termina para prosseguir executando o simulador.
  • Esperar é importante: Na robótica real, os comandos levam tempo para serem executados. Agora, no sBotics, você precisa usar um comando chamado “esperar” para simular esse tempo de espera. Isso permite que o sBotics continue funcionando enquanto o robô executa suas ações.

No rEduc/BlockEduc, o uso de esperar é opcional, já que todas as estruturas de repetição do rEduc / BlockEduc quando convertidas já dispõem de um esperar embutido.

Para os estudados: Busy-waiting não é uma opção, o sBotics não permite que você trave a thread com verificações infinitas e ineficientes, você precisa esperar em algum momento de suas estruturas de repetição para deixar espaço para o simulador “respirar”. Quanto menos espaços forem dados para o simulador respirar, mais lenta será a performance do simulador.

Esta forma de processar tudo no mesmo “palco” (thread) faz com que alguns problemas possam ocorrer caso o usuário não tenha cuidado com o seu próprio código.

Erros Comuns / Crashes

Existem alguns erros que podem parecer do simulador, mas são causados pela programação do usuário. A primeira delas é quando o simulador esgota os recursos.

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