LOCALIZATION
The
localization process is fairly straightforward.
The Robosapien node (R) frequently sends out packets
containing accelerometer data. Both the computer
node (C) and the third node (T) receive the packets.
(The accelerometer data isn’t used in this implementation,
but we’ll explain it later when we describe some
possible improvements to the system.)
After
a packet is successfully received, a signal strength
reading is taken by calling the PLME_link_quality
method, which is found in the simple_phy class of
the Freescale support code. After the third node
has accomplished this, it constructs a packet containing
the resulting signal strength measurement and sends
it to the computer node. At that point, C, which
has both the signal strength reading from R/T and
R/C, composes a packet with these measurements to
be sent via the serial port to the computer.
When
the computer receives both signal strength measurements,
it can begin hypothesizing about the robot’s location.
However, this can’t be done with a straightforward
geometric calculation because of the uncertainty
associated with noisy data and the signal strength’s
nonlinearity.
This
noise is such that if simple distance calculations
were applied at each time step, the computer might
find that the robot’s location would vary on the
order of meters when it is standing still. To deal
with this large degree of uncertainty in our data,
we used a probabilistic Monte Carlo localization
technique to implement a particle filter to localize
the robot. Let’s take a look at how the particle
filter reduces the uncertainty of the robot’s location.