Menu

Understanding RateCtrl coordinate system

Help
2014-07-29
2014-07-29
  • Lionel Lagarde

    Lionel Lagarde - 2014-07-29

    Hi,

    I have a problem understanding the coordinate system of the linear speed vector of the RateCtrl packet.

    The ICD says (about the Coordinate System member):

    This parameter specifies the reference coordinate
    system to which the linear and angular rates are
    applied.
    When this parameter is set to World/Parent (0) and the
    entity is a top-level (non-child) entity, the rates are
    defined relative to the database. Linear rates describe
    a path along and above the surface of the geoid.
    Angular rates describe a rotation relative to a reference
    plane as described in Section 3.3.1.2.
    When this parameter is set to World/Parent (0) and the
    entity is a child entity, the rates are defined relative to
    the parent’s local coordinate system as described in
    Section 3.3.2.2.
    When this parameter is set to Local (1), the rates are
    defined relative to the entity’s local coordinate system.
    Note: This parameter is ignored if Apply to Articulated
    Part is set to True (1).

    Example:
    EntityCtrl: top-level, attitude = (yaw:90, pitch:10, roll:0)

    RateCtrl: World/Parent (0), linear speed = (x:10, y:0, z:0)
    From the above specification, I understand that the entity should go to the north, regardless to it's attitude, because of World/Parent (0).

    RateCtrl: Local (1), linear speed = (x:10, y:0, z:0)
    From the above specification, I understand that the entity should go to the east (because yaw == 90) and up (because pitch == 10).

    Am I right? If so, I don't see the point of the World/Parent (0) mode.

    In the MPV, the Coordinate System member of the RateCtrl packet is not used. The linear speed vector is always transformed by the local entity attitude matrix.

     
    • Greg Basler

      Greg Basler - 2014-07-29

      The comments regarding the reaction of the example are correct.
      Often, users will use Local. However, there are times that World/Parent has been used.

      An example of different motion results:
      If and entity starts with yaw:0, pitch:0, and roll:0.
      Set rates of x:10,y:0,z:0,yaw:2,pitch:0, and roll:0.
      If the Coordinate System is set to local, this results in a large circular movement.
      If the Coordinate System is set to World, this results in the entity moving North while spinning.

      Also, there are times when it is easier to move a child entity relative to the parent entity rather than relative to the way it is orientated.

      Another example of World usage is if the rate packet is being used to generate smooth motion with a system that is asynchronous. In this case position and attitude are given in world coordinates and giving position and attitude rates in world coordinates is more consistent.

       

      Last edit: Greg Basler 2014-07-29
  • Lionel Lagarde

    Lionel Lagarde - 2014-07-29

    Thanks for the explanation.

    The World/Parent mode seems to be useful only in niche cases but now, it make sense to me.

     

Log in to post a comment.