ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Extrinsics.conf Rotation and Translation Clarification Voxl

    Ask your questions right here!
    2
    4
    362
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jamiek
      last edited by jamiek

      Hi!

      I'm currently working on configuring a custom drone and need to configure the cameras and body to be in the right location with respect to the imu's. The configure extrinsics doc found here is a little confusing. I have two questions.

      First, Translations:

      "The Translation vector should represent the center of the child coordinate frame with respect to the parent coordinate frame in units of meters."

      This line is a little confusing. Should the translation be in terms of the child or the parents coordinate frame?

      Translation.png
      (parent:A child:B)

      Following a normal homogenous transformation matrix, the translation is in terms of the child's coordinate frame (as above where l is the x translation in terms of the child), is this correct? (my inclination is no in this case)

      Also is it the translation from the center of the parent to the child or the other way around (l vs negative l)?

      Second imu1 and imu0 Confusion and Subsequent Transformations:

      The imu1 and imu0 default extrinsics are noted as not correct but I am still confused

      "RPY_parent_to_child":	[0, 0, 0]
      

      from

      "extrinsics":	[{
      			"parent":	"imu1",
      			"child":	"imu0",
      			"T_child_wrt_parent":	[-0.0484, 0.037, 0.002],
      			"RPY_parent_to_child":	[0, 0, 0]
      		}
      

      Even though it is clear from the diagram that imu1 and imu0 do not share a common frame

      voxl-core-imu-locations-small.jpg

      The docs seems to address this by saying:

      "NOTE that voxl-imu-server rotates the IMU data into a common and more useful orientation such that both IMU’s appear to be oriented in FRD frame for the VOXL M500, flight deck, and Starling reference platforms. In the top image of the diagram above, this corresponds to X pointing Left, Y pointing to the right, and Z pointing out of the diagram. This conveniently allows the rotation matrix between IMU and body frame to be identity for most use cases."

      So my question is, why is the imu1-imu0 transformation setting even there if it is a constant, and to which imu should I orient all of my cameras? Which frame is that?

      Any help would be much appreciated transformation matrices can get quite tricky at times! 😅

      Best,
      Jamie

      J 1 Reply Last reply Reply Quote 0
      • J
        jamiek @jamiek
        last edited by

        @jamiek Also, documentation for the coordinate frames of the voxl cameras would be super helpful. I know z axis goes out of the lens, but what about that other axes?)

        1 Reply Last reply Reply Quote 0
        • J
          jamiek
          last edited by

          Take this post skeptically

          Through a lot of trial and error I was able to answer most of what I was curious about.

          1. Translation seems to be from parents frame center to child center. So if the child center is 10mm away from the parent in the x direction. You use the parents frame to travel 10mm along the x axis. Then a rotation is applied. This is NOT like the picture I posted

          2. In terms of the frames for imu0 and imu1 it is best to ignore the diagrams above. I worked backwards from

          "extrinsics":	[{
          			"parent":	"imu1",
          			"child":	"imu0",
          			"T_child_wrt_parent":	[-0.0484, 0.037, 0.002],
          			"RPY_parent_to_child":	[0, 0, 0]
          		}
          

          more specifically

          "T_child_wrt_parent":	[-0.0484, 0.037, 0.002],
          

          Facing imu1, with it in the Bottom Left, Its coordinate frame looks like
          Screen Shot 2022-09-01 at 4.36.43 PM.png

          X: Left
          Y: Up
          Z: Backwards (into the Board)

          This is only after whatever voxl-imu-server does I suppose.

          imu0 should be in the same coordinate frame, but remember the picture is flipped!

          Take this lightly. If any of this is wrong, someone let me know. 🙇

          1 Reply Last reply Reply Quote 0
          • James StrawsonJ
            James Strawson ModalAI Team
            last edited by

            I've updated the docs page with some clarifications and new diagrams that I think address all of your questions. Please let me know if this helps:

            https://docs.modalai.com/configure-extrinsics/

            Best,
            James

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Powered by NodeBB | Contributors