-
Notifications
You must be signed in to change notification settings - Fork 276
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added example world for
DopplerVelocityLogSystem
(#2373)
# Summary The examples/worlds directory does not contain any example world for DopplerVelocityLogSystem plugin. This PR adds the following: Example world based on test/worlds/flat_seabed.sdf but with a SceneBroadcaster. README.md in test/worlds directory to inform users not to use those world files. More information can be found in Issue #2344 and PR #2346. # Test it This world can be tested (after building and sourcing the workspace) using the following command ``` gz sim flat_seabed.sdf ``` --------- Signed-off-by: Saurabh Kamat <[email protected]>
- Loading branch information
Showing
2 changed files
with
300 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,291 @@ | ||
<?xml version="1.0" ?> | ||
<!-- | ||
Example showing the usage of the Doppler Velocity Log (DVL) sensor | ||
on an Autonomous Underwater Vehicle (AUV). | ||
The world contains the MBARI Tethys LRAUV model along with | ||
the following plugins: | ||
* Buoyancy: applies buoyancy forces | ||
* DopplerVelocityLogSystem: sensor to measure doppler velocity | ||
* JointPositionController: controls the vertical and horizontal fins | ||
* LiftDrag: generates forces on the vertical and horizontal fins | ||
* Thruster: propels the vehicle | ||
* Hydrodynamics: applies forces such as added mass, drag and coriolis | ||
The AUV can be controlled using the following commands (to move in a circle): | ||
1. Move the rudder: | ||
gz topic -t /model/tethys/joint/vertical_fins_joint/0/cmd_pos \ | ||
-m gz.msgs.Double -p 'data: -0.17' | ||
2. Propel the vehicle: | ||
gz topic -t /model/tethys/joint/propeller_joint/cmd_thrust \ | ||
-m gz.msgs.Double -p 'data: -31' | ||
To see the DVL output run the following command: | ||
3. gz topic -t /dvl/velocity -e | ||
--> | ||
<sdf version="1.6"> | ||
<world name="dvl_world"> | ||
<scene> | ||
<!-- For turquoise ambient to match particle effect --> | ||
<ambient>0.0 1.0 1.0</ambient> | ||
<!-- For default gray ambient --> | ||
<background>0.0 0.7 0.8</background> | ||
|
||
<grid>false</grid> | ||
</scene> | ||
|
||
<physics name="1ms" type="ode"> | ||
<max_step_size>0.001</max_step_size> | ||
<real_time_factor>1.0</real_time_factor> | ||
</physics> | ||
<plugin | ||
filename="gz-sim-physics-system" | ||
name="gz::sim::systems::Physics"> | ||
</plugin> | ||
<plugin | ||
filename="gz-sim-sensors-system" | ||
name="gz::sim::systems::Sensors"> | ||
</plugin> | ||
<plugin | ||
filename="gz-sim-dvl-system" | ||
name="gz::sim::systems::DopplerVelocityLogSystem"> | ||
</plugin> | ||
<plugin | ||
filename="gz-sim-buoyancy-system" | ||
name="gz::sim::systems::Buoyancy"> | ||
<uniform_fluid_density>1000</uniform_fluid_density> | ||
</plugin> | ||
<plugin | ||
filename="gz-sim-scene-broadcaster-system" | ||
name="gz::sim::systems::SceneBroadcaster"> | ||
</plugin> | ||
<plugin | ||
filename="gz-sim-contact-system" | ||
name="gz::sim::systems::Contact"> | ||
</plugin> | ||
<plugin | ||
filename="gz-sim-user-commands-system" | ||
name="gz::sim::systems::UserCommands"> | ||
</plugin> | ||
|
||
<light type="directional" name="sun"> | ||
<cast_shadows>true</cast_shadows> | ||
<pose>0 0 10 0 0 0</pose> | ||
<diffuse>1 1 1 1</diffuse> | ||
<specular>0.5 0.5 0.5 1</specular> | ||
<attenuation> | ||
<range>1000</range> | ||
<constant>0.9</constant> | ||
<linear>0.01</linear> | ||
<quadratic>0.001</quadratic> | ||
</attenuation> | ||
<direction>-0.5 0.1 -0.9</direction> | ||
</light> | ||
|
||
<!-- This invisible plane helps with orbiting the camera, especially at large scales --> | ||
<model name="horizontal_plane"> | ||
<static>true</static> | ||
<link name="link"> | ||
<visual name="visual"> | ||
<geometry> | ||
<plane> | ||
<normal>0 0 1</normal> | ||
<!-- 300 km x 300 km --> | ||
<size>300000 300000</size> | ||
</plane> | ||
</geometry> | ||
<transparency>1.0</transparency> | ||
</visual> | ||
</link> | ||
</model> | ||
|
||
<model name="sea_bottom"> | ||
<static>true</static> | ||
<pose>0 0 -100 0 0 0</pose> | ||
<link name="link"> | ||
<collision name="collision"> | ||
<geometry> | ||
<plane> | ||
<normal>0 0 1</normal> | ||
<!-- 300 km x 300 km --> | ||
<size>300000 300000</size> | ||
</plane> | ||
</geometry> | ||
</collision> | ||
<visual name="visual"> | ||
<material> | ||
<ambient>0.5 0.5 0.5</ambient> | ||
<diffuse>0.5 0.5 0.5</diffuse> | ||
</material> | ||
<geometry> | ||
<plane> | ||
<normal>0 0 1</normal> | ||
<!-- 300 km x 300 km --> | ||
<size>300000 300000</size> | ||
</plane> | ||
</geometry> | ||
</visual> | ||
</link> | ||
</model> | ||
|
||
<include> | ||
<pose>0 0 -80 0 0 1.57</pose> | ||
<uri>https://fuel.gazebosim.org/1.0/accurrent/models/MBARI Tethys LRAUV</uri> | ||
|
||
<experimental:params> | ||
<sensor | ||
element_id="base_link" action="add" | ||
name="teledyne_pathfinder_dvl" | ||
type="custom" gz:type="dvl"> | ||
<pose degrees="true">-0.60 0 -0.16 0 0 180</pose> | ||
<always_on>1</always_on> | ||
<update_rate>1</update_rate> | ||
<topic>/dvl/velocity</topic> | ||
<gz:dvl> | ||
<type>phased_array</type> | ||
<arrangement degrees="true"> | ||
<beam id="1"> | ||
<aperture>2</aperture> | ||
<rotation>45</rotation> | ||
<tilt>30</tilt> | ||
</beam> | ||
<beam> | ||
<aperture>2</aperture> | ||
<rotation>135</rotation> | ||
<tilt>30</tilt> | ||
</beam> | ||
<beam> | ||
<aperture>2</aperture> | ||
<rotation>-45</rotation> | ||
<tilt>30</tilt> | ||
</beam> | ||
<beam> | ||
<aperture>2</aperture> | ||
<rotation>-135</rotation> | ||
<tilt>30</tilt> | ||
</beam> | ||
</arrangement> | ||
<tracking> | ||
<bottom_mode> | ||
<when>best</when> | ||
<noise type="gaussian"> | ||
<!-- +/- 0.4 cm/s precision at 10 m/s within 2 stddevs --> | ||
<stddev>0.002</stddev> | ||
</noise> | ||
<visualize>false</visualize> | ||
</bottom_mode> | ||
</tracking> | ||
<!-- Roughly 1 m resolution at a 100m --> | ||
<resolution>0.01</resolution> | ||
<maximum_range>100.</maximum_range> | ||
<minimum_range>0.1</minimum_range> | ||
<!-- ENU to SFM --> | ||
<reference_frame>0 0 0 0 0 -1.570796</reference_frame> | ||
</gz:dvl> | ||
</sensor> | ||
</experimental:params> | ||
|
||
<!-- Odometry publisher --> | ||
<plugin | ||
filename="gz-sim-odometry-publisher-system" | ||
name="gz::sim::systems::OdometryPublisher"> | ||
</plugin> | ||
|
||
<!-- Joint controllers --> | ||
<plugin | ||
filename="gz-sim-joint-position-controller-system" | ||
name="gz::sim::systems::JointPositionController"> | ||
<joint_name>horizontal_fins_joint</joint_name> | ||
<p_gain>0.1</p_gain> | ||
</plugin> | ||
|
||
<plugin | ||
filename="gz-sim-joint-position-controller-system" | ||
name="gz::sim::systems::JointPositionController"> | ||
<joint_name>vertical_fins_joint</joint_name> | ||
<p_gain>0.1</p_gain> | ||
</plugin> | ||
|
||
<plugin | ||
filename="gz-sim-thruster-system" | ||
name="gz::sim::systems::Thruster"> | ||
<namespace>tethys</namespace> | ||
<use_angvel_cmd>0</use_angvel_cmd> | ||
<joint_name>propeller_joint</joint_name> | ||
<thrust_coefficient>0.004422</thrust_coefficient> | ||
<fluid_density>1000</fluid_density> | ||
<propeller_diameter>0.2</propeller_diameter> | ||
</plugin> | ||
|
||
<!-- Lift and drag --> | ||
|
||
<!-- Vertical fin --> | ||
<plugin | ||
filename="gz-sim-lift-drag-system" | ||
name="gz::sim::systems::LiftDrag"> | ||
<air_density>1000</air_density> | ||
<cla>4.13</cla> | ||
<cla_stall>-1.1</cla_stall> | ||
<cda>0.2</cda> | ||
<cda_stall>0.03</cda_stall> | ||
<alpha_stall>0.17</alpha_stall> | ||
<a0>0</a0> | ||
<area>0.0244</area> | ||
<upward>0 1 0</upward> | ||
<forward>1 0 0</forward> | ||
<link_name>vertical_fins</link_name> | ||
<cp>0 0 0</cp> | ||
</plugin> | ||
|
||
<!-- Horizontal fin --> | ||
<plugin | ||
filename="gz-sim-lift-drag-system" | ||
name="gz::sim::systems::LiftDrag"> | ||
<air_density>1000</air_density> | ||
<cla>4.13</cla> | ||
<cla_stall>-1.1</cla_stall> | ||
<cda>0.2</cda> | ||
<cda_stall>0.03</cda_stall> | ||
<alpha_stall>0.17</alpha_stall> | ||
<a0>0</a0> | ||
<area>0.0244</area> | ||
<upward>0 0 1</upward> | ||
<forward>1 0 0</forward> | ||
<link_name>horizontal_fins</link_name> | ||
<cp>0 0 0</cp> | ||
</plugin> | ||
|
||
<!-- Hydrodynamics plugin--> | ||
<plugin | ||
filename="gz-sim-hydrodynamics-system" | ||
name="gz::sim::systems::Hydrodynamics"> | ||
<link_name>base_link</link_name> | ||
<xDotU>-4.876161</xDotU> | ||
<yDotV>-126.324739</yDotV> | ||
<zDotW>-126.324739</zDotW> | ||
<kDotP>0</kDotP> | ||
<mDotQ>-33.46</mDotQ> | ||
<nDotR>-33.46</nDotR> | ||
<xUabsU>-6.2282</xUabsU> | ||
<xU>0</xU> | ||
<yVabsV>-601.27</yVabsV> | ||
<yV>0</yV> | ||
<zWabsW>-601.27</zWabsW> | ||
<zW>0</zW> | ||
<kPabsP>-0.1916</kPabsP> | ||
<kP>0</kP> | ||
<mQabsQ>-632.698957</mQabsQ> | ||
<mQ>0</mQ> | ||
<nRabsR>-632.698957</nRabsR> | ||
<nR>0</nR> | ||
</plugin> | ||
</include> | ||
</world> | ||
</sdf> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# Integration Testing Files | ||
|
||
## Purpose | ||
|
||
This folder contains world files specifically designed for purpose of integration testing of system plugins. **They are strictly for testing and not meant to be run as examples.** | ||
|
||
## Running system plugin examples | ||
|
||
The world files are present in the `examples/worlds` directory of this repository. |