Parece que seu problema se presta muito bem ao uso de um esquema CDMA .
Vamos começar com algumas propriedades do CDMA (DSSS). (Espectro de propagação de sequência direta, acesso múltiplo por divisão de código). É um bocado, mas é realmente fácil de implementar.
No CDMA, seu pulso (na banda base) é realmente composto de muitos ' chips ' concatenados , como são chamados. As fichas são apenas 1s ou -1s, com duração fixa. Por exemplo, sua sequência de chipping pode ser [1 -1 1 -1 -1 -1 1]. Você usaria essa sequência de lascas para modular sua operadora.
No entanto, você não pode apenas inventar seu código de chip. O que você quer fazer é usar códigos de lascamento que possuam uma propriedade muito boa, que sua função de autocorrelação seja uma função delta da seguinte forma:
(Equivalentemente, sua densidade espectral de potência é branca). Por exemplo, você pode usar o Barker Sequences como seu código de chip (normalmente usado em radar) ou também usar códigos de ouro . Na prática, no entanto, isso significa que você obtém a pontuação máxima de correlação no seu receptor, SOMENTE quando o código do receptor está alinhado exatamente com o código transmitido e, caso contrário , zero .
Como isso te ajuda? No seu receptor, você estaria executando um correlacionador continuamente. O correlacionador estaria executando um produto escalar em execução com seu próprio código local, com o que quer que seja recebido. Agora imagine que você recebe uma forma de onda transmitida da caneta e uma segunda forma de onda de um reflexo. À medida que o correlacionador de seus receptores for executado, ele atingirá um pico quando sua própria palavra de código se alinha exatamente com o código da caneta. Isso fará com que o seu detector 'trave' nesse valor de atraso específico. Agora, aqui é onde você colhe os benefícios de uma função de autocorrelação quase delta do seu código: O sinal refletido também estará presente e também terá seu produto escalar obtido com o código bloqueado dos receptores, mas dará zero, ou quase zero, por ser ortogonalou quase ortogonal ao código atrasado em que o seu receptor já travou.
Por outro lado, se você enviasse um pulso portador não codificado, estaria à mercê de interferências construtivas ou destrutivas que disparariam quando exatamente seu pulso atingisse o nível de detector do seu receptor e, portanto, obteria TDOAs errôneos.