ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Does every joint need an actuator and transmission?

asked 2013-02-05 13:45:03 -0600

MartinW gravatar image

Hi all,

I'm writing my own URDF-controller code for my robot. I have the URDF working well in rviz and warehouse but I can't get the controller to work. I am looking into this tutorial for a differential drive robot and I was wondering will I need actuators/transmissions for all of my motors in the joints of my robot's manipulator arms?

Here is a copy of my urdf:

<?xml version="1.0" ?>
<robot name="H20_robot">


 <link name="stand_link">
    <visual>
      <geometry>
        <box size="0.20 0.10 1"/>
      </geometry>
    <origin rpy="0 0 0" xyz="0 0 -.5"/>
          <material name="orange">
            <color rgba="1 0.5 0 1"/>
        </material>
    </visual>

    <collision>
      <geometry>
       <box size="0.20 0.10 1"/>
      </geometry>
    <contact_coefficients mu="0" kp="1000.0" kd="1.0"/>
    <origin rpy="0 0 0" xyz="0 0 -.5"/>
    </collision>

    <inertial>
      <mass value="20.0"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    <origin/>
    </inertial>


  </link>

 <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.38" radius="0.0325"/>
      </geometry>
    <origin rpy="0 1.57057 0" xyz="0 0 0"/>
          <material name="grey">
        <color rgba="0.5 0.5 0.5 1"/>
      </material>
    </visual>

    <collision>
      <geometry>
        <cylinder length="0.38" radius="0.0325"/>
      </geometry>
    <contact_coefficients mu="0" kp="1000.0" kd="1.0"/> 
    <origin rpy="0 1.57057 0" xyz="0 0 0"/>   
    </collision>

    <inertial>
      <mass value="10.0"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    <origin/>
    </inertial>

</link>

 <link name="camera_link">
         <inertial>
      <mass value="1.0"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    <origin/>
    </inertial>

     </link>

  <joint name="camera_to_base" type="fixed">
    <parent link="base_link"/>
    <child link="camera_link"/>
    <origin xyz="0.05 -.1 .3" rpy="0 0.5 -1.57" /> 
 </joint> 


  <joint name="base_to_stand" type="fixed">
    <parent link="stand_link"/>
    <child link="base_link"/>
    <origin xyz="0 0 0" rpy="0 0 0" /> 
 </joint> 

 <link name="head_link">
    <visual>
      <geometry>
         <sphere radius="0.15"/>
      </geometry>
    <origin rpy="0 0 0" xyz="0 0 0.1825"/>
          <material name="orange"/>
    </visual>

    <collision>
      <geometry>
         <sphere radius="0.15"/>
      </geometry>
    <contact_coefficients mu="0" kp="1000.0" kd="1.0"/>
    <origin rpy="0 0 0" xyz="0 0 0.1825"/>
    </collision>

    <inertial>
      <mass value="2.0"/>
      <inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
    <origin/>
    </inertial>

  </link>

  <joint name="head_to_base" type="fixed">
    <parent link="base_link"/>
    <child link="head_link"/>
    <origin xyz="0 0 0" rpy="0 0 0" /> 
 </joint> 


  <link name="left_shoulder_link">
    <visual>
      <geometry>
        <cylinder length="0.06" radius="0.0175"/>
      </geometry>
          <material name="grey"/>
    <origin rpy="0 1.57057 0" xyz="0.03 0 0"/>
    </visual>

    <collision>
      <geometry>
        <cylinder length="0.06" radius="0.0175"/>
      </geometry>
    <contact_coefficients mu="0" kp="1000.0" kd="1.0"/>
    <origin rpy="0 1.57057 0" xyz="0.03 0 0"/>
    </collision>

    <inertial>
      <mass value="2 ...
(more)
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2013-02-07 11:50:55 -0600

IgorZ gravatar image

updated 2013-02-07 11:51:14 -0600

if you are using PR2 controllers you need to define transmission for each joint you want to control.

edit flag offensive delete link more

Comments

Ahh okay and should I use the PR2 controllers on a non-pr2 robot? or are there better controllers to use on these types of robots?

MartinW gravatar image MartinW  ( 2013-02-08 08:44:56 -0600 )edit

Hi, I too am trying to impliment the PR2 controllers on my own robot. The urdf example link u pasted above is also a non-pr2 model and they use the pr2 controllers on it. I believe it should work .

Bharadwaj gravatar image Bharadwaj  ( 2013-02-09 03:48:52 -0600 )edit

Hi, I too am trying to impliment the PR2 controllers on my own robot. The urdf example link u pasted above is also a non-pr2 model and they use the pr2 controllers on it. I believe it should work .

Bharadwaj gravatar image Bharadwaj  ( 2013-02-09 03:48:54 -0600 )edit

It depends. I use PR2 controllers for my robotic hand simulation. You can always write your own controller as a Gazebo plugin. There is instruction on Gazebo website how to write ROS plugins.

IgorZ gravatar image IgorZ  ( 2013-02-09 07:43:52 -0600 )edit

Just make sure you get the namespaces, lib, and plugin names right. I spent a good few hours trying to make my own but after doing those tutorials I finally got my controllers to spawn and run :) But I don't have them doing anything yet, just connected to my joints. Now I'm working on some PID cntrl

MartinW gravatar image MartinW  ( 2013-02-09 09:36:28 -0600 )edit

Hay MartinW, are you able to control your URDF model even without the <gazebo> <controller:gazebo_ros_controller_manager

Bharadwaj gravatar image Bharadwaj  ( 2013-02-11 17:19:03 -0600 )edit

Hey Bharadwaj, No I tried a lot of different ways to get around that <gazebo> tag in the urdf. That is the only was I can control, however for my manipulator I only get data at around 10Hz. So I am not going to use controllers and just implement the drivers into a joint trajectory action .....

MartinW gravatar image MartinW  ( 2013-02-12 05:29:51 -0600 )edit

Question Tools

Stats

Asked: 2013-02-05 13:45:03 -0600

Seen: 1,168 times

Last updated: Feb 07 '13