All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed automatic inference of broadcast port when drones are sending packets from a UDP port number that is different from where they listen for broadcast packets.
- For extension authors: extensions binding to a TCP or UDP port to provide a
service should register the port using the
use_port()
context manager if they wish to expose the port number to others. Registered ports will also be made public via theSYS-PORTS
message.
- MAVLink STATUSTEXT logging levels can now be configured separately for server logs (printed in the console) and client logs (forwarded to connected clients).
- MAVLink STATUSTEXT messages with severity equal to INFO or DEBUG are not logged on the server console any more to reduce clutter. You can use the new MAVLink STATUSTEXT logging level configuration option to restore the old behaviour.
- MAVLink extension now uses decimal numbers for system and component IDs instead of hexadecimal. Using hexadecimal versions in earlier versions caused confusion and made the log messages harder to interpret.
- "Server location changed to unknown" message displayed no longer as it was confusing during shutdown.
-
RTK correction message bandwidth is now tracked separately for inbound messages (received from the RTK base) and outbound messages (forwarded to UAVs and other components). You will need a recent version of Live to see both on the Live UI; older versions of Live will keep on showing the inbound bandwidth like before.
-
Added a new extension to provide approximate location information for the server based on an arbitrary UAV in the UAV registry. Useful for seeding RTK corrections from virtual reference stations automatically if at least one UAV is seen by the server.
- RTCM messages in the RTK module are now filtered by default such that only the basic RTCMv3 message set required for RTK corrections are forwarded to the UAVs. You can switch back to the full (unfiltered) message set in the settings of the RTK extension.
- Fixed the parsing of horizontal and vertical position uncertainty values from
MAVLink
GPS_RAW_INT
messages. Earlier versions were overestimating the uncertainty by a factor of 10. Thanks to Jake1999 for reporting the issue.
- Added support for parsing MSM5 and MSM6 RTK correction messages so you can now see the carrier-to-noise ratio in the RTK dialog box of Skybrush Live if your base station provides MSM5 or MSM6 messages.
- Fixed a bug in the decoder of chunked transfer encoding when using RTK corrections from NTRIP servers.
- Low battery threshold in safety configuration can now be given as percentage as well
-
MAVLink pressure sensor calibration messages may now also return "in progress" to consider them successful.
-
Fixed a bug in the formatting of NMEA GGA messages for remote RTK stations that require the base station coordinates.
-
MAVLink signature timestamps are now synchronized between broadcast and unicast streams of the same network.
- Fixed a bug in the MAVLink signing setup code that resulted in an incorrect key when it is specified in bas64 representation instead of hex notation.
-
Added flight area definition and flight mode change mission commands, primarily for adaptive swarming missions
-
Added ground altitude reference for mission items and new payload action types for camera based missions
-
Added missing "ID offset" field to MAVLink extension configuration schema so ID offsets can now be adjusted from the UI if you have multiple MAVLink networks.
-
Fixed encoding bug in
.skyb
format when the takeoff time was non-zero.
- MAVLink drones now support yaw setpoints during a show, provided that the onboard firmware supports yaw setpoints in the show data. This feature is experimental and has only been tested in simulator yet. We will publish more details about yaw control when the feature has been introduced fully through the entire Skybrush software stack.
-
Fixed a crash in the Crazyflie extension with newer versions of
anyio
. -
Fixed a rare rounding error that caused an exception during show uploading due to an overflow.
- The server can now be made aware of its own location with the
location
extension, and thertk
extension will use the location when connecting to an NTRIP server to send NMEA GGA messages periodically. This enables the use of NTRIP VRS servers (Virtual Reference Stations) where a country-wide network of base stations are used to provide RTK corrections at any arbitrary coordinate within the coverage area of the network.
-
Fixed issues with reloading extensions that depend on
http_server
and provide their own blueprint. -
Fixed a congestion bug during MAVLink log downloads by not requesting more than 512
LOG_DATA
chunks at a time.
- MAVLink
RADIO_STATUS
messages are now parsed if they originate from a component that denotes a UDP-to-UART bridge. It is assumed that these messages come from themavesp8266
firmware; the RSSI values in the message are converted into percentages and stored on the server side. Live will be updated soon to display the RSSI values.
- Fixed a bug with drones that are capable of entering a sleep state where the autopilot type was not detected correctly after the drone was woken up.
- MAVLink networks now support sending and receiving MAVLink signed messages. This feature is in an experimental stage yet and we appreciate any feedback from users.
-
The default accuracy and minimum duration of RTK surveys can now be configured in the
rtk
extension. -
MAVLink drones running a recent version of the Skybrush firmware (version 20230920 or later, or, if you are compiling the firmware directly from our GitHub repo, then any version based on ArduCopter 4.3.7 or later) now report when they deviate significantly from their planned trajectory during a show.
-
MAVLink drones report the takeoff and landing stages as informational messages during the execution of a show.
-
Pro users can now load the
flight_report
extension, which can produce tabular reports about the takeoff and landing times of the drones as well as any error conditions, in various formats (HTML, CSV, JSON), for reporting purposes. -
RTK and RC override messages in the
mavlink
extension can now be routed to multiple connections. -
Broadcast messages from the
mavlink
extension can now be rate-limited to work around with packet loss issues in connections that cannot cope with bursty transmissions due to lack of flow control. This is a workaround that should be enabled only if you are experiencing packet loss problems and you suspect that it is due to lack of flow control.
- Behind-the-scenes updates to the
lps
(local positioning system) module.
- Fixed a bug that prevented adjusting the epoch of the show clock while the clock was running.
- When working with MAVLink networks, you can now specify an offset that is added to the system ID before the final Skybrush ID of the drone is derived. This can be used to achieve continuous numbering if you have multiple networks with, say, 250 drones per network.
-
Fixed a bug in the handling of NTRIP servers when the server responds with chunked transfer encoding.
-
When reloading the
offline_maps
extension, the app now simply asks the user to restart the entire application instead of printing a cryptic error message to the console.
- The top-level
connections
key of the MAVLink extension configuration object is deprecated. Define a MAVLink network first under thenetworks
key with a unique ID and move theconnections
key there when migrating old config files.
- Virtual UAVs now support (virtual) motor and LED tests.
- Fixed a bug in the handling of NTRIP server responses when the server responds with an HTTP/1.1 response line and not ICY.
- Added support for a new clock that shows the time left until the end of the current show if the show duration is submitted by the client when it configures the start time of the show.
-
We now distinguish between altitude above ground level (AGL) and altitude above home level (AHL) in the server and also in Skybrush Live. Earlier versions used to call altitude above home level as AGL, this is now fixed and you should be looking for AHL instead of AGL if you want this information. AGL info will be provided only if terrain following is configured on the drone and it knows its own altitude above ground level.
-
GPS horizontal and vertical accuracy data is now parsed from MAVLink messages and shown in Skybrush Live.
-
Compass calibration now shows progress percentage in clients for MAVLink based drones. You might need to update Skybrush Live to see the progress bar.
-
Added support for accelerometer calibration for MAVLink-based drones.
- The Crazyflie extension can now be configured to select a specific controller type on the drones after a show upload.
- When setting the clock of the server running on Linux during a connection from a Skybrush Live client, the new date and time is now also written back to the hardware clock of the server if it has one.
- MAVLink-based drones are now marked as being in "sleep mode" if the heartbeat
indicates that the flight controller is not running. You will not see this
with the stock ArduPilot firmware, but if you use our own
mavesp8266
fork in your wifi module, you can configure themavesp8266
to be able to control power to the flight controller and it will generate heartbeats on behalf of the flight controller if the flight controller itself is powered down. This allows you to make full use of the "sleep" and "resume" buttons on the Skybrush Live UI with MAVLink-based drones, provided that you use ourmavesp8266
fork or implement similar functionality in the firmware of your wifi-to-serial bridge.
- Fixed MAVFTP uploads when the target path starts with
@
.
-
RTK presets can now be designated as auto-selectable; the first such preset will be used automatically when the server starts.
-
The RTK extension now exposes methods that allow other extensions to retrieve the status of RTK corrections being received from the base station.
-
MAVLink drones will now receive
RC_CHANNELS_OVERRIDE
messages when the server receives RC channel change events from a simulated RC via UDP packets. You need to enable therc_udp
extension to use this feature. -
RC simulation with UDP packets in the
rc_udp
extension now has a configurable timeout after which the RC connection is assumed to be lost.
- The server is now aware of
systemd
on Linux systems and can be started as asystemd
service withType=notify
.
- Fixed a bug in the "Save" button of the web UI that derives a minimal configuration file containing all the differences from the server defaults.
- Added mission commands to supplement mission item parsing in industrial projects
-
Fixed frame rate limit parsing in the
mocap
extension/ -
Fixed mass parameter upload for Crazyflie drones
-
Fixed geofence action descriptions
- Added basic model classes for generic mission handling
-
Crazyflie takeoff altitude is now configurable from the extension.
-
Virtual UAV battery discharge time adjusted so we can simulate longer shows.
- Fixed display of Crazyflie yaw angles.
-
The base port number of the server can now be overridden by the
-p
command line switch, thePORT
environment variable and thePORT
configuration key, in this order of precedence (-p
being the highest priority). -
Added a
motion_capture
extension that can be used as a base to add support for external motion capture systems for indoor drones. -
MAVLink extension now generates a CRC32 checksum into the uploaded
.skyb
files so the drones have one additional tool at their disposal to check the integrity of the uploaded file.
- Shows can now be started automatically based on any arbitrary registered clock in the server. The primary use-case is to start a show based on an external MIDI timecode.
-
Fixed automatic scanning for Crazyflie drones when multiple Crazyradios are connected; earlier versions did not preserve the assignment between radios and the discovered drones, resulting in warnings printed to the console.
-
show remove
andshow clear
commands are now accepted both by Crazyflie and MAVLink drones for sake of consistency.
- Added an extension module that allows the server to cache map tiles downloaded by Skybrush Live so they can be used even when the computer running Live (and the server) is offline. Requires a license for Skybrush Live Pro.
- On ArduPilot drones, the
FENCE_TYPE
parameter is now adjusted automatically when a geofence is uploaded. Earlier versions did not touch theFENCE_TYPE
parameter even if the geofence configuration request contained limits for fence types that were not enabled before in theFENCE_TYPE
bitmask.
-
The RTK and the GPS extensions do not crash any more when trying to register a new beacon and the object registry is full (typically when the license limits are hit).
-
Fixed the decoding of the git commit hash in ArduPilot version numbers.
-
Show specifications may now contain a preferred geofence action.
-
ArduPilot-based drones can now configure the geofence action on the drone based on the action submitted in the show specification.
-
Added basic support for remote wakeup and shutdown of UAVs if the UAV driver supports it.
-
Added experimental wakeup / shutdown support for MAVLink drones with a custom MAVLink message extension.
- Fixed a deadlock in the extension manager when the licensing extension initiated a forced shutdown due to an expired license.
- The source code of the server is now licensed under the GNU General Public License, version 3 or later.
- License module now prints the maximum number of drones if there is such a restriction in the license.
- Geofence errors are now turned into warnings for MAVLink-drones if we know that the drone is on the ground.
- Fixed binding of Skybrush Server to SSDP sockets on Windows.
-
Fixed a bug in the logging of start events for indoor shows
-
macOS and Linux launcher scripts now look for the configuration file in the default installation folder if no configuration file is given explicitly.
-
The server configuration can now be exported from the web UI in JSON format.
-
When the server is configured from a configuration file, the web UI now allows the user to save the current configuration to the configuration file.
-
Basic user authentication can now be set up from the web UI.
-
Server logs are now saved in a dedicated logging folder; logs are rotated at regular intervals.
-
Extensions can now be reloaded from the web UI even if other extensions depend on them; the dependencies will be unloaded before the extension is reloaded and they will be restored afterwards.
-
For uBlox RTK base stations, the server now requests the base station to send UTC timestamps at regular intervals and warn connected clients if the server clock is not synchronized to the clock of the RTK base station.
- Motor test on MAVLink-based drones now supports more than four rotors.
-
Fixed a bug in the RTK base station handling that sometimes resulted in an unhandled error message when the RTK base station was not sending valid messages at all.
-
Fixed a bug that prevented the magnetic vector provider from working properly in macOS builds.
-
Added support for beacons. Extensions may now register beacon objects in the server; beacons are shown on the map in clients that support them (e.g., Skybrush Live from version 1.25.0).
-
RTK extension now registers the position of the base station as a beacon.
-
The Light control panel in Skybrush Live is now also supported for Crazyflie drones.
-
Added a module that provides the magnetic vector for a given GPS coordinate; this can be used by clients to calculate the magnetic declination to show it on the user interface.
- Added support for Socket.IO protocol v5 as the transport layer between Skybrush Live and Skybrush Server. Support for Socket.IO v4 is still kept until older versions of Skybrush Live that rely on Socket.IO v4 are phased out.
-
Serial ports connected to common autopilots and bootloaders do not get detected as RTK base station candidates any more.
-
In Linux and macOS, the
skybrushd
startup script now resolves relative configuration file names from the current directory, as expected.
- The server can now retrieve the current value of the planetary K-index from various data sources. Future versions of Skybrush Live will make use of this facility to show the Kp-index on the user interface.
- Fixed a trajectory encoding bug for Crazyflie drones when a segment of a trajectory was described with a 7-degree polynomial.
- The
go
command for Crazyflie drones now plans a trajectory that is always at least 1 second long.
-
Safety fence distance and safety action for Crazyflies is now configurable in the server settings.
-
RTK base stations can now be configured to a fixed coordinate in ECEF (Earth centered Earth fixed).
- Fixed a bug with the initialization sequence after re-connection to a Crazyflie drone after a temporary loss of connection (e.g., a reboot)
- Safety fence is now automatically set up for Crazyflie drones with a 1m safety distance from the axis-aligned bounding box of the trajectory.
- Fixed spurious log messages when a Crazyflie radio is unplugged from the USB port while the server is running.
- The interval between consecutive status information messages can now be configured in the Crazyflie extension, allowing you to track the Crazyflie more precisely from the server if needed.
- The OSC extension now sends whether a given drone has been seen recently by the server or not, allowing one to ignore drones that have probably been turned off.
- macOS executable is now signed using an ad-hoc signature to allow execution on Apple Silicon. Note that Apple Silicon is not supported officially yet; this is the first step towards full native support.
- The server now provides an optional OSC extension that allows one to forward the (geodetic or local) positions of the drones to an OSC server for further processing.
- Crazyflie drones can now be armed or disarmed from the server with the standard arming commands.
- Restored compatibility with Python 3.7.
-
The server now attempts to re-connect to an RTK base station if the base station disappeared briefly for at most 30 seconds while it was being used. This helps to recover automatically in cases when the RTK base station was plugged into an unpowered USB hub and the device disappeared briefly from the OS due to power issues on the USB port.
-
The RTK extension of the server can now be configured to send RTK corrections only for a subset of all supported GNSS types; for instance, one can now configure the extension to send corrections for GPS and GLONASS only, saving bandwidth in geographical areas where BeiDou is not relevant.
- The server now requires an RTK base station to broadcast its own antenna position at least once every 30 seconds, otherwise the last antenna position will be invalidated.
This is the release that serves as a basis for changelog entries above. Refer to the commit logs for changes affecting this version and earlier versions.