How to add a gear ratio other than 1:1 on real robot? (Gearbox)

asked 2021-05-20 08:09:56 -0500

shmiff gravatar image

updated 2021-05-28 00:20:37 -0500

jayess gravatar image

I work on a custom 6DOF robot arm which is powered by Dynamixel motors. The URDF model is made by me and I can control it with MoveIt, even inverse kinematics work well and are executed like they should.

There is only one problem:

Every motor is run 1:1 transmission wise and MoveIt sees it like that. Now I have figured out why it is OK except at one joint – there is a small gearbox at only one joint.

All I know is that the gear ratio is 1:1.75 and all the others are 1:1, so directly driven.

How can I include this gearbox or at least let MoveIt know to let this one joint operate differently than the others?

I tried the transmission block in the URDF but without success. The real robot movements are still 1:1 everywhere. If it helps I can provide the URDF also.


Update:

<?xml version="1.0"?>
<robot name="robotic_arm" xmlns:xacro="http://www.ros.org/wiki/xacro">

<material name="Yellow">
        <color rgba="1.0 1.0 0.0 1.0"/>
    </material>

    <material name="Black">
        <color rgba="0.0 0.0 0.0 1.0"/>
    </material>

<material name="White">
        <color rgba="1.0 1.0 1.0 1.0"/>
    </material>

 <material name="Blue">
        <color rgba="0.0 0.0 1.0 1.0"/>
    </material>

  <property name="shoulder_yaw_len" value="0.195" />

  <property name="elbow_roll_len" value="0.16" />

  <property name="deg_to_rad" value="0.01745329251994329577"/>

  <property name="M_SCALE" value="0.001 0.001 0.001"/> 
  <property name="M_PI" value="3.14159"/>

  <link name="bottom_link">
        <visual>
          <origin xyz="0 0 0.6" rpy="0 0 0" /> 
          <geometry>
               <box size="0.16 0.3 1.2" />   
          </geometry>
         <material name="Black" />
        </visual>
  </link>


  <joint name="bottom_joint" type="fixed">
        <parent link="bottom_link"/>
        <child link="base_link"/>
        <origin xyz="0 0 0.105" rpy="0 0 0" />
  </joint>


  <link name="base_link">
        <visual>
          <origin xyz="0 0.24 0.9" rpy="0 0 0" /> 
          <geometry>
               <box size="0.1 0.16 0.1" />   
          </geometry>
         <material name="White" />
        </visual>
  </link>


  <joint name="shoulder_pan_joint" type="revolute">
        <parent link="base_link"/>
        <child link="shoulder_pan_link"/>
        <origin xyz="0 0.348 0.9" rpy="0 0 0" />
        <axis xyz="0 1 0" />
        <limit effort="300" velocity="1" lower="-1.57" upper="0"/>
  </joint>

  <link name="shoulder_pan_link" >
        <visual>
          <origin xyz="0 0 0" rpy="0 0 0" />
          <geometry>
            <box size="0.08 0.05 0.038"/>
          </geometry>
         <material name="White" />
        </visual>
  </link>

  <joint name="shoulder_pitch_joint" type="revolute">
        <parent link="shoulder_pan_link"/>
        <child link="shoulder_yaw_link"/>
        <origin xyz="0 0.02 0" rpy="0 0 0" />
        <axis xyz="1 0 0" />
        <limit effort="300" velocity="1" lower="0" upper="1.57 ...
(more)
edit retag flag offensive close merge delete

Comments

shmiff gravatar image shmiff  ( 2021-05-27 17:07:45 -0500 )edit

@shmiff I've added the code for you, but in the future please include code/text in the body of the question instead of linking to external sites (they often go stale, close, move, etc.)

jayess gravatar image jayess  ( 2021-05-28 00:21:31 -0500 )edit