Angle of Arrival Detection with NI USRP RIO
The RF Angle of Arrival (AoA) detection system has been implemented with NI USRP RIO hardware in both LabVIEW 2015 as well as LabVIEW Communications 2.0. The material below is relevent to both of these versions but in order to get these two versions running you need to have LabVIEW 2015 and LabVIEW Communications 2.0 (respectively) installed. For more background on this system, refer to the original AoA Detection System section of this document.
Overview:
This part of the document describes how to implement the RF Angle of Arrival (AoA) detection system from the previous section with NI USRP RIO hardware. This system uses the same direction finding and phase compensation methods and is still capable of detecting up to three transmitting sources.
NI USRP RIO devices have two daughterboards, each with two RF ports, so that they can support twice as many channels as the NI USRP 2920 can. This feature allows users to use two USRP RXs as opposed to four.
This system uses the same methods for correcting USRP phase ambiguities as the previous version did, so there is a reference transmit signal as well as a target transmit signal. The same type of USRP TXs were used in this system for simplicity.
Hardware Configuration:
The following hardware was used to implement this system:
Figure 7: The AoA Detection System with USRP RIO Hardware Setup Diagram
Software Configuration:
The AoA Detection 1st TX Ref Signal.vi and AoA Detection 2nd TX Target Signal.vi function exactly the same as the previous version’s TX VIs. Therefore, the parameters can be set exactly as they would have been in the previous example.
The AoA Detection RX Localization using MUSIC.vi functions exactly as the previous version’s RX VI did. The only difference is that the ‘Device IP Array’ was replaced with a single ‘Device Names’ control for simplicity. The user can enter in the names of the two USRP RIO RXs devices separated by a semicolon into the ‘Device Names’ control (you can find your USRP RIO device names in NI MAX).The ‘Gain Array’ has also been replaced by a single ‘Gain’ control, which is applied to all four RX channels. The rest of the parameters remained the same as they were in the previous version.
You can run both the TX Vis and the RX VI as you would in the previous version.
Note:
For optimal performance, make sure you have installed a current ethernet driver version and close out of all other programs when running the AoA detection system.
*Original AoA Detection System*
Overview:
This document describes how to set up an RF Angle of Arrival (AoA) detection system using the MUSIC multiple array processing algorithm with NI LabVIEW software and NI USRP™ (Universal Software Radio Peripheral) hardware. After a brief discussion of AoA detection or direction finding and phase compensation method, the paper examines the hardware and software within LabVIEW. The system presented here is capable of detecting up to three transmitting sources simultaneously with appropriate parameter configuration.
This software was provided courtesy of Professor A. Manikas holds the Chair of Communications & Array Processing in the Department of Electrical & Electronic Engineering, Imperial College London with Marc Willerton and David Yates.
Table of Contents
1. What Is AoA Detection and Phase Compensation?
2. Implementing an AoA Detection System
3. AoA Detection System: Hardware Configuration
4. AoA Detection System: Software Configuration
5. Working With the Example
6. Building an AoA Detection System in LabVIEW
6.1Target Transmitter
6.2 Reference Transmitter at the Receiving End
6.3 Receiver
7. Additional Resources
1. What is AoA Detection and Phase Compensation
Angle of arrival (AoA) measurement is a method for determining the direction of propagation of a radio-frequency wave incident on an antenna array. Generally this measurement is made by measuring the difference in received phase at each element in the antenna array.
The operation of any phased array system requires RF local oscillator synchronization and ADC timestamp alignment. In this example the local oscillator synchronization among the NI USRPs is achieved using external reference clock. Timestamp synchronization is achieved using external PPS signal. This works fine in the NI USRPs in terms of effectively eliminating relative phase shift over time. Unfortunately, however, every time an USRP re-tune command is sent there is a new phase ambiguity between the boards. Therefore a calibration procedure is required every time a new measurement is taken.
NI USRP boards have two RF ports for duplex operation. It turns out a second signal applied to the second port couples into the software selected receive channel. An RF signal applied directly to the second RF port of each of the NI USRP boards in the array can thus be used to discover the phase ambiguity without a calibration step. It has to be separable in some way from the target signal. A separate NI USRP board can be used for this purpose. So the steps for phase synchronization are:
After the NI USRPs are synchronized in terms of phase and gain, Multiple Signal Classification (MUSIC) algorithm is used for detecting the AoA of the received signal.
2. Implementing an AoA Detection System
The AoA detection system described here uses a new approach to eliminate phase and gain uncertainty among the USRPs at the receiving end. A separate NI USRP is used to eliminate these uncertainties. After the phase synchronization is achieved, MUSIC algorithm is used to determine the location of the transmitting NI USRP. The overall system including the hardware and software configuration along with a working example is presented below:
3. AoA Detection System: Hardware Configuration
You need five NI USRP transceivers for an AoA detection system. The following configuration is recommended:
Figure 1: The AoA Detection System Hardware Setup Diagram
Figure 1 shows the configuration you can use for this AoA detection system. The detailed configuration procedure to set up the direction finding system is given here:
4. AoA Detection System: Software Configuration
This Angle of Arrival Detection example is a LabVIEW application that requires the following software components:
5. Working with the Example
Unzip the associated zip file to a new folder. Make sure that the location of the folders that contain the MathScript files are included in the MathScript Search Path list. The process of including the folder location in the search path list is given bellow:
Once the search path is set, open the file entitled AoA Detection 1st TX Ref Signal.vi, AoA Detection 2nd TX Target Signal.vi, and AoA Detection RX Localization using MUSIC.vi in LabVIEW.
The front panel of the AoA Detection 1st TX Ref Signal.vi and AoA Detection 2nd TX Target Signal.vi (Figure 2) contains the parameters for the NI USRP transceivers that are used for both the transmitters. Set the controls of these parameters with the following guidelines in mind:
Device Names: Enter the IP addresses associated with the USRP TX1, and USRP Ref TX.
Active Antennas: Enter the appropriate antenna ports TX1 or TX2 that you connected the antennas to each of the devices. For the transmitters in the example, we connected all the antennas to the TX1 port of the devices.
I/Q rate [S/sec], and carrier frequency [Hz]: For the I/Q rate, and carrier frequency enter the sample rate, and the carrier frequency. These parameter values have to be the same for both the transmitter and receiver.
timeout: timeout specifies the time to wait in seconds, before returning an error if the requested number of samples have not been generated. A negative value indicates to the driver to wait indefinitely.
tone frequency: tone frequency specifies the frequency of the transmitted signals. In this example we have chosen 10 KHz for the USRP Ref TX and 100 KHz for the USRP TX1.
Figure 3: Front panel of the AoA Detection RX Localization using MUSIC.vi
Referring to Figure 4 showing the MUSIC spectrum, it also shows the calibration signal and the target signal after being synchronized, and the phases of these signals before and after the synchronization. The dial on the top right corner presents the location of the target source detected by MUSIC algorithm.
Device IP Array: Enter the IP addresses associated with the USRP RXs.
Gain: Enter the appropriate gain values for all the USRP RXs. For the receiver in the example, we used a gain of 30 for all the USRP RXs.
Sampling Frequency and carrier frequency: For the Sampling Frequency and carrier frequency enter the sample rate and carrier frequency. These parameter values have to be the same for both the transmitters and the receiver.
Threshold: Threshold specifies the threshold to which the receiver compares the received signal strength to detect the presence of the transmitted signal. The value of this parameter depends on the distance of the transmitter.
Filter: This parameter offers you to choose between a FIR implementation and an IIR implementation of low-pass and high-pass filters. These filters are used to separate the target signal from the USRP TX1 and the signal from the USRP Ref TX which is used for calibrating the phase uncertainty among the USRP RXs. In this example, an FIR implementation is used.
start trigger time: Configures the start trigger generated by the onboard device timer and specifies the time to start the trigger. In case of multiple synchronized devices, all of them must use a Start Trigger.
With the parameters set appropriately, you can run both the TX Vis and the RX VI. Doing so; the AoA Detection 1st TX Ref Signal.vi and AoA Detection 2nd TX Target Signal.vi start to continuously transmit the calibration signal and the target signal. The AoA Detection RX Localization using MUSIC.vi upon receiving the signal performs the phase and gain uncertainty elimination using the calibration signal and then uses MUSIC algorithm to detect the AoA of the target signal. The MUSIC spectrum, the phase synchronized signals, and their corresponding phases are also displayed in the AoA Detection RX Localization using MUSIC.vi.
6. Building an AoA Detection System in LabVIEW
This section describes the key components of the AoA detection system:
6.1 Target Transmitter:
Figure 4: Block diagram of the AoA Detection 2nd TX Target Signal.vi
Figure 4 presents the block diagram of the AoA Detection 2nd TX Target Signal.vi. As can be seen from the block diagram, it opens the target USRP TX session and waits for the other transmitter session to open before performing any further steps. In this example, we have used global variables to make sure both the transmitter USRP sessions are open before they start transmitting. This is necessary if we are trying to initiate multiple USRP transmitters from a single host. The trick is to make sure all the USRP sessions are open and then proceed with transmission. If the transmitter USRP is controlled by a separate host, then we do not need these extra steps. After the VI receives the confirmation that both the transmitter USRP sessions are open, then it starts to continuously transmit a tone of given parameters. This signal is considered as the target signal whose AoA at the receiver is to be detected.
6.2 Reference Transmitter at the Receiving End
Figure 5: Block diagram of the AoA Detection 1st TX Ref Signal.vi
Figure 5 presents the block diagram of the AoA Detection 1st TX Ref Signal.vi. As can be seen from the block diagram, it opens the calibrations USRP TX session and waits for the other transmitter session to open before performing any further steps. After the VI receives the confirmation that both the transmitter USRP sessions are open, then it starts to continuously transmit a tone of given parameters. This signal is considered as the calibration signal that is being used to eliminate the phase and gain uncertainties among the USRP receivers. To facilitate this calibration process, this USRP Ref TX is physically wired to all the four USRP RXs.
6.3 Receiver:
Figure 6 presents the block diagram of AoA Detection RX Localization using MUSIC.vi. The RX VI sets up all the USRPs at the receiver to have the appropriate operating configurations. It first captures a specified number of samples per processing cycle. The RX VI then separates the calibration signal and the target signal using filters as specified by the user. The phase and gain calibration to eliminate the uncertainties is done based on the information provided by the calibration signal. After the target signal is calibrated, it is then fed to the MUSIC algorithm to detect the AoA.
Figure 6: Block diagram of the AoA Detection RX Localization using MUSIC.vi – part 1
7. Additional Resources
My guess is that you did not quite remove all of the code pieces that required 3 or more USRP's.
Hi vassili2806,
Have you found the answer for your question ? About "Antenna Array"-Part that consist of 4*3 array.
I also curious about that matter.
Dear Mr. ErikL
Yes you're right. My late error occurs because I haven't edit Device IP Array-Part and Gain Array-Part that defined a used of 4-element Rx.
After I fixed it, output error transfer to output VI Fetch Data Array. following error notif "niUSRP Fetch Rx Data (2D CDB).vi<ERR>A stream command was issued in the past"
Why it happened ?
Is it because of synchronization ? I already change Ref-Freq Source and Time-based source using MIMO. Am I lost something ?
One device needs to be set to internal. the other to mimo cable.
From: atafa <web.community@ni.com>
To: ErikL <erik.luther@ni.com>
Date: 09/02/2015 11:37 AM
Subject: Re: - Angle of Arrival Detection
with NI USRP
Community
Angle of Arrival Detection with NI USRP
new comment by atafa View all comments on this document
Dear Mr. ErikL
Yes you're right. My late error occurs because I haven't edit Device IP
Array-Part and Gain Array-Part that defined a used of 4-element Rx.
After I fixed it, output error transfer to output VI Fetch Data Array.
following error notif "niUSRP Fetch Rx Data (2D CDB).viA stream
command was issued in the past"
Why it happened ?
Is it because of synchronization ? I already change Ref-Freq Source and
Time-based source using MIMO. Am I lost something ?
Reply to this email to respond to atafa's comment.
Sorry Mr.ErikL. I didn't get it.
What do you mean by internal ? Internal source ?
Depending on your setup, it may differ slightly. However the basic idea
is that you can sync the Ref and PPS off of 1 of 3 lines in the 292x
devices. The Clock Ref options include: 1. Internal TCXO, 2. MIMO Cable,
3. External Ref In. When hooking two devices with the MIMO cable, one
must be the Master and the other Slave. For this reason one will be set
to Internal or Ref In while the second would be set to MIMO, meaning MIMO
Cable as the clock source or PPS source.
Lastly, the error you're getting is most likely because the devices are
not synchronized so this was my guess as to the issue.
Regards,
Erik
From: atafa <web.community@ni.com>
To: ErikL <erik.luther@ni.com>
Date: 09/02/2015 07:19 PM
Subject: Re: - Angle of Arrival Detection
with NI USRP
Community
Angle of Arrival Detection with NI USRP
new comment by atafa View all comments on this document
Sorry Mr.ErikL. I didn't get it.
What do you mean by internal ? Internal source ?
Reply to this email to respond to atafa's comment.
Dear Mr.Erik
From receiver-vi, this blok (added pic) is about queue received signal >> placed it at matrix >> addressed it as "m" >> process to Music algorithm. Am I right, sir ?
So.. about placing the received signal at the matrix, are we sure that the first row has signal from USRP#1, 2nd signal on the 2nd row, and so on ?
Hi Erik:
Physically wire the RX1/TX1 port of the USRP Ref TX to the TX2 port of all the four USRP RX devices. This USRP Ref TX will provide the signal that the USRP RXs are going to use for eliminating the phase and gain uncertainties.
So we use the two port TX1/RX1 and TX2 of the 4NI USRP(receiver)?
BUT I use 2932 with SBX daughterboard. As I know, the SBX can only receive one port in the same time,so how to use two port(one is receive target signal, the other is for ref signal.)??
THX!!
Hi wiiwiiya
You could refer the discussion in the thread.
http://forums.ni.com/t5/USRP-Software-Radio/Angle-of-arrival-MUSIC-algorithm/m-p/3206027
I hope it will be helpful to you.
Hi ErikL,
on the direction finding case study (http://sine.ni.com/cs/app/doc/p/id/cs-15016#) they wrote about "pilot source"
I'm so confused because of this phrase "A pilot source is located in the far field of the array at 105 deg" what is the pilot source thing ? Why it places at 105deg ? Is it the same thing as Tx-ref ?
Can you help me please to describe this pilot source ? I can't get the right AoA yet...and I'm afraid my problem occurs because of phase-align between rx element
Many thanks..
how to setup 5 usrp please help
Hi Everyone:
I do this example.
Hovever the performance is not good in all azimuths.
I analyze the phase thita(t) and amplitude A(t), I found something that the air signal phase is not calibrated correctly.
(I did simulation to get the phase difference to compare with the experimental measurement.)
I am considering:
1. Is the filter make the phase calibration unsuitable?
2. Is the phase calibration unsuitalbe in the difference frequency originally?
can any one gives me some suggestion? thx a lot!!
Hi, wiiwiiya
Please refer the following link: http://sine.ni.com/cs/app/doc/p/id/cs-15016#
The section 'Case A: The MUltiple SIgnal Classification (MUSIC) Algorithm'
It seems that it needs to perform pilot source calibration before tracking the real target TX by MUSIC.
Hope it helps you.
Hi Erik,
This is a cool example! Thanks for sharing it
I've got 2 questions:
1. Is MUSIC applicable to other modulated signal? I tried QPSK, QAM and they works. How about other modulated signal?
2. How should I configure the example to support 2 emitters? I tried 2 emitters but it doesn't work.
Thanks and have a nice day!
MUSIC can be applied for any modulated signal as it just only related with sample phase different from different located antennas. I test the QPSK, QAM even OFDM, and analog FM signal. All works.
For 2 emitters, it depends on what purpose you want to achieve, you want emulate two target situation or your want try Tx beamforming?
Hi Boombo,
What I want to achieve is to distinguish 2 targets on MUSIC spectrum.
Hi,
if you want to distinguish multiple target I think you need to think from 3 aspect
1. angle resolution of your receiving array. if you are using a ULA, I think it better you have more elements in your array (>4 I assume)
2. your sources need to be spatially separate enough. Also, it will be good that your sources are uncorrelated (eg. if you split one signal source into two. this means correlated).
3. try to avoid place your source at the angles less than 30 degree and larger 60 degree if you are using ULA
Hope above information helps
Does the signals have to be uncorrelated? Or it is also possible to distinguish 2 correlated signals?
Hi YY,
Think about if your transmitters are correlated. when the two signal arrive at receiving array elements with co-herent phase relation. there will be counteracting or reinforcing effect (actually, you form up a transmitting beamforming in this situation). Then, you may not be able to distinguish on the receiving side.
Cheers,
Bo
I tried uncorrelated signal sources and it works. Thanks!
Hi YY, good to know it works. Cong.
Hi
i have one doubt which i am unable to clear from the USRP ref material. How is it that we are able to receive both RX1/TX and RX2 at the same time in all the devices. Is this not a mandatory requirement. more over if we are going to sync the phase, shoudnt that be with respect to the signal received from RX2 alone since it is connected to TX of the reference signal generator.
How are we able to separately receive the direct and air signal separately and process them ?
This is very good example to me. Thank you for your work.
I have some questions.
1. Is it possible to detect the direction using only the antenna by removing the Ref signal?
2. If 1 is not possible, more than 2 Tx are needed. Do I have to input additional Ref signal at this time?
Hello ErikL,
I'm looking into using the MUSIC algortihm you have posted here but for a slightly different Antenna positioning. I was wondering if the antenna array HAS to be linear or if it could be place in other patterns and the algorithm would still work. I'm thinking it might be related to the antenna array setup you do in attached picture.
for example using the first 3x3 indexes as below.
0 1 0
1 0 1
0 1 0