Este modo foi projetado para configurações que não utilizam um sinal de clock externo.Você utilizará uma câmera no modo leader (emitindo um sinal de sincronização) e todas as demais câmeras no modo follower.
Guia de firmware Leader/Follower
Clique aqui para ver nosso guia sobre como alternar sua câmera entre os modos Leader e Follower.
Este modo foi projetado para configurações usando um sinal de clock externo para gerar o sinal de sincronização para todas as câmeras.Neste modo, todas as câmeras devem estar configuradas no modo follower.
Guia de firmware Leader/Follower
Clique aqui para ver nosso guia sobre como alternar sua câmera entre os modos Leader e Follower.
Importe a biblioteca .ZIP baixada no seu Arduino IDE.
3
Faça o upload do sketch
Faça o upload de um dos dois sketches abaixo para o seu Arduino.
Controle simples: A maneira mais rápida de começar, mas requer reprogramar o firmware para ajustar o FPS.
Controle via serial: Permite ajustar frequência e ciclo de trabalho em tempo real sem reprogramar (as configurações serão reiniciadas se o dispositivo perder energia).
Controle simples
Comandos seriais
#include <PWM.h>// Pin configurationint pin = 9; // Pinint value = 127; // Initial value for the PWM duty cycle// SET FREQUENCY HEREfloat frequency = 60; // Initial frequency in Hzvoid setup(){ // Initialize all timers except for timer0 to save timekeeping tasks InitTimersSafe(); // Set the initial PWM frequency and duty cycle if (SetPinFrequencySafe(pin, frequency)) { pwmWrite(pin, value); Serial.println("PWM frequency and initial duty cycle set."); } else { Serial.println("Failed to set frequency."); }}
#include <PWM.h>// Pin configurationint pin = 9; // Pinint value = 127; // Initial value for the PWM duty cyclefloat frequency = 60; // Initial frequency in Hzvoid setup(){ Serial.begin(9600); // Initialize all timers except for timer0 to save timekeeping tasks InitTimersSafe(); // Set the initial PWM frequency and duty cycle if (SetPinFrequencySafe(pin, frequency)) { pwmWrite(pin, value); Serial.println("PWM frequency and initial duty cycle set."); } else { Serial.println("Failed to set frequency."); }}void loop(){ if (Serial.available()) { // Read frequency and duty cycle values over Serial String inputString = Serial.readStringUntil('\n'); inputString.trim(); int freqDutySplitIndex = inputString.indexOf(','); if (freqDutySplitIndex != -1) { String freqStr = inputString.substring(0, freqDutySplitIndex); String dutyStr = inputString.substring(freqDutySplitIndex + 1); // Parse floats float newFrequency = freqStr.toFloat(); int newDutyCycle = dutyStr.toInt(); // Validate frequency range if (newFrequency >= 1 && newFrequency <= 2000000) { // Set the PWM frequency and apply duty cycle if (SetPinFrequencySafe(pin, newFrequency)) { value = map(constrain(newDutyCycle, 0, 100), 0, 100, 0, 255); pwmWrite(pin, value); Serial.print("Set frequency to: "); Serial.print(newFrequency); Serial.print(" Hz, duty cycle to: "); Serial.print(newDutyCycle); Serial.println("%"); } else { Serial.println("Failed to set new frequency."); } } else { Serial.println("Invalid frequency value."); } } else { Serial.println("Invalid input format. Use frequency,dutycycle (e.g., 60,50)."); } }}
Este código permite modificar o sinal PWM em tempo real. Abra o monitor serial em 9600 baud e envie comandos usando o formato {FREQUENCY},{DUTY_CYCLE} (por exemplo, 60,50 para 60Hz com ciclo de trabalho de 50%).
Além do nosso SDK que está por vir, atualmente fornecemos um processo simples em Python para capturar quadros sincronizados de suas configurações de câmera. (Observação: Isso pode ser descontinuado em favor do SDK completo no futuro.)
Biblioteca Python de vídeo sincronizado
Siga nosso guia no GitHub para instalar e usar nossa biblioteca Python personalizada para Linux.
Identifique os IDs de dispositivo das duas câmeras que deseja usar, depois selecione um número de ID de dispositivo que não esteja listado atualmente.Neste exemplo, usaremos 9 (já que não está sendo usado acima) para criar um dispositivo virtual chamado stellarHD_stitched. Atualize o 9 no comando abaixo para corresponder ao ID não usado que você escolher:
Você deve manter este comando em execução enquanto usa os vídeos sincronizados e mesclados. Você pode modificar este comando para adicionar mais câmeras, alterar resoluções/taxas de quadros ou modificar o layout.
5
Use o dispositivo virtual no OpenCV
Código inicial OpenCV
Siga nosso código de exemplo para usar /dev/video9 no OpenCV.
6
Remova o dispositivo de loopback
Para remover com segurança o dispositivo de loopback, você pode reiniciar o computador ou executar a seguinte sequência de comandos:1. Identifique os programas que estão usando o dispositivo de loopback:
sudo lsof /dev/video*
2. Encerre os processos usando seus números de PID (Process ID):