osrf / handsim

HAPTIX Simulation Utlities
2 stars 1 forks source link

Add motor to mcp transmission #60

Closed osrf-migration closed 9 years ago

osrf-migration commented 9 years ago

Original report (archived issue) by John Hsu (Bitbucket: hsu, GitHub: hsu).


pull request #85

osrf-migration commented 9 years ago

Original comment by Jackie K (Bitbucket: jacquelinekay).


Under review

osrf-migration commented 9 years ago

Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu).


According to conversation with JHU, transmission v2 is defined below:

If motor angle < 10
        MCP angle = motor angle
        PIP angle = 0
        DIP angle = 0
Else  
        MCP angle = (motor angle – 10) * 90/(118-10)
        PIP angle = (MCP angle – 10) * 69/(90-10)
        DIP angle = (MCP angle – 10) * 67/(90-10)
End

Second block can be written as functions of motor angle only as

        MCP angle = (motor angle – 10) * 90/(118-10)
        PIP angle = (motor angle – 10 – 10*(118-10)/90) * 69/(90-10)*90/(118-10)
        DIP angle = (motor angle – 10 – 10*(118-10)/90) * 67/(90-10)*90/(118-10)

However, to prevent MCP, PIP and DIP angle jump around motor angle of 10 deg, maybe the correct formulation should have been:

If motor angle < 10
        MCP angle = motor angle
        PIP angle = 0
        DIP angle = 0
Else  
        MCP angle = (motor angle – 10) * 90/(118-10) + 10
        PIP angle = (MCP angle – 10) * 69/(90-10)
        DIP angle = (MCP angle – 10) * 67/(90-10)
End

Based on above, a 2 stage transmission is proposed.

Example transmission:

    <motor id="3" name="motor_a">
      <powered_motor_joint>joint_33</powered_motor_joint>
      <gear_ratio>399.0</gear_ratio>
      <!-- per JHU requirements, transmission is applied in 2 stages,
           for powered motor joint angle less than minimum of all gearbox offsets,
           multiplier1 is used. Otherwise multiplier2 is used.

           For example:

             minOffset = min(0.15, 0.25) = 0.15
             if (joint_33 < minOffset)
               joint_55 = 100.0 * joint_33
               joint_66 = 0.0 * joint_33
             else
               joint_55 = 1.5 * (joint_33 - minOffset)
                        + 100.0 * minOffset
               joint_66 = 10.5 * (joint_33 - minOffset)
                        + 0.0 * minOffset
      -->
      <gearbox>
        <joint>joint_55</joint>
        <offset>0.15</offset>
        <multiplier1>100.0</multiplier1>
        <multiplier2>1.5</multiplier2>
      </gearbox>
      <gearbox>
        <joint>joint_66</joint>
        <offset>0.25</offset>
        <multiplier1>0.0</multiplier1>
        <multiplier2>10.5</multiplier2>
      </gearbox>
    </motor>
osrf-migration commented 9 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


osrf-migration commented 9 years ago

Original comment by Jackie K (Bitbucket: jacquelinekay).


osrf-migration commented 9 years ago

Original comment by Jackie K (Bitbucket: jacquelinekay).