rotors_simulator
rotors_simulator copied to clipboard
Modify the wind plugin to also have effect on the forces and moments of the gazebo_motor_model
There are some ways how we can achieve this, but we should discuss that I think.
We should only apply forces to the rotors I think. At least according to the identification we did with Manuel, the main influence came from the air drag. Not sure how to handle wind in z direction though.
the clean way would be to apply the forces on rotors. for the z-direction, we could try to find some drag coefficient that is proportional to the speed squared. Does anyone know what happens with wind that goes through the rotor disk parallel to the rotor's axis? That would probably be the main source.
We could think about two modes, or call it somewhat "disturbance plugin":
- simple mode, that just applies a disturbance force
- advanced mode with wind model etc
- which other disturbances may exist?
Does anyone know what happens with wind that goes through the rotor disk parallel to the rotor's axis?
I guess that will basically change the angle of attack of the rotor which would lead in a different motor_constant_
in:
double force = real_motor_velocity * real_motor_velocity * motor_constant_;
Does that make sense?
Not sure how we would incorporate this though, we would need to have the motor_constant_
depend on the current velocity (air + body) going through the rotor plane parallel to the rotor's axis or something similar.
We just need to get the velocity in world coordinates and project it onto the rotor plane (which needs the orientation of the motor). I think both (the velocity and the orientation) are available in the plugin.
To wrap it up:
- [ ] rename plugin to disturbance_plugin
- [ ] add sdf parameters
- [ ] force params that replace the wind and windgust, which then just apply a disturbance force
- [ ] do we want something like a disturbance moment?
- [ ] wind params similar to the ones which we have now, just with a wind speed instead of force
- [ ] publish the wind from the plugin if some wind is set
- [ ] apply the disturbance forces, just like the wind forces are currently applied
- [ ] make a callback in
gazebo_motor_model
to get the current wind - [ ] apply the wind forces and moments in
gazebo_motor_model
@markusachtelik and @burrimi any additions or changes?
@ffurrer Hello. I understand this is a very old thread but, is there any reference pull-request where I can see how the functionality here was implemented? I am interested in modifying the model of the rotors to account for air drag beyond the current implementation.
Any comments will be very appreciated.