Voor de show van WITT in de AB Club had PXL-Music Research een prototype voor automatische positietracking uitgewerkt. Bij het eerste nummer zou frontvrouw Tine Theré door de zaal bewegen – tussen het publiek – en wilden we die beweging volgen in het immersive 3D-geluidsveld.
Door technische problemen bij het integreren van video in de audio-omgeving, was er onvoldoende tijd om het prototype in de zaal te testen voor de show. Daarom is beslist om een heel simpele manuele tracking te voorzien, waar via een tablet of via de muis op een computer de beweging door een persoon gevolgd wordt. We geven je inzicht in hoe we beide versies hebben geïntegreerd.
Automatische tracking
Er zijn een aantal trackingsystemen die al integreren in immersive engines. Zo is er CAST Software BlackTrax, TTA Stagetracker II, Modulo Pi Modulo Kinetic, ZacTracks, enzovoort.
Deze systemen werken zeer goed, maar zijn voor artiesten met weinig budget onbetaalbaar. We zitten al snel rond de 50.000 euro voor een volledig tracking systeem. Dus we wilden kijken of we heel laagdrempelig een prototype konden uitwerken om 1 persoon te tracken.
We zochten eigenlijk naar een zo accuraat mogelijke oplossing die we goedkoop via microcontrollers konden uitbouwen. Gezien we verre van experts in draadloze communicatie zijn, was een beperkt budget de meest doorwegende factor. Lukte het niet, dan zouden we er niet teveel geld aan gespendeerd hebben.
Het Ultra Wideband (UWB) protocol kwam uit de bus als beste oplossing met weinig budget. UWB is een draadloos protocol waarbij toestellen rondom zich op zoek gaan naar andere toestellen (ranging). UWB is de basis achter producten als Apple Airtags, en sommige trackingsystemen zoals ZacTracks gebruiken het ook.
Het grote voordeel van UWB tegenover andere protocollen als Bluetooth is dat UWB accuraat kan zijn tot op 10-30cm. Dat is perfect voor tracking.
Er waren oplossingen zoals de Makerfabs ESP32 UWB DW3000 microcontroller, maar die werden verzonden van buiten de EU. We hebben uiteindelijk gekozen voor de Qorvo DWM3001CDK, zo’n 32 euro. We kozen 4 van de controllers, 3 die als vaste eikpunten (anchors) gebruikt werden om de positie van een vrij bewegende vierde, de tag, te kunnen kiezen. De eikpunten verbonden via USB aan een computer, de tag kon vrij bewegen dankzij een powerbank.
Positiebepaling
Om met zekerheid een positie in 2 dimensies (lengte en breedte, x/y) te kunnen bepalen, heb je 3 eikpunten nodig. Bij 2 eikpunten bestaan er voor een tag 2 posities die exact op dezelfde afstand liggen van die 2 eikpunten. Denk aan een venn-diagram, waar 2 cirkel ook altijd op 2 punten kruisen.
De theorie van driehoeksmeetkunde – triangulation, zoals een GPS doet – is eigenlijk best simpel:
- Je krijgt van elk van de eikpunten een afstand ten opzichte van de tag
- Je tekent dan 3 cirkels met als middelpunt het eikpunt en als straal de afstand tot de tag.
- Er zal 1 punt zijn waarop de 3 cirkels kruisen, daar ligt het coördinaat van de tag.
In dit geval moeten de 3 eikpunten een driehoekspositie aannemen en moeten de afstanden exact juist zijn.
De DWM3001CDK geeft via Two-Way Ranging (TWR) een afstand in cm, maar doordat de nauwkeurigheid beperkt is tot 10-30 cm zal die afstand nooit exact juist zijn. In de praktijk zal je daarom zelden een punt kunnen berekenen met de 3 afstanden die je krijgt.
Dus het vereist een aangepast algoritme:
- We nemen 2 eikpunten (A0 en A1) en bepalen op basis van hun data de positie van de tag. Er zijn dan 2 mogelijkheden, namelijk waar de cirkels overlappen: T en T’.
- We berekenen dan hoe ver T en T’ van het derde eikpunt (A2) liggen. Dat vergelijken we met de echte afstand van de tag, zoals gemeten door A2. De positie waarbij het verschil met de echte afstand het kleinst is, is de juiste.
Nu we een éénduidige positie voor onze tag hebben, moeten we enkel nog die data uitsturen naar de immersive engine Flux:: SPAT Revolution. Daarvoor moeten we een fysieke beweegruimte voor de tag bepalen die overeenkomt met de virtuele ruimte waarin we onze audiobronnen positioneren. Kortweg: het gebied dat van links naar rechts en voor tot achter dat overeenkomt met die uitersten in SPAT. Via Open Sound Control berichten stellen we dan de postie in. (Lees meer over OSC in Open Sound Control als brug tussen audio- en gamewereld)
Werkpunten
Gezien we geen experts in telecommunicatie zijn, botsten we op limieten in de nauwkeurigheid van de data. We zijn momenteel niet in staat om de antennes van de eikpunten nauwkeuriger af te stellen om de foutmarge op de afstanden te kunnen minimaliseren.
Er is sowieso een marge van correctie nodig in dit soort toepassingen, die we ook toepassen. Om uitlopers te vermijden nemen we een gemiddelde van de laatste paar afstanden per eikpunt voor het bepalen van een nieuwe positie. Dat is geen probleem als de frequentie van positiebepaling hoog genoeg is. Uitzonderlijke randgevallen in de berekening zijn ook bepaald en aangepakt.
Maar toch zal soms voor een seconde verkeerd zijn. We hopen in de toekomst nog wat verdere verfijningen te kunnen toepassen en de technologie te kunnen testen in een zaal met een publiek, die mogelijks ook UWB in hun gsm of Airtags hebben zitten. Spannend!
Manuele tracking
In Flux:: SPAT Revolution wordt het virtueel 3D-geluidsveld bolvormig voorgesteld (sferisch).
Gezien hoogte voor positietracking niet echt belangrijk is, wilden we enkel posities in 2 dimensies volgen – een cirkel dus. We moesten enkel een gemakkelijke manier vinden om een object binnen een cirkel te bewegen en die positie door te sturen naar SPAT.
Gezien SPAT positiedata via Open Sound Control als brug tussen audio- en gamewereld|Open Sound Control kan binnenkrijgen, keken we al snel naar TouchOSC waar we een simpel controlepaneeltje maakten. We maakten daarin een XY-object, schaalden het naar het coördinaatsysteem van SPAT en stuurden bij beweging OSC-berichten uit volgens het formaat van SPAT.
Een XY-object is standaard een vierkant, maar we hebben simpelweg het object transparant gemaakt en een cirkel als achtergrond gebruikt. Die cirkel hebben we zorgvuldig in grootte afgesteld zodat de uiteinden van de cirkel overeenkwamen met die in SPAT. Op een klein uurtje hadden we een enorm nauwkeurige manier om manueel 1 object naar keuze te bewegen.
Tenslotte moesten we tijdens de soundcheck oefenen om de beweging vlot en accuraat te krijgen. We moesten de balans vinden tussen overdrijven om het duidelijk te laten overkomen en accuraat zijn.