Commit d4c095dd authored by Ricardo Rico Uribe's avatar Ricardo Rico Uribe
Browse files

gazebo core dump corrected - with spawn of wamv

parent e714f54c
# Aquanaute
Repository to simulate the Aquanaute boat in maritime conditions such as wind and waves with the plugins created for the VRX and VRX-Challenge in Gazebo and ROS.
## Installation
* Clone this repo to a Catkin Workspace
* Clone the VRX repo to the same Workspace (https://github.com/osrf/vrx)
* In the path
```
"workspace"/src/vrx/vrx_gazebo/launch/
```
create a new launch file "name".launch and copy the code provided below
* In the path
```
"workspace"/src/vrx/vrx_gazebo/worlds/ocean.world.xacro
```
delete the contents of the file and replace them with the code provided below
## Usage
### modify wind and waves
in the ocean.world.xacro you have
```xml
<!--Waves-->
<xacro:include filename="$(find wave_gazebo)/world_models/ocean_waves/model.xacro"/>
<xacro:ocean_waves gain="0.0" period="5" direction_x="-1.0" direction_y="0.0" angle="0.0"/>
<!--Wind for the WAM-V. Note, wind parameters are set in the plug.-->
<xacro:include filename="$(find vrx_gazebo)/worlds/xacros/usv_wind_plugin.xacro"/>
<xacro:usv_wind_gazebo direction="90" mean_vel="0" var_gain="5" var_time="1">
<wind_objs>
<wind_obj>
<name>wamv</name>
<link_name>base_link</link_name>
<coeff_vector>0.5 0.5 0.33</coeff_vector>
</wind_obj>
</wind_objs>
</xacro:usv_wind_gazebo>
```
it is configured to have no waves and no wind, also the wind and the waves move in the same direction, to activate wind and waves change the "mean_vel" and "gain" parameters respectively (recomended values are smaller than 1.0)
### run
in the workspace run the command at the beginning (and every time you change a parameter)
```bash
catkin_make
```
then launch the file you created
```bash
roslaunch vrx_gazebo name.launch
```
## Author
Ricardo RICO URIBE intern at U2IS in the summer of 2020
## Code
### .launch
```xml
<?xml version="1.0"?>
<launch>
<env name="ROSCONSOLE_CONFIG_FILE" value="$(find vrx_gazebo)/config/custom_rosconsole.conf"/>
<!-- Gazebo world to load -->
<arg name="world" default="$(find vrx_gazebo)/worlds/ocean.world" />
<!-- If true, run gazebo GUI -->
<arg name="gui" default="true" />
<!-- If true, run gazebo in verbose mode -->
<arg name="verbose" default="true"/>
<!-- If true, start in paused state -->
<arg name="paused" default="false"/>
<!-- Set various other gazebo arguments-->
<arg name="extra_gazebo_args" default=""/>
<!-- Start in a default namespace -->
<arg name="namespace" default="wamv"/>
<!-- Initial USV location and attitude-->
<arg name="x" default="0" />
<arg name="y" default="0" />
<arg name="z" default="0.1" />
<arg name="P" default="0" />
<arg name="R" default="0" />
<arg name="Y" default="0" />
<!-- If true, show non-competition ROS topics (/gazebo/model_states, /vrx/debug/wind/direction, etc.)-->
<arg name="non_competition_mode" default="true"/>
<arg name="enable_ros_network" value="$(arg non_competition_mode)"/>
<env name="VRX_DEBUG" value="$(arg non_competition_mode)"/>
<env unless="$(arg non_competition_mode)" name="GAZEBO_MODEL_PATH" value="$(find vrx_gazebo)/models:$(find wamv_gazebo)/models:$(find wamv_description)/models:$(optenv GAZEBO_MODEL_PATH)"/>
<!-- Allow user specified thruster configurations
H = stern trusters on each hull
T = H with a lateral thruster
X = "holonomic" configuration -->
<arg name="thrust_config" default="H" />
<!-- Do you want to enable sensors? -->
<arg name="camera_enabled" default="false" />
<arg name="gps_enabled" default="false" />
<arg name="imu_enabled" default="false" />
<arg name="lidar_enabled" default="false" />
<arg name="ground_truth_enabled" default="false" />
<!-- Start Gazebo with the world file -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(arg world)"/>
<arg name="verbose" value="$(arg verbose)"/>
<arg name="paused" value="$(arg paused)"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="$(arg gui)" />
<arg name="enable_ros_network" value="$(arg enable_ros_network)"/>
<arg name="extra_gazebo_args" value="$(arg extra_gazebo_args)"/>
</include>
<!-- Load robot model -->
<arg name="urdf" default="$(find wamv_gazebo)/urdf/wamv_gazebo.urdf.xacro"/>
<param name="$(arg namespace)/robot_description"
command="$(find xacro)/xacro &#x002D;&#x002D;inorder '$(arg urdf)'
thruster_config:=$(arg thrust_config)
camera_enabled:=$(arg camera_enabled)
gps_enabled:=$(arg gps_enabled)
imu_enabled:=$(arg imu_enabled)
lidar_enabled:=$(arg lidar_enabled)
ground_truth_enabled:=$(arg ground_truth_enabled)
namespace:=$(arg namespace) "/>
<!-- Spawn model in Gazebo, script depending on non_competition_mode -->
<node name="spawn_model" pkg="gazebo_ros" type="spawn_model" if="$(arg non_competition_mode)"
args="-x $(arg x) -y $(arg y) -z $(arg z)
-R $(arg R) -P $(arg P) -Y $(arg Y)
-urdf -param $(arg namespace)/robot_description -model wamv"/>
<node name="spawn_wamv" pkg="vrx_gazebo" type="spawn_wamv.bash" unless="$(arg non_competition_mode)"
args="-x $(arg x) -y $(arg y) -z $(arg z)
-R $(arg R) -P $(arg P) -Y $(arg Y)
--urdf $(arg urdf) --model wamv"/>
</launch>
```
### ocean.world.xacro
```xml
<?xml version="1.0" ?>
<!--
Copyright (C) 2019 Rhys Mainwaring
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<sdf version="1.6"
xmlns:xacro="http://ros.org/wiki/xacro">
<world name="ocean_world">
<!-- GUI -->
<gui>
<plugin name="keyboard_gui_plugin" filename="libKeyboardGUIPlugin.so"/>
<camera name='user_camera'>
<pose frame=''>40 40 20 0 0.4 180</pose>
<view_controller>orbit</view_controller>
<projection_type>perspective</projection_type>
</camera>
</gui>
<!-- Scene -->
<scene>
<sky>
<time>10</time>
<sunrise>6</sunrise>
<sunset>18</sunset>
<clouds>
<speed>12</speed>
<direction>1.57079</direction>
</clouds>
</sky>
<grid>false</grid>
<origin_visual>false</origin_visual>
</scene>
<!-- Lights -->
<include>
<uri>model://sun</uri>
</include>
<!--Waves-->
<xacro:include filename="$(find wave_gazebo)/world_models/ocean_waves/model.xacro"/>
<xacro:ocean_waves gain="0.0" period="5" direction_x="-1.0" direction_y="0.0" angle="0.0"/>
<!--Wind for the WAM-V. Note, wind parameters are set in the plug.-->
<xacro:include filename="$(find vrx_gazebo)/worlds/xacros/usv_wind_plugin.xacro"/>
<xacro:usv_wind_gazebo direction="90" mean_vel="0" var_gain="5" var_time="1">
<wind_objs>
<wind_obj>
<name>wamv</name>
<link_name>base_link</link_name>
<coeff_vector>0.5 0.5 0.33</coeff_vector>
</wind_obj>
</wind_objs>
</xacro:usv_wind_gazebo>
</world>
</sdf>
```
## License
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Changelog for package usv_gazebo_plugins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.3.0 (2019-12-26)
------------------
* Make code_check happy.
* Mod to make use of maxCmd and update to .hgignore
* Contributors: Brian Bingham <briansbingham@gmail.com>, Carlos Aguero
1.2.6 (2019-10-04)
------------------
1.2.5 (2019-09-19)
------------------
* merging default into branch
* Changes for code checker
* Contributors: Brian Bingham <briansbingham@gmail.com>
1.2.4 (2019-09-12)
------------------
1.2.3 (2019-09-12)
------------------
* Minor maintenance updates.
* Fix style error.
* Adding a default value for the length_n plugin parameter
* Contributors: Brian Bingham <briansbingham@gmail.com>, Carlos Aguero, Carlos Aguero <caguero@osrfoundation.org>
1.2.2 (2019-09-06)
------------------
1.2.1 (2019-09-05)
------------------
* updated comments
* minor cleanup + env flag + disable z
* Namespace tweaks.
* Style changes.
* gazebo 7 bug fix
* removed from wamv
* gazebo 7 compatibility
* force vectors are correct; scaling added
* Contributors: Carlos Aguero, Rumman Waqar <rumman.waqar05@gmail.com>
1.2.0 (2019-08-19)
------------------
* Deterministic wind.
* Add v3d plugin - this publishes a vecotr based on the world frame velocity in Gazebo
Update gps configuration to add gazebo gps and v3d plugins to standard configuration
* Add plugin for ROS interface to gazebo GPS sensor.
* added cylinder placeholder
* incremental
* added plate and sphere models
* functional for cubes
* added force visual plugin
* Contributors: Carlos Aguero, Jonathan Wheare <jonathan.wheare@flinders.edu.au>, MarshallRawson, Rumman Waqar <rumman.waqar05@gmail.com>
1.1.2 (2019-07-10)
------------------
* usv_gazebo_wind_plugin.hh changes
* Contributors: Brian Bingham <briansbingham@gmail.com>, Carlos Agüero <cen.aguero@gmail.com>, Rumman Waqar <rumman.waqar05@gmail.com>
1.1.1 (2019-07-03)
------------------
* Reinterpret the wind 'gain' parameter. Set defaults to zero
* updated style for buoyancy plugin
* Contributors: Brian Bingham <briansbingham@gmail.com>, Rumman Waqar <rumman.waqar05@gmail.com>
1.1.0 (2019-07-01)
------------------
* Refactor SpinPropeller to be more clear and match style of RotateEngine
* Publish joint state for chassis engine joint to fix tf tree issue
* addressed Brian's comments
* Connecting wave model to buoyancy plugin
* buoyancy now uses wave height
* capitalized brief sentences
* gazebo 7 vector3[] operator lhv error fixed try 2
* gazebo 7 vector3[] operator lhv error fixed
* gazebo <= 8 fixes for Mass and AngularVel
* complex objects + xacro cleanup
* force applied in correct place
* centroid + volume complete
* moved shape volume into its own file and renamed classes
* tiny refactor
* polyhedron class finished and tests passed
* implemented polyhedron based cube + cylinder submerged volume and cov
* rotation bug fix
* basic volume for box, sphere and cylinder
* removed old volume data structure + created skeleton for volume calc
* removed old volume data structure + created skeleton for volume calc
* added move constructor for buoyancy object and remove copy constructor
* added links and buoyancy object to plugin
* minor cleanup
* added pose for buoyancy element
* parsed buoyancy shape now saved as unique_ptr
* cleaned up parsing
* updated buoyancy xacro + parsing
* Setup buoyancy test build system + test world
* merging with default - need to check wind
* added wind capabilities
* Removing gazebo::msg::Param references and cleaning up for gazebo version < 8 compatibility.
* Removed gazebo messaging, introduces redundancy in model.sdf for ocean. USV and buoyancy plugins only get wave parameters once instead of every update.
* Move link error message.
* Another Nitpick fix (== nullptr) => !
* Nitpick fix (== nullptr) => !
* Clarify required and optional parameters, and remove unused confusing default declarations
* Put required parameters together and make it obvious which are required
* Retune PID for engineJoint with lower P gain, for more realistic behavior
* Add <enableAngle> bool parameter that controls if angle is adjustable or not
* C++ Code style fixes
* Add documentation about maxAngle and angleTopic
* updated documentation
* Attempt to fix build issue with .GetAngle().Radian()
* Attempt to fix build issue with Position() -> GetAngle() for old gazebo version
* Implement PID controller for engine joint to set joint angle
* changed sdf sytax for passing models to be effected by wind and addressed styling
* Attempt to fix build issues SetAngle->SetPosition
* Attempt to fix build issue with different setAngle setPosition implementation based on Gazebo version
* Implement turnable thruster joint
* Basic implementation of angle adjustable thrusters, still need to test, add joints, and change visuals
* merging with default
* fix build issue for gz <8
* merged. expanded xacro capabilities
* Rewrite implementation of setting windDirection
* documenting wind direction
* changing the interface from timePeriod to frequency
* cleaning up the includes order and white spaces
* cleanup
* adding ROS API to probe for wind speed
* enabling the user to input only the angle for wind direction
* increment
* documented
* incremental(basic testing passed)
* changed wind plugin(untested
* Initial testing of random seed with print statements
* Added wavegauge plugin to visualize physical wave height. Setup example with buoy world. Implemented simplified wave height calculation in WavefieldSampler for regularly spaced grid (steepness=1=0).
* verifying with examples
* toward buoy examples
* merging default into named branch
* removed currentVarVel from member variable list and fixed indentation for directives
* made gzmsg more efficient
* Implemented changed after PR is reviewed - V1
Remove Ros dependency (regarding time)
fixed typoes
fixed wrong comments
Exposed seed value to user
Updated purpose of SDF params in the header file
lines are now shorted than 80 chars
added comments around explaining the calculations done
* made wind speed randomized
* merging default to update the feature branch
* Remove more trailing whitespace
Redundant codepath in usv_gazwebo_dynamics_plugin removed. Euler values now derived identically between gazebo 7 and 9.
* Fix trailing whitespace
* Fix line breaks
* Alter patch to use .Ign method to convert between gazebo::math and Ignition::math types
* Add support for Kinetic/Gazebo-7
The ignition types are mostly kept, with code transforming from the methods deprecated in gazebo-8
* Changing license text
* Adding two packages from asv_wave_sim as a part of VRC
* Issue #23: Coordinate the physics and visualization of the wave field
1. Use the asv_wave_sim_gazebo_plugins package for wave field visualisation and depth calculation.
2. Update the buoyancy and dynamics plugins for buoyancy calculations.
3. Update sdf and xacro for models that require buoyancy.
4. Replace the ocean model with ocean_waves in the sandisland world.
* Contributors: Brian Bingham <briansbingham@gmail.com>, Carlos Aguero, Carlos Aguero <caguero@osrfoundation.org>, Carlos Agüero <cen.aguero@gmail.com>, Jonathan Wheare <jonathan.wheare@flinders.edu.au>, MarshallRawson, Rhys Mainwaring <rhys.mainwaring@me.com>, Rumman Waqar <rumman.waqar05@gmail.com>, Tyler Lum <tylergwlum@gmail.com>, Youssef Khaky <youssefkhaky@hotmail.com>, YoussefKhaky <youssefkhaky@hotmail.com.com>
1.0.1 (2019-03-01)
------------------
1.0.0 (2019-02-28)
------------------
* Porting to Gazebo 9
* Rename vmrc to vrx.
* More progress.
* Changed from buoyancy calculation method
* Fixing error where buoyancy force could be applied in the negative direction (downward)
* Add dependency on usv_msgs by usv_gazebo_pinger_plugin. This forces the message to be built before the plugin is compiled.
* Set the sensor WAM-V as the default model
* Fix the doxygen generation
* Update variable names and comments to be compliant with the Gazebo style guide.
* Add the pinger plugin to the wamv_gazebo package.
The wamv_gazebo_sensors.urdf file has been modified to add support for the pinger plugin.
* removing static tags so vessel is freee to move
* Contributors: Brian Bingham <briansbingham@gmail.com>, Carlos Aguero, Carlos Aguero <caguero@osrfoundation.org>, Jonathan Wheare <jonathan.wheare@flinders.edu.au>
0.3.2 (2018-10-08)
------------------
* Include jrivero as maintainer of the ROS packages
* Include headers in the installation of usv_gazebo_plugins
* Contributors: Jose Luis Rivero <jrivero@osrfoundation.org>
0.3.1 (2018-10-05)
------------------
* Decleare eigen as dependency for usv_gazebo_plugins
* modifying grid spacing
* Contributors: Brian Bingham <briansbingham@gmail.com>, Jose Luis Rivero <jrivero@osrfoundation.org>
0.3.0 (2018-09-28)
------------------
* vrx metapackage and spring cleaning.
* adding publication of forces/moments
* trying to get wamv to be static using a fixed joint
* Adding publication from dynamics plugin for wave height at USV CG for Josh's thesis work
* Tweak
* Changelog and minor tweaks.
* Remove extra dependency.
* Merged in generalize-thruster-desc (pull request #34)
Generalize thruster desc
Approved-by: Brian Bingham <briansbingham@gmail.com>
Approved-by: Carlos Agüero <cen.aguero@gmail.com>
* merging changes from PR branch into development branch
* resolving merge conflict
* Adding bits to repond to PR comments
* adding examples for T and X thruster configurations - accessible as args to sandisland.launch. Prototype - too much redundancy in the various urdf.xacro file hierarchy, but functional.
* Tweaks.
* Tabs -> spaces
* Initial style pass
* props now spinning, removed old method of thrust implementation, removed custome UsvDrive message
* working prototype - next remove old method
* prior to splitting thruster into its own header
* increment - builds, but need to go home
* catching up with default
* increment, pushing to work from home
* first steps towards new structure
* Drop log level to DEBUG for imformation unimportant to user
* Minor style changes in the gazebo_ros_color plugin.
* Tweak
* Move log message to DEBUG.
* adding a bit more doxygen, including link to Theory of Operation document
* Tweaks.
* adding doxygen comments
* Doxygen and cleaning up
* Rename buoyLinks to buoyancyLinks and remove debug output.
* More style.
* More tweaks.
* Initial style changes.
* Merge from default.
* Apply Gazebo style.
* Move some ROS_INFO messages to ROS_DEBUG and remove ros::init().
* More tweaks.
* Tweaks
* Tweaks
* Initial work
* Publish joint_states from thrust plugin
* Tweak
* Refactor wind plugin.
* Split the wamv xacro file.
* Generate messages before building the Thrust plugin.
* More modular model with spinning propellers.
* Merge from default
* Add message_generation.
* Backed out changeset 8023d94fc0e1
* Add light buoy challenge
* Remove unsused buoyancy plugin (already in gazebo)
* Boostrap usv_gazebo_plugins
* Move gazebo plugins to usv_gazebo_plugins
* Contributors: Brian Bingham <briansbingham@gmail.com>, Carlos Aguero, Carlos Agüero <caguero@osrfoundation.org>, Kevin Allen <kallen@osrfoundation.org>
cmake_minimum_required(VERSION 2.8.3)
project(usv_gazebo_plugins)
find_package(catkin REQUIRED COMPONENTS gazebo_dev roscpp message_generation xacro wave_gazebo_plugins usv_msgs)
find_package(Eigen3 REQUIRED)
###################################
## catkin specific configuration ##
###################################
catkin_package(
INCLUDE_DIRS include
CATKIN_DEPENDS message_runtime gazebo_dev roscpp wave_gazebo_plugins
)
# Plugins require c++11
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
include_directories( include
${catkin_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIRS}
)
link_directories(
${catkin_LIBRARY_DIRS}
)
## Declare a C++ library
add_library(buoyancy_gazebo_plugin
src/buoyancy_gazebo_plugin.cc
src/shape_volume.cc
src/polyhedron_volume.cc
)
target_link_libraries(buoyancy_gazebo_plugin
${catkin_LIBRARIES}
${GAZEBO_LIBRARIES}
${Eigen_LIBRARIES}
)
install(TARGETS buoyancy_gazebo_plugin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
## Declare a C++ library
add_library(usv_gazebo_dynamics_plugin
src/usv_gazebo_dynamics_plugin.cc
)
target_link_libraries(usv_gazebo_dynamics_plugin
${catkin_LIBRARIES}
${Eigen_LIBRARIES}
)
install(TARGETS usv_gazebo_dynamics_plugin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
## Declare a C++ library
add_library(usv_gazebo_thrust_plugin
src/usv_gazebo_thrust_plugin.cc
)
target_link_libraries(usv_gazebo_thrust_plugin
${catkin_LIBRARIES}
${Eigen_LIBRARIES}
)
install(TARGETS usv_gazebo_thrust_plugin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
## Declare a C++ library
add_library(usv_gazebo_wind_plugin
src/usv_gazebo_wind_plugin.cc
)
target_link_libraries(usv_gazebo_wind_plugin
${catkin_LIBRARIES}
${Eigen_LIBRARIES}
)
install(TARGETS usv_gazebo_wind_plugin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
## Declare a C++ library
add_library(usv_gazebo_acoustic_pinger_plugin
src/acoustic_pinger_plugin.cc
)
add_dependencies(usv_gazebo_acoustic_pinger_plugin usv_msgs_generate_messages_cpp)
target_link_libraries(usv_gazebo_acoustic_pinger_plugin
${catkin_LIBRARIES}
${Eigen_LIBRARIES}
)
install(TARGETS usv_gazebo_acoustic_pinger_plugin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
# Generate demo world files from xacro and install
xacro_add_files(
worlds/buoyancy_plugin_demo.world.xacro
INORDER INSTALL DESTINATION worlds
)
install(DIRECTORY worlds/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/worlds)
if(CATKIN_ENABLE_TESTING)
# buoyancy plugin test
catkin_add_gtest(buoyancy_plugin_test test/buoyancy_test.cc)
target_link_libraries(buoyancy_plugin_test buoyancy_gazebo_plugin)
endif()
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION})
/*
* Copyright (C) 2020 Open Source Robotics Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#ifndef VRX_GAZEBO_ACOUSTIC_PINGER_PLUGIN_HH_
#define VRX_GAZEBO_ACOUSTIC_PINGER_PLUGIN_HH_
#include <geometry_msgs/Vector3.h>
#include <ros/ros.h>
#include <memory>
#include <mutex>
#include <string>
#include <gazebo/common/Events.hh>
#include <gazebo/common/Plugin.hh>
#include <gazebo/common/Time.hh>
#include <gazebo/physics/physics.hh>
#include <gazebo/sensors/GaussianNoiseModel.hh>
#include <ignition/math/Vector3.hh>
namespace gazebo
{
/// \brief Implements a simulated range and bearing pinger localisation system
///
/// Implements a range and bearing pinger system. This assumes that the pinger
/// localisation has a mechanism for estimating the range and bearing
/// of the pinger. Pinger estimates are published using a custom message to the
/// ROS system along with a standard header. This should allow the tf library
/// to transform the sensor reading between frames.
///
/// Accepts the following SDF parameters:
/// <robotNamespace> - Set the namespace of the robot. Used to setup the ROS
/// nodehandle.
/// <frameId> - Tf frame of the sensor message. Used as part of the sensor
/// message publication.
/// <topicName> - Name of the topic that the sensor message will be published on
/// <setPositionTopicName> - Name of the topic that is used to set the position
/// of the simulated pinger sensor.