Understanding "DDS/Goertzel LUT mode"
Seairth
Posts: 2,474
in Propeller 2
Reading through the documentation, I'm not connecting a couple of the dots. The document indicates that an input pin (which should be configured as an ADC input) is sampled on every clock. What happens to that sampled bit? And how does this relate to the NCO, which is used to read the LUT? Additionally, the current document seems mostly focused on processing inputs. How would I use this for just DDS output?
Comments
All four bytes (a long) read from the LUT are written to the DACs, according to %dddd. Practically, you would only enable the bottom one or two DACs for output. The upper two bytes from the LUT are multiplied by the ADC input, such that 0/1 is treated as -1/+1, and the separate products are accumulated into X and Y registers, readable via GETXCOS/GETXSIN. These sums of products, after NCO rollovers, form (X,Y) coordinates, which can be converted to polar coordinates via the QVECTOR instruction, so that you get power and phase measurements, representing the ADC bit stream's correlation to sine/cosine patterns in the top two LUT bytes.
This will require some special example code to demonstrate.
You can do three things with the DDS/Goertzel mode:
1) Generate DDS waveform(s), ignore Goertzel.
2) Generate DDS waveform(s) and track same-frequency/phase input using Goertzel.
3) No DDS, but use the Goertzel mode to measure energy of a frequency within a noisy signal.
Hmm, maybe a little vague/deceptive ... hundreds of microns, plural, could mean one millimetre. So that's 10x by 10y by 10z = 1000.
The basic idea is to use TOF data to limit general problems with existing techniques and theory. This particular work is well expressed theoretically(except for treating ambient light as invariant and unpolarized:)
quote from techniques section: "Scenes are assumed to have the following properties: (1) unpolarized ambient light; (2) no specular interreflections; (3) only dielectric materials or low-frequency changes in materials; and (4) diffuse-dominant or specular-dominant surfaces."
So, if you assume something to be true that is generally not true... you have an up-hill battle to prove that your approach is generally important This work IS generally important, and this paper is a very good reference. But all of that gets lost in the actual experiments, which seem a bit rushed (which is understandable because the basis of the paper is thesis oriented, which always seems a little rushed.)
If I were criticizing the thesis, I would point out that no effort(at least none that I could quickly find) was made to eliminate known sources of noise from the TOF data, which at a minimum can be done on a pixel by pixel basis by thresholds, based on variance in the first order differentials coming directly from sequential TOF data. The thesis also makes the assertion that valid polarization statistics can be acquired from three acquisitions per point. The choice to limit the acquisition data to three measurements per set seems to me to be a convenience and stating this as a theoretical limit has nothing to do with real world problems.
I think it is true that polarization statistics with the same spatial limits of the TOF device can be used to eliminate noise in TOF data... but what is not true is that it can improve the resolution of valid TOF data, which is limited primarily by the angular resolution and time slicing of the TOF device.
What is true is that if the polarizing statistics come from a separate sensor, with much higher spatial resolution than the TOF device, then it is possible that the TOF data could be used to improve the 3D data coming from the polarization statistics to the point that it exceeds the resolution of the TOF data... under laboratory conditions. This is important, but how important it actually is depends upon a valid comparison with other techniques to use TOF data as a constraint for other 3D techniques.
I have absolutely no idea what Chip is doing with Goertzel:) Except that I looks like it would allow these guys to get their data in real time from analog cameras:) That's a joke... it might be true, but it is still just a joke.
In the screenshot you see colorized depth data... with one scan line selected (139).
If you look carefully, the little blue dots represent the first order differentials from the most recent acquisition. Currently, the depth data is kept in a buffer, which contains the last five acquisitions.
What is most important is that this is all being run on a Kangaroo $99 64 bit Windows 10 machine (that jmg pointed me to) that weighs nothing and is smaller than the P123 board. In addition to this application, it can simultaneously run ImageJ, which can cycle through 6+ additional cameras... additional cost of about $50... and also has a serial link available.