Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repo symbol

heron_simulator repository

Repository Summary

Checkout URI https://github.com/heron/heron_simulator.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2022-03-16
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
heron_gazebo 0.3.3
heron_simulator 0.3.3

README

Heron USV Simulation

Installation

Use the instructions for ROS Kinetic and Gazebo 7 at the following link:
https://uuvsimulator.github.io/installation/

Then in the src folder of your catkin workspace, run the commands:

git clone https://github.com/heron/heron_simulator  
cd ..
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -yr
  

Also ensure you have the following packages in your src folder: heron, heron_controller, heron_desktop, and imu_tools. Build your workspace and you’re ready to run the simulation!

Running the Simulation

To simulate the Heron and the world, run the following command:

```roslaunch heron_gazebo heron_world.launch


The simulation can be set to change what world it launches. If the launch file is contained within the launch folder of a package (as it usually is), the following commmand must be run:

```roslaunch heron_gazebo heron_world.launch world_pkg:=[PACKAGE] world_pkg_file:=[WORLD_FILE]

If an absolute file path must be provided:

```roslaunch heron_gazebo heron_world.launch use_pkg_path:=0 world_file:=[FILE PATH]


Optionally, multiple Heron USVs can be simulated at the same time, as long as each robot is under a unique namespace.

To do this, run the following commands in separate terminals:  

roslaunch [PACKAGE_CONTAINING_WORLD] [WORLD_LAUNCH_FILE] roslaunch heron_gazebo heron_sim.launch roslaunch heron_gazebo heron_sim.launch namespace:=heron1
roslaunch heron_gazebo heron_sim.launch namespace:=heron2
…, etc.


By default, the namespace is empty. Of course, you can name the namespaces anything you want.

Using 
```PACKAGE_CONTAINING_WORLD=uuv_descriptions
```, there are pre-made worlds for 
```WORLD_FILE
```:
  - ocean_waves.launch
  - mangalia.launch
  - munkholmen.launch
  - empty_underwater_world.launch
  - herkules_ship_wreck.launch
  - lake.launch

**Note: ** "empty_underwater_world" and "herkules_ship_wreck" have very dark oceans, making them difficult to use.

Starting the Heron in any configuration that results in immediate acceleration upon spawn will interfere with the IMU initialization (see Known Issues), so only the x, y, and yaw of the starting location of the Heron can be changed:


```roslaunch heron_gazebo heron_[sim/world].launch x:=[X_METRES] y:=[Y_METRES] yaw:=[YAW_RADIANS]

Control

The Heron is controlled used interactive markers in RViz. One control drives the Heron forward/backward. The other control causes rotation. There are quite a number of transform frames from which to control the Heron.

Most recommended is the Heron’s base frame: [namespace]/base_link. However, the Heron’s world location won’t be shown. If this location must be seen, the frame [namespace]/odom can be used but will have the Heron’s location constantly fluctuating (due to the GPS updates) which can be hard to use.

When simulating multiple Herons, their transform frames are connected via the utm frame. Technically, this frame could be used to visualize the Herons but, due to its globalness, it can be difficult to find the Herons in the visualization.

In any transform frame, all the Herons can be controlled via RViz. You will have to add RobotModel and InteractiveMarker to RViz for each Heron.

Topics

When running the simulation, a custom namespace can be set to prefix all the transform frames and topic names. An empty namespace can be used but, when doing so, the thruster topics used by uuv_simulator will be placed under the heron namespace. This means that an empty namespace and a heron namespace cannot be used at the same time.

The simulated Heron uses the same control topics as the actual Heron. Simulation uses the heron_controller package to control itself. Prefix the topic names below with the simulation’s custom namespace.

  • Simply publish on the cmd_course, cmd_wrench, cmd_helm to use it
  • To publish directly to the thrusters, publish on cmd_drive

Sensors

The Heron has two primary sensors: GPS and IMU. The simulation uses the corresponding hector_gazebo plugins as well as the magnetometer plugin.

When calibrating the magnetometer (using the calibrate_compass script in heron_bringup package), the environment variable ROBOT_NAMESPACE must be set to the robot’s namespace.

Since the EKF Sensor processing node does not expect the robot to teleport (i.e. have its pose drastically change suddenly), the Heron’s odometry will lag behind if you move the Heron using Gazebo’s move/rotate tools.

Sensor Topics:

**Note: ** The following topics should all be prefaced by “/[namespace]/” where [namespace] is the robot’s namespace.

Name Msg Publisher Desc
imu/data_raw Imu Gazebo Raw simulated IMU data
imu/data Imu imu_filter_madgwick Filtered IMU data
imu/rpy Vector3Stamped rpy_translator.py Raw Simulated Roll/Pitch/Yaw of IMU
imu/rpy/filtered Vector3Stamped imu_filter_madgwick Filtered Roll/Pitch/Yaw of IMU
imu/mag_sim MagneticField Gazebo Raw Simulated Magnetometer data
imu/mag_raw Vector3Stamped mag_interpreter.py Raw Simulated Magnetometer data
imu/mag MagneticField mag_interpreter.py Calibrated Magnetometer data
navsat/fix NavSatFix Gazebo Raw Simulated GPS data
navsat/velocity Vector3Stamped Gazebo Simulated Velocity Data in NWU
navsat/vel TwistStamped navsat_vel_translate.py Simulated Velocity Data in ENU
navsat/vel_cov TwistWithCovarianceStamped vel_cov.py ENU Velocity Data with approximate Covariance

Hydrodynamics

File truncated at 100 lines see the full file

Repository Summary

Checkout URI https://github.com/heron/heron_simulator.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2022-03-16
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
heron_gazebo 0.3.3
heron_simulator 0.3.3

README

Heron USV Simulation

Installation

Use the instructions for ROS Kinetic and Gazebo 7 at the following link:
https://uuvsimulator.github.io/installation/

Then in the src folder of your catkin workspace, run the commands:

git clone https://github.com/heron/heron_simulator  
cd ..
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -yr
  

Also ensure you have the following packages in your src folder: heron, heron_controller, heron_desktop, and imu_tools. Build your workspace and you’re ready to run the simulation!

Running the Simulation

To simulate the Heron and the world, run the following command:

```roslaunch heron_gazebo heron_world.launch


The simulation can be set to change what world it launches. If the launch file is contained within the launch folder of a package (as it usually is), the following commmand must be run:

```roslaunch heron_gazebo heron_world.launch world_pkg:=[PACKAGE] world_pkg_file:=[WORLD_FILE]

If an absolute file path must be provided:

```roslaunch heron_gazebo heron_world.launch use_pkg_path:=0 world_file:=[FILE PATH]


Optionally, multiple Heron USVs can be simulated at the same time, as long as each robot is under a unique namespace.

To do this, run the following commands in separate terminals:  

roslaunch [PACKAGE_CONTAINING_WORLD] [WORLD_LAUNCH_FILE] roslaunch heron_gazebo heron_sim.launch roslaunch heron_gazebo heron_sim.launch namespace:=heron1
roslaunch heron_gazebo heron_sim.launch namespace:=heron2
…, etc.


By default, the namespace is empty. Of course, you can name the namespaces anything you want.

Using 
```PACKAGE_CONTAINING_WORLD=uuv_descriptions
```, there are pre-made worlds for 
```WORLD_FILE
```:
  - ocean_waves.launch
  - mangalia.launch
  - munkholmen.launch
  - empty_underwater_world.launch
  - herkules_ship_wreck.launch
  - lake.launch

**Note: ** "empty_underwater_world" and "herkules_ship_wreck" have very dark oceans, making them difficult to use.

Starting the Heron in any configuration that results in immediate acceleration upon spawn will interfere with the IMU initialization (see Known Issues), so only the x, y, and yaw of the starting location of the Heron can be changed:


```roslaunch heron_gazebo heron_[sim/world].launch x:=[X_METRES] y:=[Y_METRES] yaw:=[YAW_RADIANS]

Control

The Heron is controlled used interactive markers in RViz. One control drives the Heron forward/backward. The other control causes rotation. There are quite a number of transform frames from which to control the Heron.

Most recommended is the Heron’s base frame: [namespace]/base_link. However, the Heron’s world location won’t be shown. If this location must be seen, the frame [namespace]/odom can be used but will have the Heron’s location constantly fluctuating (due to the GPS updates) which can be hard to use.

When simulating multiple Herons, their transform frames are connected via the utm frame. Technically, this frame could be used to visualize the Herons but, due to its globalness, it can be difficult to find the Herons in the visualization.

In any transform frame, all the Herons can be controlled via RViz. You will have to add RobotModel and InteractiveMarker to RViz for each Heron.

Topics

When running the simulation, a custom namespace can be set to prefix all the transform frames and topic names. An empty namespace can be used but, when doing so, the thruster topics used by uuv_simulator will be placed under the heron namespace. This means that an empty namespace and a heron namespace cannot be used at the same time.

The simulated Heron uses the same control topics as the actual Heron. Simulation uses the heron_controller package to control itself. Prefix the topic names below with the simulation’s custom namespace.

  • Simply publish on the cmd_course, cmd_wrench, cmd_helm to use it
  • To publish directly to the thrusters, publish on cmd_drive

Sensors

The Heron has two primary sensors: GPS and IMU. The simulation uses the corresponding hector_gazebo plugins as well as the magnetometer plugin.

When calibrating the magnetometer (using the calibrate_compass script in heron_bringup package), the environment variable ROBOT_NAMESPACE must be set to the robot’s namespace.

Since the EKF Sensor processing node does not expect the robot to teleport (i.e. have its pose drastically change suddenly), the Heron’s odometry will lag behind if you move the Heron using Gazebo’s move/rotate tools.

Sensor Topics:

**Note: ** The following topics should all be prefaced by “/[namespace]/” where [namespace] is the robot’s namespace.

Name Msg Publisher Desc
imu/data_raw Imu Gazebo Raw simulated IMU data
imu/data Imu imu_filter_madgwick Filtered IMU data
imu/rpy Vector3Stamped rpy_translator.py Raw Simulated Roll/Pitch/Yaw of IMU
imu/rpy/filtered Vector3Stamped imu_filter_madgwick Filtered Roll/Pitch/Yaw of IMU
imu/mag_sim MagneticField Gazebo Raw Simulated Magnetometer data
imu/mag_raw Vector3Stamped mag_interpreter.py Raw Simulated Magnetometer data
imu/mag MagneticField mag_interpreter.py Calibrated Magnetometer data
navsat/fix NavSatFix Gazebo Raw Simulated GPS data
navsat/velocity Vector3Stamped Gazebo Simulated Velocity Data in NWU
navsat/vel TwistStamped navsat_vel_translate.py Simulated Velocity Data in ENU
navsat/vel_cov TwistWithCovarianceStamped vel_cov.py ENU Velocity Data with approximate Covariance

Hydrodynamics

File truncated at 100 lines see the full file

Repo symbol

heron_simulator repository