Skip to content

Commit

Permalink
creepers
Browse files Browse the repository at this point in the history
  • Loading branch information
dsoldev committed Oct 3, 2024
1 parent 59f77f8 commit 806a638
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
17 changes: 17 additions & 0 deletions docs/modulos/07-controle/atividades/3-identifica_creeper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Identificando os Creeper
Nesta atividade, vamos criar um nó que identifica os Creeper e publica as detecções sincronizadas. Identificar um Creeper significa combinarmos a detecção de cor, através de segmentação de cores, com a detecção de ID, através da leitura do marcador ArUco.

## Identificação Offline
Para facilitar o desenvolvimento, vamos começar criando uma classe que identifica os Creeper através de uma imagem. Para desenvolver essa classe, complete as intruções nos comentários do código [creeper_detector.py](../util/creeper_detector.py).

Uma vez funcional, mova o arquivo `creeper_detector.py` para o pacote `robcomp_interfaces` e compile novamente o pacote.

## Identificação Online
Agora que temos a classe que identifica os Creeper, vamos criar um nó que publica as detecções sincronizadas.

Com base no código `creeper_pub.py` do capítulo 5, crie um arquivo chamado `creeper_pub.py` que contenha uma classe chamada `CreeperPublisher` com um nó denominado `creeper_detector_node`. Este nó deve:

- Inscrever-se no tópico de imagens.
- Herdar a classe `CreeperDetector` do pacote `robcomp_interfaces`.
- Publicar, no tópico `/creeper`, a classe, o centro_x e o centro_y de cada objeto identificado, utilizando o formato de mensagem `robcomp_interfaces/msg/DetectionArray` onde, para cada detecção, a classe deve ser "{cor}-{id}" e cx seria o erro do centro do corpo do creeper e o centro da imagem.
- Ouvir o tópico `/vision/creeper_flag` e, ao receber uma mensagem `False`, interromper o processamento de imagens.
7 changes: 6 additions & 1 deletion docs/modulos/07-controle/util/creeper_detector.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def match_aruco(self, bgr, creepers, results):
Args:
bgr (numpy.array): imagem no espaço de cor BGR.
creepers (list): lista de centros dos creepers detectados através da função `find_creeper`.
list( [(cx,cy), color], [...]... ).
results (list(dicts)): resultados da detecção Aruco.
dict_keys(['id', 'rvec', 'tvec', 'distancia', 'corners', 'centro'])
Expand Down Expand Up @@ -117,7 +118,11 @@ def run(self, bgr):
# 3. Desenvolva a função `match_aruco` para combinar os marcadores Aruco com os corpos dos creepers.
bgr, matched_pairs = ...

# 4. Desenha os marcadores Aruco na imagem utilizando a função `drawAruco`.
# 4. Passe novamente por creepers e adicione cores sem correspondência caso não exista um marcador Aruco visível.
# Deixe a chave 'id' como '0'
matched_pairs = ...

# 5. Desenha os marcadores Aruco na imagem utilizando a função `drawAruco`.
for result in matched_pairs:
bgr = ...

Expand Down

0 comments on commit 806a638

Please sign in to comment.