Essa é uma revisão anterior do documento!
Tabela de conteúdos
Editor de Arenas
O editor de arenas do sBotics é uma das ferramentas mais complexas e poderosas do simulador, permitindo a criação e personalização de cenários detalhados para competições e atividades educacionais. Embora a interface possa exigir um período de adaptação, especialmente no controle da câmera, o editor oferece um controle preciso sobre a criação de arenas.
A base do editor é um cursor de ladrilhos, que se move nas coordenadas da arena para realizar alterações. Os comandos de movimentação são intuitivos: W
, A
, S
e D
para deslocamento lateral, e Z
e X
para movimentação vertical. Ao selecionar um ladrilho na barra inferior (ilustrada na imagem abaixo), ele é inserido na posição do cursor. Para manipulações adicionais, como rotação, elevação ou exclusão, posicione o cursor sobre o ladrilho desejado e utilize as teclas R
para rotacionar, +
ou -
para elevar ou descer, e delete
para remover.
Note: No vídeo acima é possível ver a câmera sendo rotacionada para melhorar a visibilidade de alguns pontos (já que a movimentação do cursor de edição de ladrilho não é tão livre quanto a câmera do simulador). Para girar a câmera no editor, basta utilizar as teclasC
eV
.
A segunda aba do editor se trata do Editor de Ladrilhos, uma outra interface com outra usabilidade e conceitos, e por esta razão não foi agrupada nesta página.
Configurações Avançadas
O editor de arenas também oferece configurações avançadas, permitindo um controle granular sobre o comportamento da arena e dos ladrilhos. Essas configurações são armazenadas em formato JSON, oferecendo flexibilidade e precisão na personalização.
Entendendo o Tipo JSON de Pontuação
O objeto JSON de pontuação é utilizado para configurar a pontuação dos ladrilhos e penalidades na arena. Ele segue o seguinte padrão:
{ "points": 0, "multiplier": 1, "attempt_points": [], "attempt_multipliers": [] }
“points”: Define a pontuação base do ladrilho ou penalidade. “multiplier”: Define o multiplicador de pontuação. “attempt_points”: Permite definir pontuações diferentes para cada tentativa. Por exemplo, [5, 4, 3] atribui 5 pontos na primeira tentativa, 4 na segunda e 3 na terceira. Tentativas subsequentes ignoram essa configuração. “attempt_multipliers”: Semelhante a “attempt_points”, mas para multiplicadores. As propriedades “penalty”, embora utilizem esse objeto de pontuação, aplicam valores negativos, representando penalidades.
Configurações Avançadas de Arena
As seguintes configurações avançadas permitem personalizar diversos aspectos da arena. Objetos de pontuação (explicados acima) estão representados aqui como { … }
.
Dados Básicos:
"name": "Robocup Arena 12", // Nome da arena "description": "Arena", // Descrição da arena "time_of_day": "15:00", // Horário do dia (6:00 - 18:00), controla a posição do sol "time_limit_minutes": 5, // Limite de tempo em minutos
Importante:
"stop_game_on_time_limit": true, // Jogo termina ao atingir o limite de tempo "path_arena": true, // Indica se a arena possui um trajeto definido "ignore_dead_victim_if_any_living_left": true, // Ignora pontuação das vítimas mortas se houverem vivas
Depreciado:
Pedagógico:
"change_position_in_routine": false, // Permite alterar a posição e depurar o robô durante a rotina
Pedagógico:
Incompletos:
"advance_button": false, // Habilita o botão "Avançar" "start_with_rescue_kit": false, // Robô inicia com kit de resgate "return_rescue_kits_with_robot": true, // Kits de resgate retornam com o robô "use_medals": false, // Utiliza medalhas na pontuação "max_time_if_incomplete": true, // Define tempo máximo para rotinas incompletas "hard_evacuation_point": false, // Ponto de evacuação difícil "lack_of_progress": true, // Habilita penalidades por falta de progresso "scoring": true, // Habilita pontuação "force_advance": false, // Força o avanço para o próximo trajeto "placeable_checkpoints": 0, // Número de checkpoints posicionáveis "placeable_checkpoint_margin": 0, // Margem para posicionamento de checkpoints "end_on_endgoal": true, // Rotina termina ao atingir o objetivo final "randomize_safe_area": false, // Randomiza a área segura "randomize_victim_position": true, // Randomiza a posição das vítimas "end_on_rescue_victims": false, // Rotina termina ao resgatar todas as vítimas "advance_penalty": 0, // Penalidade por avançar para o próximo trajeto "skip_path_threshold": 3, // Limite para pular ladrilhos no trajeto "short_lack_of_progress_time": 10, // Tempo para falta de progresso leve "long_lack_of_progress_time": 50, // Tempo para falta de progresso grave "end_goal_lack_of_progress_penalty": { ... }, // Penalidade por falta de progresso no objetivo final "ramp_entrance_score": { ... }, // Pontuação ao entrar na rampa "ramp_exit_score": { ... }, // Pontuação ao sair da rampa "use_rescue_checkpoint_lack_of_progress_penalty": true, // Habilita penalidade por falta de progresso em checkpoints de resgate "rescue_checkpoint_lack_of_progress_penalty": 0.025, // Valor da penalidade por falta de progresso em checkpoints de resgate "placeable_checkpoint_entrance_score": { ... }, // Pontuação ao entrar em checkpoint posicionável "placeable_checkpoint_exit_score": { ... }, // Pontuação ao sair de checkpoint posicionável "path_size_checkpoint_entrance_score": { ... }, // Pontuação ao entrar em checkpoint de tamanho de trajeto "path_size_checkpoint_exit_score": { ... }, // Pontuação ao sair de checkpoint de tamanho de trajeto "starter_rescue_kit_score": { ... }, // Pontuação por kit de resgate inicial "multiplier_powered_by_victims_rescued": false, // Multiplicador baseado no número de vítimas resgatadas "@1": "Robot Constraints", // Indica o início das restrições do robô "#1": "Use -1 to ignore a specific constraint.", // Instrução para ignorar restrições "robot_constraints": { // Restrições do robô "use_constraints": false, // Habilita restrições "constraints_violation_penalty": { ... }, // Penalidade por violação de restrições "max_price": 50, // Preço máximo do robô "max_weight": 100, // Peso máximo do robô "max_ultrasonic": 10, // Número máximo de sensores ultrassônicos "max_servomotor": 10, // Número máximo de servomotores "max_light": 10, // Número máximo de sensores de luz "max_buzzer": 10, // Número máximo de buzzers "max_color": 10, // Número máximo de sensores de cor "max_touch": 10, // Número máximo de sensores de toque "max_camera": 10, // Número máximo de câmeras "max_pen": 10 // Número máximo de canetas }