Gazebo | Ignition | Community
Ask Your Question
0

How to attach arm to a static base using SDF

asked 2013-11-24 18:40:40 -0600

willy3615 gravatar image

updated 2013-11-27 12:53:47 -0600

nkoenig gravatar image

I have been playing around with building my own robotic arm. It's very simple and I have all of the joints working. I was hoping work with the arm in a zero gravity environment so movement was easier. The problem I run into however is that the base will always float off or be affected by the arm rotation. I want to fix the base to the ground.

I have tried the following without success:

<?xml version='1.0'?>
<sdf version='1.4'>
  <model name="full_robot_arm">
    <include>
      <uri>model://robot_arm</uri>
      <pose>0.0 0 1.0 0 0 0</pose>
    </include>

    <include>
      <uri>model://arm_base</uri>
      <pose>0 0 0 0 0 0</pose>
    </include>

    <include>
      <uri>model://ground_plane</uri>
    </include>

    <joint name="fixed to ground" type="revolute">
      <parent>ground_plane::link</parent>
      <child>robot_arm_base::body</child>
       <axis>
        <limit>
          <lower>0</lower>
          <upper>0</upper>
        </limit>
        <xyz>0 0 1</xyz>
        </axis>
    </joint>

    <joint name="shoulder_joint" type="revolute">
      <parent>robot_arm_base::body</parent>
      <child>robot_arm::shoulder_rotator</child>
      <axis>
        <xyz>0 0 1</xyz>
      </axis>
    </joint>
  </model>
</sdf>

It does attach the arm to 'a' ground plane but this will rotation along with the rest of the body.

edit retag flag offensive close merge delete

Comments

Please note, I also tried setting the robotarmbase to static in it's own SDF file but it is no longer static once attached to the shoulder_rotator. Setting the whole model to static no longer allows the joints to move.

willy3615 gravatar imagewilly3615 ( 2013-11-26 18:11:09 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
1

answered 2013-11-27 12:55:21 -0600

nkoenig gravatar image

You can attach the robot base to the world, which will make it immovable.

<joint name="fixed to ground" type="revolute">
  <parent>world</parent>
  <child>robot_arm_base::body</child>
edit flag offensive delete link more

Comments

That was exactly what I needed. Thank you!

willy3615 gravatar imagewilly3615 ( 2013-12-04 13:33:05 -0600 )edit

Can this joint be outside of any model tags? It doesn't seem like. So there where do I put it? I have one model for the ground plane and one model for robot arm (the base link of which I want to connect rigidly to the ground plane)

2ros0 gravatar image2ros0 ( 2016-11-11 15:09:03 -0600 )edit

You can put it in the robot arm

chapulina gravatar imagechapulina ( 2016-11-11 15:13:43 -0600 )edit
0

answered 2020-12-02 08:06:54 -0600

Hi, in my case, the following code works:

<joint name="fixed to ground" type="revolute">
  <parent>world</parent>
  <child>link_0</child>
</joint>
edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2013-11-24 18:40:40 -0600

Seen: 6,506 times

Last updated: Nov 27 '13