osrf / vrx

Virtual RobotX (VRX) resources.
Apache License 2.0
434 stars 196 forks source link

Add a vehicle based wind sensor #148

Open osrf-migration opened 5 years ago

osrf-migration commented 5 years ago

Original report (archived issue) by Jonathan Wheare (Bitbucket: Jonathan Wheare).


During the 2016 RobotX compettiion, Flinders and Embrey Riddle used on-board wind sensing devices. Such a device can be used to inform the control of a maritime vehicle. The usv_gazebo_wind_plugin currently publishes a global wind estimate for debugging purposes, but a body frame estimate that emulates such a sensor is currently not available.

Use of such a sensor may be outside the scope of the competition, but it’s addition could be useful for research into maritime control systems.

Regards,

Jonathan Wheare.

srmainwaring commented 4 years ago

There is an anemometer sensor for Gazebo here https://github.com/srmainwaring/asv_sim which may be useful as a starting point. There is also ROS plugin that publishes the sensor frame wind velocity (apparent wind) as geometry_msgs/Vector3Stamped.

The sensor is registered on both gzclient and gzserver using a system plugin, so its appears natively in Gazebo and you can view the topics from the main GUI. If there is sufficient interest I can enquire whether the Gazebo team would consider adding the sensor to the main app.

HashirZahir commented 4 years ago

This looks like a fantastic plugin! I think it will be very useful for others who want to explore an on-vehicle wind sensor for real life use. It is very well documented as well, which is a bonus. Correct me if I'm wrong, but I think the only thing missing is ROS interfacing (eg: rostopic publication)? I see it mainly publishes Gazebo Messages.

Would be great to hear from @caguero or @bsb808 if this could be integrated with vrx / gazebo.

srmainwaring commented 4 years ago

@HashirZahir the plugin comes with a ROS interface, this is in the file GazeboRosAnemometer.cc which publishes to wind/apparent (geometry_msgs::Vector3Stamped) on a default frame of /anemometer_link. You can find a fully worked example on a sailing robot here rs750_anemometer.xacro.

Most marine wind sensors publish messages in NMEA 0183 (MWD, MWV, VWR, VWT, etc), so the question is whether the Gazebo plugin should publish a NMWA string to ROS which is then processed. This would make the physical and simulated sensors behave similarly at the device level. I haven't done this, and it doesn't seem to be the common practice for other simulated sensors such as GPS (which also often publish to NMEA), but it would be something to consider.