Point in Coordinate System A, how to find its location in Coordinate System B?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












SHORTEST POSSIBLE WAY TO ASK MY QUESTION (edit)



I have a 3D point (x,y,z) and two coordinate systems. The rotation and translation between the coordinate systems is known, as I have a quaternion which gives the rotation from Coordinate System A to Coordinate System B. I know the location of the point (x,y,z) in terms of Coordinate System B, and I need to know its location (x',y',z') in terms of Coordinate System A. How can I do this?



See below for more information about the problem.



The problem



I'm working with a laser rangefinder and a GPS and trying to use coordinate transformations to figure out the Earth-Centered Earth-Fixed (ECEF) location of the "point in question" (by which I mean the point that the rangefinder "sees"). The endgame is LiDAR-related, but I'll go on to explain the question in a way that doesn't require LiDAR knowledge.



The rangefinder and the GPS are connected, sharing a common z-axis (positive z direction is down). The rangefinder rotates about the shared z-axis, and its azimuth (angle representing the rangefinder's rotation about the z-axis with respect to the positive x-axis of the gps, otherwise known as the rangefinder's "home" position) is known at all times. The distance from the rangefinder to the "point in question" is also known at all times.



The GPS can rotate and translate freely over time (endgame - it's attached to a drone), and its latitude, longitude and altitude are known at all times, as well as its rotation with respect to the local North-East-Down (NED) coordinate system. I can get this rotation information from the GPS as Roll, Pitch and Yaw or in the form of a quaternion. I'm relatively new to the world of quaternions, but by my understanding, using quaternions is better for this application.



I want to take my information about the range and azimuth of the "point in question" with respect to the GPS and use what I know about the position and rotation of the GPS in order to find the xyz ECEF location of the "point in question".



In short...



I have a vector constructed from azimuth and range information, with respect to a local coordinate system. I would like to take this information, along with information about the translation and rotation from the global to local coordinate systems, to find the xyz position of the "point in question" (the tip of the vector?) in terms of my global coordinate system.



How can I take this vector with respect to a local coordinate system and use the information relating the local coordinate system to the global coordinate system in order to find my point's location in the global coordinate system?



What I have tried



I have tried making a "pure" quaternion out of my vector representing the "point in question" with respect to the rangefinder, then rotating this vector by the quaternion indicating the rotation of the GPS with respect to NED, and then translating from NED to ECEF using some equations I know to be correct. This did not work, but it seemed like it could be on the right track.



My "pure" quaternion is my rangefinder vector, with an added zero at the front. My quaternion standard is $w+xi+yj+zk$. My method of rotating my vector by my quaternion is:



$$v' = q'vq$$



Where $v'$ is my translated vector (a "pure" quaternion), $q'$ is the inverse of my quaternion, $v$ is my original vector ("pure" quaternion), and $q$ is my original quaternion.



Let me know if I can make any of this clearer or if there is information I left out. I appreciate any responses that may point me in the right direction.







share|cite|improve this question





















  • I don't understand. What is your question? The text is full of unnecessary details. Could you provide a clean question?
    – Mauricio Cele Lopez Belon
    Jul 23 at 20:56










  • How can I take a 3d point whose position is known in reference to coordinate system A and use the quaternion relating coordinate system A to coordinate system B in order to find the vector's coordinates in coordinate system B?
    – Sarah Strand
    Jul 24 at 16:34














up vote
0
down vote

favorite












SHORTEST POSSIBLE WAY TO ASK MY QUESTION (edit)



I have a 3D point (x,y,z) and two coordinate systems. The rotation and translation between the coordinate systems is known, as I have a quaternion which gives the rotation from Coordinate System A to Coordinate System B. I know the location of the point (x,y,z) in terms of Coordinate System B, and I need to know its location (x',y',z') in terms of Coordinate System A. How can I do this?



See below for more information about the problem.



The problem



I'm working with a laser rangefinder and a GPS and trying to use coordinate transformations to figure out the Earth-Centered Earth-Fixed (ECEF) location of the "point in question" (by which I mean the point that the rangefinder "sees"). The endgame is LiDAR-related, but I'll go on to explain the question in a way that doesn't require LiDAR knowledge.



The rangefinder and the GPS are connected, sharing a common z-axis (positive z direction is down). The rangefinder rotates about the shared z-axis, and its azimuth (angle representing the rangefinder's rotation about the z-axis with respect to the positive x-axis of the gps, otherwise known as the rangefinder's "home" position) is known at all times. The distance from the rangefinder to the "point in question" is also known at all times.



The GPS can rotate and translate freely over time (endgame - it's attached to a drone), and its latitude, longitude and altitude are known at all times, as well as its rotation with respect to the local North-East-Down (NED) coordinate system. I can get this rotation information from the GPS as Roll, Pitch and Yaw or in the form of a quaternion. I'm relatively new to the world of quaternions, but by my understanding, using quaternions is better for this application.



I want to take my information about the range and azimuth of the "point in question" with respect to the GPS and use what I know about the position and rotation of the GPS in order to find the xyz ECEF location of the "point in question".



In short...



I have a vector constructed from azimuth and range information, with respect to a local coordinate system. I would like to take this information, along with information about the translation and rotation from the global to local coordinate systems, to find the xyz position of the "point in question" (the tip of the vector?) in terms of my global coordinate system.



How can I take this vector with respect to a local coordinate system and use the information relating the local coordinate system to the global coordinate system in order to find my point's location in the global coordinate system?



What I have tried



I have tried making a "pure" quaternion out of my vector representing the "point in question" with respect to the rangefinder, then rotating this vector by the quaternion indicating the rotation of the GPS with respect to NED, and then translating from NED to ECEF using some equations I know to be correct. This did not work, but it seemed like it could be on the right track.



My "pure" quaternion is my rangefinder vector, with an added zero at the front. My quaternion standard is $w+xi+yj+zk$. My method of rotating my vector by my quaternion is:



$$v' = q'vq$$



Where $v'$ is my translated vector (a "pure" quaternion), $q'$ is the inverse of my quaternion, $v$ is my original vector ("pure" quaternion), and $q$ is my original quaternion.



Let me know if I can make any of this clearer or if there is information I left out. I appreciate any responses that may point me in the right direction.







share|cite|improve this question





















  • I don't understand. What is your question? The text is full of unnecessary details. Could you provide a clean question?
    – Mauricio Cele Lopez Belon
    Jul 23 at 20:56










  • How can I take a 3d point whose position is known in reference to coordinate system A and use the quaternion relating coordinate system A to coordinate system B in order to find the vector's coordinates in coordinate system B?
    – Sarah Strand
    Jul 24 at 16:34












up vote
0
down vote

favorite









up vote
0
down vote

favorite











SHORTEST POSSIBLE WAY TO ASK MY QUESTION (edit)



I have a 3D point (x,y,z) and two coordinate systems. The rotation and translation between the coordinate systems is known, as I have a quaternion which gives the rotation from Coordinate System A to Coordinate System B. I know the location of the point (x,y,z) in terms of Coordinate System B, and I need to know its location (x',y',z') in terms of Coordinate System A. How can I do this?



See below for more information about the problem.



The problem



I'm working with a laser rangefinder and a GPS and trying to use coordinate transformations to figure out the Earth-Centered Earth-Fixed (ECEF) location of the "point in question" (by which I mean the point that the rangefinder "sees"). The endgame is LiDAR-related, but I'll go on to explain the question in a way that doesn't require LiDAR knowledge.



The rangefinder and the GPS are connected, sharing a common z-axis (positive z direction is down). The rangefinder rotates about the shared z-axis, and its azimuth (angle representing the rangefinder's rotation about the z-axis with respect to the positive x-axis of the gps, otherwise known as the rangefinder's "home" position) is known at all times. The distance from the rangefinder to the "point in question" is also known at all times.



The GPS can rotate and translate freely over time (endgame - it's attached to a drone), and its latitude, longitude and altitude are known at all times, as well as its rotation with respect to the local North-East-Down (NED) coordinate system. I can get this rotation information from the GPS as Roll, Pitch and Yaw or in the form of a quaternion. I'm relatively new to the world of quaternions, but by my understanding, using quaternions is better for this application.



I want to take my information about the range and azimuth of the "point in question" with respect to the GPS and use what I know about the position and rotation of the GPS in order to find the xyz ECEF location of the "point in question".



In short...



I have a vector constructed from azimuth and range information, with respect to a local coordinate system. I would like to take this information, along with information about the translation and rotation from the global to local coordinate systems, to find the xyz position of the "point in question" (the tip of the vector?) in terms of my global coordinate system.



How can I take this vector with respect to a local coordinate system and use the information relating the local coordinate system to the global coordinate system in order to find my point's location in the global coordinate system?



What I have tried



I have tried making a "pure" quaternion out of my vector representing the "point in question" with respect to the rangefinder, then rotating this vector by the quaternion indicating the rotation of the GPS with respect to NED, and then translating from NED to ECEF using some equations I know to be correct. This did not work, but it seemed like it could be on the right track.



My "pure" quaternion is my rangefinder vector, with an added zero at the front. My quaternion standard is $w+xi+yj+zk$. My method of rotating my vector by my quaternion is:



$$v' = q'vq$$



Where $v'$ is my translated vector (a "pure" quaternion), $q'$ is the inverse of my quaternion, $v$ is my original vector ("pure" quaternion), and $q$ is my original quaternion.



Let me know if I can make any of this clearer or if there is information I left out. I appreciate any responses that may point me in the right direction.







share|cite|improve this question













SHORTEST POSSIBLE WAY TO ASK MY QUESTION (edit)



I have a 3D point (x,y,z) and two coordinate systems. The rotation and translation between the coordinate systems is known, as I have a quaternion which gives the rotation from Coordinate System A to Coordinate System B. I know the location of the point (x,y,z) in terms of Coordinate System B, and I need to know its location (x',y',z') in terms of Coordinate System A. How can I do this?



See below for more information about the problem.



The problem



I'm working with a laser rangefinder and a GPS and trying to use coordinate transformations to figure out the Earth-Centered Earth-Fixed (ECEF) location of the "point in question" (by which I mean the point that the rangefinder "sees"). The endgame is LiDAR-related, but I'll go on to explain the question in a way that doesn't require LiDAR knowledge.



The rangefinder and the GPS are connected, sharing a common z-axis (positive z direction is down). The rangefinder rotates about the shared z-axis, and its azimuth (angle representing the rangefinder's rotation about the z-axis with respect to the positive x-axis of the gps, otherwise known as the rangefinder's "home" position) is known at all times. The distance from the rangefinder to the "point in question" is also known at all times.



The GPS can rotate and translate freely over time (endgame - it's attached to a drone), and its latitude, longitude and altitude are known at all times, as well as its rotation with respect to the local North-East-Down (NED) coordinate system. I can get this rotation information from the GPS as Roll, Pitch and Yaw or in the form of a quaternion. I'm relatively new to the world of quaternions, but by my understanding, using quaternions is better for this application.



I want to take my information about the range and azimuth of the "point in question" with respect to the GPS and use what I know about the position and rotation of the GPS in order to find the xyz ECEF location of the "point in question".



In short...



I have a vector constructed from azimuth and range information, with respect to a local coordinate system. I would like to take this information, along with information about the translation and rotation from the global to local coordinate systems, to find the xyz position of the "point in question" (the tip of the vector?) in terms of my global coordinate system.



How can I take this vector with respect to a local coordinate system and use the information relating the local coordinate system to the global coordinate system in order to find my point's location in the global coordinate system?



What I have tried



I have tried making a "pure" quaternion out of my vector representing the "point in question" with respect to the rangefinder, then rotating this vector by the quaternion indicating the rotation of the GPS with respect to NED, and then translating from NED to ECEF using some equations I know to be correct. This did not work, but it seemed like it could be on the right track.



My "pure" quaternion is my rangefinder vector, with an added zero at the front. My quaternion standard is $w+xi+yj+zk$. My method of rotating my vector by my quaternion is:



$$v' = q'vq$$



Where $v'$ is my translated vector (a "pure" quaternion), $q'$ is the inverse of my quaternion, $v$ is my original vector ("pure" quaternion), and $q$ is my original quaternion.



Let me know if I can make any of this clearer or if there is information I left out. I appreciate any responses that may point me in the right direction.









share|cite|improve this question












share|cite|improve this question




share|cite|improve this question








edited Jul 24 at 16:45
























asked Jul 23 at 19:28









Sarah Strand

34




34











  • I don't understand. What is your question? The text is full of unnecessary details. Could you provide a clean question?
    – Mauricio Cele Lopez Belon
    Jul 23 at 20:56










  • How can I take a 3d point whose position is known in reference to coordinate system A and use the quaternion relating coordinate system A to coordinate system B in order to find the vector's coordinates in coordinate system B?
    – Sarah Strand
    Jul 24 at 16:34
















  • I don't understand. What is your question? The text is full of unnecessary details. Could you provide a clean question?
    – Mauricio Cele Lopez Belon
    Jul 23 at 20:56










  • How can I take a 3d point whose position is known in reference to coordinate system A and use the quaternion relating coordinate system A to coordinate system B in order to find the vector's coordinates in coordinate system B?
    – Sarah Strand
    Jul 24 at 16:34















I don't understand. What is your question? The text is full of unnecessary details. Could you provide a clean question?
– Mauricio Cele Lopez Belon
Jul 23 at 20:56




I don't understand. What is your question? The text is full of unnecessary details. Could you provide a clean question?
– Mauricio Cele Lopez Belon
Jul 23 at 20:56












How can I take a 3d point whose position is known in reference to coordinate system A and use the quaternion relating coordinate system A to coordinate system B in order to find the vector's coordinates in coordinate system B?
– Sarah Strand
Jul 24 at 16:34




How can I take a 3d point whose position is known in reference to coordinate system A and use the quaternion relating coordinate system A to coordinate system B in order to find the vector's coordinates in coordinate system B?
– Sarah Strand
Jul 24 at 16:34










1 Answer
1






active

oldest

votes

















up vote
0
down vote



accepted










First send your point $P_B$ from reference frame $B$ to the origin.



$P_O = P_B - O_B$



Where $O_B$ is the origin of reference frame $B$.



Then rotate the vector $P_O$ using the inverse of quaternion $q$



$P'_O = q^-1 P_O q$



If quaternion is of unit length you can use the conjugate inplace of the inverse.



Finally send the rotated vector to reference frame $A$:



$P_A = P'_O + O_A$



Where $O_A$ is the origin of reference frame $A$.






share|cite|improve this answer





















    Your Answer




    StackExchange.ifUsing("editor", function ()
    return StackExchange.using("mathjaxEditing", function ()
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
    );
    );
    , "mathjax-editing");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "69"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    noCode: true, onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );








     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2860704%2fpoint-in-coordinate-system-a-how-to-find-its-location-in-coordinate-system-b%23new-answer', 'question_page');

    );

    Post as a guest






























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote



    accepted










    First send your point $P_B$ from reference frame $B$ to the origin.



    $P_O = P_B - O_B$



    Where $O_B$ is the origin of reference frame $B$.



    Then rotate the vector $P_O$ using the inverse of quaternion $q$



    $P'_O = q^-1 P_O q$



    If quaternion is of unit length you can use the conjugate inplace of the inverse.



    Finally send the rotated vector to reference frame $A$:



    $P_A = P'_O + O_A$



    Where $O_A$ is the origin of reference frame $A$.






    share|cite|improve this answer

























      up vote
      0
      down vote



      accepted










      First send your point $P_B$ from reference frame $B$ to the origin.



      $P_O = P_B - O_B$



      Where $O_B$ is the origin of reference frame $B$.



      Then rotate the vector $P_O$ using the inverse of quaternion $q$



      $P'_O = q^-1 P_O q$



      If quaternion is of unit length you can use the conjugate inplace of the inverse.



      Finally send the rotated vector to reference frame $A$:



      $P_A = P'_O + O_A$



      Where $O_A$ is the origin of reference frame $A$.






      share|cite|improve this answer























        up vote
        0
        down vote



        accepted







        up vote
        0
        down vote



        accepted






        First send your point $P_B$ from reference frame $B$ to the origin.



        $P_O = P_B - O_B$



        Where $O_B$ is the origin of reference frame $B$.



        Then rotate the vector $P_O$ using the inverse of quaternion $q$



        $P'_O = q^-1 P_O q$



        If quaternion is of unit length you can use the conjugate inplace of the inverse.



        Finally send the rotated vector to reference frame $A$:



        $P_A = P'_O + O_A$



        Where $O_A$ is the origin of reference frame $A$.






        share|cite|improve this answer













        First send your point $P_B$ from reference frame $B$ to the origin.



        $P_O = P_B - O_B$



        Where $O_B$ is the origin of reference frame $B$.



        Then rotate the vector $P_O$ using the inverse of quaternion $q$



        $P'_O = q^-1 P_O q$



        If quaternion is of unit length you can use the conjugate inplace of the inverse.



        Finally send the rotated vector to reference frame $A$:



        $P_A = P'_O + O_A$



        Where $O_A$ is the origin of reference frame $A$.







        share|cite|improve this answer













        share|cite|improve this answer



        share|cite|improve this answer











        answered Jul 24 at 17:40









        Mauricio Cele Lopez Belon

        54738




        54738






















             

            draft saved


            draft discarded


























             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2860704%2fpoint-in-coordinate-system-a-how-to-find-its-location-in-coordinate-system-b%23new-answer', 'question_page');

            );

            Post as a guest













































































            Comments

            Popular posts from this blog

            What is the equation of a 3D cone with generalised tilt?

            Color the edges and diagonals of a regular polygon

            Relationship between determinant of matrix and determinant of adjoint?