0
$\begingroup$

I am working with a 4-wheel mobile robot. I placed a transmission on each wheel joint in order to output an effort to the actuator, by forwarding the same effort (effort->effort). However, I only get motion from the wheel if the effort is above some value (around 50 Nm in this case). Below that, the wheel doesn't spin.

Below you can see the respective .launch file segment,

<!-- Load joint controller configurations from YAML file to parameter server -->
<rosparam file = "$(find thesis_main)/config/vehicle_control.yaml" command = "load"/>

<!-- load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" 
        args="back_left_wheel_controller
              front_left_wheel_controller
              back_right_wheel_controller
              front_right_wheel_controller
              joint_state_controller"/>

<!-- convert joint states to TF transforms for rviz, etc -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="false" output="screen" />

Transmissions, joints and wheel links (it's the same for every wheel):

  <transmission name="front_left_tran">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="front_left_wheel_joint">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
    </joint>
    <actuator name="front_left_wheel_motor">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>
  <joint name="front_left_wheel_joint" type="revolute">
    <parent link="base_link"/>
    <child link="front_left_wheel"/>
    <origin xyz="0.256   0.2854  0.03282" rpy="0 0 0"/>
    <axis xyz="0 1 0"/>
    <limit lower="-1e+16" upper="1e+16" effort="1e+16" velocity="1e+16"/>
  </joint>
  <link name="front_left_wheel">
    <inertial>
      <mass value="2.637"/>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.02467"/>
      <!--<inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.04411" iyz="0" izz="0.02467"/>-->
    </inertial>
    <collision name="husky_robot__front_left_wheel_link_collision">
      <origin xyz="0 0 0" rpy="1.57079 0      0"/>
      <geometry>
        <cylinder radius="0.1651" length="0.1143"/>
      </geometry>
    </collision>
    <visual name="husky_robot__front_left_wheel_link_visual">
      <!--<origin xyz="0 0 0" rpy="0 0 0"/>-->
      <origin xyz="0 0 0" rpy="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename = "package://thesis_main/models/huskyRobot/meshes/wheel.dae"/>
      </geometry>
    </visual>
  </link>

.yaml file:

# Publish all joint states -------------------------------------------------
joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50

# Wheel torque controllers -------------------------------------------------
back_left_wheel_controller:
  type: effort_controllers/JointEffortController
  joint: back_left_wheel_joint
  pid: {p: 1.0, i: 0.0, d: 0.0}
  
front_left_wheel_controller:
  type: effort_controllers/JointEffortController
  joint: front_left_wheel_joint
  pid: {p: 1.0, i: 0.001, d: 0.001}

back_right_wheel_controller:
  type: effort_controllers/JointEffortController
  joint: back_right_wheel_joint
  pid: {p: 1.0, i: 0.001, d: 0.001}

front_right_wheel_controller:
  type: effort_controllers/JointEffortController
  joint: front_right_wheel_joint
  pid: {p: 1.0, i: 0.001, d: 0.001}

I would appreciate some help. Thanks in advance !

$\endgroup$

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.