# Revision history [back]

### How I can fix a revolute joint to prevent movements around other axes?

Hello everyone! I'm working with Gazebo trying to simulate the behavior of a manipulator made by using one or more aerial platforms (drones with only two propellers). This manipulator consists of:

• a base, which is rigidly attached to the ground (the world) through a fixed joint;
• a bar, connected to the base by a revolute joint:
• a drone, located at the of the chain and connected to the bar by another revolute joint.

To better understand how the platform should move and how it was designed, take a look at this reference paper.

About the problem, when I start the simulation (to understand and reproduce the problem I have, you can rotate the object turning the pitch angle) I'm observing a strange behavior of the revolute joint in the base. Indeed, although it should be fixed and should not move around the other axes, it changes orientation making the system unstable. Here the video which shows what it happens (take a look at the strange behavior of the joint in the base).

Here you find the link to the code (SDF files used in Gazebo), while below the main part where you can see immediately how the joints are connected to the world and with other items.


<sdf version="1.6"> <model name="bar-man-1Link"> <pose>0 0 0.03 0 0 0</pose>

<static>false</static>

<!-- Including the first quadrotor -->
<include>
<pose>0 -2 0 0 0 0</pose>
</include>

<!-- Including rotors of the first quadrotor -->
<include>
<uri>model://mrsim-rotor</uri>
<name>rotor-1</name>
<pose>0 -1.77 0 0 0 0</pose>
</include>
<joint name="rotor-1" type="revolute">
<child>rotor-1::propeller</child>
<axis><xyz>0 0 1</xyz></axis>
</joint>

<include>
<uri>model://mrsim-rotor</uri>
<name>rotor-3</name>
<pose>0 -2.23 0 0 0 0</pose>
</include>
<joint name="rotor-3" type="revolute">
<child>rotor-3::propeller</child>
<axis><xyz>0 0 1</xyz></axis>
</joint>

<!-- The model used for the base -->
<include>
<uri>model://base</uri>
<name>base</name>
<pose>0 0 0 0 0 0</pose>
</include>


<include> <uri>model://bar</uri> <name>bar_1</name> <pose>0 -1 0 1.5708 0 0 </pose> </include>

<!-- The base is connected to the bar -->
<joint name="joint_base_bar" type="revolute">
<pose>0 0 -1 0 0 0</pose>
<axis><xyz>1 0 0</xyz></axis>
</joint>

<!-- The base is connected to the drone -->
<pose>0 0 0 0 0 0</pose>
<axis><xyz>1 0 0</xyz></axis>
</joint>


</model> </sdf>

### How I can fix a revolute joint to prevent movements around other axes?

Hello everyone! I'm working with Gazebo trying to simulate the behavior of a manipulator made by using one or more aerial platforms (drones with only two propellers). This manipulator consists of:

• a base, which is rigidly attached to the ground (the world) through a fixed joint;
• a bar, connected to the base by a revolute joint:
• a drone, located at the of the chain and connected to the bar by another revolute joint.

To better understand how the platform should move and how it was designed, take a look at this reference paper.

About the problem, when I start the simulation (to understand and reproduce the problem I have, you can rotate the object turning the pitch angle) I'm observing a strange behavior of the revolute joint in the base. Indeed, although it should be fixed and should not move around the other axes, it changes orientation making the system unstable. Here the video which shows what it happens (take a look at the strange behavior of the joint in the base).

Here you find the link to the code (SDF files used in Gazebo), while below the main part where you can see immediately how the joints are connected to the world and with other items.



EDIT
<sdf version="1.6"> <model name="bar-man-1Link"> <pose>0 0 0.03 0 0 0</pose>

<static>false</static>

<!-- Including the first quadrotor -->
<include>
<pose>0 -2 0 0 0 0</pose>
</include>

<!-- Including rotors of the first quadrotor -->
<include>
<uri>model://mrsim-rotor</uri>
<name>rotor-1</name>
<pose>0 -1.77 0 0 0 0</pose>
</include>
<joint name="rotor-1" type="revolute">
<child>rotor-1::propeller</child>
<axis><xyz>0 0 1</xyz></axis>
</joint>

<include>
<uri>model://mrsim-rotor</uri>
<name>rotor-3</name>
<pose>0 -2.23 0 0 0 0</pose>
</include>
<joint name="rotor-3" type="revolute">
<child>rotor-3::propeller</child>
<axis><xyz>0 0 1</xyz></axis>
</joint>

<!-- The I think I have found the solution to my problem, but other viewpoints are always welcome. For this reason, I leave the question open for longer.
However, here my solution. To make it, I started from the Gazebo online model available in the Bitbucket repository. In particular, I used for the base -->
<include>
<uri>model://base</uri>
<name>base</name>
<pose>0 0 0 0 0 0</pose>
</include>


<include> <uri>model://bar</uri> <name>bar_1</name> <pose>0 -1 0 1.5708 0 0 </pose> </include>

<!-- The base is connected to the bar -->
<joint name="joint_base_bar" type="revolute">
<pose>0 0 -1 0 0 0</pose>
<axis><xyz>1 0 0</xyz></axis>
</joint>

<!-- The base is connected to the drone -->
<pose>0 0 0 0 0 0</pose>
<axis><xyz>1 0 0</xyz></axis>
</joint>


</model> </sdf> the "simple_arm" Gazebo model.

### How I can fix a revolute joint to prevent movements around other axes?

Hello everyone! I'm working with Gazebo trying to simulate the behavior of a manipulator made by using one or more aerial platforms (drones with only two propellers). This manipulator consists of:

• a base, which is rigidly attached to the ground (the world) through a fixed joint;
• a bar, connected to the base by a revolute joint:
• a drone, located at the of the chain and connected to the bar by another revolute joint.

To better understand how the platform should move and how it was designed, take a look at this reference paper.

About the problem, when I start the simulation (to understand and reproduce the problem I have, you can rotate the object turning the pitch angle) I'm observing a strange behavior of the revolute joint in the base. Indeed, although it should be fixed and should not move around the other axes, it changes orientation making the system unstable. Here the video which shows what it happens (take a look at the strange behavior of the joint in the base).

Here you find the link to the code (SDF files used in Gazebo), while below the main part where you can see immediately how the joints are connected to the world and with other items.

EDIT I think I have found the solution to my problem, but other viewpoints are always welcome. For this reason, I leave the question open for longer. However, here my solution. To make it, I started from the Gazebo online model available in the Bitbucket repository. In particular, I used the "simple_arm" Gazebo model.