Table des matières:
- Étape 1: Matériel
- Étape 2: Instalando OpenCV Na Dragonboard
- Étape 3: Conectar a Câmera Com a Dragonboard
- Étape 4: Desenvolver Software De Processamento De Imagens Que Toma Decisões
- Étape 5: Fazer Aplicativo Que Repassa As Informações Para O Deficiente Visual
- Étape 6: Suggestions de continuité
Vidéo: Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
DESCRIÇÃO
O intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou shopping centers e aeroportos.
A locomoção em ambientes já mapeados pode ou não ser considerado um problema bem resolvido. Um aplicativo disponível na App Store pour isso, ainda que sirva apenas for 3 ambientes e apenas no EUA, é o LowViz Guide. Além do limitado número de locais, tal aplicativo não detecta possíveis obstáculos e pessoas que possam estar no caminho do usuário. Assim, a missão deste projeto é, através de visão computacional e processamento de imagem, identificar possíveis obstáculos que possam surgir ao longo do caminho do usuário e poder recalcular o caminho a ser seguido dando independência e empoderando o usuário e poder recalcular o caminho a ser seguido dando independência e uáriorando o us. Na prática, o projeto, embora ainda incompletto, consiste em integrar um aplicativo de onde se pode submeter ou desenhar uma planta baixa do local de interesse, seja uma casa ou shopping. Com a placa integrada a uma câmera na cintura do usuário, e um fone de ouvido, o aplicativo calcula a posição no ambiente e permite o usuário definir para onde quer ir e dá comandos de voz para movimentação. A câmera, quando detecta um obstáculo a frente, pode recalcular o caminho do usuário. Como dizia Hugh Herr: "Nenhum indivíduo é incapaz, o qu'existe é falta de desenvolvimento tecnológico para capacitar e nos tornar iguais".
Neste projeto usaremos a Dragonboard 410c, porque precisamos de um hardware que tenha capacidade of fazer o processamento de imagens em tempo real (sem ter de competir com outras aplicações como seria no celular) e ao mesmo tempo seja de baixo custo.
Étape 1: Matériel
Para este projeto vamos utilizar:
- uma placa Qualcomm Dragonboard 410c;
- biblioteca de processamento de imagem OpenCV (versão 3.1);
- camera que se comunique com a placa (usaremos na verdade um celular android com o aplicativo IP Webcan);
- système de communication cellulaire Android pour application;
Étape 2: Instalando OpenCV Na Dragonboard
Com linux instalado na placa, siga os procedimentos padrões para se instalar a biblioteca de processamento de imagem - OpenCV - no device. Siga comme instruções deste link:
docs.opencv.org/3.0-beta/doc/tutorials/intr…
Étape 3: Conectar a Câmera Com a Dragonboard
Precisamos conectar a camera que serão os olhos do deficiente com a placa de desenvolvimento Dragonboard 410c. Existem vários jeitos de fazer isso. Un dragonboard possui entrada para flatcables, ou seja, é compatível com as camera usadas comumente em placas como a Raspberry pi.
Neste projeto, optamos usar como camera um Moto G 3ª Geração com o aplicativo IP Webcam (disponível na Google Play) qui permet d'avoir une image seja transferida pelo wifi.
Abaixo um programa que faz aquisição simple da imagem usando a biblioteca opencv. O link passado como parametro no construtor do objeto VideoCapture é o IP do celular (indicado no aplicativo) + “/videofeed”. Na imagem acima, você encontra onde está o IP do seu celular.
A aquisição pode ser difícil nas versões anteriores a 3.1 da opencv, caso você não tenha conseguido compilar. Se você conectar uma camera pela entrada de camras da dragonboard basta colocar como parametro o valor zero ("0"), que significa que você quer procurar a camera default.
Étape 4: Desenvolver Software De Processamento De Imagens Que Toma Decisões
Há três programas em anexo, o identificadorDeObstáculos.cpp, o MostraContornoWebcam.cpp e o VídeoCadeiraSlavo.cpp (estes dois últimos para teste e entendimento da técnica do software).
Explication: A ideia de identificação de obstáculo vem da da da determinação dos contornos mais drásticos nas imagens do vídeo, ou seja, o código identifica mudanças drásticas de cores na imagem e conclui que isso seja um contornas image étape). Estando a câmera na barriga do usuário, levemente inclinada para o chão, conforma o usuário se locomove, o programa identifica a existência de um objeto (seja uma pessoa ou uma cadeira por exemplo) e manda o sinal de parada caso o na objeto seja encontra região especificada (caminho do usuário) (vide imagem do contorno da cadeira - caso o usuário se aproxime da cadeira haverá pixels brancos na região verde que determinam condição de parada). Dessa forma, sem a adição de filtros ao tipo de chão, para o funcionamento dessa versão simplificada, é necessário um chão razoavelmente homogêneo, de forma que os detalhes do chão não sejam considerados contornos.
Obs. é possível ajustar a variável lowThreshold do código para um valor de 0 (mais sensitivo) e 100 (menos sensitivo ao contorno). O valor sugerido é 60 para chão em geral.
Fonction: o identificadorDeObstáculos.cpp recebe um vídeo da rede wifi através do sparkfun que deve ser um vídeo de um celular acoplado a barriga do usuário. O código manda condições de parada á um aplicativo de um outro celular que usuário está usando. Idéalement manda-se comandos de voz de parada parada o usuário.
Obs: Altere o código de acordo para especificar of onde os vídeos são recebidos e para qual android as informações são encaminhadas. Os tipos de alterações são especificadas no próprio código (assim como nos programas de teste) comentados no início do programa.
Para sabre mais sobre bordas de Canny e limiarização, além de outros topicos de visão computacional, recomenda-se procurar a documentação oficial da OpenCV.
Étape 5: Fazer Aplicativo Que Repassa As Informações Para O Deficiente Visual
Para reproduzir este projeto é necessário criar um banco de dados no site data.sparkfun.com, o processo é muito intuitivo de forma que não será dada uma explicação more detalhada aqui, mas colocaremos o link do banco que criamos para referência ().
Assim que a Dragonboard reconhece que há um obstáculo a sua frente ela posta em um banco de dos construido no data.sparkfun.com essa informação. O aplicativo faz uma consulta a este banco com o auxílio da classe okhttp3 obtendo as informações como um Json. Então fazemos um parser desse json para encontrarmos o último dado enviado. Com esse dado em mãos conseguimos dizer se há um obstáculo no caminho, assim émitted um sinal de voz para o usuário parar. Se o caminho está livre o aplicativoemite um sinal para prosseguir continuamente.
Seguem em anexo as classes e Interfaces utilizadas para o projeto, que são explicadas a seguir:
GetJson: é utilizada para fazer um get no banco de dados do data.sparkfun retornando um arquivo em formato json para aplicação.
JsonDownloader: onde geramos uma asynctask para de fato utilizarmos a class GetJson, a importância do uso desta class é para não travarmos a interface do usuário e para isso precisamos criar uma thread diferente na aplicação.
Activité principale: nesta classe implementamos a lógica da aplicação que continuamente consulta o banco de dados, e informa o usuário por meio de um audio se ele precisa para ou pode continuar caminhando.
RequestListener: é uma interface utilizada para forçar o MainActivity ter certas características.
SdmSoundPlayer: esta classe é usada para gerenciar os comandos de voz da aplicação, caso você queira inserir as suas próprias gravações você deve criar uma pasta raw dentro da pasta res e incluir os arquivos de audio lá. Feito isso dentro do método initSoundHash() você deve colocar esses arquivos dentro de mSoundHash que é uma tabela Hash. Para usar este áudio basta usar o método playSound (int key) e passar como parâmetro a chave escolhida para o sinal de voz.
Avertissements: essa classe é utilizada para facilitar o parser do json retornado pelo banco de dados.
Seguem em anexo também os arquivos de voz utilizados.
O layout da aplicação consistia de um único botão que funcionava com o método Quit implementado na MainActivity, este método simplemente forçava a aplicação a parar a consulta no banco de dados.
Qualquer dúvida adicional ou sugestão basta entrar em contato com o autor. Sugestões são semper bem-vindas =).
O código não está bem comentado, mas acredito que as explicações acima devem ser suficientes para o entendimento do que está acontecendo.
Étape 6: Suggestions de continuité
Poderiamos integrar um sistema de localaização. Existe o Qualcomm iZat SDK que possui um um sistema de localização que usa GNSS, acelerômetro, magnetrômetro entre outros, já embutidos no próprio processador Qualcomm Snapdragon (presente na maioria dos celulares). Pas d'entanto, havia pouca documentação e necessitava de testes mais demorados.
Também gostariamos de usar um sensor de distância ultrassonico, porém tivemos problemas quanto a comunicação com a Dragonboard, que poderia ser resolvido com plus calme. Se tiver tempo, procure as bibliotecas já presentes no kit de desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.
Aucun développeur de site Qualcomm n'existe pour les tutoriels et les tutoriels, et pour les tutoriels de 96Boards sans you tube.
Conseillé:
Desenvolvendo Aplicações Remotamente Para a Dragonboard 410c Usando IDE Eclipse: 17 Steps
Desenvolvendo Aplicações Remotamente Para a Dragonboard 410c Usando IDE Eclipse: O objetivo deste documento é mostrar as etapas necessárias para configurar o ambiente de desenvolvimento, de modo que o HostPC (Computador / Notebook), attravés do IDE Eclipse compile os códigos e exporte para o Alvo (Drag
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV : 7 étapes
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: A nossa lixeira inteligente consiste na separação automática do lixo. Através de uma webcam, ela identifica o tipo de lixo e o deposita no compartimento adequado para posteriormente ser reciclado
Détection d'objets avec Dragonboard 410c ou 820c à l'aide d'OpenCV et de Tensorflow. : 4 étapes
Détection d'objets avec Dragonboard 410c ou 820c en utilisant OpenCV et Tensorflow
Développement d'applications utilisant des broches GPIO sur la DragonBoard 410c avec les systèmes d'exploitation Android et Linux : 6 étapes
Développement d'applications à l'aide de broches GPIO sur la DragonBoard 410c avec les systèmes d'exploitation Android et Linux : le but de ce didacticiel est de montrer les informations nécessaires pour développer des applications à l'aide de la broche GPIO sur l'extension basse vitesse de la DragonBoard 410c. Ce tutoriel présente des informations pour développer des applications utilisant les broches GPIO avec SYS sur l'Andr
Transformer votre appareil photo en "vision nocturne militaire", ajouter un effet de vision nocturne ou créer un mode vision nocturne sur n'importe quel appareil photo !!! : 3 étapes
Transformer votre appareil photo en mode "vision nocturne militaire", ajouter un effet de vision nocturne ou créer un mode vision nocturne sur n'importe quel appareil photo !!! * Si vous avez besoin d'aide, veuillez envoyer un e-mail à : [email protected] Je parle anglais, français, japonais, espagnol et je connais d'autres langues si vous