Flight-Safety-System is a system for maintaining control of RPAS.
FSS provides a means of sending basic commands (RTL, Hold, Resume, etc) to an aircraft while monitoring the position, battery status, and mission progress.
Dependencies are jsoncpp, ecpg (for the server), catch (for tests).
On debian/ubuntu you will need to apt install libjsoncpp-dev ecpg-dev catch
You can build this package from source:
git clone https://github.com/canterbury-air-patrol/flight-safety-system.git
cd flight-safety-system
./autogen.sh
./configure --enable-server
make
make install
The flight-safety-system server uses a postgresql+postgis database for storing configuration, commands, and recording historic data.
The web frontend is a separate project and will need to be setup and have been connected to the database before the server is run.
Create a server.json file with the correct port and database settings.
Then start the server fss-server server.json
There is no full client implementation shipped with flight-safety-system, however there is a library to use and an example client that can be used as a starting point.
Redundancy is available by running multiple independent servers, the normal client configuration allows for specifying multiple servers to connect to.
Also, each server can include configuration of all known servers and this information will be provided to clients periodically to allow them to learn about and connect to all of the servers.
It is required to use SSL to protect the connection between clients and servers. A common CA will be needed so that the clients and servers can verify each other by certificate.
Scripts are provided in the certs directory to help generate and sign the certificates.
First, generate a CA cert
cd certs
./generate-ca.sh
Keep ca.private.pem in a safe place, it is needed to sign the server and client certificates. If it is used to sign a certificate that you do not trust, you will need to recreate your CA and re-generate all the server and client certifictes.
Generate certificates for each server:
cd certs
./generate-server.sh server1.my.domain
Use the IP address or dns name that the clients will be configured to talk to as the name for the server certificate. This is required to allow the clients to verify both the server is trusted, and they have connected to the correct server.
Generate certificates for each client:
cd certs
./generate-client.sh client-name
Use the name of the client as it is configured on the servers. The servers will use the name in the certificate to make sure the client is reporting as the correct device.
Primarily flight-safety-system is designed to run alongside Search Management Map
Canterbury Air Patrol has a client that integrates Flight-Safety-System and Search Management Map to control an aircraft running ArduPilot.
There is an ADS-B Integration that allows positions reports from ADS-B Out aircraft to be relayed to FSS clients.
This project is licensed under GNU GPLv2 see the LICENSE file for details.