Gazebo Sim

API Reference

8.7.0
WindEffects Class Referencefinal

A system that simulates a simple wind model. The wind is described as a uniform worldwide model. Its components are computed separately: More...

#include <WindEffects.hh>

Public Member Functions

 WindEffects ()
 Constructor. More...
 
 ~WindEffects () final
 Destructor. More...
 
void Configure (const Entity &_entity, const std::shared_ptr< const sdf::Element > &_sdf, EntityComponentManager &_ecm, EventManager &_eventMgr) final
 Configure the system. More...
 
void PreUpdate (const UpdateInfo &_info, EntityComponentManager &_ecm) final
 
- Public Member Functions inherited from System
 System ()=default
 Constructor. More...
 
virtual ~System ()=default
 Destructor. More...
 

Additional Inherited Members

- Public Types inherited from System
using PriorityType = int32_t
 Signed integer type used for specifying priority of the execution order of PreUpdate and Update phases. More...
 
- Static Public Attributes inherited from System
constexpr static PriorityType kDefaultPriority = {0}
 Default priority value for execution order of the PreUpdate and Update phases. More...
 
constexpr static std::string_view kPriorityElementName
 Name of the XML element from which the priority value will be parsed. More...
 

Detailed Description

A system that simulates a simple wind model. The wind is described as a uniform worldwide model. Its components are computed separately:

  • Horizontal amplitude: Low pass filtering on user input (complementary gain)
    • small local fluctuations
    • noise on value (noise amplitude is a factor of wind magnitude)
  • Horizontal direction: Low pass filtering on user input (complementary gain)
    • small local fluctuations
    • noise on value
  • Vertical amplitude: Low pass filtering on user input (complementary gain)
    • small local fluctuations
    • noise on value

Forces exerted by the wind on model links are approximated from link mass and velocity with respect to wind velocity, and applied to the link frame origin. These approximations can be amplified or attenuated on a per location basis by specifying a piecewise scalar field for a scaling factor.

System Parameters

The following parameters are used by the system:

  • <horizontal><magnitude><time_for_rise>: Analogous to the time constant of the low pass filter.
  • <horizontal><magnitude><sin><amplitude_percent>: Fraction of the filtered wind velocity magnitude that is set to be the amplitude of the sinusoid.
  • <horizontal><magnitude><sin><period>: Period of the sinusoid that is added to the wind velocity magnitude.
  • <horizontal><magnitude><noise>: Parameters for the noise that is added to the wind velocity magnitude.
  • <horizontal><direction><time_for_rise>: Analogous to the time constant of the low pass filter.
  • <horizontal><direction><sin><amplitude>: Amplitude of the sinusoidal that is added on the direction of the wind velocity.
  • <horizontal><direction><sin><period>: Period of the sinusoid that is added to the wind velocity direction.
  • <horizontal><direction><noise>: Parameters for the noise that is added to the wind velocity direction.
  • <vertical><time_for_rise>: Analogous to the time constant of the low pass filter for the vertical wind velocity magnitude.
  • <vertical><noise>: Parameters for the noise that is added to the vertical wind velocity magnitude.
  • <force_approximation_scaling_factor>: Proportionality constant used for wind force approximations as a piecewise, separable scalar field:
    <force_approximation_scaling_factor>
    <when xlt="0"> <!-- Half space where x < 0 -->
    <k>1</k>
    <px>0 0 0 1</px> <!-- p(x) = x -->
    <qy>0 0 0 1</qy> <!-- q(y) = 1 -->
    <rz>0 1 0 1</rz> <!-- r(z) = z^2 -->
    </when>
    </force_approximation_scaling_factor>
    When the scaling factor is to be constant in a region, a numerical constant may be used in place for the scalar field definition:
    <force_approximation_scaling_factor>
    <!-- First octant -->
    <when xge="0" yge="0" zge="0">1</when>
    </force_approximation_scaling_factor>
    To use the same constant or scalar field in all space, region definition may be dropped:
    <force_approximation_scaling_factor>
    <k>2</k>
    <px>1 0 1 0</px> <!-- p(x) = x^3 + x -->
    <qy>0 1 0 1</qy> <!-- q(y) = x^2 + 1 -->
    <rz>1 0 1 0</rz> <!-- r(z) = z^3 + z -->
    </force_approximation_scaling_factor>
    Regions may not overlap.

Constructor & Destructor Documentation

◆ WindEffects()

Constructor.

◆ ~WindEffects()

~WindEffects ( )
final

Destructor.

Member Function Documentation

◆ Configure()

void Configure ( const Entity _entity,
const std::shared_ptr< const sdf::Element > &  _sdf,
EntityComponentManager _ecm,
EventManager _eventMgr 
)
finalvirtual

Configure the system.

Parameters
[in]_entityThe entity this plugin is attached to.
[in]_sdfThe SDF Element associated with this system plugin.
[in]_ecmThe EntityComponentManager of the given simulation instance.
[in]_eventMgrThe EventManager of the given simulation instance.

Implements ISystemConfigure.

◆ PreUpdate()

void PreUpdate ( const UpdateInfo _info,
EntityComponentManager _ecm 
)
finalvirtual

Implements ISystemPreUpdate.


The documentation for this class was generated from the following file: