My current class assignment is to program a robot through a course that includes two moving obstacles – other robots moving at constant speed around a region the one robot must get to. Since the other robots are moving at a constant pace alongside a predictable path, my robot can just stop at the border of the region, wait until the others pass by and then proceed. The robot can use a 2D laser range scanner to sense its surroundings.
Given these restrictions, what is the simplest object tracking algorithm I could use? I am thinking of something along these lines:
- Collect two laser readings (2D point clouds)
A
andB
with a suitable time gap between them; - Apply DBSCAN to
A
andB
, producing the cluster listsA'
andB'
; - Generate a list
P
of pair-wise matches of the clusters inA'
andB'
, maybe using the Hungarian algorithm; - Discard from
P
any pairings whose difference falls within a threshold; - Calculate direction and magnitude of movements from the distance between the centers of mass of each cluster pair.
The reason for choosing DBSCAN and the Hungarian algorithm is that I already have both implemented and in use elsewhere; and the difference between clusters could be measured as the distance between their centers of mass.
Do you think this solution would work for my problem? Do you have any suggestions on better and/or simpler ways to solve it?
A'
andB'
, and then discard any matches whose displacement falls below a threshold. $\endgroup$