Acties:
  • 0 Henk 'm!

  • FricoRico
  • Registratie: Oktober 2007
  • Laatst online: 14:57
Beste Tweakers,

Voor mijn afstuderen ben ik bezig met een ietwat complexe opstelling van meerdere Kinect V2's. Graag zou ik de coordinaten van de twee Kinects samenvoegen via een wiskundige formule. Aangezien de Kinects op verschillende locaties (hoeken) staan ten opzichten van een persoon is dit wat lastig.

De Kinects geven waardes terug die relatief zijn aan zichzelf. Zo is een Kinect dus het, (0,0,0), middelpunt. Het midden van het gezichtsveld is daarmee ook het middelpunt. Alles wat links van het middelpunt is, is dus X-, rechts X+. Hetzelfde geld voor de Y (hoogte). De diepte is het Z coördinaat.

Ik weet de hoek van de Kinect tov. de persoon in radialen te berekenen met de formule:

rad = tan-2(Lz / Lx, Rz / Rx)

Vanaf daar kan ik eventueel de hoek tussen beide Kinects berekenen. Hier een scenario tekening:

Afbeeldingslocatie: http://ricardoismy.name/ExampleTopDown.png

De vraag: Hoe ga ik nu verder vanaf hier? Ik heb van alles geprobeerd, maar het is me niet gelukt om een juist world-space coördinaat te bepalen. 8)7 Momenteel normaliseer ik de diepte op basis van de diepte waar de persoon staat aan het begin van de metingen. Dit mag ook gebeuren met de rotatie van de persoon tov de Kinect.

Ik heb de vraag ook hier gesteld.

Alvast heel erg bedankt voor het mee denken!

Acties:
  • +2 Henk 'm!

  • Sibylle
  • Registratie: Juli 2006
  • Laatst online: 13-07-2023
Coordinate Transformations moet je op zoeken, basale vector calculus.
http://www.continuummechanics.org/cm/coordxforms.html
http://ocw.mit.edu/course...tes/MIT16_07F09_Lec03.pdf
Wikipedia: Transformation matrix

Je moet sowieso de positie van de ene sensor ten opzichte van de andere weten, dus de locatie van de oorsprong en de orientatie (hoek).

Dan is het gewoon een kwestie van optellen:
Ga uit van 'world-space' coordinaten.
Sensor A staat in positie (0,0,0)worldspace in deze coordinaten (dus world-space = Sensor A coordinaten stelsel).
Sensor B staat bijv. in positie (XB,YB,ZB)worldspace met hoek 35graden zoals je boven hebt getekend.
Dan geldt:
(x,y,z)worldspace = (XB,YB,ZB)worldspace + (a,b,c)

a = xSensor B space*cos(35) + zSensor B space*sin(35)
b = ...
c = ...

Let op, het lijkt me lastig de sensoren perfect in één vlak te krijgen, dus normaal heb je twee hoeken die beschrijven hoe ze relatief ten opzichte van elkaar staan: 35graden voor de ene richting links-rechts en nog een hoek voor hoog-laag.

Als je zoekt op 'spherical coordinates transformation' dan krijg je vast de standaard matrices waarin je de coordinaten van (cetrum van) Sensor B invult + de twee hoeken, et voila!

Ctrl+k


  • FricoRico
  • Registratie: Oktober 2007
  • Laatst online: 14:57
Sibylle schreef op dinsdag 29 september 2015 @ 22:02:
...

Let op, het lijkt me lastig de sensoren perfect in één vlak te krijgen, dus normaal heb je twee hoeken die beschrijven hoe ze relatief ten opzichte van elkaar staan: 35graden voor de ene richting links-rechts en nog een hoek voor hoog-laag.

...
Bedankt voor je duidelijke uitleg Sibylle, ik ga hiermee aan de slag! Als je praat over 'één vlak', bedoel je dan de voorwaartse kanteling van de Kinects? Of bedoel je de hoogte waarop ze geplaatst zijn in verhouding tot elkaar? Beide hoeken kan ik berekenen en automatisch achterhalen.

Is het overigens belangrijk één Kinect op (0,0,0) staat bij het berekenen? Het lijkt mij van niet toch? Zolang ik maar weet hoe ze gepositioneerd zijn in relatie tot elkaar en de gebruiker. Toch?

  • Sibylle
  • Registratie: Juli 2006
  • Laatst online: 13-07-2023
Je kunt de oorsprong van de worldcoordinates kiezen waar je wilt, maar als je die kiest als de oorspong van één van de Kinect hoef je maar één transformatie toe te passen ;P
Maar als je eenmaal uitvogelt hoe dat werkt dan is dat ook minimale moeite, dus maakt inderdaad niet veel uit.

Zolang je weet wat de relatieve positie van de oorsprongen is en de orientatie (hier mee bedoel ik dus hoek 35graden + hoek ?? graden) dan weet je genoeg.

Ik denk dat deze een mooie is om mee te beginnen:
http://www.mathamazement....nsformation-matrices.html
http://web.iitd.ac.in/~hegde/cad/lecture/L6_3dtrans.pdf
http://www.cs.brandeis.edu/~cs155/Lecture_07_6.pdf

Het lijkt ingewikkeld in het begin, maar met wat oefening valt het wel mee.

Ctrl+k


Acties:
  • 0 Henk 'm!

  • FricoRico
  • Registratie: Oktober 2007
  • Laatst online: 14:57
Bedankt voor je hulp Sibylle, het is me na lang puzzelen eindelijk duidelijk geworden! Momenteel ben ik het geheel aan het programmeren. Op papier werkte de berekeningen in ieder geval.