Question
In C++ please --- For this assignment, develop a simple object tracker to track the three target types that we discussed during lecture (i.e., car,
In C++ please
---
For this assignment, develop a simple object tracker to track the three target types that we discussed during lecture (i.e., car, truck, motorcycle or you can choose any targets that you want). The tracker will read in a file containing detections. Detections are essentially moving objects on the ground that are seen by an airborne sensor using some type of sensor. For this exercise, lets assume that the sensor is an Electro Optics (EO) sensor. Processing has already been done to convert whats seen in the EO image into a bunch of (x,y) positions on the ground where the targets were seen in the image. Of course, some of the (x,y) points may not correspond to a real target (i.e., could be remnant of the processing, noise, etc.). The detection file will also contain the type of target. An example of the detection.dat file looks like: Scan 1 1 1 1 car 1 2 2 truck 1 3 3 motorcycle 1 4 4 unknown 1 5 5 car 1 6 6 car Scan 2 2 2 2 car 2 3 3 truck 2 5 5 motorcycle Etc... Where each Scan # represents the results from processing one EO image. The format is: (Time x y type). For this assignment, make things simple by assuming that the target is moving at constant speed, i.e. the new position (X(t+1), Y(t+1)) = (X(t), Y(t)) + speed*direction*time The speed and direction will be calculated by your tracker and saved to the track. The basic idea of a tracker is to try to associate all the detections from the same target together into a single track. The basic processing flow is as followed:
1. Read the first Scan and initialize the track using time, position, and target ID. Initialize the speed and direction to some random number 2. Read the next Scan and compute the distance between the position of each new detection with each of the track positions. A 2-D array should be generated containing the distance between every track and every detection from the new scan 3. Run Munkres algorithm to find the best track vs. detection pair (Munkres code is provided). 4. Once you have at least two pairs of positions associated with each track, go back and calculate the speed and direction and save these values to the track. 5. Read in the next Scan. With the saved speed and direction, predict the new track position using the kinematics model described above. Once you predict the next track position, use the predicted track position and compute the distance as in step 2. 6. Repeat steps 3-5 So thats the basic processing to develop a simple tracker. To represent the track in your code, you should use either a vector or linked list STL to store a superclass vehicle as we did in lecture. Have the car, truck, motorcycle inherit from vehicle so that your tracks can store the different target types.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started