# Velocity Instantaneously x Velocity With Joint Motors and How to Use

Hi everyone,

I'm trying to control the height of a UAV using predictive control. To do so I'm using the "Iris with Standoff" model, but I'm having some trouble to set the velocity of the rotor's joint. I followed the tutorial "Setting Velocity on Links And Joints" (http://gazebosim.org/tutorials?tut=se...) and tried to use the "Set Velocity Instantaneously", but the UAV doesn't take off, independent of the velocity that I set, even though the rotors rotate. It seems to me, that I should set the velocity with joint motors, but I didn't understand how to use. I can't set the velocity using PID Controllers, because that is already in my controller. I'm setting the velocity with a plugin that is subscribed in a ROS Topic, all the "ROS Thing" is working, I followed the velodyne tutorial (http://gazebosim.org/tutorials?tut=gu...). So, in my situation, how should I set the velocity? Instantaneously or with joint motors? And how can I do this?

I'm using Gazebo7, ROS Kinetic and Ubuntu 16.04.

The model.sdf and the plugin that i developed are below. Sorry if the post is too big, it is because of the models and plugins code, first time here.

Mode.sdf

<?xml version='1.0'?>
<sdf version='1.6'>
<model name='iris'>
<pose>0 0 0.194923 0 0 0</pose>
<velocity_decay>
<linear>0.0</linear>
<angular>0.0</angular>
</velocity_decay>
<inertial>
<pose>0 0 0 0 0 0</pose>
<mass>0.468</mass>
<inertia>
<ixx>0.004856</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.004856</iyy>
<iyz>0</iyz>
<izz>0.008801</izz>
</inertia>
</inertial>
<pose>0 0 -0.08 0 0 0</pose>
<geometry>
<box>
<size>0.47 0.47 0.23</size>
</box>
</geometry>
<surface>
<contact>
<ode>
<max_vel>100.0</max_vel>
<min_depth>0.001</min_depth>
</ode>
</contact>
<friction>
<ode>
<mu>1.0</mu>
<mu2>1.0</mu2>
</ode>
</friction>
</surface>
</collision>
<geometry>
<mesh>
<uri>model://iris_with_standoffs/meshes/iris.dae</uri>
</mesh>
</geometry>
<material>
<script>
<name>Gazebo/DarkGrey</name>
</script>
</material>
</visual>

<visual name='front_left_leg_visual'>
<pose>0.123 0.22 -0.11 0 0 0</pose>
<geometry>
<cylinder>
<length>0.17</length>
</cylinder>
</geometry>
<material>
<script>
<name>Gazebo/FlatBlack</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
</material>
</visual>
<visual name='front_right_leg_visual'>
<pose>0.123 -0.22 -0.11 0 0 0</pose>
<geometry>
<cylinder>
<length>0.17</length>
</cylinder>
</geometry>
<material>
<script>
<name>Gazebo/FlatBlack</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
</material>
</visual>
<visual name='rear_left_leg_visual'>
<pose>-0.140 0.21 -0.11 0 0 0</pose>
<geometry>
<cylinder>
<length>0.17</length>
</cylinder>
</geometry>
<material>
<script>
<name>Gazebo/FlatBlack</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
</material>
</visual>
<visual name='rear_right_leg_visual'>
<pose>-0.140 -0.21 -0.11 0 ...
edit retag close merge delete

Hi boy, have you solved the problem?

( 2018-05-01 07:09:42 -0500 )edit

Sort by » oldest newest most voted

Hi, Velocity Instantaneously will only work for one step of the simulation, because of that you need to set this velocity every step of the simulation.

About the UAV not taking off, I can be wrong, but after a lot of reading, I realize that Gazebo does not simulate aerodynamics effects (you need to use a additional plugin for that), and without that the rotor's velocity will not produce any force. The simple solution was developing a plugin that apply on each rotors a force proportional to the velocity. Here is some lines of my plugin:

thrust_force.Set(0,0,k*vel[0]*vel[0]);