Difference between revisions of "TrueWind"

From wiki.bastelbude.grade.de
Jump to: navigation, search
(vessel's Movement and Orientation)
(Wind)
 
(13 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
* https://opencpn.org/wiki/dokuwiki/doku.php?id=opencpn:opencpn_user_manual:terminology
 
 
* http://www.ybw.com/forums/showthread.php?474209-Raymarine-True-amp-Apparent-Wind-calculation
 
* 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://www.sailingworld.com/what-are-my-electronics-telling-me-about-boatspeed-and-heading
Line 11: Line 8:
  
 
== 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
  
* https://en.wikipedia.org/wiki/Euclidean_vector
 
 
=== vessel's Movement and Orientation ===
 
=== vessel's Movement and Orientation ===
 
* <b>'OG'</b> movement over ground
 
* <b>'OG'</b> movement over ground
 
** <b>SOG</b> Speed Over Ground (magnitude) <b>navigation.speedOverGround</b>
 
** <b>SOG</b> Speed Over Ground (magnitude) <b>navigation.speedOverGround</b>
** <b>COG</b> Course Over Ground (direction)
+
** <b>COG</b> Course Over Ground (direction) [0-360°]
 
*** <b>COGt</b> Course Over Ground (relative to true north) <b>navigation.courseOverGroundTrue</b>
 
*** <b>COGt</b> Course Over Ground (relative to true north) <b>navigation.courseOverGroundTrue</b>
 
*** <b>COGm</b> Course Over Ground (relative to magnetic north) <b>navigation.courseOverGroundMagnetic</b>
 
*** <b>COGm</b> Course Over Ground (relative to magnetic north) <b>navigation.courseOverGroundMagnetic</b>
 
* <b>'SH'</b>
 
* <b>'SH'</b>
** <b>STW</b> Speed Trough Water <b>navigation.speedThroughWater</b>
+
** <b>STW</b> Speed Trough Water (magnitude) <b>navigation.speedThroughWater</b>
** <b>HDG</b> Heading
+
** <b>HDG</b> Heading (direction)  [0-360°]
 
*** <b>HDT</b> Heading (relative to true north) <b>navigation.headingTrue</b>
 
*** <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>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>AW</b> Apparent Wind (relative to vessel)
+
* https://github.com/SignalK/specification/issues/520
** <b>AWS</b> Apparent Wind Speed <b>environment.wind.speedApparent</b>
+
==== <b>AW</b> Apparent Wind (relative to vessel) ====
** <b>AWDt</b> Apparent Wind Direction (relative to true north) <b>environment.wind.<strike>directionTrue</strike></b> <b>directionApparantTrue</b>
+
* <b>AWS</b> Apparent Wind Speed (magnitude) <b>environment.wind.speedApparent</b>
** <b>AWDm</b> Apparent Wind Direction (relative to magnetic north) <b>environment.wind.<strike>directionMagnetic</strike></b> <b>directionApparantMagnetic</b>
+
* <b>AWD</b> Apparent Wind Direction (direction) [0-2π rad][0-360°]
** <b>AWA</b> Apparent Wind Angle (relative to HDG) <b>environment.wind.angleApparent</b>
+
** 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>TW</b> True Wind (relative to surface of the water) ====
** <b>TWS</b> True Wind Speed <b>environment.wind.<strike>speedTrue</strike></b> <b>speedWater</b>
+
* <b>TWS</b> True Wind Speed (magnitude) <b>environment.wind.<strike>speedTrue</strike></b> <b>speedWater</b>
** <b>TWDt</b> True Wind Direction (relative to true north) add: <b>environment.wind.directionWaterTrue</b>
+
* <b>TWD</b> True Wind Direction (direction) [0-2π rad][0-360°]
** <b>TWDm</b> True Wind Direction (relative to magnetic north) add: <b>environment.wind.directionWaterMagnetic</b>
+
** True Wind Direction (relative to true north) add: <b>environment.wind.directionWaterTrue</b>
** <b>TWA</b> True Wind Angle (relative to HDG) <b>environment.wind.<strike>angleTrueWater</strike></b> <b>angleWater</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) used in weather forecasts and reports
+
==== <b>GW</b> Ground Wind (relative to ground) ====
** <b>GWS</b> Ground Wind Speed <b>environment.wind.speedOverGround</b>
+
* <b>GWS</b> Ground Wind Speed (magnitude) <b>environment.wind.speedOverGround</b>
** <b>GWDt</b> Ground Wind Direction (relative to true north) add: <b>environment.wind.directionOverGroundTrue</b>
+
* <b>GWD</b> Ground Wind Direction (direction) [0-2π rad][0-360°]
** <b>GWDm</b> Ground Wind Direction (relative to magnetic north) add: <b>environment.wind.directionOverGroundMagnetic</b>
+
** Ground Wind Direction (relative to true north) add: <b>environment.wind.directionOverGroundTrue</b>
** <b>GWA</b> Ground Wind Angle (relative to HDG) <b>environment.wind.<strike>angleTrueGround</strike></b> <b>angleOverGround</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>
  
=== Current ===
+
==== use ====
* <b>DFT</b> Current Drift (speed relative to ground) <b>environment.current.drift</b>
+
* <b>AW</b> one can measure onboard a vessel
* <b>SETt</b> Current Set (direction relative to true north) <b>environment.current.setTrue</b>
+
* <b>TW</b> derived from <b>AW</b> + <b>SH</b>
* <b>SETm</b> Current Set (direction relative to magnetic north) <b>environment.current.setMagnetic</b>
+
** historic as OG only became available by GPS
 +
** of interest at performance sailing
 +
* <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
 +
 
 +
=== other ===
 +
* <b>'CUrrent'</b> movement of water by current, tide, river flows etc. (relative to ground)
 +
** <b>DFT</b> Drift (speed, magnitude) <b>environment.current.drift</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 Ground Wind from Apparent Wind ==
 
== calculate Ground Wind from Apparent Wind ==
* <b>AWA</b> Apparent Wind Angle (relative to HDG) <b>environment.wind.angleApparent</b>
+
* http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html
* <b>HDT</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>GWS</b> Ground Wind Speed <b>environment.wind.speedOverGround</b>
+
** <b>GWS</b> Ground Wind Speed
 
** <code>GWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)</code>
 
** <code>GWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)</code>
 
** <code>GWy = OGy - AWy = SOG * Cos (COG) - AWS * Cos (AWD)</code>
 
** <code>GWy = OGy - AWy = SOG * Cos (COG) - AWS * Cos (AWD)</code>
 
** <code>GWS= SQRT (GWx*GWx  + GWy*GWy)</code>
 
** <code>GWS= SQRT (GWx*GWx  + GWy*GWy)</code>
** <b>GWD</b> Ground Wind Direction (relative to true north) <b>???</b>
+
** <b>GWD</b> Ground Wind Direction (relative to true north)
 
** <code>GWD = ATAN ( GWx / GWy )</code>
 
** <code>GWD = ATAN ( GWx / GWy )</code>
  
 
== (calculate current) ==
 
== (calculate current) ==
* <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>HDT</b> Heading (relative to true north) <b>navigation.headingTrue</b>
+
* <b>HDT</b> Heading (relative to true north)
 
* <b>STW</b> Speed Trough Water  in direction of HDG
 
* <b>STW</b> Speed Trough Water  in direction of HDG
** <b>DFT</b> Drift (current speed relative to ground) <b>environment.current.drift</b>
+
** <b>DFT</b> Drift (current speed relative to ground)
 
** <code>DFTx = OGx - SHx = SOG * Sin (COG) - STW * Sin (HDT)</code>
 
** <code>DFTx = OGx - SHx = SOG * Sin (COG) - STW * Sin (HDT)</code>
 
** <code>DFTy = OGy - SHy = SOG * Cos (COG) - STW * Cos (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 (current direction relative to true north) <b>environment.current.setTrue</b>
+
** <b>SET</b> Set (current direction relative to true north)
 
** <code>SET = ATAN ( DFTx / DFTy )</code>
 
** <code>SET = ATAN ( DFTx / DFTy )</code>
  

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