SignalK / signalk-autopilot

Apache License 2.0
16 stars 13 forks source link

Is something wrong with seatalk 1 ap for track follow? #30

Open ckcrs opened 11 months ago

ckcrs commented 11 months ago

Hello, I'm not sure, if this is due to my mistake or a kinf of bug. System: SignalK version 2.3; autopilot plugin :latest version with Raymarine seatalk 1 AP and wilhelmSK and freeboard. Issue: When I set WSK to auto works, set to wind works, set to standby works, but when set to Track, my autopilot controller st-6001 gives error of :"NO DATA" and alarm beeps, even if with freeboard "navigate to here" point activated and data shown for courseApi and course-provider. ( That is valid for autopilot web application also)

$PSMDST,86,11,03,FC*05 seems a seatalk1 command but not starting with $STALK at serial streams, maybe related?

Any comments, appreciated?

Some log data:

for autopilot plugin: Oct 31 15:19:15 2023-10-31T12:19:15.773Z @signalk/signalk-autopilot datagram: 86,11,03,FC Oct 31 15:19:15 ::ffff:10.10.10.16 - - [31/Oct/2023:12:19:15 +0000] "PUT /signalk/v1/api/vessels/self/steering/autopilot/state HTTP/1.1" 200 177 "-" "WilhelmSK/133 CFNetwork/978.0.7 Darwin/18.7.0" Oct 31 15:19:15 ::ffff:10.10.10.16 - - [31/Oct/2023:12:19:15 +0000] "GET /signalk/v1/api/vessels/self/steering/autopilot/state HTTP/1.1" 200 138 "-" "WilhelmSK/133 CFNetwork/978.0.7 Darwin/18.7.0" for streams-seria: Oct 31 15:36:55 2023-10-31T12:36:55.393Z signalk:streams:serialport Writing:$STALK,54,31,93,0C3B Oct 31 15:36:55 2023-10-31T12:36:55.396Z signalk:streams:serialport Writing:$STALK,56,A1,1F,1743 Oct 31 15:36:57 2023-10-31T12:36:57.144Z signalk:streams:serialport Writing:$STALK,50,02,28,C1,1615 Oct 31 15:36:57 2023-10-31T12:36:57.146Z signalk:streams:serialport Writing:$STALK,51,02,1D,DC,8011 Oct 31 15:36:57 2023-10-31T12:36:57.169Z signalk:streams:serialport Writing:$STALK,52,01,00,0047 Oct 31 15:36:57 2023-10-31T12:36:57.654Z signalk:streams:serialport Writing:$STALK,85,06,00,0B,74,00,96,00,6917 Oct 31 15:36:57 2023-10-31T12:36:57.657Z signalk:streams:serialport Writing:$STALK,85,06,00,0B,74,00,96,00,6917 Oct 31 15:36:57 2023-10-31T12:36:57.659Z signalk:streams:serialport Writing:$STALK,85,06,00,0B,74,00,96,00,6917 Oct 31 15:36:59 2023-10-31T12:36:59.627Z signalk:streams:serialport Writing:$STALK,86,11,03,FC*49 Oct 31 15:36:59 2023-10-31T12:36:59.629Z signalk:streams:serialport Writing:*$PSMDST,86,11,03,FC05** Oct 31 15:36:59 ::ffff:10.10.10.16 - - [31/Oct/2023:12:36:59 +0000] "PUT /signalk/v1/api/vessels/self/steering/autopilot/state HTTP/1.1" 200 177 "-" "WilhelmSK/133 CFNetwork/978.0.7 Darwin/18.7.0" Oct 31 15:36:59 ::ffff:10.10.10.16 - - [31/Oct/2023:12:36:59 +0000] "GET /signalk/v1/api/vessels/self/steering/autopilot/state HTTP/1.1" 200 138 "-" "WilhelmSK/133 CFNetwork/978.0.7 Darwin/18.7.0"l

joabakk commented 11 months ago

Hi,

I don't think track mode was ever fully implemented. There was a requirement that the next waypoint. See https://github.com/SignalK/signalk-autopilot/blob/master/raymarinest.js#L176-L184

There is very little information about this available, so development stopped here

ckcrs commented 11 months ago

Thanks. Sometime ago I've found info about seatalk, I guess sourced from openplotter related document, I hope, this helps for any developer/maintainer of code.

"85  X6  XX  VU ZW ZZ YF 00 yf   Navigation to waypoint information 
                  Cross Track Error: XXX/100 nautical miles 
                   Example: X-track error 2.61nm => 261 dec => 0x105 => X6XX=5_10 
                  Bearing to destination: (U & 0x3) 90° + WV / 2° 
                   Example: GPS course 230°=180+50=290 + 0x64/2 => VUZW=426 
                   U&8: U&8 = 8 -> Bearing is true, U&8 = 0 -> Bearing is magnetic 
                  Distance to destination: Distance 0-9.99nm: ZZZ/100nm, Y & 1 = 1 
                                           Distance >=10.0nm: ZZZ/10 nm, Y & 1 = 0 
                  Direction to steer: if Y & 4 = 4 Steer right to correct error 
                                      if Y & 4 = 0 Steer left  to correct error 
                  Example: Distance = 5.13nm, steer left: 5.13*100 = 513 = 0x201 => ZW ZZ YF=1 20 1 
                           Distance = 51.3nm, steer left: 51.3*10  = 513 = 0x201 => ZW ZZ YF=1 20 0_ 
                  F contains four flags which indicate the available data fields:
                           Bit 0 (F & 1): XTE present
                           Bit 1 (F & 2): Bearing to destination present 
                           Bit 2 (F & 4): Range to destination present 
                           Bit 3 (F & 8): XTE >= 0.3nm 
                       These bits are used to allow a correct translation from for instance an RMB sentence which 
                       contains only an XTE value, all other fields are empty. Since SeaTalk has no special value 
                       for a data field to indicate a "not present" state, these flags are used to indicate the 
                       presence of a value. 
                   In case of a waypoint change, sentence 85, indicating the new bearing and distance, 
                   should be transmitted prior to sentence 82 (which indicates the waypoint change). 
                   Corresponding NMEA sentences: RMB, APB, BWR, BWC, XTE "