Difference between revisions of "TrueWind"

From wiki.bastelbude.grade.de
Jump to: navigation, search
(calculate True Wind from Apparent Wind)
(Wind)
 
(71 intermediate revisions by the same user not shown)
Line 1: Line 1:
== calculate True Wind from Apparent Wind ==
+
== see also ==
* <b>AWA</b> Apparent Wind Angle (relative to H) <b>environment.wind.angleApparent</b>
+
* https://coaps.fsu.edu/woce/truewind/paper/index.html
* <b>H</b> Heading (relative to true north) <b>navigation.headingTrue</b>
+
* http://www.catb.org/gpsd/NMEA.html
** <b>AWD</b> Apparent Wind Direction (relative to true north) <b>environment.wind.directionTrue</b>
+
* 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 ==
 +
* 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 ===
 +
* <b>'OG'</b> movement over ground
 +
** <b>SOG</b> Speed Over Ground (magnitude) <b>navigation.speedOverGround</b>
 +
** <b>COG</b> Course Over Ground (direction) [0-360°]
 +
*** <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>'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 ===
 +
* https://github.com/SignalK/specification/issues/520
 +
==== <b>AW</b> Apparent Wind (relative to vessel) ====
 +
* <b>AWS</b> Apparent Wind Speed (magnitude) <b>environment.wind.speedApparent</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>
 +
 
 +
==== use ====
 +
* <b>AW</b> one can measure onboard a vessel
 +
* <b>TW</b> derived from <b>AW</b> + <b>SH</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 ==
 +
* http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html
 +
* <b>AWA</b> Apparent Wind Angle (relative to HDG)
 +
* <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 = SOG * Sin (COG) - AWS * Sin (AWD)</code>
+
** <code>GWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)</code>
** <code>TWy = 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>STW</b> Speed Trough Water <b>navigation.speedThroughWater</b>
+
 
** <b>DFT</b> Current Drift (speed relative to ground) <b>environment.current.drift</b>
+
== (calculate current) ==
** <code>DFTx = SOG * Sin (COG) - STW * Sin (H)</code>
+
* <b>COG</b> Course Over Ground
** <code>DFTy = SOG * Cos (COG) - STW * 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> Current Set (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>
  
== simplified, assuming H=COG ==
+
== signalk-derived-data groundWind.js==
* <b>COG</b> Course Over Ground <b>navigation.courseOverGroundTrue</b>
+
* https://github.com/SignalK/signalk-derived-data/blob/master/calcs/groundWind.js
 
* <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>
 +
 
 +
== 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 ==
 +
=== Heading ===
 +
* see also http://www.navlab.net/Publications/The_Seven_Ways_to_Find_Heading.pdf
 +
* [https://en.wikipedia.org/wiki/Compass#Magnetic_compass magnetic compass]
 +
** H true = H magnetic + [https://en.wikipedia.org/wiki/Magnetic_declination Magnetic declination]
 +
* [https://en.wikipedia.org/wiki/Fluxgate_compass Fluxgate compass]
 +
** H true = H magnetic + [https://en.wikipedia.org/wiki/Magnetic_declination Magnetic declination]
 +
* [https://en.wikipedia.org/wiki/Gyrocompass Gyrocompass]
 +
** H true
 +
* moving baseline [https://en.wikipedia.org/wiki/Real-time_kinematic Real-time kinematic] (GPS)
 +
** H true
 +
 
 +
=== SOG and COG ===
 +
* GPS receiver
  
== see also ==
+
=== STW ===
* http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html
+
* [https://en.wikipedia.org/wiki/Chip_log#More_modern_logs_and_replacements paddle-wheel]
* https://coaps.fsu.edu/woce/truewind/paper/index.html
+
 
 +
=== AWS and AWA ===
 +
* [https://en.wikipedia.org/wiki/Weather_vane wind-vane] (AWA)
 +
* [https://en.wikipedia.org/wiki/Anemometer anemometer]
 +
** cup (AWS)
 +
** hand held propeller (AWS)
 +
** ultrasonic (AWS and AWA)
  
 
[[category:Projekte]]
 
[[category:Projekte]]

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