Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47
DESCRIÇÃO
O intuito do projeto é dar autonomia para deficitnes visuais se locomoverem em ambientes zatvoreni como casas ou trgovačkim centrima e aeroportos.
A locomoção em ambientes já mapeados pode ou não ser obzirrado um problema bem resolvido. Um primjenjuju se na App Store -u para isso, ainda que sirva apenas para 3 ambientes e apenas nos 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 podsećati o caminho a ser seguido dando nezavisência e empoderando o usu Na prática, o projeto, embora ainda incompleto, 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 ponovolar o caminho do usuário. Como dizia Hugh Herr: “Nenhum indivíduo é incapaz, o que 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 de fazer o processamento de imagens em tempo real (sem ter de Competitr com outras aplicações como seria no celular) e ao mesmo tempo seja de baixo custom.
Korak 1: Materijali
Para este projeto vamos utilizar:
- uma placa Qualcomm Dragonboard 410c;
- biblioteca de processamento de imagem OpenCV (verzija 3.1);
- câmera que se comunique com a placa (usaremos na verdade um celular android com o aplikaciji IP Webcan);
- mobilno com sustav Android za aplikaciju;
Korak 2: Instalando OpenCV Na Dragonboard
Com linux instalado na placu, ako ste izvršili procesor padrões za instalaciju biblioteke obrade slike imagem - OpenCV - bez uređaja. Siga kao instruções deste link:
docs.opencv.org/3.0-beta/doc/tutorials/intr…
Korak 3: Spojite kameru na dragonboard
Precisamos conectar a câmera que serão os olhos do deficente com a placa de desenvolvimento Dragonboard 410c. Existem vários jeitos de fazer isso. Dragonboard ima mogućnost ulaska za flatcables, ou seja, é compatível com as câmeras usadas comumente em placas como a Raspberry pi.
Sljedeći projekt, optamos usar como camera um Moto G 3ª Geração com o aplikaciji IP web kamere (disponível na Google Playu) dopustite dozvolu za sliku koja se prenosi na wifi.
Abaixo um programa que faz aquisição simples da imagem usando a biblioteca opencv. O povezivanju nema parametra bez konstruktora za objekte VideoCapture je za IP na mobilnom uređaju (označeno bez primjene) + “/videofeed”. Na imagem acima, você encontra onde está o IP do seu celular.
Aquisição pode ser difícil nas versões anteriores a 3.1c opencv, caso você não tenha conseguido compilar. Se você conectar uma câmera pela entrada de câmeras da dragonboard basta colocar como parâmetro o valor zero ("0"), que označava que você quer procurar a câmera default.
Korak 4: Desenvolver softver za obradu slike Ima Que Toma Odluke
Há três programi em anexo, o identificadorDeObstáculos.cpp, o MostraContornoWebcam.cpp e o VídeoCadeiraSlavo.cpp (estes dois últimos para teste e entendimento da tecnica do software).
Objašnjenje: A ideia de identificação de obstáculo vem 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 zaključak que isso seja um contorno e portanto um imoo namesto cosmo nas deso como naso desto korak). Estando a câmera na barriga do usuário, levemente inclinada para o chão, conforme o usuário se locomove, o programu identifica a existência de um objeto (seja uma pessoa ou uma cadeira por exemplo) e manda o sinal de parada caso o objeto seja encontrado na região especificada (caminho do usuário) (vidi imagem do contorno da cadeira - caso o usuário se otprilike da cadeira haverá piksela 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 simpleficada, é needário um chão razoavelmente homogêneo, de forma que os detalhes do chão não sejam obzirrados 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.
Funkcijamento: 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. Idealmente manda-se comandos de voz de parada parada o usuário.
Obs: Altere o código de acordo para especificar de 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) komentira no início do programa.
Para sabre mais sobre bordas de Canny e limiarização, além de outros tópicos de visão computacional, recomenda-se procurar a documentação oficial da OpenCV.
Korak 5: Fazer Aplicativo Que Repassa As Informações Para O Deficiente Visual
Para reproduzir este projeto é needá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 mais 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 dados construido no data.sparkfun.com essa informação. O aplicativo faz uma consulting 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 é emitido um sinal de voz para o usuário parar. Se o caminho está livre o aplicativo emite um sinal para prosseguir continuamente.
Seguem em anexo as classes e Interfaces utilizadas para o projeto, que são explicadas a seguir:
GetJson: é iskorištava para fazer um ne dobiva banko de dados do data.sparkfun retornando um arquivo em formatira json za aplikaciju.
JsonDownloader: é onde geramos uma asynctask para de fato utilizarmos a classe GetJson, importância do uso desta classe é para não travarmos a interface do usuário e para isso precisamos criar uma thread diferente na applicação.
MainActivity: nesta classe implementamos a lógica da aplicação que continuamente consulting o banco de dados, e informacije o usuário por meio de um audio se ele precisa para ili o nastavljati caminhando.
RequestListener: ovo sučelje za korištenje koristi se za formatiranje MainActivity -a za određene značajke.
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.
Upozorenja: 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 rasporedu za primjenu konzistira de um único botão que funcionava com o método Napustite implementaciju na MainActivity, este método simplesmente forçava a aplicação za konzultacije bez banco de dados.
Qualquer dúvida aditional 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.
Korak 6: Sugestões De Continuação
Poderiamos integrar um system de localaização. Postoji Qualcomm iZat SDK koji je potreban za sustav za lokalizaciju u SAD -u GNSS, acelerômetro, magnetni entre outros, ja embutidos no próprio procesor Qualcomm Snapdragon (predstavljen na maioria dos celulares). No entanto, havia pouca documentação e needitava de testes mais demorados.
Também gostariamos de usar um sensor de distância ultrassonico, porém tivemos problemsmas quanto a comunicação com a Dragonboard, que poderia ser resovido com mais calma. Se tiver tempo, nabavite kao bibliotecas já presentes no kit de desenvolvimento, elas possuem diversos exemplos para cada tipo de sensor.
Nema razvojnih programera Qualcomm -a koji postoje i podučavaju već postojeće nastavnike na 96 -tabli bez you tube -a.
Preporučeni:
Desenvolvendo aplikacije za daljinsko upravljanje za Dragonboard 410c Usando IDE Eclipse: 17 koraka
Desenvolvendo Primjene Remotamente Para a Dragonboard 410c Usando IDE Eclipse: O objetivo deste documento é mostrar kao etapas need á rias para configurar o ambiente de desenvolvimento, de modo que o HostPC (Computador / Notebook), atrav é s do IDE Eclipse compile os c ó digos e exportto para alvo (Povucite
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 koraka
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: A inteligentna inteligencija nossa lixeira sastoji se od odvojenih &autikua; o autom á tica do lixo. Atrav é s uma web kamera, ela identifica o tipo de lixo e o depozita bez odjeljka adequado para posteriormente ser reciclado
Desenvolvendo Aplikacija Analize za Dragonboard 410c Com Linker Sprite Mezzanine: 6 koraka
Desenvolvendo Aplicações Analógicas Para Dragonboard 410c Com Linker Sprite Mezzanine: Essa publica ç ã o tem como objetivo mostrar os passos need á rios para desenvolver applica ç õ es anal ó eboard;
Otkrivanje objekata W/ Dragonboard 410c ili 820c pomoću OpenCV -a i Tensorflow .: 4 koraka
Object Detection W/ Dragonboard 410c ili 820c pomoću OpenCV -a i Tensorflow -a .: Ove upute opisuju kako instalirati OpenCV, Tensorflow i okvire strojnog učenja za Python 3.5 za pokretanje aplikacije Object Detection
Razvoj aplikacija pomoću GPIO pinova na DragonBoard 410c s operativnim sustavima Android i Linux: 6 koraka
Razvoj aplikacija pomoću GPIO pinova na DragonBoardu 410c s operacijskim sustavima Android i Linux: Svrha ovog vodiča je prikazati informacije potrebne za razvoj aplikacija pomoću GPIO pina na DragonBoard 410c proširenju male brzine. Ovaj vodič predstavlja informacije za razvoj aplikacija pomoću GPIO pinova sa SYS -om na Andr -u