Acompanhamento de rotação horizontal / vertical com o pi de framboesa
Com algum esforço, descobri que controlar dois servo motores para permitir que uma webcam faça panorâmicas / inclinações enquanto rastreia um rosto em tempo real usando o pi de framboesa não é tão impossível quanto pode parecer à primeira vista. Com alguns ajustes cuidadosos e otimização de código, fui capaz de permitir que o pi acompanhasse dois servos enquanto executava a detecção de rosto do OpenCV em 320 × 240 procurando um perfil direito, perfil esquerdo e face frontal e ajustando os servos mais rápido do que uma vez por segundo .
Etapa 1:Adquira o hardware.
Coisas necessárias:
A framboesa pi - Modelo A funcionará bem, eu tenho o Modelo B original que tem as mesmas especificações do novo Modelo A (rede negativa).
Um suporte de pan / tilt
Dois Servos
Um cabo de fita GPIO
Uma webcam compatível com Pi - usei um Logitech C210
Supondo que você já tenha um pi raspberry e uma webcam, o hardware adicional custará cerca de US $ 25
Etapa 2:prepare seu pi de framboesa.
Certifique-se de que está usando o Official RaspbianOS (a versão hard-float) e que ele está atualizado.
Você pode querer fazer um overclock do seu raspberry pi. Eu fiz a 800mhz. Quanto mais alto você for, mais rápido será o reconhecimento facial, mas menos estável pode ser o seu pi.
Instale o OpenCV para python:sudo apt-get install python-opencv
Obtenha o maravilhoso servoblaster servo driver para o raspberry pi de Richard Hirst:aqui
Você pode baixar todos os arquivos como um arquivo zip e extraí-los para uma pasta em algum lugar do pi.
Para instalar o driver servo blaster, abra um terminal e um CD no diretório onde você extraiu os arquivos servoblaster
execute o comando:make install_autostart
Você pode querer fazer com que o servobstrutor atinja o tempo limite e pare de enviar sinais ao servo após um segundo se ele não estiver sendo movido.
para fazer isso, adicione a seguinte linha a / etc / modules:servoblaster idle_timeout =1000
inicie o servoblaster com o seguinte comando:sudo modprobe servoblaster
A próxima tarefa é fazer com que a câmera funcione conforme o esperado:
Em primeiro lugar, muito obrigado a Gmoto por encontrar e apontar isso, foi a última parte do “pi” a fazer tudo funcionar perfeitamente; você tem que ajustar alguns parâmetros no módulo uvcvideo para fazer tudo funcionar bem.
Ou seja, execute estes comandos:
rmmod uvcvideo
modprobe uvcvideo nodrop =1 tempo limite =5000 peculiaridades =0x80
Você precisará executá-lo toda vez que reiniciar se planeja executar o programa de rastreamento de face ou, alternativamente, adicionar os parâmetros a / etc / modules como você fez com o ajuste de tempo limite do servoblaster.
Etapa 3:monte seu equipamento
Construa os suportes de panorâmica / inclinação de acordo com as instruções e prenda os servos.
Prenda sua câmera na parte superior do suporte (acabei de usar a fita) e conecte-a à porta pi usb do Raspberry.
Estava capaz de alimentá-lo sem um hub usb, mas você pode querer obter um hub usb alimentado e passar por ele.
Etapa 4:Conectando os servos
Servoblaster considera servo-0 como tudo o que está conectado ao GPIO 4 e servo-1 é tudo o que está conectado ao GPIO-17.
Os servos têm três fios, um é vermelho que é Vin / positivo, um é marrom ou preto que é terra / negativo e o outro é controle.
usando o cabo de fita (e no meu caso algum fio de conector preso nos orifícios) conecte o fio de controle de cada servo ao pino correto. O código assume que o servo-0 controlará o movimento da esquerda para a direita e o servo-1 controlará o movimento de cima para baixo da câmera; então conecte-os desta forma.
Agora, parece ser senso comum que o Vin para os servos viria dos pinos de 5v do GPIO e o terra para os servos viria dos pinos de terra do GPIO, mas isso não funcionou no meu caso porque usei um servo maior para a base. O servo grande puxou mais energia do que o pi estava disposto a fornecer. Eu fui, no entanto, capaz de alimentar meu servo de inclinação menor sem nenhum problema. Além disso, Richard Hirst, que fez o servoblastro, parece sugerir que ele pode conduzir vários pequenos servos com o GPIO 5v. Também descobri que existem alguns fusíveis em minha versão do pi que foram removidos posteriormente, relacionados a esses pinos de alimentação. Meu instinto me diz que você poderia alimentar dois servos menores com esses pinos em um pi mais novo. Se você não puder, isto é o que você terá que fazer:
Você precisará de algum tipo de fonte de alimentação externa que seja capaz de lidar com uma carga pesada de 5v-6v:usei a que está embutida em um arduino, mas qualquer fonte de energia de 5 volts deve servir; os servos são classificados para até 6v. O pino de 5v em uma fonte de alimentação de computador, um carregador de parede 5v-6v, algumas baterias em paralelo; Faça como quiser. Assim que tiver sua fonte externa, basta conectar as linhas positivas e negativas dos servos ao lado positivo e negativo de sua fonte de alimentação e, em seguida, conectar o aterramento (negativo) de sua fonte de alimentação externa a um pino de aterramento no GPIO do raspberry pi.
Etapa 5:execute o programa
Anexei o script python a este artigo, ele é chamado PiFace.py para executá-lo apenas em CD em seu local no terminal e digite:python PiFace.py
Aqui estão alguns vídeos meus em ação.
Para mais detalhes:Pan / Tilt face tracking com o raspberry pi
Processo de manufatura
- Ler a temperatura com DS18B20 | Raspberry Pi 2
- Monitoramento de temperatura no Raspberry Pi
- Medindo a temperatura com RASPBERRY PI
- Monitorando a temperatura com Raspberry Pi
- A integração dos dados do sensor com o microprocessador Raspberry Pi
- Sensor de rastreamento de linha com RPi
- Detecção de relâmpagos com um Raspberry Pi
- Rastreamento Raspberry Pi Ball
- Alarme de água Raspberry pi 2 com t sapateiro mais
- Acompanhamento de rotação horizontal / vertical com o pi de framboesa