X10D Control and Telemetry ICD
Published: Updated:
Revision |
Date |
Description |
1.0 |
26 Nov 2024 |
Initial publication |
[info]For questions or assistance, please reach out to IntegrationSupport@skydio.com[/info]
Control Interface
Skydio X10D implements the Robotics and Autonomous Systems - Air (RAS-A) MAVLink Control Link Interoperability Profile (IOP). RAS-A is a MAVLink dialect with some extensions to accommodate autonomous systems and the capabilities they provide. Related efforts, e.g. RAS-G, have no relationship to MAVLink. RAS-A also includes standardization around video, e.g., protocols, codecs, and metadata. X10D supports RAS-A protocol version 1.2.
Known Deviations from RAS-A v1.2
- Skydio X10D does not fully implement Gimbal Protocol V2.
- X10D extends the RAS-A In-Band Pairing Protocol to support changing component IP addresses and alters timeout thresholds to be more reliably achievable with available radios.
- While not a deviation from the specification, X10D behaves unlike PX4 platforms in that a mode change will not halt motion. The preferred method to implement a “stop” is to issue a MAV_CMD_DO_REPOSITION with the latitude, longitude, and altitude all set to NaN.
- Only cylindrical geofences are supported. Geofences only support the no_action and hold geofence actions.
- X10D does not support the optional Autonomy Engine arming procedure.
- X10D exclusively supports UDP for RAS-A Wireless Pairing communications protocol
Supported MAVLink Parameters
Skydio Supported MAVLink Parameters PDF
Supported Microservices
- Heartbeat/Connection Protocol
- Mission Protocol
- Flight plan
- Single rally point
- Geofence (partially supported)
- Geofence upload (partially supported)
- Parameter & Extended Parameter Protocol
- Command Protocol
- Camera Protocol
- Ping Protocol
- Battery Protocol
- Gimbal Protocol
- Gimbal Protocol V2 (partially supported)
Unsupported Microservices
- Arm Authorization
- Image Transmission Protocol
- File Transfer Protocol
- Landing Target Protocol
- Path Planning (Trajectory) Protocol
- Terrain Protocol
- Tunnel Protocol
- Open Drone ID Protocol
- High Latency Protocol
- Component Information Protocol
Telemetry Interfaces
The X10D implements the RAS-A IOP as the third-party telemetry interface, as it does for control. Relevant background is covered in the Control Interface section.
Network Interface
Wired Pairing
The X10D supports wired and manual pairing via the back USB-C port, located under the rubber cover directly above the drone battery. This requires the host computer to support the CDC-ECM driver. Most Linux and MacOS computers have a compatible driver by default. The X10D will assign the host computer a DHCP address in the 192.168.42.0/24 address space on a successful connection.
Wired pairing occurs via HTTP POST requests to the vehicle and is a two-step process:
1. Request a bearer token:
a) A bearer token can be requested from the following endpoint and with the provided JSON request body where the client_id (1-32 characters) is set to be the client requesting the token.
URL: 192.168.11.1/api/authentication JSON Body: {"requested_level":"GUEST","client_id":"<wired_pairing_client>"} |
b) The API will then respond with the bearer token as a subelement of the “data” JSON array labeled “accessToken”.
{ “data”: {..., “accessToken”: “<bearer_token>”}, ...} |
2. Request a settings change after the bearer token is received:
a) RF radio settings - include channel, bandwidth, mode, network ID, and encryption key.
URL: 192.168.11.1/api/radio_config/rf Authorization: Bearer: <bearer_token> JSON Body: {“rfConfig”: {“channel”: <int>, “bandwidth”: <enum>, “mode”: <enum>, “networkId”: “<string>”, “encryptionPassword”: “<string>”}} |
- All settings must be given and have values be requested, or the request will be rejected.
- Bandwidth and Mode must be requested with their microhard enum value (e.g., a bandwidth of 8 MHz would use a value of 0).
- Invalid radio frequency and bandwidth combinations will not be checked on an interface level and will silently fail to be set.
- Network ID and encryption keys that are too short/too long (< 8 char or > 63 char) will not be checked on an interface level and silently fail to be set.
b) LAN settings - include subnet and netmask.
URL: 192.168.11.1/api/radio_config/lan Authorization: Bearer: <bearer_token> JSON Body: {"lanConfig": {"subnet": “<0-255>”, “netmask": “<ipv4-subnet-mask>”}} |
Default Network Settings
Drone Radio
- IP Address: 192.168.42.1
- Network Mask: 255.255.255.0
Drone MAVLink Interface
- IP Address: 192.168.42.10
- Port: vehicle is listening on port 15667
- Protocol: UDP
Ground Station Radio
- IP Address: 192.168.42.2 (default; optionally modified)
- Network Mask: 255.255.255.0 (default; optionally modified)
Ground Station
- Configure as 192.168.42.0/24 while avoiding the 192.168.42.1, 192.168.42.2, and 192.168.42.10 addresses (already assigned elsewhere) \
- DHCP is OK (typical default setting for Microhard radios)
-
If the request is successful:\
{ "data": { "success": true}, ...} |
If the request is unsuccessful:
{ “data”: {“success”: false}, “error”: {“message”: <field_issue>, “error”: <error_type>}, ... } |
Wireless Pairing
Skydio X10D implements the Robotics and Autonomous Systems - Air (RAS-A) MAVLink Control Link Interoperability Profile In-Band Pairing specification with extensions for IP configuration and multiple paired drones.
[note]The Skydio vendor-specific default pairing security key is 1234567890, bandwidth is 1 MHz, and frequency is 1823 MHz. Additionally, when configuring during Pairing and Reconfiguration, bandwidth and frequency/channel must be provided in MHz, while encryption_password and network_id must follow the same requirements listed below in Manual Pairing.[/note]
The vehicle’s pairing implementation allows reconfiguring the vehicle and its radio’s IP. When making changes, the vehicle and radio must be placed in the same /16 subnet where the first two octets are 192.168, the fourth octet is .1 for the radio and .10 for the vehicle, and the third is between 200 and 250. A valid example configuration would be 192.168.206.1 for the radio and 192.168.206.10 for the vehicle. If desired, the subnet mask can also be specified using CIDR notation. If not provided, the radio and vehicle will be set to the most conservative netmask for the given settings (ie. /24). These settings can be configured during Pairing and Reconfiguration by providing ip_address for the radio and remote_ip_address for the vehicle.
Manual Pairing
The X10D radio can be manually configured at http://192.168.11.1/radio when the vehicle is plugged into a laptop supporting Ethernet over USB.
1. Enter RF Channel, Channel Bandwidth, Radio Mode, Network ID, and Encryption Password.
a) Channel refers to a valid MH frequency (ie. 1840)
b) Network ID must be 1-64 characters
c) Encryption Password must be 8-63 characters
2. Select the Configure RF Settings button to request acceptance.
3. Reconfigure the microhard radio IP from this page via the IP Address configuration tool and the Configure LAN button. However, the IP should be reset via the Reset LAN Configuration for OTA button before applying any vehicle updates.
Media Interfaces
Video
X10D supports RTP or RTSP video delivery. Which video protocol is used is determined by the configuration of the vehicle. Only one RTP or RTSP can be active at a time.
RTP
RTP video is delivered using the AVC (H.264) codec. Many RTP clients, such as VLC, mplayer, and gstreamer, require a .sdp file to configure RTP. Below are valid .sdp files for the EO and IR camera streams.
eo.sdp v=0 o=- 0 0 IN IP4 127.0.0.1 s=No Name c=IN IP4 127.0.0.1 t=0 0 a=tool:libavformat 55.2.100 m=video 5600 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1 |
ir.sdp v=0 o=- 0 0 IN IP4 127.0.0.1 s=No Name c=IN IP4 127.0.0.1 t=0 0 a=tool:libavformat 55.2.100 m=video 5900 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1 |
RTSP
RTSP video is also delivered using the AVC (H.264) codec, and additionally multiplexes KLV metadata into an MPEG-TS container. More details about the specific metadata included are available in the Video Metadata section below.
There are separate endpoints for each camera stream using RTSP. The URIs to specify with many common clients, including ffplay, VLC, and gstreamer, are as follows:
rtsp://192.168.42.10:5554/subject (EO stream) |
rtsp://192.168.42.10:6554/infrared (IR stream) |
Video metadata
When using the RTSP video option, X10D includes video metadata in accordance with the MISB 0601 UAS Datalink Local Set standard. Items marked with an asterisk are planned but not currently implemented. They will be offered in future releases.
Tag # | Name | Description |
1 | Checksum | Checksum used to detect errors within a UAS Datalink LS packet |
2 | Precision Time Stamp | Timestamp for all metadata in this Local Set; used to coordinate with Motion Imagery |
5 | Platform Heading Angle | Aircraft heading angle |
6 | Platform Pitch Angle | Aircraft pitch angle |
7 | Platform Roll Angle | Aircraft roll angle |
10* | Platform Designation | Model name for the platform |
12* | Image Coordinate System | Name of the image coordinate system used |
13 | Sensor Latitude | Sensor latitude |
14 | Sensor Longitude | Sensor longitude |
15 | Sensor True Altitude | Altitude of sensor as measured from Mean Sea Level (MSL) |
16 | Sensor Horizontal Field of View | Horizontal field of view of selected imaging sensor |
17 | Sensor Vertical Field of View | Vertical field of view of selected imaging sensor |
18 | Sensor Relative Azimuth Angle | Relative rotation angle of sensor to platform longitudinal axis |
19 | Sensor Relative Elevation Angle | Relative elevation angle of sensor to platform longitudinal-transverse plane |
20 | Sensor Relative Roll Angle | Relative roll angle of sensor to aircraft platform |
21* | Slant Range | Slant range in meters |
23* | Frame Center Latitude | Terrain latitude of frame center |
24* | Frame Center Longitude | Terrain longitude of frame center |
25* | Frame Center Elevation | Terrain elevation at frame center relative to Mean Sea Level (MSL) |
56* | Platform Ground Speed | Speed projected to the ground of an airborne platform passing overhead |
59* | Platform Callsign | Call sign of platform or operating unit |
74* | VMTI Local Set | Object detection information |
79* | Sensor North Velocity | Northing velocity of the sensor or platform |
80* | Sensor East Velocity | Easting velocity of the sensor or platform |
82* | Corner Latitude Point 1 (Full) | Frame latitude for upper left corner |
83* | Corner Longitude Point 1 (Full) | Frame longitude for upper left corner |
84* | Corner Latitude Point 2 (Full) | Frame latitude for upper right corner |
85* | Corner Longitude Point 2 (Full) | Frame longitude for upper right corner |
86* | Corner Latitude Point 3 (Full) | Frame latitude for lower right corner |
87* | Corner Longitude Point 3 (Full) | Frame longitude for lower right corner |
88* | Corner Latitude Point 4 (Full) | Frame latitude for lower left corner |
89* | Corner Longitude Point 4 (Full) | Frame longitude for lower left corner |
90 | Platform Pitch Angle (Full) | Aircraft pitch angle |
91 | Platform Roll Angle (Full) | Aircraft roll angle |
112* | Platform Course Angle | Direction the aircraft is moving relative to True North |
113* | Altitude AGL | Above Ground Level (AGL) height above the ground/water |
123* | Number of NAVSATs in View | Count of navigation satellites in view of platform |
134* | Zoom Percentage | For a variable zoom system, the percentage of zoom |
Validation & Testing Guidance
Configuring and Pairing a Microhard Dev Kit
This section provides some rough guidelines for getting started with a development kit; please refer to the Microhard Operating Manual and support at https://support.microhardcorp.com/portal/en/home for more details on configuration and troubleshooting.
Required hardware:
- A Microhard development kit (or any other pMDDL1624 module), e.g., Microhard pMDDL1624-ENC (https://www.microhardcorp.com/pMDDL1624-ENC.php)
- Antenna for 1600-2500 MHz with SMA connector, e.g., (https://www.amazon.com/Cellular-Compatible-Wireless-Industrial-Security/dp/B0C58V4Y3B/)
Quick Setup steps:
- Attach antennas to MH
- Connect an ethernet cable to the LAN port
- Attach power cable (device will power up)
- Wait ~60 seconds for boot -> monitor LED status
- Log in from a browser (these values all assume default configuration)
- http://192.168.168.1
- User: admin
- Password: admin
- Change the IP address to 192.168.42.2
- Network -> LAN -> IP address: 192.168.42.2
- Network -> LAN -> Netmask: 255.255.255.0
- Apply changes
- Bridge the LAN & WAN interfaces
- Network -> WAN -> Working Mode: Bridged with LAN Port
- Apply Changes
- Configure the RF Settings using the Wired Pairing instructions.
Connecting to X10D with a MAVLink Ground Control Station (GCS)
QGroundControl
- Navigate to: QMenu > Comm Links
- Populate the options as shown in the screenshot below. Note that it is necessary to add the target host. The IP of the X10D host is 192.168.42.10 on the Microhard network.
MAVProxy
- mavproxy.py --master=udpout:192.168.42.10:15667
Skydio, Inc. A0553
Was this article helpful?