Skip to content

About

Python + JavaScript: coverage planning and return-budget sweeps / Planejamento de cobertura e varredura de orçamento de retorno. Offline prototype / Protótipo offline.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Go2 PRO Search Coverage

Coverage planning · Planejamento de cobertura

Workflow illustration: Training grid → Budgeted route → Coverage evidence

Checks English · Português · Guided tour / Visita guiada · Validation / Validação

EN: How much reachable area can be visited while reserving a return?
PT: Quanto da área alcançável pode ser visitado com retorno reservado?

Start here · Comece aqui

Goal · Objetivo Where to go · Por onde começar
Understand a real example · Entender um exemplo concreto Walkthrough / Roteiro
Reproduce and compare · Reproduzir e comparar Evidence tour / Visita às evidências
Inspect the checks · Inspecionar as verificações Validation record / Registro de validação · CI
Explore in the browser · Explorar no navegador Public demonstration / Demonstração pública

Example result · Resultado do exemplo: Reachable coverage / Cobertura alcançável: 100 %; Visited cells / Células visitadas: **20 **; Movement steps / Passos de movimento: **28 **

Try a comparison · Experimente uma comparação
EN: Compare nominal, limited and stationary budgets; distinguish reachable coverage from disconnected free cells.
PT: Compare os orçamentos nominal, limitado e estacionário; separe cobertura alcançável de células desconectadas.

Existing application preview / Prévia existente da aplicação

Offline analysis · Análise offline

Python · JavaScript — an installable Python implementation with a command line, strict input validation and reproducible examples. Python companion v0.2.0.

Python · JavaScript — implementação Python instalável, com linha de comando, validação rigorosa e exemplos reproduzíveis. Complemento Python v0.2.0.

Plan the same deterministic four-neighbor search route in Python, then replan it under several movement budgets. The batch table makes it possible to compare proposed classroom floor plans without repeatedly editing a browser form.

Planeje a mesma rota determinística de busca com quatro vizinhos em Python e repita o planejamento com diferentes orçamentos de movimento. A tabela permite comparar pisos propostos para treinamento sem editar repetidamente o formulário do navegador.

Install, examples and method / Instalação, exemplos e método · Executed outputs / Saídas executadas · Python tests / Testes Python

Workflow · Fluxo de trabalho

flowchart TD
  A["Grid and budget / Grade e orçamento"] --> B["Reachable component / Componente alcançável"]
  B --> C["Nearest unvisited cell / Célula não visitada mais próxima"]
  C --> D{"Outbound plus return fits? / Ida e retorno cabem?"}
  D -->|Yes / Sim| E["Append visits / Adicionar visitas"]
  E --> C
  D -->|No or complete / Não ou concluído| F["Return to start / Retornar ao início"]
  F --> G["Coverage report / Relatório de cobertura"]
Loading

English

A deterministic coverage-route simulator for a supplied training-floor grid. It computes reachable cells, plans visits to new cells and reserves enough movement steps to return to the starting point.

Why this belongs in the Go2 PRO program

Before a search-and-rescue exercise, instructors need to distinguish a traversed area from a merely drawn route. This workbench exposes disconnected rooms, explicit exclusions and a limited movement budget. It supports course design for a prospective Go2 PRO observation study.

Implemented behavior

  • Compute the connected component of free cells using four-neighbor breadth-first search. Cell values are 0 for free, 1 for obstacle and 2 for excluded.
  • At each iteration, find the nearest unvisited reachable cell. Equal-length paths use east, south, west, north neighbor order; this makes the result reproducible.
  • Before appending an outbound path, compute the shortest return path from its destination. Accept only when outbound movement plus the return fits the remaining budget.
  • When the next greedy candidate cannot be funded, stop searching and append the return path. This policy can leave feasible alternatives unexplored and is not an optimal coverage solver.
  • Count visits during both search and return. Report reachable coverage, unreachable free cells, unvisited reachable cells and remaining steps separately.

English result preview

Run a complete experiment

Use Node.js 22 or newer. The application has no third-party runtime dependencies and does not require an account, API key or connected robot.

git clone https://github.com/galafis/go2-pro-search-coverage.git
cd go2-pro-search-coverage
npm test
npm run examples
npm start

Open http://127.0.0.1:4173. Select one of the five examples, change Movement budget (steps), and choose Update. Expand the JSON editor to edit the complete scenario. Inspect the chart, review cursor, findings and full-record preview. Export the scenario and report together; only the language preference is stored automatically.

The browser demo and command line use the same run(scenario) domain function:

node scripts/analyze.mjs examples/nominal.json report.json
npm run test:coverage

Exit codes are 0 for a completed analysis or review notes, 2 for a valid report requiring review, and 1 for invalid input. Code 2 still writes the report. Imported files are limited to 1 MB; malformed data does not replace the last valid browser result.

Reproduce a result by hand

The nominal 6×4 open grid has 24 reachable cells. The deterministic route visits all 24 and returns in 24 movement steps, totaling 12 m at 0.5 m per cell. With a zero-step budget it remains at the start: one visited cell and 4.166667% reachable coverage. A wall that splits the grid yields 100% coverage of the reachable component while explicitly retaining the unreachable-cell count.

distanceM = movementSteps × cellSizeM
coveragePct = 100 × visitedFreeCells / reachableFreeCells
accept next route only if used + outbound + shortestReturn <= maxSteps

The worked examples list actual output metrics for all five scenarios. The algorithm guide explains the calculation and event flow; the data contract specifies fields, units, limits and semantic checks.

Validation and interpretation

Tests check known answers, boundary cases, deterministic behavior and failure handling. They also exercise the command line and bilingual chart generation. Validation notes link the test files and explain what they establish. Example reports are committed so a changed algorithm produces a reviewable difference.

This is a point-cell traversal model. A visited cell does not imply that a person or object was detected. Body clearance, sensor visibility, smoke, heat, moving people and terrain stability are outside the model. The movement budget is not battery capacity. The route must not be sent to a robot without a separately supported adapter and physical validation.

From a prototype to a controlled study

Use a marked, controlled floor plan with explicit excluded areas. First compare simulated cell visits with an independent observer's annotations. Record start/end position, missed cells and unplanned deviations. Treat return-path agreement as a separate outcome; preserve interrupted trials.

The current release is independent of physical hardware. The Go2 PRO development plan separates software that works now from interface confirmation and physical measurements. A standard PRO configuration must not be assumed to expose custom development interfaces; confirm the exact supported configuration with Unitree.

Related work: go2-pro-telemetry-replay. See integration notes for implemented exchange and remaining boundaries.

Português

Um simulador determinístico de cobertura para uma grade de piso de treinamento fornecida. Calcula células alcançáveis, planeja visitas a novas células e reserva passos suficientes para retornar ao início.

Por que este projeto pertence ao programa com o Go2 PRO

Antes de um exercício de busca e salvamento, instrutores precisam distinguir áreas percorridas de um trajeto apenas desenhado. A bancada evidencia salas desconectadas, exclusões explícitas e orçamento limitado de movimento. Apoia o desenho de percursos para um futuro estudo de observação com o Go2 PRO.

Comportamentos implementados

  • Calcule o componente conectado de células livres por busca em largura com quatro vizinhos. Os valores são 0 para livre, 1 para obstáculo e 2 para excluída.
  • A cada iteração, encontre a célula alcançável não visitada mais próxima. Caminhos de mesmo tamanho usam a ordem leste, sul, oeste, norte; isso torna o resultado reproduzível.
  • Antes de adicionar um caminho de ida, calcule o menor caminho de retorno a partir do destino. Aceite apenas quando ida e retorno couberem no orçamento restante.
  • Quando o próximo candidato da política gulosa não couber no orçamento, encerre a busca e acrescente o retorno. A política pode deixar alternativas viáveis inexploradas e não é um solucionador ótimo de cobertura.
  • Conte visitas tanto na busca quanto no retorno. Informe separadamente cobertura alcançável, células livres inalcançáveis, células alcançáveis não visitadas e passos restantes.

Prévia do resultado em português

Executar um experimento completo

Use Node.js 22 ou superior. A aplicação não possui dependências externas em tempo de execução e não exige conta, chave de acesso ou robô conectado.

git clone https://github.com/galafis/go2-pro-search-coverage.git
cd go2-pro-search-coverage
npm test
npm run examples
npm start

Abra http://127.0.0.1:4173. Selecione um dos cinco exemplos, altere Orçamento de movimento (passos) e escolha Atualizar. Expanda o editor JSON para editar o cenário completo. Inspecione gráfico, cursor de revisão, achados e prévia dos registros. Exporte cenário e relatório juntos; apenas a preferência de idioma é armazenada automaticamente.

A demonstração no navegador e a linha de comando usam a mesma função de domínio run(scenario):

node scripts/analyze.mjs examples/nominal.json report.json
npm run test:coverage

Os códigos de saída são 0 para análise concluída ou notas de revisão, 2 para relatório válido que exige revisão e 1 para entrada inválida. O código 2 também grava o relatório. Arquivos importados são limitados a 1 MB; dados inválidos não substituem o último resultado válido no navegador.

Reproduzir um resultado manualmente

A grade livre nominal de 6×4 tem 24 células alcançáveis. A rota determinística visita as 24 e retorna em 24 passos, totalizando 12 m a 0,5 m por célula. Com orçamento zero, permanece no início: uma célula visitada e 4,166667% de cobertura alcançável. Uma parede que divide a grade pode produzir 100% de cobertura do componente alcançável, mantendo explícita a contagem de células inalcançáveis.

As fórmulas acima usam as unidades explicitadas no contrato de dados. Os experimentos comentados mostram métricas reais de saída dos cinco cenários. O guia de arquitetura explica o cálculo e o fluxo de eventos.

Validação e interpretação

Os testes verificam respostas conhecidas, casos de fronteira, comportamento determinístico e tratamento de falhas. Também exercitam a linha de comando e a geração dos gráficos bilíngues. As notas de validação apontam os arquivos de teste e explicam o que comprovam. Relatórios de exemplo são versionados para que alterações do algoritmo produzam diferenças revisáveis.

Este é um modelo de percurso pontual em células. Visitar uma célula não significa detectar uma pessoa ou objeto. Espaço para o corpo, visibilidade de sensores, fumaça, calor, pessoas em movimento e estabilidade do terreno estão fora do modelo. O orçamento de passos não é capacidade de bateria. A rota exige adaptador compatível e validação física próprios antes de qualquer uso em um robô.

Do protótipo ao estudo controlado

Use uma planta marcada e controlada, com áreas excluídas explícitas. Primeiro compare as visitas simuladas com anotações de um observador independente. Registre posição inicial/final, células não visitadas e desvios imprevistos. Avalie o retorno separadamente e preserve ensaios interrompidos.

A versão atual funciona independentemente de hardware físico. O plano de desenvolvimento com o Go2 PRO separa software funcional de confirmação de interfaces e medições físicas. Não se deve presumir que uma configuração PRO padrão exponha interfaces de desenvolvimento personalizado; confirme a configuração compatível exata com a Unitree.

Trabalho relacionado: go2-pro-telemetry-replay. Consulte as notas de integração para trocas implementadas e limites restantes.

Reproducible examples · Exemplos reproduzíveis

Scenario · Cenário Input · Entrada Expected report · Relatório esperado Status
Open training floor
Piso de treinamento livre
nominal.json nominal.report.json complete
Limited movement budget
Orçamento de movimento reduzido
limited.json limited.report.json review-notes
Disconnected rooms
Salas desconectadas
partitioned.json partitioned.report.json review-notes
Excluded training area
Área excluída do treinamento
exclusion.json exclusion.report.json complete
Stationary review
Revisão sem movimento
stationary.json stationary.report.json review-notes

Repository guide · Guia do repositório

File · Arquivo Purpose · Objetivo
src/engine.js Domain implementation / Implementação de domínio
test/ Numerical, behavioral and integration checks / Verificações numéricas, de comportamento e integração
docs/ARCHITECTURE.md Algorithms and Mermaid sequence / Algoritmos e sequência Mermaid
docs/DATA_CONTRACT.md Fields, units, validation / Campos, unidades, validação
docs/EXPERIMENTS.md Worked examples / Exemplos comentados
docs/VALIDATION.md Evidence and test boundaries / Evidências e limites dos testes
docs/GO2_PRO_PLAN.md Platform development stages / Etapas de desenvolvimento com a plataforma
CONTRIBUTING.md Reproducible contributions / Contribuições reproduzíveis
SECURITY.md Local data handling / Tratamento local dos dados

Maintainer / Responsável: Gabriel Demetrios Lafis · [email protected]

Independent public research prototype. No vendor or institutional endorsement is claimed. / Protótipo público independente de pesquisa. Não se afirma endosso do fabricante ou institucional.

About

Python + JavaScript: coverage planning and return-budget sweeps / Planejamento de cobertura e varredura de orçamento de retorno. Offline prototype / Protótipo offline.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages