Índice:
- Etapa 1: Coisas que você precisa
- Etapa 2: obtenha o Rapsberry Pi para capturar um vídeo ao vivo e compartilhá-lo
- Etapa 3: torne-o portátil: corte e montagem a laser
- Etapa 4: Visualize a imagem estéreo
- Etapa 5: suavizar as coisas
- Etapa 6: aproveite
Vídeo: Experiência fora do corpo digital DIY: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Neste tutorial, você aprenderá como construir um sistema que permite ver como se estivesse em outro lugar. Chamei isso de experiência extracorpórea digital porque a primeira vez que pensei nesse sistema foi quando estava praticando ioga e achei que seria muito interessante praticar enquanto me via com visão de pessoa em 3D, como em alguns videogames. Eventualmente, também pensei que poderia ser um recurso interessante para meditar sobre o não-eu, observando-me de fora, como uma ferramenta para me ajudar a me distanciar e simplesmente observar meus pensamentos, emoções e sentimentos. Mas o iogue iniciante e meditador em mim não eram as pessoas certas para me empolgar com este projeto. Eventualmente, é o jogador / jogador que eu sou que pensou que este projeto seria um bom passo incremental rumo à construção de um robô móvel controlado através da visão em primeira pessoa para fazer algum tipo de corrida em primeira pessoa do robô móvel!
Etapa 1: Coisas que você precisa
- 2xRaspberry Pi 3 modelo B cada um equipado com uma câmera e um cabo medindo (15cm e 30cm)
- Uma blindagem de bateria, 2 baterias e um cabo USB para 2xmini-USB para conectar ao Raspberry (usei uma blindagem de bateria dupla 10650 com saída USB, 2 baterias LiiitoKala Lii-35A 18650 e este cabo)
- Pedaço de 240x140x5mm de madeira MDF (ou qualquer outra madeira compatível com cortador a laser)
- Acesso a um cortador a laser
- Parafusos M2 e parafusos
- Um computador com python
- Um smartphone com cromo
- Um Google Cardboard ou qualquer sistema que permite que você obtenha experiência de RV do seu telefone (eu tenho o ednet Virtual Reality Brille que é compatível com telefone de dimensões de até 159,2 mm x 75,2 mm pelo que li)
Etapa 2: obtenha o Rapsberry Pi para capturar um vídeo ao vivo e compartilhá-lo
Primeiro, vamos ter certeza de que nossa câmera Pi está conectada ao Raspberry Pi. Feito ? Essa foi a parte de hardware para esta etapa. Vamos continuar com a parte do software.
Quanto ao soft, se você está no meu caso e não tem nenhum SO instalado no seu PI e não tem teclado, mouse e tela sobressalentes, então vamos baixar o raspbian lite aqui e seguir os passos simples descritos aqui: https://www.taygan.co/blog/2018/03/08/setup-a-rasp… Se tudo deu certo, seu Pi agora está conectado ao seu WIFI, você sabe o endereço IP e está conectado a ele por meio de ssh.
Usando ssh, vamos fazer o Pi compartilhar o que vê. Para isso, usaremos UV4L. Para isso, siga as etapas na seguinte página: https://raspberry-valley.azurewebsites.net/UV4L/. Se você concluiu a configuração do UV4L conforme descrito no link, agora você deve ser capaz de ver o vídeo ao vivo do seu framboesa em seu computador. Para isso basta acessar seu navegador no endereço https:// raspberryip: 8080 / stream, substituindo "raspberryip" pelo ip do raspberry pi que você encontrou no lanScan.
Agora é isso para um de nossos dois "olhos". E o outro? Ou repetimos o mesmo processo, ou clonamos o que está em nosso pi de framboesa em outro cartão SD. Para saber mais sobre a segunda opção, você pode verificar este github:
E pronto, agora você deve ter seus dois framboesas compartilhando sua transmissão de vídeo ao vivo na rede local! Pegamos nossos olhos funcionando, agora vamos resolver esse pequeno problema de estrabismo e vamos deixar nosso pequeno sistema portátil!
Etapa 3: torne-o portátil: corte e montagem a laser
Para tornar o sistema de câmeras portátil, projetei uma estrutura de madeira na qual posso aparafusar o Pis de framboesa às câmeras e ao escudo da bateria. O projetado está anexado aqui como um arquivo svg. Você pode ter que modificar as posições dos parafusos para a proteção da bateria dependendo da sua proteção e / ou do design dependendo da espessura da sua madeira.
Depois de cortar tudo:
- Monte as câmeras na parte esquerda do desenho (8 parafusos M2 de 5 mm, 8 parafusos M2 de 8 mm e 8 parafusos de 8 mm)
- Monte a proteção da bateria (4 parafusos M2 de 5 mm, 4 parafusos M2 de 8 mm e 4 parafusos de 8 mm)
- Monte o "cluster" raspberry pi conforme mostrado na imagem acima (4 parafusos M2 de 5 mm, 4 parafusos M2 de 8 mm, 4 parafusos macho-fêmea de 5 mm ou mais, 4 parafusos de 21 mm). Nota: Eu não tinha parafusos de 21 mm, então fiz os meus com 16 parafusos e 5 parafusos fêmea-macho.
Atenção: os comprimentos dos parafusos aqui definidos podem ser alterados, apenas certifique-se de que a distância entre o Pis de framboesa é grande o suficiente para não entrar em curto-circuito…
Carregue suas baterias de lítio usando o conector mini-usb de proteção da bateria e monte a peça de madeira como mostrado na imagem acima. Você está pronto para conectar a proteção da bateria às framboesas! E não é mais necessário ssh-ing, assim que ligamos o raspberry pi, ele agora compartilha o stream de vídeo online assim que começa, graças ao UV4L. Transmissão encerrada!
Etapa 4: Visualize a imagem estéreo
Agora que temos dois fluxos de imagens que podem ser acessados pela rede local, vimos que podemos visualizá-los individualmente usando o endereço https:// raspberryip {1, 2} / stream / em um navegador. Podemos, portanto, tentar abrir duas páginas em nosso navegador? Não, não devemos! 1. Isso seria muito feio, venha 2. isso não funcionaria, pois a tela iria dormir depois de algum tempo! Esta etapa mostrará como resolver esses problemas.
Primeiro, vamos ver o que está por trás do endereço usado antes. Se você verificar o código html da página aberta, verá que o fluxo mostrado na página consiste em um
tag com a fonte definida como https://raspberryip/stream/video.mjpeg. Como resultado, a última etapa pode ser bastante simples. Uma maneira poderia ser programar um aplicativo Android com dois Webviews para mostrar o fluxo de imagem, uma muito mais simples é executar um servidor local em nosso computador que servirá uma página html semelhante a "https:// raspberryip / stream /", exceto que permitirá que você visualize os dois fluxos em vez de um e mantenha o dispositivo ativo.
Como configuramos esse servidor? Nada mais simples com python. Crie uma pasta na qual você colocará os arquivos index.txt e NoSleep.txt que você renomeará como index.html e NoSleep.js. Em index.html, procure os dois
tags e substitua os ips de framboesa pelos seus. Esta será a página html que mostra nossos dois fluxos de imagens com o javascript, permitindo que permaneçam ativos. Agora você deseja tornar esta página acessível ao seu celular, onde o python fica útil: coloque o arquivo server.py na mesma pasta e inicie o script usando o comando python server.py (observe que este script é compatível com python 3, se você usar o python 2, terá que editar server.py e substituir socketserver por SocketServer).
É isso que você pode acessar o stream estéreo de qualquer dispositivo com um navegador conectado à sua rede local. Experimente, pegue o ip do seu computador e abra https:// computerip: 8080. Você provavelmente pode notar três coisas:
- É ótimo estar quase lá!
- Não está em tela cheia,
- Ele vai dormir eventualmente.
Por quê ? Como você pode ler aqui, a função para ativar o modo sem suspensão precisa que uma ação fictícia seja chamada. Para respeitar esta necessidade associei um clique na primeira imagem a esta função. Como resultado, basta clicar na primeira imagem e você verá um alerta informando que o no-sleep está ativado e a página também deve estar em tela inteira.
É isso! Agora você deve conseguir colocar o telefone no fone de ouvido de RV e ver o que está acontecendo na frente do seu Pi! Ou é só isso?
Etapa 5: suavizar as coisas
Na verdade, se seus Pi's e rede forem semelhantes aos meus, o que você vê em seu fone de ouvido pode ser um pouco estranho, pois pode haver grandes atrasos. Então, para realmente terminar com um sistema tranquilo, vamos resolver este último problema. Como resolver o atraso? Eu simplesmente imaginei que o problema poderia vir ou da compressão em tempo real pelos Pi's, que é computacionalmente intensivo, ou da conexão sem fio, o que eu duvido. De qualquer forma, para resolver você pode fazer algo muito simples que é reduzir a resolução e a taxa de bits com que suas imagens são adquiridas e codificadas nos Pi's.
Para alterar esses parâmetros, volte ao seu terminal e faça logon no seu Raspberry Pi. UV4L usa um arquivo de configuração. Este arquivo é /etc/uv4l/uv4l-raspicam.conf. Para editá-lo digite o comando sudo nano /etc/uv4l/uv4l-raspicam.conf. Agora você poderá definir a largura, altura e quantização como desejar. Usei os valores largura = 320, altura = 240 e quantização = 40 e obtive uma transmissão suave com eles.
Etapa 6: aproveite
A única coisa que resta a fazer agora é configurar o sistema onde você quiser, colocar o telefone no papelão e fazer sua sessão de ioga, meditação, beer pong com seus amigos ou o que quer que seja! Você pode precisar de algum tempo (1 ou 2 minutos) para se acostumar com a direção da câmera, o que vai parecer a princípio que você tem um problema de estrabismo. Uma maneira de me acostumar com isso rapidamente é primeiro focar em objetos próximos e depois passar para outros.
Pensei em algumas extensões que poderiam ser interessantes:
- possibilite ver fora de sua casa, isto é, torne o stream acessível de fora de sua rede local.
- coloque-o em uma plataforma robótica móvel para fazer corridas de drones!
Como professor, acho que este projeto pode ser interessante para aprender mais sobre:
- O Raspberry Pi, quais são os componentes básicos de um computador, o que é um sistema operacional,
- Conceitos gerais de rede, com IP local e externo, o protocolo
- HTML e javascript.
Espero que este instrutível, que foi o meu primeiro, esteja suficientemente claro, sem ser muito pesado para ler.
Recomendado:
Extensão da Web do Chrome - Nenhuma experiência anterior de codificação necessária: 6 etapas
Chrome Web Extension - Nenhuma experiência anterior de codificação é necessária: as extensões do Chrome são pequenos programas desenvolvidos para aprimorar a experiência de navegação do usuário. Para obter mais informações sobre as extensões do Chrome, vá para https://developer.chrome.com/extensions.Para fazer uma extensão da Web do Chrome, a codificação é necessária, por isso é muito útil revisar o HT
Experiência de cromatografia em papel / UV-Vis com Arduino: 10 etapas
Experimento de cromatografia em papel / UV-Vis com Arduino: Este experimento usa um microprocessador Arduino, junto com utensílios domésticos, para realizar um experimento de cromatografia em papel e analisar os resultados usando uma técnica semelhante à espectroscopia ultravioleta-visível (UV-Vis). Este experimento tem como objetivo responder
Chapéu, não chapéu - um chapéu para pessoas que realmente não usam chapéus, mas gostariam de ter um chapéu Experiência: 8 etapas
Chapéu, não chapéu - um chapéu para pessoas que realmente não usam chapéus, mas gostariam de ter um chapéu Experiência: Sempre desejei ser uma pessoa que gostava de chapéus, mas nunca encontrei um chapéu que funcionasse para mim. Este " Chapéu, não chapéu " ou fascinator, como é chamado, é uma solução crocante para o meu problema de chapéu em que eu poderia participar do Kentucky Derby, vacu
Experiência de ônibus aprimorada para pessoas com deficiência visual com Arduino e impressão 3D: 7 etapas
Experiência de ônibus aprimorada para pessoas com deficiência visual com Arduino e impressão 3D: como o transporte público pode ser simplificado para pessoas com deficiência visual? Dados em tempo real nos serviços de mapas geralmente não são confiáveis durante o uso de transporte público. pessoas com deficiência visual. T
Corpo em escala Bell Jetranger para Silverlit PicooZ Micro-RC-Helicopter: 4 etapas
Corpo em escala Bell Jetranger para Silverlit PicooZ Micro-RC-Helicopter: Converta seu PicooZ de aparência de brinquedo em uma escala Bell 206 Jetranger ou quase qualquer outro helicóptero de rotor único. Comprei um heli de 3 canais, então este estava pronto para experimentar. se você deseja criar uma estrutura única para o seu PicooZ, seu