2023-03-24, 05:03 PM
It is not implemented. With software it would be possible but I hesitate because this could ruin the performance of the autopilot.
The reason is due to both undefined lag from getting sensor updates in this way which could vary, as well as reliability. Adding any delay from the time the gyro is sampled to when the autopilot can command the rudder to react will degrade performance. Using signalk with a network could make the lag-time highly variable which would further degrade things and make tuning even more difficult.
I want to ensure everyone has the best performance within reason, so the process that reads the IMU using i2c is realtime scheduled meaning no other processes can interrupt or get in its way. The signalk handling in pypilot is not realtime scheduled and doesnt need to be. Using signalk rather than i2c directly here could significantly degrade performance, and even if all the relevant processes were realtime scheduled, there would always be more lag even if all the connections were local. I really really want to avoid people sending the gyro signals over some kind of wireless network which this would allow as it would give pypilot a bad reputation for performance and reliability. This is also the reason why sending inertial sensors over nmea0183 is not supported.
The reason is due to both undefined lag from getting sensor updates in this way which could vary, as well as reliability. Adding any delay from the time the gyro is sampled to when the autopilot can command the rudder to react will degrade performance. Using signalk with a network could make the lag-time highly variable which would further degrade things and make tuning even more difficult.
I want to ensure everyone has the best performance within reason, so the process that reads the IMU using i2c is realtime scheduled meaning no other processes can interrupt or get in its way. The signalk handling in pypilot is not realtime scheduled and doesnt need to be. Using signalk rather than i2c directly here could significantly degrade performance, and even if all the relevant processes were realtime scheduled, there would always be more lag even if all the connections were local. I really really want to avoid people sending the gyro signals over some kind of wireless network which this would allow as it would give pypilot a bad reputation for performance and reliability. This is also the reason why sending inertial sensors over nmea0183 is not supported.