 As it happens, I will also be talking about radar. So, I worked for Edis Research, we built us up here, so I've been mentioned before. I'm going to talk about it out of tree module called GR Radar, and I'm not the author of this out of tree module. So, I was involved in its creation, but the only reason I'm talking about this is because I really think it's very cool. I just like that out of tree module so much. I thought I'm just going to come here and talk about it, and as I was preparing these slides, I came up with lots of ideas how to improve it. I think I might make that a project of mine for the coming year, but that's just a side note. Point being, I didn't want to claim fame for the actual code that I'm presenting. I usually present my own stuff, but this is just someone else's project that I just like so much that I thought it was worth presenting. So, GR Radar, I'm going to skip this because Jean-Michel talked about radar. Jean-Michel talked about active versus passive radar. Just to be clear, I'm actually going to focus more on the active side because if you have something like this, then that's the four and a kilowatt like aerospace, you know like plane detection radar. Then you need lots of power, but there's actually so many like the radar business has shifted from like a military thing to just like general purpose electronics. So, vehicular radar is becoming more and more popular and a USRP for example will be outputting more power than your vehicular radar already. So, those are very low power devices and you could build them yourselves. Now, the usual disclaimer like if you start transmitting, then you need to know what you're doing like from a legal perspective. So, if you're interested in any of this, like please don't do anything illegal, but you don't have to just do passive radar if you want to get involved as a hobbyist. Okay, there is one theoretical thing I would like to introduce here because it's going to be relevant for the presentation and that is the point scatter model. Now, radar is interesting science because there's actually much less science than engineering and radar than you might think. There are all these models in radar that sort of try and describe various effects and the point scatter model is sort of like one of the very first and easy things. So, if you do like a radar one-on-one class in your undergraduate radar engineering degree or whatever you take and this is something that will probably be taught. So, the idea is you have a transmitter and a receiver. The transmitter sends some kind of signal. It could be yours, it could be someone else's. And then everything that reflects electromagnetic waves is modeled as one point from a geometrical perspective. And if it's moving towards you or away from you, it'll have a Doppler shift. If it's big, like there'll be a lot of reflection. If it's like little or it has like some odd, like non-ideal reflective characteristics, the reflection will be smaller. Mathematically, this is very, very simple. So, you have a transmit signal S and every point will reflect this signal once. And let's say you have H of those, then you have a linear superposition of those reflections. The transmitted signal will be delayed, depending on how far it took to go to the signal and back. If the signal was moving, then there will be a Doppler shift, so it'll also be shifted in frequency. It'll be attenuated and now the attenuation, this is the most elaborate factor in here and it has several things that are interesting. First of all, the distance is in here as power four. The center frequency is also in here, squared. So higher frequencies mean more attenuation and the radar cross section is a factor that sort of describes how much of the energy this point is reflecting. Of course, in our sort of complete model, we have thermal noise and we also have a random phase shift. So if you translated this to an estimation problem, then what you get is a received signal R, you know S and now you have to sort of back calculate H, like the number of targets and then for each of those, the property is tau, which is the delay, which corresponds to the range. FD, which is the Doppler shift, which corresponds to the relative speed and the phase offset is really not necessary. It's a nuisance parameter because you have to carry it around in your estimation problem, but it doesn't actually give you anything interesting. Okay, this model has its shortcomings because first you make so many assumptions that they just don't even theoretically make sense. Like you say Doppler delay a constant during your measurement, but how long is your signal? Is it 10 seconds? Because that's just such a thing does not exist. Then of course you say, well, my object is a point, but it also has a radar cross section. Like it makes no sense. And clutter is just another target. So there are other models that are more elaborate where clutter is its own thing. I don't want to talk about any of that. The point is like, this is just a model. I know it's just a model. It's very useful. It sometimes helps us do stuff. Okay, that's it. That's all the theory I want to talk about. Now GR Radar, what is GR Radar? It's an out-of-tree module, which means it is an extension to GNU radio. You can download it from Sea Grant and install it. And where did it come from? So while back, like myself and a couple of others were experimenting with active radar and we wrote some UHD-based codes. They were sort of integrated in MATLAB and it was not really very good. So there was this desire to just rewrite this properly and put it in the best DSP framework, which is GNU radio. And a student named Stefan Wundsch, who wrote the majority of this code and who deserves a big round of applause afterwards, actually wrote all of this, like 80% of the current GR Radar toolbox in Google Summer of Code 2014. It was one of my, personally, my favorite GSOC projects. And he still maintains it. He accepts pull requests. So very successful project. And the only thing that I can take credit for is that I mentored him through the process. So I could tell him about radar, but I didn't actually do any of the work, at least at the beginning. And this module was extended by other students from the CL in Karlsruhe. Yeah, and it's still there. So you go to Sea Grant, you download it, you can type pi-bombs install, Jerry just takes a minute to install. It's like really not a big deal. So that's it. That's my only slide on how to install it. Okay, so let's take a look at the toolbox. Now, I had the idea that I would bring stuff and demonstrate it, but you just carry so much gear around to do active radar. I just really didn't want to carry it all the way from California. Plus, like a little room like this, you can't actually show all that much because range resolution, Jean-Michel told you all about it. Now, what do I do? Just happened. Let's take a look. I'm just gonna spawn, can you read your companion? There are really nice examples in there as soon as it loads that I wanna take a look at. I'm just gonna close all of this. I just had this open while I was going over the slides. So if you go GR radar examples, there's a whole bunch of examples. And then simulation is a whole bunch of simulation tools. And what I really, this is something that I really like. This is an approach that is very rigorous and it sort of takes away the immediate satisfaction of doing radar on like day one, but it produces code that is very correct. So, and here's what it does. And this is why I introduced the point scatter model. And I don't know who's manning the door right now. Like, can you please make sure that people don't walk in and out? I think we're, we still have some space. Okay, so this is what a typical flow graphics. I'm just gonna close this here. And so we have a bunch of signal generators. Actually, wait a minute. I had these two slides on the wrong order. So, if you install the toolbox, you will see all these tools. So, this is just a screenshot from Neurator Companion. I'm gonna go from the bottom. So, at the bottom we have like generators. This is just calculate some tools. And some of these are very simple. Like CW continuous wave is literally just a cyan tone. It adds like things like TSBs in there that become useful. But this is not a very complicated box. It's just useful like in your radar simulation. It's just like the exact thing that you need. FMCW is a typical wave form that is used in radar. I don't wanna go in the details of that. FSK is already interesting because you can, if you can do CW or FMCW, you can also do FSK, but you can also transmit data with FSK. So, that's something that I researched when I was still in academia. Like combining data transmission and radar in your active signals. And there are actually a couple other signals you can use. There are some GUIs that sort of extend the utility. There is tools is sort of just a bunch of blocks that I've really not related to radar, but we need them in this toolbox. And estimators, this is probably what I like best about this toolbox. These are algorithms that take the output, like your Doppler range diagrams, for example, and then give you a table of targets. And this is in an automated, like when you write software that's automated in an automated fashion reacts to your tags. And that's what you need. Like your Doppler range diagram looks cool, and that's it. Like if you have an operator staring at a screen, they are useful, otherwise they're not. And then there's a whole bunch of other things, including, and that's what I really like, the static target simulator. I'm gonna show that off right now. Okay, so you generate your signal. You put it through your static target simulator. Now this will, on its output, will give you like the backscatter some, we add some noise first, because that's what we have in real life. And how do you calculate anything from like a continuous wave signal and its backscatter? Well, one method is to do the multiply conjugate. Why is that? Well, you take out any kind of frequency component that you don't care about. You get phase offsets, and you get one of them for every target. And then the end result gets passed through in FFT. So I'm glad like Jean-Michel talked about the theory a little. I can gloss over that a little. And instead of like plotting a Doppler range diagram, we send it into a C-far block. C-far is continuous false alarm rate. This is our estimator, part of our estimator. This will sort of take out the peaks out of the FFT and try and identify where they are. And because an FFT peak itself still not quite useful, we have another block that actually translates it into range information. So here you can see, well, that's just a tone. Guess what? No big deal. That's what we expected, because that's what we're transmitting. But here, this is interesting. You can see I'm getting like continuous updated range estimates, 49.99 something. And where did my windows go? No! And I'm not sorry, it's the velocity here. In meters per second. And that's exactly what we put in here. Why do we only estimate the velocity? It's because we have a continuous wave. We have no range information. So let's see if we have some more elaborate simulations and add range. And one thing you can do is you can just add another sine wave. Now you've got bandwidth all of a sudden. And you can do the same thing as Jean-Michel did. So original tone, so we have two tones here. Now we have velocity in range, 30 meters, 50 meters per second. And this is already being tracked in a separate plot. So if I start changing the range, it'll also go up here. So this is very nice for sort of like running experiments. And you can see here our estimates are still printed. So this is something a computer could like act upon very, very nicely. So let's turn that off. Let's see how am I for time. A lot of the work that was done here was also like geared towards theoretical work. Bachelor's and master's thesis was supposed to come out of it. This is the same simulator except it now adds an estimator for the radar cross-section. I mean, I'm just gonna quickly run it. It has the same overall effect, but it does estimate, you can see like the radar cross-section. So we have an estimate for radar cross-section, velocity at range falling out of that. And okay, so FMCW will look very similar. I'm gonna skip that for now. I would have to go into the reason like why you do FMCW for radar. It's really not that hard, but I wanna focus on a couple of other things. FSK, this is just cool because like I said, the signal that we use is an actual FSK signal. So we could, so in here we generate random data, but we could also be transmitting actual data. So, and you can see in this setup, the result, so this is like what we, like in reality would come back on our receiver antenna. We again do a multiply conjugate with our original signal to do further processing, but then we need additional blocks to do the post-processing. And here in this case, we actually do separate processing on both of the, like this is a two FSKs. So we have two effective frequencies, like we sort of bounce between those randomly. So it's really the same thing as the, I'm sorry about that. It's really the same thing as the dual CW, except that we sort of turn one of them on and off at a time. Let me skip that, kill it. All right, now if you wanna get more fancy in the last two simulations here, these are more fancy for various reasons. So this one here is an actual, starts by generating data. So this here could also, this could be an actual file that I'm transmitting, except like in the simulation it's not. So you'll see what happens with this. So I generate data, I do various things to my data and then, oh, look at that. I'm actually sending it through an OFDM modulator. So what I'm generating here is an actual OFDM signal. And I'm gonna sort of siphon off just the modulation symbols. I don't care about like cyclic prefix and like all those things get in the way when I do radar post-process. So this arrow that goes down here, that's my reference. So this is a lot like doing DVB, TO, DAB, passive radar, except you have much better information about your transmitted signal. So this FFT is part of the OFDM modulation and we add a cyclic prefix. And then once again, we send it through our static target simulator. Before we do any processing, we remove the cyclic prefix again and do the inverse operation to the FFT wall. This is actually a forward FFT. The post-process signal is actually a division of the complex modulation symbols with each other. And then if we run this, we actually do get a Doppler range plot because this is just a matrix plot of the actual OFDM symbols that get received. So like on every frame that we send, we get like one matrix and that's it. So this is very nice. So here's my target. I can move it around. Of course I don't have enough screen real estate to do it at once, but you can see it moves around. And I still get the estimates here though. So that's still happening. Okay, let's close all those windows again. And finally, this is something that I actually have a video of, so I'm not gonna run it. What this does is it actually extends the estimation part. So I said we don't stop at the range Doppler diagram. We actually do target detection. Now we go one step further, which is we actually track targets. So this is what a real radar system actually does is for example, if you track planes, you do lots of radar measurements all the time. And it might just happen that the plane is at an odd angle or something. Like the reflected energy is too little to trigger our radar response. So we actually don't see the plane on a single measurement. Like the air tracking people, they don't think the plane just vanished. They assume this is like a glitch in their sort of radar measurement. So you can make a model of the trajectory of a plane. You can say like it was here like a minute ago. It was there now. So it's probably here now. So you can do that. And you can also put that into a model. And this is also in this toolbox. So very, very cool. And I was gonna set this up, but I just couldn't get a better video than the one that Stefan had originally made. So I'm just gonna show this. So it's actually running. So this is, yeah. So this is the setup he was using. Let me just full screen this. Yeah, this is the dual antenna setup. So there's one transmit, one receive antenna. This is the flow graph that I just showed you, except that the static target simulator was replaced with an actual radio control. And you can see that this is a very confined space. So the, like you need to do some post processing. Otherwise you'll just get clutter from like everything, like the door frames and whatnot. The Doppler shift is enough though to actually do something useful with it. And if you now look at the post processing. Yeah, so this was like continuous measurement. You hear you have the Doppler going one way and the other and you have to sort of, like you can't just like draw this like from the received signal. You have to sort of know what's going on. So in this case it was like, we knew there was like one big target that we want to track. So we plot that instead of the Doppler range diagram would have just been full of energy. Okay, thank you. Let's go back to here. So actually no, I did, I have one more thing I want to show here. So yeah, as you can see, like this is only your standard IQ sample processing up to a point. After that it's just all message passing on individual items. So this is like these tracking blocks, they don't actually look at the time information in the sample stream. So they don't make the assumption that, you know that like input signals are coming on like every 100 millisecond or so. And then we, you know, if we're running at like one mega sample, then that means that's like, you know, a couple of hundred of thousands of samples. What they do is they make the assumption that you've given them a correct sort of pulse repetition frequency and then they just use it as input to their own algorithm. So they will get a measure, like for every measurement they get, they will make an assumption that okay, like that much time has passed. So you need to make sure that that's happening. But then on the flip side, this whole processing becomes way more efficient and it's sort of, you know, more in line, like this is not something that you wanna do a sample-based processing on. Okay, I sort of glossed over the actual inputs to this block. I'm quickly gonna pull it up. It's very simple. So this here is just a list of targets. So I can just add another target by putting another value here. So 10 meter range, 1,000 meter range, et cetera. And the same with the velocity. Like I don't know, like there was something about like these radar cross-section values there. They're all pretty big. I think there might be some math bug in the code and I'm gonna take a look at that sooner. But one thing that you can actually do, it's just very complicated to show off, is you can actually do a fake MIMO setup. So you can say, okay, I'm not actually gonna process one return signal, but I'm gonna pretend like I have a uniform linear array, like, and they don't even have to be equal to space. The antennas, they just have to be in one line. And there's like a simple trigonometric model inside this block that will include, like, azimuth information, so which this line is. So I can say like, okay, this is like zero azimuth, so right in front of me and then like 10 degrees, so this is degrees, minus 45 degrees or whatever. And then I'll sort of do a phase shift between the output signal. So you can actually do a whole bunch of things with that. And yeah, so this is why this becomes really, really useful. There's a little bit of hardware impairment in there. So self-coupling in active radar is a big problem, especially when you don't do a pulse radar on airplanes miles and miles off. So you will always see your own signal on your receive antenna and it'll be very, very strong compared to the return energy that comes from the other targets. So because that is a real problem that you have to deal with somehow, it's also built into this block that you can actually put it into your simulation. So you actually don't get too good of a simulation compared to what you really do. Now, how do you go to actually turning this into a real experiment? It's so easy that it's almost, that it's funny. You see all these simulations have the exact same names. Sorry, these are not simulations anymore. These GRC files have the same name as the simulations. What's the difference? The only difference is that, where is it? Where's the block? There it is. The static target simulator is replaced with this block called usurpy ecotimer for the name has historic reasons. So there's a whole bunch of settings. But basically the idea is you say, okay you have one user that's dealing with transmit, one that's dealing with receive, you put in all the information here and the block will take care of all the timing. So in radar you have to make sure that you transmit a signal and receive it at the same time. So that's one of the problems that Jean-Michel talked about with the timing synchronization of the RTL-STR dongles. If you have a usurpy, that problem is solved by the driver. So all you have to do is prime the FPGA appropriately. So I need to hurry up a little. So I'm just gonna go back to my slides actually. But it's very, very easy to set this up. So I'm just gonna quickly show you how before I go. So if you have stuff like this lying around, then you're good to go. Just hook it up, like the software will take care of it. Not all users are currently supported. And in particular the XP10 would be interesting for that because it has a high bandwidth. The B210 is the cheapest that would do all of this. It'll have a lot of leakage. So I haven't actually measured that. So I'm not quite sure how bad it is, but it'll be worse than on the others. Antennas, you can do whatever you like, but if you have like high directivity, it'll be good. So this is a setup that I actually used a while back, like sort of as before we were, before we had GR8 up, but the concepts are all the same. You can see directive horn antennas connected to usurpy N210s. This is all battery powered. This is what we measured. And this is the Doppler range plot. And this is the output of the estimator. So you can see relative, like these are vehicles that are moving away from us. These are coming towards us. And this is clutter, which we can calculate like we just remove algorithmically because we know we're looking at a motorway and there's little, like people usually don't stand around unless it's a traffic jam. There's a whole bunch of things that are missing, but I don't really have time to go into them. But like better passive radar support in GR8 would be cool because I agree with Jean-Michel that it's hard to sort of replicate some of these setups. And that's exactly what GR8 is trying to make easier. Okay, if you're interested in any of this, that would be cool. And you could join us in working on GR8. So if we're lucky, fingers crossed, there will be a Google Summer of Code project, a GNU radio. And then I've always like advertised GR8 as a project, like even the last two years when I wasn't really working on it. If you're doing radar work at university, you might as well do it on GR8 radar. Okay, so thank you. I know. All right.