Skip to content
free autopilot for sailboats using signalk written in python
Python C++ C CSS JavaScript Makefile Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
arduino improve reaction timing, and rudder feedback stops Sep 30, 2019
pypilot improve rudder offset to be near zero Sep 30, 2019
rf initial revison of rf control Aug 30, 2019
scripts update readme Jul 25, 2019
signalk improve buffer Sep 24, 2019
ui improve ui showing servo flags on rudder calibration page Sep 26, 2019
webapp fix webapp gains Jun 11, 2019
.gitignore add gitignore files Jul 2, 2017
README Merge openplotter:pypilot Jul 25, 2019 fix broken python setup May 13, 2018 correct pilots and bump version Jun 11, 2018



The dependencies can be installed with "apt install" or sometimes 'pip install"

server dependencies (required): python-gps python-serial libpython-dev python-numpy python-scipy swig
                    (recommended): ujson pyudev
lcdclient dependencies: python-pil
webapp dependencies: python-flask python-gevent-websocket

client dependencies (viewers control applications)
python-wxgtk3.0 python-opengl  pyglet pywavefront

You may want to run pypilot as a service, see the scripts/debian directory

Clone the data repository and copy data:

git clone
git clone --depth 1
cp -rv pypilot_data/* pypilot

Build and install pypilot:

cd pypilot
python build
sudo python install

most of the scripts can be run individually as standalone
or test programs, some function as clients, other as servers

servers (only one executes at a time)

These server scripts can be run as tests:
* execute this script directly

pypilot/ -- autopilot

instead of running the complete autopilot these scripts provide a server with specific functionallity.

pypilot/ -- imu specific to boat motions
                      includes automatic 2d/3d calibration and alignment of magnetic sensors
                      * useful for testing the imu (gyros) or even just reading gyros
pypilot/ -- signalk <-> nmea0183 translator
                       reads nmea0183 from serial ports or from tcp connections, and multiplexes
                       the output to both nmea0183.
                       listed on tcp port 20220 by default
                       * convert and multiplex nmea0183 data

pypilot/ --   use to test or verify a working motor controller is detected,
                      can be used to control and calibrate the servo

signalk/ -- implements poll based server allowing external manipulation,
                     * demo server with clock
signalk/ -- implements tcp sockets in a separate unix process
                         relieving the main process from json parsing, and transmission.
                         * basic demo server

clients (run as many of these to connect to a server):

ui/ -- simple interface to command autopilot
ui/ -- interactive gui for all autopilot calibrations
ui/kivy -- work in progress kivy control app

signalk/ -- console client
signalk/ -- graphical user version (wx widgets)
signalk/ -- glut plot client -- useful for sensors and control
signalk/ -- plot client with wx widgets (for checked listbox)

lcd/ -- autopilot control interface using GPIO pins.

webapp/ -- python flask application that runs a webserver providing remote autopilot control through a browser
You can’t perform that action at this time.