Git Product home page Git Product logo

Comments (7)

gcmcnutt avatar gcmcnutt commented on August 23, 2024 1

sounds good -- we can make a little 3d render on that -- perhaps a separate alignment tab -- that moves with the settings -- then no additional manual needed. let's close this one and we can open another on improved board alignment setter or something similar.

from headtracker.

dlktdr avatar dlktdr commented on August 23, 2024

Second note: all rotations should be switched to quaternions, to prevent possible gimbal lock situations. A Euler->Quaternion converter can be shown in the GUI, but internally everything is quaternions.

from headtracker.

gcmcnutt avatar gcmcnutt commented on August 23, 2024

ok, for the first step, let's consider a new orientation -- how about this:

  • assume the board is a vehicle oriented like this:
    • with the board flat (flat on the table, components up)
    • and with the usb connector facing forward
  • then +x is 'forward', and roll right should be 'increase in ppm'
  • then +y is 'left' and tilt down should 'increase in ppm'
  • and +z is 'up', and pan left should 'increase in ppm'

then for orientation, an example:

if we install the board on the right side of DJI with connector facing back we would translate like this:

  • X -90 -- this rolls device with components facing DJI first
  • Y +170 -- this then flips the device around for the mount. note this isn't perfectly 180 as the side of the headset is slightly inward panned
  • Z 0 -- device is still horizontal

@dlktdr can you check my math here?

from headtracker.

dlktdr avatar dlktdr commented on August 23, 2024

With that reference frame which is ENU, here is what I come up with. All assuming we keep the same order of operations x-> y-> z

Red X
Green Y
Blue Z

Initial Orientation
image

After a X -90
image

After Y +170
image

I'm not sure but I don't think this was your intention?

from headtracker.

gcmcnutt avatar gcmcnutt commented on August 23, 2024

Ok, I see the difference -- in my case, I performed the xyz rotation according to the board axis, not a global axis. If this should be performed according to global, then does this look like the rotation?
x +90
y +180
z +10

from headtracker.

dlktdr avatar dlktdr commented on August 23, 2024

Ahh.. Yes those rotation values make sense.

from headtracker.

dlktdr avatar dlktdr commented on August 23, 2024

Been thinking about this, and after a bit of discussion on discord. I think we should keep with the current sensor orientation and labelling of the tilt, roll, pan outputs. As long as the frame stays right handed which is a must from IMU sensor, the board rotation option will take care of all mounting possibilities after that.

Both NED and ENU standards have the X axis pointing forward. As it's currently setup in the code/labelling Y points forward. If we follow the standard convention ENU or NED of a tilt/pitch is a rotation in X, then the standard Euler is only going to have a range of +/-90, which isn't ideal as @kobelev-tech brought up.

So I think the ideal situation is keep the current right handed orientation from the sensors, and the current labelling that Tilt is a rotation in X, Roll is a Rotation in Y and pan a Rotation in Z.

Might not be a standard, but can make a drawing and have something to reference if required. Also no code changes or new videos required :)

Eventually remove that pesky board orientation and have it rotate the IMU output with a few snapshots during calibration. e.g. Hold Level, push button, Look Up push button, Look Down, push button. From which we can determine the world frame from, Or (Hold Level, Look Left, Look Right) This is actually completed in Pauls code #124, just needs to be implemented in the GUI and tested.

from headtracker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.