| |
The objective is to track an object such as a box in a 2 meter
square area. Two sensors will be used to detect the distance from the sensor
to the object. The (x, y) coordinate of the object can be determined from
the distances. The sensors will work like a radar, whereby a sound is transmitted
from a speaker and the echo received by a microphone. The distance can
be calculated from the time of flight and speed of sound (333 m/s).
The tracking task will be composed of multiple tasks executing on a
DSP board, which is specialized for audio input and output. The speakers
and microphones can easily be interfaced to the DSP board (ADSP 21160 EZ-kit).
The system will be able to work on a single processor, however, with
some luck it might work on a multi-processor system. In the multiprocessor
case, the two processors would each make a distance measurement. Another
process would use shared memory to gather distances from both processes
and compute the tracking coordinates.
Table of Contents:
Two sensors are a known distance apart. Each works at a different
frequency to avoid interference with the distance measurement. The received
signal will be filtered for the transmitted frequency. Hopefully noise
in the room will not interfere with the distance measurement.
The picture shows the three distances (d1...d3) needed to calculate
the (x, y) position in the range of the sensors.
| Reporting tracked object's position
[top] |
The output of the system is the (x, y) coordinate of the tracked
object. The output can be printed to the terminal the DSP board is connected
to. There are two possibilities for the output
-
I might not be able to have enough control over the print, in other words
it will block too long.
-
An alternative output is generate a sound with varying frequency. There
would be two sounds for x and y; the frequency would be proportional to
the measured distance (higher frequency means further away).
The task set will be implemented as a cyclic executive.
-
Left sensor that measures distance. Could possibly broken into two tasks:
one creates the sound wave; the second task receives the echo.
-
Right sensor that measures distance the same way as the left sensor.
-
Reporting task that calculates (x, y) coordinates and reports it to the
user.
-
One push button interrupt that can be used to blink a light or an other
arbitrary task.
I have started to investigate different aspects of the project.
-
I have the microphones, speakers, and DSP board.
-
I have familiarized myself with the development environment
The tracking algorithm has to be further investigated, although
I am choosing one that is simple to implement and test.
I would like a multiprocessor solution. I have read the documentation
and pieced together the memory definition and loading; however, there is
no multiprocessor that ties everything together. Without an example the
implementation will be too time consuming.
| Wow, and if it all does not work [top] |
In the case it does not all work, there will be milestones,
which (hopefully) give invaluable insights into designing real-time systems.
-
I can learn about the advantages of dividing the tracking application into
individual tasks.
-
The task set’s execution time will need to be measured to determine the
utilization and feasibility.
-
More to come as I learn more
These are the steps to compete the project:
-
Get a basic distance measurement to work
-
Develop a software engineering infrstructure for multiple tasks
-
Implement the tasks
-
Find a non-blocking printf or equivalent shorter blocking function like
getc
-
Evaluate the task properties such as dependencies, periods and execution
times.
-
Interface and integrate the tasks.
-
Investigate multiprocesing implementation.
|