This article details the current heading features available on Piksi Multi as of firmware release v1.1. First the document describes how to setup the Piksi Multi evaluation kit in order to produce heading. Secondly, the document describes how heading can be configured in the general sense. These features can be used to compute the heading and/or attitude of a rigid body or to augment other attitude sensors in navigation, control, and attitude/heading reference systems. Evaluation Kit Configuration Physical For the heading use case with the Piksi Multi evaluation kit the following system diagram is the recommended configuration. Two Piksi and two antennas should be placed on a moving vehicle. A crossover serial cable should be placed between the RS-232 0 ports between the two evaluation boards. One piksi (the left Piksi) operates only to provide GNSS Observations to the other piksi that computes an RTK derived heading (right Piksi). For the purposes of this article we will call the Piksi that operates to provide the raw GNSS observations only the “Moving base” and the piksi producing heading measurements the “RTK heading rover.” Figure 1 - RTK heading setup with Piksi Multi Evaluation kit Software Piksi Multi must be configured to allow for heading output or Moving baseline usage. First, it must be configured to compute its differential solution in what is called “Time-matched mode”. By default, Piksi operates in “low-latency” mode in which there is an inherent assumption that the base station is stationary. In time-matched mode, each differential GNSS solution epoch is triggered by receipt of the raw observations from the moving base station. This means that the moving base and the heading piksi must have equal observation rates which is configured through the “solution rate” and the “output every N Obs” settings.. It also means that there can be significant latency on the navigation output from any communication delay. As such, we recommend using a direct serial cable rather than a radio to provide corrections. Please refer to the table below to indicate the required settings. Common Settings These settings are to be configured on both the piksi acting as the “RTK heading rover” and the “moving base”. Name Value Units Description Solution Group dgnss_solution_mode “Time Matched” N/A Configures Piksi to compute a time-matched solution on receipt of observations from a base station. rate 5 Hz 5hz is the current maximum time-matched solution rate on Piksi Multi output_every_n_obs 1 N/A Enables 5hz raw observation on base and rover send_heading True bool Enables SBP heading output. Heading is calculated from base station to rover and represents the inverse tangent of the north and east components of the baseline. No smoothing or additional processing is provided to improve heading output." heading_offset Depends on vehicle degrees Adds an offset to the heading output to rotate the heading vector to align the baseline heading with a desired 0 heading. Valid values are -180.0 to 180.0 degrees. See figure 3 for detail of how this offset is applied in a real system Table 1: Piksi Multi Heading required settings: Moving base and RTK heading rover RTK Heading Rover settings These settings are to be configured on only the RTK heading rover Piksi Multi Name Value Units Description uart0 enabled_sbp_messages 65535 N/A Configures Piksi to send only its heartbeat back to the moving base station Table 2: RTK heading rover only settings Moving Base Settings These settings are to be configured on only the Piksi Multi acting as the moving base station Name Value Units Description uart0 enabled_sbp_messages 74,65535 N/A Configures Piksi to send its heartbeat and raw observations to the RTK rover Table 2: Moving base only settings Heading Communication (SBP and NMEA) Heading output will be sent provided the “output_heading” setting is True and the Piksi is in RTK Fixed mode. The heading produced is intended to be the vehicle heading and includes the heading_offset. SBP For interfaces that are configured in SBP mode, the heading output can take the form of the Swift Binary Protocol (SBP) MSG_BASELINE_HEADING message which is a message id of 0x020F in hexadecimal or 527 in decimal format. This message contents is detailed below as an excerpt from the Swift binary protocol document; please refer to the SBP support portal page for more information about SBP and the baseline heading message. Figure 2: SBP baseline heading message excerpt from SBP documentation NMEA If an interface is configured in NMEA mode, the heading output is the NMEA HDT message. The HDT message consists of a single field representing the true heading in degrees that should take the form: “ $GPHDT,x.x,T*hh
” Generalized Heading Information In general, the key thing that is required to produce heading output are piksi and two antennas on the same moving vehicle and raw GNSS observation communication between the two Piksis. When an RTK fixed baseline is achieved, the heading is output by the device. This heading is derived from the baseline vector and the heading_offset setting through the equation below. Where HDG is the heading communicated by Piksi, is the East component of the baseline vector, is the North component of the baseline vector, and is the heading offset setting. Figure 3 below visually represents these mathematical relationships. Equation 1: baseline heading computation Figure 3: Visual depiction of the relationship between the baseline vector components, the two heading antennas, the Heading output (HDG) and the heading_offset setting Page Swift Navigation, Inc.