Dear friends, I would like to ask for your help with some issues regarding a project for remote display to a computer of the hitting point of a bullet into a target.
My plan is to use Multilateration techiniques, based on TDOA of a wave to four sensors, placed on a square shape. For the sensors I will run a series of test for accuracy and speed using microphones, vibration sensors and 1 axis accel. I think the accel. will perform better.
The sensors will be attached to a rubber target placed to wall or support. After data is sent to a program running on PC, it will make the calculations and plot the result on the screen. I am also thinking in doing all calculations on Arduino itself, so the first question is:
Do you think it would be fast enough for doing Cross Correlation and FFT math calculation in a time between multiple bullets hitting a target at, say 10 shoots per second? I mean, could it finish all multilateration operation for a hit before the target is hit by a new one? Or would be better using arduino only as an interface between the sensors and the PC?
Also, I need help with the data collecting setup. I know 328p has only one ADC, however this project need to read data from four sensors simultaneously (pls correct me if I am wrong). I am novice with microcontrollers and electronics, so sorry if this is a dumb question, but could Arduino collect data from four analog inputs simultaneously, store to some kind of buffer (buffer size issues?) so data value is preserved while doing a/d conversion and then piping them to the ADC?
If not possible with Arduino alone, adding more external standalone ADC could solve the issue? Could you please recommend an ADC? Do you think an ADC with at least 12 bit resolution and sampling rate of minimum 100ksps is the way?
I found Analog Device's AD7865 while searching the web. The description says "Fast, low power, 4-channel, simultaneous sampling, 14 bit ADC", however I have no clues on how to make it work with Arduino.
Any help will be greatly appreciated.
Thank you for your attention and best wishes for this new year.
I guess the target is going to be very small and the time delays are going to be corresponding small. What sort of timing accuracy do you think you need to achieve in order to get your required positional accuracy?
If you can get the sensor side working well enough to give you a meaningful TDOA then the calculations to determine the impact point should be fairly quick and 100ms sounds as if it would probably be long enough. Are your projectiles actually going to be penetrating the target? If not, I wonder whether you might be able to put a touch screen type sensor behind a suitable protective layer so that you can directly detect where the bullets impact.
Yes, target size is small, about one square meter or a little more. Thats why I think the accel would provide a better sensor. The delay is indeed, very small, even for an impact wave travelling a highly kinetic energy absorving material such as rubber. However I've see a working commercial product which uses a 100ksps IO board interface from National Instruments, so I think it might be the case.
The projectiles are from real gun, and yes they will penetrate the target. The rubber is the material of choice because it will expand before the rupture, resulting in very small holes which gives a long life to the target. Well, after some shoots, it will have to be replaced.
The great thing about getting this thing working is that you could use a projector to send images back to the target, and using the bullet hit as mouse clicks, simulate hostage situations for law enforcement training with real weapons.
Here in my country, police officers get little to no training after finishing academy and a cheap and open system like that would help a lot, I think.
So, then, what sort of accuracy are you aiming to achieve with your position detection, and what timing accuracy do you need to achieve to get that? I'm guessing the numbers are going to be very small indeed and well below what could realistically be achieved with an Arduino, but you need the numbers to know for sure.
Since your bullets will be going through the target, the situation is going to get more complicated since your sensor is going to be progressively degraded. Do you have any chance at all to change the target to be non-penetrating? If you can avoid that I think a 'touch screen' style pressure sensitive membrane would be your best bet. Failing that, you could construct a mesh of conducting strands and use the same approach used to drive large LED arrays to determine which strands had been broken by the bullet. Alternatively, what's wrong with just pointing a camera at it?
The speed of sound in rubber is about 40~60m/s depending on density, which is about five times slower than its speed in the air. Looking only to the data sampling aspect, that would result in five times more precise recording compared to an air session, such as a voice speaking to a microphone, considering we do both recordings at same rate. Well, I am not taking into account the many other issues with the rubber, such as high attenuation (mainly for the high freq.) and distortion.
The accuracy I need is about 0,5cm. At 50m/s the wave will take 0,0001s to travel that distance. So, I think I will have to collect data at least every half of this time. Right? If Iam not wrong, the ADC on arduino can perform about 15ksps and 260 microseconds conversion time. Too slow, do you think? An external faster ADC would solve the problem?
The degradation of the target is expected, however it takes thousands of shoots before the rubber needs to be replaced (as so I was told by the vendor).
About the camera, you make a good point. Actually, I did a test of this setup with a wireless IP camera and a software checking for changes between video frames. It did not perform well. The main problem is that the shoots need to let visible marks on the target (the holes), resulting into a very short live for them and breaks most of benefits from the system, like being able to project images to the targets.
I think you'd need to do some experimentation to find out how well it works, but my feeling is that with timing this short you probably want to do this using digital inputs rather than analog inputs.
Can you design a circuit which detects a small electrical spike, and then latches it? I'm envisaging a transistor wired up to be self-energising once it has triggered, with something to prevent it energising until the input signal exceeded some threshold.
If you can achieve that, then I think you should be able to write a sketch that thrashes round sampling all the sensor inputs and records when they go 'high'. Once it has collected all the results it would do some number crunching on the relative times to calculate the impact position.
You would need some way to reset the sensors after each measurement, and I'd envisage that being done by an output from the Arduino that tied the transistor inputs down for a moment to de-energise them.
Can you design a circuit which detects a small electrical spike, and then latches it? I'm envisaging a transistor wired up to be self-energising once it has triggered, with something to prevent it energising until the input signal exceeded some threshold.
Or you can use a 555 IC wired as a single pulse generator, and so you avoid the need of resetting the circuit, as long as the pulse duration is shorter than the time between two shots (it depends on the type of gun used, for semi-autos I'll assume 0.1s tops).
The use of direct port reading can be a solution to speed up the data collection.
Similar systems already exist, though they are certainly not open source, and are in-use by large metropolitan departments across the USA, as well as some European agencies. One of the earlier 'real hit' trackers used an x/y matrix of I.R. emitters and sensors. Corelation of the interrupted x-axis pairs with the interrupted y-axis pairs determined position of the hit on a conventional 'paper target' media and was logged to a data logger for post-processing and analysis. The sensor idea is not patented and the target media is not particularly important to make the system functional. the accuracy is determined by the number of reciever/dectectors on the x & y axies. seems like such a system might work for you if you can multiplex the dectector outputs??