Difference between revisions of "TrueWind"

From wiki.bastelbude.grade.de
Jump to: navigation, search
(Current)
(Wind)
 
(45 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== see also ==
 
== see also ==
* http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html
 
 
* https://coaps.fsu.edu/woce/truewind/paper/index.html
 
* https://coaps.fsu.edu/woce/truewind/paper/index.html
* http://signalk.org/specification/1.0.0/doc/otherBranches.html
 
 
* http://www.catb.org/gpsd/NMEA.html
 
* http://www.catb.org/gpsd/NMEA.html
 +
* http://www.ybw.com/forums/showthread.php?474209-Raymarine-True-amp-Apparent-Wind-calculation
 +
* https://www.sailingworld.com/what-are-my-electronics-telling-me-about-boatspeed-and-heading
 +
* https://en.wikipedia.org/wiki/Apparent_wind
 +
* https://github.com/cape-io/true-wind/blob/master/true-wind.coffee
  
 
== Terms ==
 
== Terms ==
 +
* https://opencpn.org/wiki/dokuwiki/doku.php?id=opencpn:opencpn_user_manual:terminology
 +
* http://signalk.org/specification/1.0.0/doc/vesselsBranch.html
 +
* https://en.wikipedia.org/wiki/Euclidean_vector
  
 
=== vessel's Movement and Orientation ===
 
=== vessel's Movement and Orientation ===
* <b>SOG</b> Speed Over Ground <b>navigation.speedOverGround</b>
+
* <b>'OG'</b> movement over ground
* <b>COG</b> Course Over Ground (relative to true north) <b>navigation.courseOverGroundTrue</b>
+
** <b>SOG</b> Speed Over Ground (magnitude) <b>navigation.speedOverGround</b>
* <b>COG</b> Course Over Ground (relative to magnetic north) <b>navigation.courseOverGroundMagnetic</b>
+
** <b>COG</b> Course Over Ground (direction) [0-360°]
* <b>STW</b> Speed Trough Water <b>navigation.speedThroughWater</b>
+
*** <b>COGt</b> Course Over Ground (relative to true north) <b>navigation.courseOverGroundTrue</b>
* <b>H</b> Heading (relative to true north) <b>navigation.headingTrue</b>
+
*** <b>COGm</b> Course Over Ground (relative to magnetic north) <b>navigation.courseOverGroundMagnetic</b>
* <b>H</b> Heading (relative to magnetic north) <b>navigation.headingMagnetic</b>
+
* <b>'SH'</b>
 +
** <b>STW</b> Speed Trough Water (magnitude) <b>navigation.speedThroughWater</b>
 +
** <b>HDG</b> Heading (direction)  [0-360°]
 +
*** <b>HDT</b> Heading (relative to true north) <b>navigation.headingTrue</b>
 +
*** <b>HDM</b> Heading (relative to magnetic north) <b>navigation.headingMagnetic</b>
 +
* Course (CRS) – Compass direction that the boat is moving through the water (HDG + Leeway). Note that the difference between CRS and COG is Current. CRS does not include the effect of current.
 +
* Leeway – Leeway is the angle between the HDG and the CRS and results from the lateral movement experienced by the boat as she moves forward through the water
  
 
=== Wind ===
 
=== Wind ===
* <b>AWS</b> Apparent Wind Speed <b>environment.wind.speedApparent</b>
+
* https://github.com/SignalK/specification/issues/520
* <b>AWD</b> Apparent Wind Direction (relative to true north) <b>environment.wind.directionTrue</b>
+
==== <b>AW</b> Apparent Wind (relative to vessel) ====
* <b>AWD</b> Apparent Wind Direction (relative to magnetic north) <b>environment.wind.directionMagnetic</b>
+
* <b>AWS</b> Apparent Wind Speed (magnitude) <b>environment.wind.speedApparent</b>
* <b>AWA</b> Apparent Wind Angle (relative to H) <b>environment.wind.angleApparent</b>
+
* <b>AWD</b> Apparent Wind Direction (direction) [0-2π rad][0-360°]
 +
** Apparent Wind Direction (relative to true north) <b>environment.wind.<strike>directionTrue</strike></b> <b>directionApparantTrue</b>
 +
** Apparent Wind Direction (relative to magnetic north) <b>environment.wind.<strike>directionMagnetic</strike></b> <b>directionApparantMagnetic</b>
 +
* <b>AWA</b> Apparent Wind Angle (relative to HDG) negative to port [-π - +π rad][-180° - +180°] <b>environment.wind.angleApparent</b>
 +
 
 +
==== <b>TW</b> True Wind (relative to surface of the water) ====
 +
* <b>TWS</b> True Wind Speed (magnitude) <b>environment.wind.<strike>speedTrue</strike></b> <b>speedWater</b>
 +
* <b>TWD</b> True Wind Direction (direction) [0-2π rad][0-360°]
 +
** True Wind Direction (relative to true north) add: <b>environment.wind.directionWaterTrue</b>
 +
** True Wind Direction (relative to magnetic north) add: <b>environment.wind.directionWaterMagnetic</b>
 +
* <b>TWA</b> True Wind Angle (relative to HDG) negative to port [-π - +π rad][-180° - +180°] <b>environment.wind.<strike>angleTrueWater</strike></b> <b>angleWater</b>
 +
 
 +
==== <b>GW</b> Ground Wind (relative to ground) ====
 +
* <b>GWS</b> Ground Wind Speed (magnitude) <b>environment.wind.speedOverGround</b>
 +
* <b>GWD</b> Ground Wind Direction (direction) [0-2π rad][0-360°]
 +
** Ground Wind Direction (relative to true north) add: <b>environment.wind.directionOverGroundTrue</b>
 +
** Ground Wind Direction (relative to magnetic north) add: <b>environment.wind.directionOverGroundMagnetic</b>
 +
* <b>GWA</b> Ground Wind Angle (relative to HDG) negative to port [-π - +π rad][-180° - +180°] <b>environment.wind.<strike>angleTrueGround</strike></b> <b>angleOverGround</b>
  
* <b>TWS</b> True Wind Speed (relative to ground) <b>environment.wind.speedOverGround</b>
+
==== use ====
* <b>TWS</b> True Wind Speed (relative to water) <b>environment.wind.speedTrue</b>
+
* <b>AW</b> one can measure onboard a vessel
* <b>TWD</b> True Wind Direction (relative to true north) <b>???</b>
+
* <b>TW</b> derived from <b>AW</b> + <b>SH</b>
* <b>TWA</b> True Wind Angle (relative to H)
+
** historic as OG only became available by GPS
** Description: True wind angle based on speed over ground, negative to port <b>environment.wind.angleTrueGround</b>
+
** of interest at performance sailing
** Description: True wind angle based on speed through water, negative to port <b>environment.wind.angleTrueWater</b>
+
* <b>GW</b> derived from <b>AW</b> + <b>OG</b>
 +
** used in weather forecasts and reports
 +
** useful to plan a route
 +
** note weather changes
  
=== Current ===
+
=== other ===
* <b>DFT</b> Drift (speed relative to ground) <b>environment.current.drift</b>
+
* <b>'CUrrent'</b> movement of water by current, tide, river flows etc. (relative to ground)
* <b>SET</b> Set (direction relative to true north) <b>environment.current.setTrue</b>
+
** <b>DFT</b> Drift (speed, magnitude) <b>environment.current.drift</b>
* <b>SET</b> Set (direction relative to magnetic north) <b>environment.current.setMagnetic</b>
+
** <b>SETt</b> Set (direction)
 +
*** <b>SETt</b> Set (direction relative to true north) <b>environment.current.setTrue</b>
 +
*** <b>SETm</b> Set (direction relative to magnetic north) <b>environment.current.setMagnetic</b>
  
== calculate True Wind from Apparent Wind ==
+
== calculate Ground Wind from Apparent Wind ==
* <b>AWA</b> Apparent Wind Angle (relative to H) <b>environment.wind.angleApparent</b>
+
* http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html
* <b>H</b> Heading (relative to true north) <b>navigation.headingTrue</b>
+
* <b>AWA</b> Apparent Wind Angle (relative to HDG)
** <b>AWD</b> Apparent Wind Direction (relative to true north) <b>environment.wind.directionTrue</b>
+
* <b>HDT</b> Heading (relative to true north)
 +
** <b>AWD</b> Apparent Wind Direction (relative to true north)
 
** <code>AWD =  MOD(H+AWA;360)</code>
 
** <code>AWD =  MOD(H+AWA;360)</code>
  
* <b>AWS</b> Apparent Wind Speed <b>environment.wind.speedApparent</b>
+
* <b>AWS</b> Apparent Wind Speed
* <b>COG</b> Course Over Ground <b>navigation.courseOverGroundTrue</b>
+
* <b>COG</b> Course Over Ground
* <b>SOG</b> Speed Over Ground <b>navigation.speedOverGround</b>
+
* <b>SOG</b> Speed Over Ground
** <b>TWS</b> True Wind Speed (relative to ground) <b>environment.wind.speedOverGround</b>
+
** <b>GWS</b> Ground Wind Speed
** <code>TWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)</code>
+
** <code>GWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)</code>
** <code>TWy = OGy - AWy = SOG * Cos (COG) - AWS * Cos (AWD)</code>
+
** <code>GWy = OGy - AWy = SOG * Cos (COG) - AWS * Cos (AWD)</code>
** <code>TWS= SQRT (TWx*TWx + TWy*TWy)</code>
+
** <code>GWS= SQRT (GWx*GWx + GWy*GWy)</code>
** <b>TWD</b> True Wind Direction (relative to true north) <b>???</b>
+
** <b>GWD</b> Ground Wind Direction (relative to true north)
** <code>TWD = ATAN ( TWx / TWy )</code>
+
** <code>GWD = ATAN ( GWx / GWy )</code>
* <b>S</b> Speed over ground in direction of H
+
 
** <b>DFT</b> Drift (speed relative to ground) <b>???</b>
+
== (calculate current) ==
** <code>DFTx = OGx - SHx = SOG * Sin (COG) - S * Sin (H)</code>
+
* <b>COG</b> Course Over Ground
** <code>DFTy = OGy - SHy = SOG * Cos (COG) - S * Cos (H)</code>
+
* <b>SOG</b> Speed Over Ground
 +
* <b>HDT</b> Heading (relative to true north)
 +
* <b>STW</b> Speed Trough Water  in direction of HDG
 +
** <b>DFT</b> Drift (current speed relative to ground)
 +
** <code>DFTx = OGx - SHx = SOG * Sin (COG) - STW * Sin (HDT)</code>
 +
** <code>DFTy = OGy - SHy = SOG * Cos (COG) - STW * Cos (HDT)</code>
 
** <code>DFT= SQRT (DFTx*DFTx  + DFTy*DFTy)</code>
 
** <code>DFT= SQRT (DFTx*DFTx  + DFTy*DFTy)</code>
** <b>SET</b> Set (direction relative to true north) <b>???</b>
+
** <b>SET</b> Set (current direction relative to true north)
 
** <code>SET = ATAN ( DFTx / DFTy )</code>
 
** <code>SET = ATAN ( DFTx / DFTy )</code>
[[File:Wind_1.jpg|500px]]
 
  
== signalk-derived-data (assuming COG=H)==
+
== signalk-derived-data groundWind.js==
 
* https://github.com/SignalK/signalk-derived-data/blob/master/calcs/groundWind.js
 
* https://github.com/SignalK/signalk-derived-data/blob/master/calcs/groundWind.js
* <b>COG</b> Course Over Ground <b>navigation.courseOverGroundTrue</b>
 
 
* <b>SOG</b> Speed Over Ground <b>navigation.speedOverGround</b>
 
* <b>SOG</b> Speed Over Ground <b>navigation.speedOverGround</b>
* <b>AWA</b> Apparent Wind Angle (relative to H) <b>environment.wind.angleApparent</b>
+
* <b>AWA</b> Apparent Wind Angle (relative to HDG) <b>environment.wind.angleApparent</b>
 
* <b>AWS</b> Apparent Wind Speed <b>environment.wind.speedApparent</b>
 
* <b>AWS</b> Apparent Wind Speed <b>environment.wind.speedApparent</b>
 
** <code>AWx = AWS * Cos (AWA)</code>
 
** <code>AWx = AWS * Cos (AWA)</code>
 
** <code>AWy = AWS * Sin (AWA)</code>
 
** <code>AWy = AWS * Sin (AWA)</code>
** <b>TWA</b> True Wind Angle (relative to H) <b>environment.wind.angleTrueGround</b>
+
** <b>GWA</b> Ground Wind Angle (relative to HDG) <b>environment.wind.angleTrueGround</b>
** <code>ATAN2(AWy, -SOG + AWx)</code>
+
** <code>GWA = ATAN2(AWy, -SOG + AWx)</code>
** <b>TWS</b> True Wind Speed (relative to ground) <b>environment.wind.speedOverGround</b>
+
** <b>GWS</b> Ground Wind Speed (relative to ground) <b>environment.wind.speedOverGround</b>
** <code>SQRT (POWER(AWy,2) POWER(-SOG + AWx,2))</code>
+
** <code>GWS = SQRT (POWER(AWy,2) POWER(-SOG + AWx,2))</code>
[[File:Wind_2.jpg|500px]]
+
 
 +
== signalk-derived-data windDirection.js ==
 +
* https://github.com/SignalK/signalk-derived-data/blob/master/calcs/windDirection.js
 +
* <b>HDG</b> Heading
 +
** <b>HDT</b> Heading (relative to true north) <b>navigation.headingTrue</b>
 +
** <b>HDM</b> Heading (relative to magnetic north) <b>navigation.headingMagnetic</b>
 +
* <b>AWA</b> Apparent Wind Angle (relative to HDG) <b>environment.wind.angleApparent</b>
 +
** <b>AWD</b> Apparent Wind Direction
 +
*** <b>environment.wind.directionTrue</b>
 +
*** <b>environment.wind.directionMagnetic</b>
 +
** <code>AWD =  HDG + AWA</code><br><code>if (AWD > Math.PI * 2) AWD -= Math.PI * 2</code><br><code>else if (AWD < 0) AWD += Math.PI * 2</code>
  
 
== Sensors ==
 
== Sensors ==

Latest revision as of 08:02, 2 November 2018

see also

Terms

vessel's Movement and Orientation

  • 'OG' movement over ground
    • SOG Speed Over Ground (magnitude) navigation.speedOverGround
    • COG Course Over Ground (direction) [0-360°]
      • COGt Course Over Ground (relative to true north) navigation.courseOverGroundTrue
      • COGm Course Over Ground (relative to magnetic north) navigation.courseOverGroundMagnetic
  • 'SH'
    • STW Speed Trough Water (magnitude) navigation.speedThroughWater
    • HDG Heading (direction) [0-360°]
      • HDT Heading (relative to true north) navigation.headingTrue
      • HDM Heading (relative to magnetic north) navigation.headingMagnetic
  • Course (CRS) – Compass direction that the boat is moving through the water (HDG + Leeway). Note that the difference between CRS and COG is Current. CRS does not include the effect of current.
  • Leeway – Leeway is the angle between the HDG and the CRS and results from the lateral movement experienced by the boat as she moves forward through the water

Wind

AW Apparent Wind (relative to vessel)

  • AWS Apparent Wind Speed (magnitude) environment.wind.speedApparent
  • AWD Apparent Wind Direction (direction) [0-2π rad][0-360°]
    • Apparent Wind Direction (relative to true north) environment.wind.directionTrue directionApparantTrue
    • Apparent Wind Direction (relative to magnetic north) environment.wind.directionMagnetic directionApparantMagnetic
  • AWA Apparent Wind Angle (relative to HDG) negative to port [-π - +π rad][-180° - +180°] environment.wind.angleApparent

TW True Wind (relative to surface of the water)

  • TWS True Wind Speed (magnitude) environment.wind.speedTrue speedWater
  • TWD True Wind Direction (direction) [0-2π rad][0-360°]
    • True Wind Direction (relative to true north) add: environment.wind.directionWaterTrue
    • True Wind Direction (relative to magnetic north) add: environment.wind.directionWaterMagnetic
  • TWA True Wind Angle (relative to HDG) negative to port [-π - +π rad][-180° - +180°] environment.wind.angleTrueWater angleWater

GW Ground Wind (relative to ground)

  • GWS Ground Wind Speed (magnitude) environment.wind.speedOverGround
  • GWD Ground Wind Direction (direction) [0-2π rad][0-360°]
    • Ground Wind Direction (relative to true north) add: environment.wind.directionOverGroundTrue
    • Ground Wind Direction (relative to magnetic north) add: environment.wind.directionOverGroundMagnetic
  • GWA Ground Wind Angle (relative to HDG) negative to port [-π - +π rad][-180° - +180°] environment.wind.angleTrueGround angleOverGround

use

  • AW one can measure onboard a vessel
  • TW derived from AW + SH
    • historic as OG only became available by GPS
    • of interest at performance sailing
  • GW derived from AW + OG
    • used in weather forecasts and reports
    • useful to plan a route
    • note weather changes

other

  • 'CUrrent' movement of water by current, tide, river flows etc. (relative to ground)
    • DFT Drift (speed, magnitude) environment.current.drift
    • SETt Set (direction)
      • SETt Set (direction relative to true north) environment.current.setTrue
      • SETm Set (direction relative to magnetic north) environment.current.setMagnetic

calculate Ground Wind from Apparent Wind

  • AWS Apparent Wind Speed
  • COG Course Over Ground
  • SOG Speed Over Ground
    • GWS Ground Wind Speed
    • GWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)
    • GWy = OGy - AWy = SOG * Cos (COG) - AWS * Cos (AWD)
    • GWS= SQRT (GWx*GWx + GWy*GWy)
    • GWD Ground Wind Direction (relative to true north)
    • GWD = ATAN ( GWx / GWy )

(calculate current)

  • COG Course Over Ground
  • SOG Speed Over Ground
  • HDT Heading (relative to true north)
  • STW Speed Trough Water in direction of HDG
    • DFT Drift (current speed relative to ground)
    • DFTx = OGx - SHx = SOG * Sin (COG) - STW * Sin (HDT)
    • DFTy = OGy - SHy = SOG * Cos (COG) - STW * Cos (HDT)
    • DFT= SQRT (DFTx*DFTx + DFTy*DFTy)
    • SET Set (current direction relative to true north)
    • SET = ATAN ( DFTx / DFTy )

signalk-derived-data groundWind.js

  • https://github.com/SignalK/signalk-derived-data/blob/master/calcs/groundWind.js
  • SOG Speed Over Ground navigation.speedOverGround
  • AWA Apparent Wind Angle (relative to HDG) environment.wind.angleApparent
  • AWS Apparent Wind Speed environment.wind.speedApparent
    • AWx = AWS * Cos (AWA)
    • AWy = AWS * Sin (AWA)
    • GWA Ground Wind Angle (relative to HDG) environment.wind.angleTrueGround
    • GWA = ATAN2(AWy, -SOG + AWx)
    • GWS Ground Wind Speed (relative to ground) environment.wind.speedOverGround
    • GWS = SQRT (POWER(AWy,2) POWER(-SOG + AWx,2))

signalk-derived-data windDirection.js

  • https://github.com/SignalK/signalk-derived-data/blob/master/calcs/windDirection.js
  • HDG Heading
    • HDT Heading (relative to true north) navigation.headingTrue
    • HDM Heading (relative to magnetic north) navigation.headingMagnetic
  • AWA Apparent Wind Angle (relative to HDG) environment.wind.angleApparent
    • AWD Apparent Wind Direction
      • environment.wind.directionTrue
      • environment.wind.directionMagnetic
    • AWD = HDG + AWA
      if (AWD > Math.PI * 2) AWD -= Math.PI * 2
      else if (AWD < 0) AWD += Math.PI * 2

Sensors

Heading

SOG and COG

  • GPS receiver

STW

AWS and AWA