Hello I am trying to simulate a rover with T200 thrusters in gazebo but I am not sure what parameters for the LiftDragPlugin. Did anyone try simulating the thrusters in gazebo?
As far as I know, nobody has simulated the ROV in Gazebo yet. Can you give us an idea of what type of parameters you need for the LiftDragPlugin. We might be able to get some approximations that will work for you.
The link above has detailed explanation of the parameters.It says the plugin is for aerodynamics but It is even used to simulate thrust from a propeller for under water simulations.
link is the propeller
area: Surface area of the link.
a0: The initial “alpha” or initial angle of attack. a0 is also the y-intercept of the alpha-lift coefficient curve.
cla: The ratio of the coefficient of lift and alpha slope before stall. Slope of the first portion of the alpha-lift coefficient curve.
cda: The ratio of the coefficient of drag and alpha slope before stall.
cp: Center of pressure. The forces due to lift and drag will be applied here.
alpha_stall: Angle of attack at stall point; the peak angle of attack.
cla_stall: The ratio of coefficient of lift and alpha slope after stall. Slope of the second portion of the alpha-lift coefficient curve.
cda_stall: The ratio of coefficient of drag and alpha slope after stall.
These parameters are clearly meant for an airplane. Are there any plugins that allow for more generic drag and force inputs? Perhaps something for a helicopter or spacecraft?
Not really its the only plugin to simulate drag in gazebo.
Okay, I’m doing a bit of research and it doesn’t really look like there is an appropriate physics plugin for anything other than an aircraft. They do have a hydrodynamics tutorial but it is for an AUV that has pretty similar characteristics to an airplane.
I’m afraid I can’t help you much more than that. I’ve never used Gazebo.
The hydrodynamics plugin is used to simulate the buoyancy of the object it has nothing to do with drag and the aerodynamics plugin. And to calculate drag on a propeller atleast for planes each blade is considered as a flat box at a certain angle. So I think for the propellers of the T200 we have to consider each blade as a flat box and figure out the angle which had the most impact on thrust I am guessing that will be the angle near the center of the blade. I took a look at the iris drone’s parameters and they used the following settings
<a0>0.3</a0> <alpha_stall>1.4</alpha_stall> <cla>4.2500</cla> <cda>0.10</cda> <cma>0.00</cma> <cla_stall>-0.025</cla_stall> <cda_stall>0.0</cda_stall> <cma_stall>0.0</cma_stall> <area>0.002</area> <air_density>1.2041</air_density> <cp>-0.084 0 0</cp> <forward>0 1 0</forward> <upward>0 0 1</upward>
So in our case the air density will be the same. water density is 1000 and for some reason they are using water density for the drone so I guess we can do the same. And they probably got better results with 1.2041 which is a bit more dense than water.
The forward and upward directions are just the directions of force that needs to be applied so we can ignore that…Similarly cp and area. can be ignored. I can figure them out.
I don’t know how to figure out the rest. I though the stall parameters can be ignored but they have -0.025 for cla_stall so I am not sure about it.
Or do you know of a better simulator I can use with ros?
Gazebo is the standard so it would be cool if we could get it working in there. There is also a software-in-the-loop (SITL) simulator built into ArduSub/ArduPilot. If you are planning to talk to ArduSub through ROS, then that might be a perfect fit. We haven’t done much on the physics for that but it has more flexibility.
For ROS, I suppose it’s probably best to try to simulate the propellers just like the Iris model. How do you define the motor positions?
You will have to use the model editor. Import the rov chassis with the motors attached but without the propellers(do this in blender or whichever cad software and then save it as a .dae to import it into gazebo). Then import the propellers and attach them to each motor as a revolute joint .
I created a few years ago a simple drag/buoyancy plugin for Gazebo available here:
It is less realistic than the new Gazebo plugin, basically you define linear drag coefficients in each direction and a buoyancy force for each link, then you can apply thruster forces and Gazebo deals with the dynamics. Propellers physics is thus implicit, we assume a thruster can directly apply a given force.
You can read the referenced paper in the Readme in order to see how this works.
I also created a package to simulate the BlueRov 1 in Gazebo (follow above link) using this plugin, for now it waits for thruster inputs. I am not sure about the X-Y-Z drag coefficients and the inertia matrix of the robot, feel free to give feedback if you have more realistic values.
We have a BlueROV 1 here and once it is built and identification is done I will update the simulation parameters.
Did you try importing the thruster into gazebo I tried using igs and step imported them into catia removed the prop then exported it as stl imported it into blender and then exported it as .dae and then imported it into gazebo but the imported model in gazebo is not imported properly. part of the duct has a few missing surfaces and the tip on the tail has a few missing surfaces. It it your model or am I messing it up or gazebo. The model looks alright in catia and blender.
You might want to take a look at uuv_simulator, which includes quite a few Gazebo plugins, including a thruster plugin. https://github.com/uuvsimulator/uuv_simulator/wiki
we added thruster plugins and lift and drag plugins into the package https://github.com/uuvsimulator/uuv_simulator. There are a number of ROVs and AUVs we already simulate in Gazebo for the Eu-Project SWARMs. We actually also have a small simulation scenario with an ROV that uses the BlueRobotics thruster. If you want to try it out and need any help, you can contact us on GitHub.