Difference between revisions of "TrueWind"
(→vessel's Movement and Orientation) |
(→Wind) |
||
(59 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== see also == | == see also == | ||
− | |||
* https://coaps.fsu.edu/woce/truewind/paper/index.html | * https://coaps.fsu.edu/woce/truewind/paper/index.html | ||
− | * http:// | + | * 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 ( | + | ** <b>SOG</b> Speed Over Ground (magnitude) <b>navigation.speedOverGround</b> |
− | * <b> | + | ** <b>COG</b> Course Over Ground (direction) [0-360°] |
− | * <b> | + | *** <b>COGt</b> Course Over Ground (relative to true north) <b>navigation.courseOverGroundTrue</b> |
− | * <b> | + | *** <b>COGm</b> Course Over Ground (relative to magnetic north) <b>navigation.courseOverGroundMagnetic</b> |
− | * <b> | + | * <b>'SH'</b> |
− | * <b> | + | ** <b>STW</b> Speed Trough Water (magnitude) <b>navigation.speedThroughWater</b> |
− | * <b> | + | ** <b>HDG</b> Heading (direction) [0-360°] |
− | * <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> | ||
+ | * 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>AWS</b> Apparent Wind Speed (magnitude) <b>environment.wind.speedApparent</b> | |
− | * <b>AWA</b> Apparent Wind Angle (relative to | + | * <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> | + | ==== use ==== |
− | + | * <b>AW</b> one can measure onboard a vessel | |
− | * <b> | + | * <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> | + | * <b>'CUrrent'</b> movement of water by current, tide, river flows etc. (relative to ground) |
− | * <b> | + | ** <b>DFT</b> Drift (speed, magnitude) <b>environment.current.drift</b> |
− | * <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 | + | == calculate Ground Wind from Apparent Wind == |
− | * <b>AWA</b> Apparent Wind Angle (relative to | + | * http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html |
− | * <b> | + | * <b>AWA</b> Apparent Wind Angle (relative to HDG) |
− | ** <b>AWD</b> Apparent Wind Direction (relative to true north) | + | * <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>AWS</b> Apparent Wind Speed |
− | * <b>COG</b> Course Over Ground | + | * <b>COG</b> Course Over Ground |
− | * <b>SOG</b> Speed Over Ground | + | * <b>SOG</b> Speed Over Ground |
− | ** <b> | + | ** <b>GWS</b> Ground Wind Speed |
− | ** <code> | + | ** <code>GWx = OGx - AWx = SOG * Sin (COG) - AWS * Sin (AWD)</code> |
− | ** <code> | + | ** <code>GWy = OGy - AWy = SOG * Cos (COG) - AWS * Cos (AWD)</code> |
− | ** <code> | + | ** <code>GWS= SQRT (GWx*GWx + GWy*GWy)</code> |
− | ** <b> | + | ** <b>GWD</b> Ground Wind Direction (relative to true north) |
− | ** <code> | + | ** <code>GWD = ATAN ( GWx / GWy )</code> |
− | * <b> | + | |
− | + | == (calculate current) == | |
− | ** <code>DFTx = SOG * Sin (COG) - STW * Sin ( | + | * <b>COG</b> Course Over Ground |
− | ** <code>DFTy = SOG * Cos (COG) - STW * Cos ( | + | * <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>SET</b> Set (current direction relative to true north) |
** <code>SET = ATAN ( DFTx / DFTy )</code> | ** <code>SET = ATAN ( DFTx / DFTy )</code> | ||
− | |||
− | == | + | == signalk-derived-data groundWind.js== |
− | * | + | * 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 | + | * <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> | + | ** <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> | + | ** <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 == | == Sensors == |
Latest revision as of 08:02, 2 November 2018
Contents
see also
- https://coaps.fsu.edu/woce/truewind/paper/index.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
- 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
- '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.
directionTruedirectionApparantTrue - Apparent Wind Direction (relative to magnetic north) environment.wind.
directionMagneticdirectionApparantMagnetic
- Apparent Wind Direction (relative to true north) environment.wind.
- 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.
speedTruespeedWater - 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.
angleTrueWaterangleWater
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.
angleTrueGroundangleOverGround
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
- http://davidburchnavigation.blogspot.com/2013/04/true-true-wind-from-apparent-wind.html
- AWA Apparent Wind Angle (relative to HDG)
- HDT Heading (relative to true north)
- AWD Apparent Wind Direction (relative to true north)
AWD = MOD(H+AWA;360)
- 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
- AWD Apparent Wind Direction
Sensors
Heading
- see also http://www.navlab.net/Publications/The_Seven_Ways_to_Find_Heading.pdf
- magnetic compass
- H true = H magnetic + Magnetic declination
- Fluxgate compass
- H true = H magnetic + Magnetic declination
- Gyrocompass
- H true
- moving baseline Real-time kinematic (GPS)
- H true
SOG and COG
- GPS receiver
STW
AWS and AWA
- wind-vane (AWA)
- anemometer
- cup (AWS)
- hand held propeller (AWS)
- ultrasonic (AWS and AWA)