I'd like to show you a little bit how I'm using software
refund radio, of course, running radio,
for developing a covered ground-based synthetic
aperture radar using Wi-Fi as a radio frequency source.
So just to see what it looks like by the end of a presentation,
this was done with some funding, or leftover project
funding, so I put the affiliation of the lab.
Actually, it's a hobby project, but I
had some leftover contract money to develop this thing
that I wanted to show with you.
So what is ground-based synthetic aperture radar?
So let's start with what is the objective of what
we want to look at.
When you're looking at a radar, you
have a remote sensing measurement technique
where you want to do some radio frequency detection
and ranging.
So you would like to see targets.
And in the case of GBSAR, it's mostly
used for small, minute variation of distances.
So in this example here, which I was lucky enough
to visit Professor Sato's laboratory in Sendai,
and that's one of his setup where he's looking at lens slides.
And when you're looking at lens sighting,
ground-based synthetic aperture radar,
you're using the range information
to detect the distance from the SAR measurements
and the lateral resolution is given
by the spatial diversity of moving your antennas.
So as opposed to it's an active measurement technique.
So as opposed to passive remote sensing
like optical measurements, photogrammetry, optical satellite
imagery, you're not sensitive to lighting conditions
or day, night, or cloud cover.
And it's an active measurement technique.
So you will generate the signal that is returned.
But unlike laser detection and ranging,
you're not sensitive to weather conditions.
So radar is all weather conditions.
So that's beauty.
Now you've got some commercial systems.
I just took some of the European ones
I'm familiar with, Italian IDF, Dutch Metasensing.
I don't claim to be competing with these guys.
These guys have 100K units.
I'm not going to show you a 5K device that's compete.
I see this as an educational project
to try to get familiar with the concept of SAR
and trying to do this.
Well, I wouldn't say legally, but at least not get caught
by using Wi-Fi signals.
So what are the requirements for radar?
Radar, on the one hand, you want to detect a distance.
So distance is inverse of bandwidth.
So you need a large bandwidth.
So you need some wide bandwidth signal,
and Wi-Fi is very good for this.
Now there is no reason why you would get more bandwidth
with higher frequency.
But it's a fact that technologically
it's easier to get more bandwidth
with the higher frequency.
And so I moved to 5.8GHz Wi-Fi because you've
got 200MHz bandwidth.
So that's kind of nice because your range resolution C
over 2B is going to be something like submeter.
So you can separate by range, two pixels
separated by less than a meter.
And then also because I want a mechanical setup,
I showed you in the introduction we want spatial diversity.
So we're going to have some moving stuff.
And the higher frequency, the smaller the wavelength,
the smaller the wavelength, the smaller the antenna.
So it's going to be easier mechanically
to move some smaller antenna, hence the increase
in higher frequency.
And also the rail, along which you're
moving to have the spatial diversity,
the azimuth resolution is given by the wavelength
over length.
So if you're higher in higher frequency,
your range distance will be smaller,
and the rail will be a bit cheaper.
So these are reasons for moving to higher frequency.
So the SAR measurement tells you
that you're doing spatial domain,
which is doing time domain.
So you're moving the steps, you're moving the antenna.
And I'll show you in the next slide
that actually azimuth compression isn't for a transform.
So it's really your adding phase each time you're
moving the antennas.
And if you want to match Shannon's sampling theorem,
you show that you must have half distance, half wavelength,
is the same as half the sampling frequency.
And when the transmitter and the receiver are collocated,
actually because they're both moving,
it's not lambda over 2, but lambda over 4,
because you're moving both the transmitter and receiver.
So you need a system that allows you to move your setup
by quarter-weaving steps.
And because I want to have as little sliding contact,
all these electrical stuff that's moving,
they have poor contact.
So I wanted to put everything on the moving part.
So everything that is moving is the Wi-Fi dongle
as a transmitter, a B210SDR as receiver.
But an important story here is you
need a dual channel coherent receiver,
because you don't know what the Wi-Fi is streaming.
It's streaming a broadband signal,
but you don't know what it is.
For me, it's noise.
And so if I'm sending noise, I need to record the reference
signal.
And on the receiving antenna, I will
look at time-delayed copies of this transmitted signal.
So that's your basic passive radar measurement.
And this is all running on the Raspberry Pi.
So the Raspberry Pi at the moment is Raspberry Pi 4.
It's running build routes, running new radio,
and I'm streaming 0MQ to the processing PC.
That's what we showed a few years ago.
So actually, this is the final setup.
So I took some commercial antennas here.
You want it to be a bit directional
so that you can have some bigger range.
And this is why I'm saying it's not completely legal,
because I'm sending the 10 dBm of a Wi-Fi transmitter.
But of course, it's an isotropic radiated pattern.
And here, I'm focusing on the 20 dBi gain antenna.
Let's forget about this.
No one's going to notice.
And we do the same on the receiving.
So you see here, you have the rail, everything
that's moving and transmitting and receiving antenna.
Raspberry Pi is over here.
The B210 is over here.
So everything that's moving heads the cables.
And then I'm transmitting.
Here, I'm transmitting over internet,
but it could be over the Wi-Fi communication.
The 2.4 GHz, the stream.
Now, doing Wi-Fi measurements, actually yesterday,
if you walk in the garden just outside here,
you're going to see this poster.
And actually, I was reading the poster.
For those of you reading French, actually,
there's a PhD from Brussels using Wi-Fi for what they call it,
crowd safety.
I call it crowd control, but he's PhD.
So he's still optimistic.
And of course, using Wi-Fi is MIT is very good at advertising
what they're doing.
So MIT has been doing full-the-wall Wi-Fi
measurement for a long time.
So Wi-Fi is not new, but I'm just
trying to show you here how to make an educational system.
So the principle is we continuously broadcast Wi-Fi.
So actually, you could be streaming a very big movie,
or you can take Bach's Packet Spammer.
This is what I'm doing.
So Packet Spammer will just keep on sending packets
over time.
And you have this non-cooperative source sending signal.
And because it's non-cooperative, it
might be that sometimes you will look at Packet Spammer.
And because you cannot squeeze too many packets in a second,
you'll have some gaps.
So you just have to detect the gaps,
throw these parts away, and collect enough data
that you don't have noise.
Now, we've just seen the presentation by Sylvain about GPUs.
And just going to this, the correlation,
when you're doing correlation memory,
you're looking at the time-delayed copy of your signal.
And you might think he's talking about correlation.
Sylvain was talking about convolution.
It was a relationship.
The relationship between convolution and correlation
is just you flip the time in the argument.
Convolution is tau minus t.
Correlation is t plus tau.
And when you flip the time, you take the complex conjugate.
So you see that exactly what Sylvain said.
You take IFFT of Fourier Transformers Surveillance
times the complex conjugate of Fourier Transformers
of the reference signal.
And the complex conjugate is to go from correlation
to convolution.
And the problem with this is that if your filter has
some ripples on your reference measurement
or on the surveillance measurement,
if you have some ripples, then you
will multiply the ripples because you're
multiplying the amplitude.
And what's really important in correlating
is that you want the phases to subtract
because the signal will be square-irons.
And if they are coming from the same side,
you have zero phase, or even same direction,
they have the same phase.
So you want to subtract the phase.
And actually, instead of doing the analytical formula
of multiplying the Fourier Transforms,
you can actually take the ratio of Fourier Transform, which
is the same by taking the inverse to take the negative phase,
but you cancel the amplitude fluctuations.
So that's actually what I do at the end of the day.
I take the inverse Fourier Transform of a ratio
of Fourier Transforms.
Now, each Wi-Fi bandwidth is 20 megahertz.
And 20 megahertz is on the one hand more
that I can stream from my B210 to the Raspberry Pi 4.
And secondly, I told you there's 200 megahertz
available in Wi-Fi.
And we don't want just to be using the 20 megahertz of one
channel.
And so what we're doing here, if you look
at the allocation of frequencies,
Wi-Fi is very broad.
It starts at 5.4 gigahertz.
Actually, you should avoid the 5.4 gigahertz,
that's the C-band radar band.
It was also called military G-band.
So you would like to avoid this kind of frequency.
And C-band is also Sentinel-1.
We don't want to be jamming Sentinel-1.
So we start working above the C-band radar.
So we have all these channels here.
And what you do is actually you do
what is called frequency stacking.
So actually, you reprogram your Wi-Fi dongle
to jump from one channel to the other.
And then you just keep on sweeping.
So this was done of Spectralizer.
You see here how you're broadcasting
each one of these channels.
And I can check that indeed this is working.
And so for each channel, I reprogram the dongle.
I stream the data for 0MQ.
I record the data when I know I reprogram the new channel.
And after I collected the number of samples I wanted,
I reprogram the new.
And I keep on looking like this.
At the moment, everything, all the FFTs are done offline.
Actually, everything I'm showing here is post-processing.
I showed you a very fast movie because a full measurement
is taking 15 minutes.
And as I've had run the movie in real time,
my time would be exhausted by the time
I finish the introduction slide.
So actually, a full measurement is taking 15 minutes
and processing the full data is about an hour
because I'm not using GPU.
Here, this is all CPU post-processing.
But one thing that I would love to see
we've seen very fancy GPUs here.
I just got two Raspberry Pi 5.
And I'm told that we would be documented
how to use a GPU of Raspberry Pi 5
to do some sort of processing.
So that would be really beautiful to do at the moment.
It's beyond what I can do.
So this is actually experimental.
This is what I do.
Each one of the color was a spectrum
collected by the B210.
And so you see my frequency stacking
so that allows me to spend the 200 megahertz of Wi-Fi.
Be careful that there are some gaps.
I think it's these guys here.
So there are some gaps.
So when you do the ratio, just make sure
that you not a number of the values
that you don't divide by 0.
It's going to be unhappy about the calculation.
Just a little side note.
When I bought this rail, usually I
tried to do some hack where I tried to find what's in the lab
and I tried to assemble.
And for this time, I had a bit of money left.
So I bought a real rail.
And I learned, I discovered, that all these industrial controls
so that programmable logic controller
are running on 24 volts.
That is very standard.
And your Raspberry Pi, of course, is a 3.3 volt GPIO.
So you will need to have some voltage converter.
That's your legacy, ULN2803, open collector
dialectan transistor that will convert the input 3.3 volt
into 24 volts.
And the other thing that's kind of funny for us
is in industrial control, they don't
want you to do anything you want with the rail.
Because if you misbehave, then your rail might go off.
So actually, you're not allowed to program the position.
You have to pre-program a set of values
where your rail can go.
And then you say, I want you to go to position 1, 2, 3, 4,
and so on.
This, of course, is proprietary software
from the rail manufacturer.
But it does run on wine.
So it's not open source, but you can do it.
So this is what it looks like on the moving part.
You've got the Raspberry Pi with 24 volt controller over here.
OK, having said that, what you collect,
you collect for each antenna position
all the spectra in the frequency domain.
Once you've got on the reference channel
and on the surveillance channel all these antenna positions
and for each frequency, so that's a 2D matrix,
you cross correlate each one of these.
So you end up having one 2D matrix
because you've correlated these two guys.
You've got the antenna position on the x-axis.
You've got the time domain because you inverse
for transforming the y-axis.
So this is before azimuth compression.
Then you do your azimuth compression by doing the FFT.
So this is FFT in this direction.
Then you take the FFT in this direction
to do azimuth compression.
And then the part that I'm not completely used to here,
you get sine of theta.
You want to have range theta position.
And my colleague, Weike Feng,
Air Force Engineering University in Shanghai,
gave me the algorithm for reprojecting the sine theta range
to the range azimuth position.
And once you get these maps,
well the really beautiful thing is
there is no degree of freedom.
If you know how you move the antenna
and you know the frequency step you use,
you cannot cheat with the results.
You've got an x and y position
that is fully determined by your data acquisition condition.
So here is one example from our lab.
So this is the rail, this is the antenna.
You've got here this round circular building
which is over here.
You've got the portal which is over here.
And you've got the university housing which is over here.
So there is no degree of freedom
other than positioning the radar at the focal point.
And this you know, I know where I'm located.
And you have only degree of freedom is azimuth.
You can tune the picture so that it fits.
In this case, I threshold the pack scatter
to make transparent where there's no output.
So this is on the other side.
So this were closed range, this is further away.
So we're looking at the opposite side.
You've got this building that is over here.
You've got this container which is over here at near range.
Again, no degree of freedom.
And there is this reflection.
And you should tell me, how can you get a reflection
when it's a field over here?
Well actually that was taken this summer
when Google Maps had not yet updated their Google image
because this building was indeed built since then.
So this is one example where we actually get reflections
up to 500 meters.
This building here is giving us something.
This range here is 500 meters.
So it's working, all right, let's say well,
at least you can see things with it.
Then you might ask, is this reproducible?
So last weekend I said, OK, like open source project,
you put the GitHub, you say, trust me, it's working.
And six months afterwards it's all gonna be crushed
because all the libraries change and nothing's working anymore.
So last weekend I said, let's take everything out
and let's check if it's working.
So it is working again.
So here you've got the XY map which I project
over Google Maps.
And the nice thing is Google Maps updated their database.
So now the hotel is over here.
And here you've got the reflection far away.
And you've got something here.
So you might say, wow, I get even something even further
than 500 meters.
And it's reproducible.
I took a second image over here and you get twice
the same image.
Don't be fooled.
This here is not if you change the big orientation of the radar
and you look a bit to the right, you think the reflection
is still over here.
This is your ambiguity function.
The ambiguity function is you take the auto correlation.
So you check, is there some self-similarity?
And obviously, OFDM Wi-Fi does have some self-similarity.
And this is a repeated pattern every 1.5 microseconds
or something like this.
I don't have the details.
And so be very careful when you're
using non-dedicated radar signal to check the ambiguity
function because they might create their own repetition,
which are not targets, but just because the signal does have
some structure Wi-Fi.
Looks like noise except when they repeat the OFDM error
or something like this.
But still you see that even if I try to go back,
you see that this guy, for example, is a real target.
Because if I move a radar azimuth,
you do see the radar, the target at the same location.
So I'm not completely lying here.
And so finally, I was thinking, why
is this reflection so powerful?
How come there is one building at 500 meters
that is sending this echo?
So I went to see.
I walked around and I took this picture.
And actually what you see here, they've got the windows.
But as a shade, as a sun shade, they
put something that looks very much like a corner reflector.
If you remember what a corner reflector is,
it's a free right angled part.
And actually, modern buildings, architects
seem to love corner reflector.
You look at modern architecture,
you've got free right angled corners everywhere.
So that's very good for radars.
So this is actually why this building in particular
is returning such a good signal.
Finally, I told you that the range resolution is only
a half meter, 75 centimeter here with 200 megahertz bandwidth.
And we want to detect length slides
with sub-centimeter displacement.
So the classical method is you do
interferometric measurement in SAR.
So in INSAR, you don't only look at the magnitude
of a return signal, but only also the phase.
And the phase is uncertain because you've
got two pi phase rotations.
So you don't know how far the length slide is,
but this you don't care because you got it
from the range resolution.
And by looking at the phase, you can actually
get your distance variation, which
is half the wavelength times the phase rotation over two pi.
So the only challenge is because it's a radar,
it's half wavelength because you've got a two-way trip.
And so basically, I'm claiming here, so what I did
is I took all the strong reflections.
The ping here is misleading.
This is not one.
This is not a number.
And I took the average and the standard deviation
of all these guys.
And you see that the mean value is in 1 millimeter.
So you do get a millimeter on the mean value
with 1.5 millimeter standard deviation.
So I claim this to be 0 plus or minus 1.5 millimeter, which
is probably not state-of-the-art,
but that's just educational.
So I'm still almost pleased that it works.
And if you had seen some of my previous presentation,
if you take a corner reflector, I try to do it.
And it fails here.
If you move a corner reflector by step of 5 millimeter,
you do see it.
So the phase analysis is working as well.
So to conclude this presentation,
I wanted to share with you how you can use, I think,
affordable hardware for running a synthetic ground-based
synthetic aperture radar, especially
as an educational tool using commercial off-the-shelf Wi-Fi
emitter, in this case, as a cooperative target
because I'm broadcasting the signal.
And I think it's a great opportunity
to try to get started with this digital signal processing.
Now, just to give you an idea of the budget,
because I told you I had some leftover budget
from a former contract that I had
to spend by the end of the year.
So I bought all this hardware.
So the antennas are 1,000 euro transmitter receiver.
You've got, actually, no, not two times.
So stupid me.
It's a 1 transmitter, 1 receiver, of course.
No, no, no, sorry.
A pair of transmitter receiver and the accessories
for handling the antennas.
You've got the rail, which is by far the most expensive part.
But you do need the accuracy of the rail,
the repetibility of the rail will give you
your ability to do INSAR.
If you've got a shitty setup where
you've got an uncertainty of 5 millimeter on the position,
well, 5 millimeter with respect to a half wavelength of 2.4
centimeter is significant, and this will blur your image.
So that's where I wanted to spend a bit of money
to have a good quality.
These guys claim to have 100 micron
reproducibility, so the sub 10s of millimeter, which
I think is really good.
And it's kind of easy to use.
You've got your Wi-Fi.
You've got the passive RF.
And you've got the Raspberry Pi.
These are all easy to find.
And the B210, actually, I had leftovers.
I think I have a dozen B210 in the lab.
So I just took one of the leftover B210.
And as I was doing this talk, I wanted to share with you
the fact that everyone could do it.
And at the end, we have a 7,000 euro project.
And I'm not sure everyone wants a whole B210 7,000 euro.
And you do see that the most expensive part here is the B210.
So I checked, and I do have quotations
from the beginning of last year, last, last year, that
says that the B210 was 1,400 euros.
In January 2024, it's now 2,100 euros.
So I'm sorry for an eye, but I'm not going to advertise the
B210 because this is really too much of a price hike.
You do have a Pluto Plus with a tool channel, which I can
get on AliExpress for 300 euros.
And it's the same 80, 90, 360 something.
It's an internet output.
And when you've got all these moving parts, if you ever did
some USB on moving parts, USB is the worst connector you
want on the moving part.
Internet, at least, you plug it in, and it stays there.
So yeah, unfortunately, I wanted to demonstrate this for
this presentation, and my Pluto Plus is still in the mail.
So I cannot demonstrate that the noise level is the same,
that the communication capability is the same, that
it runs flawlessly on the Raspberry Pi.
This may be for the next time.
But yeah, you will save 800 euros on this budget, and it's
a 5,000 euro project that I'm showing you here.
So you can find all the repository processing on the
GitHub.
Hopefully, I documented everything.
If you wish to reproduce and you miss information, feel
free to reach me.
I'll be happy to complement any misinformation.
Be aware that if you want to use different hardware, the
running bastion's packet spammer does require what is
called promiscuous mode, and not all chipsets
support promiscuous mode.
Furthermore, be aware that the chipset of this particular
board is not in mainline Linux kernel, so you will need to
recompile the kernel.
And if you're doing cross compilation for big rules,
you need to know how to cross compile your kernel module.
And finally, this was all done with your taxpayers' money,
so public money, public code.
Thank you for supporting our research and my colleagues
from the Mechanical Workshop who did a very good job in
assembling these antennas.
And with this, I thank you for your attention.
And I even have one and a half minutes for questions.
I guess if you have to tune the gargantuan call to the
Wi-Fi's packet spammer, then the gargantuan call is to
Wi-Fi's container and to see more radio silence after the
packet.
The question is, how do I tune the silence in packet
spammer?
And actually, I did the exact opposite.
I wanted to have the packets as close to each other as
possible, so I have as little gap as possible.
And as I was putting too small a value, if you ask packet
spammer to send a new packet as the previous one is still
being broadcast, then it will send back an error message.
And the Wi-Fi don't really become very unhappy.
So I was conservative and I did put excess delay, not that
I wanted genuine Wi-Fi user to still have their connection.
This I didn't really care about, but I didn't want my
Wi-Fi don't go to crash.
And so I put some additional time delay, not too much, so by
time I'm not wasting too much time.
The reason why this measurement is taking 15
minutes is really to collect.
I'm taking something like 100,000 samples per position,
per spectrum.
And really the collection of the data and getting rid of
the silence is the reason why it takes so much time.
Just if you look at commercial GBSAR, they promote one
second measurement duration.
And the reason also, I didn't mention power consumption,
the GBSAR used to be installed in remote locations.
And of course, the longer it takes, the more power you draw.
So this device I make a power budget is 25 watts.
So whether you have 25 watts for 15 minutes or 25 watts for
one second is going to completely change the life
expectancy of your battery.
So if I had to work on something now, it would really
make it faster so that it can run on battery or solar panel
and that the energy consumption of each
measurement is much lower.
So the initial question of putting gaps in packet
spammer is just not to crash the Wi-Fi dongle.
Have you considered using rails from 3D printers because
they usually are cheaper and have still very nice decisions?
If I can assemble which part in?
From 3D printers like the procedure like rails too, which
can look like very precise movements and space speed.
So the question is what part can be made out of 3D printers?
The problem here, I did not put the weight estimate, but I
think the two antennas plus the hardware setup weight
something like 1.2, 1.5 kilos.
And that's really the challenge in having a nice
mechanical setup.
You do see that there is a bit of hardware there.
And so when you want to move these stable and reproducibly,
I went for a fancy.
Also, I wanted to do it fast because my previous setup was
a screw driven rail.
And it would take like 10, 15 seconds to go from one
position to another.
So just the time to move would be added up at something like
five, six minutes in the measurement.
So this guy can just move in a fraction of a second from
one position to another.
So there's many solutions that you could go for.
There's also these photographers.
They want to do time lapses where they move a camera.
Yeah, I didn't trust them.
So I went for the more expensive.
But yes, there's many solutions that you could go for to
get a better solution.
So thank you, so much.