Homing Robots

Science Fair Board - Homing Robots

My Science Fair board. Complete with awards!

Homing Robot

TDOA Robot



In this project, I compare several different methods of radio signal homing robots.  The goal is for the robot to find the radio transmitter.

The best robot used Time Difference of Arrival to determine the direction of the transmitter.

To build this robot click here. To see how it works, keep reading.

Continue reading to see my abstract, studies, and analysis of the different homing methods.

All Text from the Board



The purpose of this project is to demonstrate methods that an autonomous robot could use to find a set location. The methods I use in this project involve a single transmitter at a set location, and the entire receiving assembly built onto the robot. The robot uses input from the receiver to determine the approximate direction of the transmitter. As the robot moves, it periodically checks the signal and adjusts its course if needed. Robots using this method can be useful for applications like finding a charging base or when a fleet of low cost robots is needed.

The advantages of this method over a Global Positioning System-based method include: cheaper and less sophisticated circuitry, the ability to change the robot’s home target without communicating with the robot, and the ability to home in on a transmitter with unknown coordinates. The signal output that the robot looks for could be light, sound, or radio frequency (RF). For practical purposes I focus on RF.

The procedures I used were to 1) read about Radio Direction Finding(RDF), 2) build a transmitter, 3) study and experiment with antenna designs, 4) build and program a robot, 5) try the different designs on the robot and record results.


To evaluate methods that an autonomous robot could use to find a set location. This will require constructing a robot and using it to test each method.


The “Difference in Signal Strengths” method will have the highest success rate guiding the robot to the base.


Difference in Signal Strengths

differ sig strenThis method uses two omni-directional antennas a few inches apart. The transmitter’s location is found by using the signal strengths of the two receivers. The robot will turn toward the side with the stronger signal. If the strengths are similar the robot will go forward. The problem with this method is noise. Because the two receivers are only inches apart, the difference in signal strengths is too minimal to determine over other factors, like noise and signal variability. This was the first method I thought of for this project. Because I could not make a working circuit, this was never used on my robot.

PROS: none I found
CONS: needs precise circuitry to detect the small distance between the receivers

Sampling Signal Strength with an Omni-Directional Antenna

omnidirectionalboebotwebThis method uses an antenna that has near equal gain on all sides.
The robot stops, records the signal strength, and drives forward about a foot. It stops again, records the signal strength, and if it is higher then the previous recording, the robot drives forward. If the recording is lower, the robot will make a 90 degree turn to the left and continue forward. The antenna I used was a wire pointed straight up. This method required the most time to locate the transmitter, because it had very large turns and spent a lot of time traveling in the wrong direction. This method is also very sensitive to interference. The robot’s chassis even interfered, by making the antenna slightly directional.

PROS: The least costly method, simplest as well
CONS: Very sensitive to interference, resource waster- spends a lot of time driving in the wrong direction

Measuring Signal Strength with a Directional Antenna

direct antennaThis method uses an antenna that has high gain on one side. The robot turns 24 degrees, then takes a signal strength measurement. It repeats this 15 times, making a 360 degree turn. It now knows where the highest reading is, and blindly turns to that spot using its memory. The robot now drives forward. I tried three different antennas: the Yagi, a simple straight wire, and a waveguide. The one that worked best was the straight wire. The waveguide did not work because the frequency was too low (too large of a waveform) and could not enter the guide. The problem with the Yagi was it did not have a large enough gain difference between the front and back to be easily detected. Even though the simple wire  antenna worked better then the others, it still had a low accuracy and precision. This was expected due to its lack of reflectors or other signal guiding components. In theory the waveguide should have been the most directional, because it blocks all sides but one. For a waveguide to be practical, it would need to be using a very high frequency (>2 GHz). For it to work with my transmitter(49 MHz), the guide would have to be over 9 feet in diameter!

PROS: Less prone to multipath interference, because it picks the strongest signal.
CONS: Won’t work at close range to the transmitter; Requires mechanically turning the antenna in a full circle

Time Difference of Arrival (Steady Pulse)

tofanimationThis method uses two omni-directional antennas. A flip-flop and a latching circuit are used to determine which antenna/receiver pair received the signal first. The robot would turn that direction.  If both received the signal at about the same time, the robot would travel forward. Due to the extremely small amount of time being measured, a precision circuit would need to be built for this method to work. In theory there is one plus to this method. Because only one pulse is sent out, if it bounces off a wall, it takes longer to get to the robot. This makes it easier to tell where to turn, as the first pulse to hit the robot would likely have the least interference. Due to the circuit construction problems, however, I did not use this method on a robot.

PROS: Less likely to have harmful interference
CONS: Requires specialty parts, Would need a precision circuit design, even just to get mediocre results.

The Method that Worked

Time Difference of Arrival (Detect Phase Difference) Method

This is the method I use on my robot. I chose it because it is very responsive, and does not care about signal strength. By not using signal strength to determine direction, the robot can work right next to the transmitter, without overloading its antenna. But this method has fallacies as well, one of them being strong reflections off the ground or other surfaces make the robot travel away from the transmitter. Another minor issue is 180 degree ambiguity, which you can read about below.

PROS: very responsive, not overloaded by strong signals
CONS: gets confused easily with multipath interference

How Does it Work?

This method uses two antennas positioned one quarter wavelength apart and a transmitter outputting an unmodulated carrier waveform. Both antennas are just under half a wavelength long. The antennas are switched back and forth electronically at 400 hertz. If both receive the same part of the wavelength, the FM radio connected to the antennas will not detect any signal. If one antenna receives the low part of the wave and the other receives the high part, the radio sees a modulated signal and outputs a 400 hertz tone. The tone’s phase difference compared to the switching frequency of the antennas is used to determine what direction the signal is coming from.

This is what the waveforms would look like when the transmitter is perpendicular to the left side of the robot.
This is what the waveforms would look like when the transmitter is perpendicular to the right side of the robot
This is what the waveforms would look like when the robot is pointing straight at(or away from) the transmitter.
Robot not aligned with transmitter.
Red antenna gets the low part of the waveform. Blue gets the high part.

Robot aligned with transmitter.
Both antennas receive the same part of the waveform.
What About 180 Degree Ambiguity?

picasion.com_93d6df74730f121636387ab344af8d1eHaving 180 degree ambiguity means that the robot cannot tell front from back. The robot could be traveling away from the transmitter and not know it. This annoyance affects several of my designs, but is not really a problem. If the robot happens to be facing away from the transmitter, when correcting itself it will turn until it is facing the correct way. Because of the constant correcting it does, very rarely will it travel away from its target farther then a couple inches. When the robot is off course, it will turn until it senses a null (which happens when pointing at or away from the transmitter). This null point is small, so the robot will most likely
need to correct itself many times on the way to its target.


Base Finding
This technology is meant to assist other navigational methods that are already available. The most likely use would be to guide a robot to a charging base. A GPS would guide a robot to a general area, then the RF circuit would be used to home in on the base.

Search and Rescue

Search and rescue applications are also possible. In such a case, the robot would be set to look for transmitters that are attached to the lost objects.

Find Interference

The robot could be used to find offending transmitters. It would be set to a frequency that is being interfered upon, then attempt to locate the transmitter. This would be a good job for a flying RF homing robot. Once it thinks the interference has been located, it could use a GPS to send out coordinates.

Radio Frequency Homing Vs. the Global Positioning System

We have the GPS! What do we need RF homing for? Let us examine how they both work.

The GPS has at least 24 operating satellites orbiting the Earth. This ensures that any location of the globe has access to 4 or more satellites any time of day. The time taken for signals to come from the  satellites to the receiver is used to determine position. The receiver requires at least 4 satellites to do this.

The RF Homing methods in my project use one transmitter, at the robot’s home location, and one receiver, mounted on the robot. The robot uses signal strength (for directional antenna methods) or time (for phase based methods) to determine what direction the transmitter is relative to the robot.

What problems do GPS and RF homing have in common? They both rely on radio signals being transmitted from a large distance away, so mountains, buildings, and many other things can interfere or completely prevent them from working. Neither system is fail proof.

The GPS is typically accurate to ±10 meters. While great for getting to a certain region, this accuracy is too low for a robot to get onto a small charging base, for example. Because RF homing uses a separate transmitter for the robot to find, the robot can get to that exact location, no matter how small it is. However, due to the need for high power transmitters and more room for interference, GPS receivers are more practical for long distance uses. The GPS tells location, RF homing tells direction.

One system does not solve all the problems of navigation. Both systems have unique abilities and need to be implemented together for maximum flexibility and benefit.



My hypothesis was wrong, the “Time Difference of Arrival” method had the highest success rate, not the “Difference in Signal Strengths” method. However, using more precise circuitry could have resulted in a different conclusion. This technology can be used as it is on robots now, but further experimentation may show ways to overcome its shortcomings, such as high sensitivity to ground interference.

The Transmitters
I used three transmitters in this project. Initially, I only planned to use a 49 MHz transmitter. When I found the wavelength was too large for the antenna designs I wanted to try, I started using other transmitters. All of them were modified to output a constant waveform. The walkie-talkie was additionally modified to output only a carrier waveform (no audio).

Code (for TDOA robot, the winning technology)
 Written in Great Cow BASIC
 ;Chip Settings
 #chip 12F675,4
 ;Defines (Constants)
 #define buffer 25    'what counts as straight ahead? If too small, the robot will jitter. If too 
                         large the robot will drive away from the transmitter 
 Dim caliset As word
 Dim voltage As word
 wait 6000 ms
 'read calibration word from EEPROM
 EPRead 1, caliset
 EPRead 2, caliset_H
 if gpio.3 = 0 then    ' used for calibrating
     wait 9000 ms
 end if
 Do Forever
     set gpio.5 on        'output antenna switching waveform
     wait 100 10us
     set gpio.5 off
     wait 100 10us
     set gpio.5 on
     wait 100 10us
     set gpio.5 off
     wait 100 10us
     set gpio.5 on
     wait 100 10us
     set gpio.5 off
     wait 100 10us
     set gpio.5 on
     wait 100 10us
     set gpio.5 off
     wait 100 10us
     voltage = ReadAD10(AN3)    'read voltage from radio
     if gpio.3 = 0 then        'if in calibrate mode, store voltage in EEPROM
         caliset = voltage
         EPWrite 1, caliset
         EPWrite 2, caliset_H
         wait 5000 ms
         goto quitprogram
     end if
     if (voltage > (caliset - buffer)) and (voltage < (caliset + buffer)) then    'drive forward
         Set GPIO.2 On
         set GPIO.0 on
         wait 1 ms
         set GPIO.2 off
         wait 1 ms
         set GPIO.0 off
     end if
     if voltage > (caliset + buffer) then        'turn
         Set GPIO.2 On
         set GPIO.0 on
         wait 1 ms
         set GPIO.2 off
         set GPIO.0 off
     end if
     if voltage < (caliset - buffer) then        'turn the other way
         Set GPIO.2 On
         set GPIO.0 on
         wait 2 ms
         set GPIO.2 off
         set GPIO.0 off
     end if
     wait 13 ms        'wait a little bit, 13 milliseconds to be exact
 loop                'go back to the begining
 quitprogram:        ' in calibrate mode? Stop program until a hard reset
 wait 1 ms

Science fair project made in early 2013

18 thoughts on “Homing Robots

  1. Hello, Mr. Warner. I had been looking at your old site last month because I’m working on a robot with my student. Except now the antenna schematic is nowhere to be found on the internet. Any chance you could send me that?

  2. Hi, i am impressed with your fantastic work, i just want to know..
    1. how much battery does the system consume when the system us running.
    2. what will be the interference possibilities if i use multiple units


    1. Thank you!
      The best direction finding system on this page is the TDOA system. It uses a walkie talkie as the radio, and has a H shaped antenna.
      Power consumption is whatever the walkie talkie uses while receiving, plus the tiny amount of power for the microcontroller. I’ve ran it on batteries for many hours.
      The largest power users are the motors. Since the receiving walkie talkie doesn’t need to transmit, power usage is low.
      The transmitting walkie talkie, however, needs to have the talk button pushed the entire time, which sucks power. On AAA batteries it lasted about 2 hours.

      For the other question, there are many things that cause interference.
      I’ve ran two transmitting walkie talkies on different channels and the robot will only go to the one that matches the receiving walkie talkie channel.
      Usually buildings cause the most interference, due to the signal bouncing off and back to the robot. Also, if you go far away from the robot with the transmitter, it will sometimes think the signal is coming the opposite way, due to ground interference. Keep in mind my robot has no signal processing.
      Hope this helps!

    1. My first thought is no, as the TDOA relies on FM (Frequency Modulation). I couldn’t find any specs on the radios you linked, but similar ones use ASK (Amplitude Shift Keying), which is basically AM (Amplitude Modulation). Sorry for all the jargon. 🙂
      Basically, an FM radio has a set frequency, say 300 Mhz, and a signal is transmitted by varying that frequency slightly. Whereas an AM radio has a set frequency and sends a signal by varying the amplitude or power of the signal. TDOA works because when the two antennas are facing forward, the set frequency comes in. But when the antennas aren’t centered on the transmitter, the frequency is slightly off, causing noise on the walkie talkie. If an AM receiver was used, it may not even pick up on the frequency or get random readings when the antennas of the TDOA unit are not pointed at the transmitter.
      Of course, feel free to experiment, but I would highly suggest getting some cheap walkie talkies. Also, remember the antenna size of the TDOA is linked to the frequency. So a regular FM music radio would need a massive antenna (over 4.5 feet tall!)

  3. how about using directional antenna to that RF pair, will that make it possible to know the direction or the location of the emitter in indoor conditions ?
    did you work previously with RF pair that has TTL output (like the one in the link) and see if it possible to know the location of the emitter or the direction ? can i do that with that RF pair ?

    Thank you 🙂

    1. As written in my article above, I tried using a directional antenna. A TTL output would be useless for direction finding as it would be either on or off. On my directional experiment, I used the transmitter and receiver from a remote control car. While these also put out an on or off, I used an oscilloscope to find a place on the circuit before the last amplifier stage. Then I used a microcontroller with a analog to digital converter to measure the voltage.
      In short, yes it should be possible, but you need to connect to the right place on the circuit. You can’t use the TTL out.

  4. hi sir, i’m really amaze on the accuracy of the robot and i’m working on this for my project. can I ask for some questions?
    1. can i use any walkie – talkie? if yes would it affect or change anything on the functionality?
    2. I would like to use DC motor instead of servo motor. would it still work properly?

    1. You should be able to use any FM walkie talkie with a reasonably high frequency, but not too high (between 300 MHz and 700MHz). Most consumer walkie talkies use the FRS Frequency of ~460Mhz. Also, it should not have any encryption or privacy. Just a plain signal. Channels are fine. If you use a different frequency than 460 MHz, you will have to change the antenna dimensions. It is listed on the picture as 1/4 wavelength and 1/2 wavelength. Use a web calculator to find this with your frequency. You will have to calibrate no matter what, so as long as the antenna is built correctly it should work.

      Any motor is fine. You will have to add some sort of driver circuit to power the motors, as the microcontroller can’t power them directly from the I/O pins. Also the program will need some minor tweaks, just follow the if statements and add your motor control code under the ones for forward, turn, and turn other direction.
      Good luck! 🙂

  5. Hello! We are doing a very similar project using a TDOA RDF with antenna to detect a drone. However, we are having trouble getting the servo to scan until it reaches the specific location where the antenna distances are equivalent. We are using a ratio of voltages so if the ratio is greater than 1 then it tells the servo to go to the right and if the ratio is 1 then it should break. But it is not breaking at a ratio of 1. Instead it goes to the right and then just stops. Do you have any advice that could help us? Thank you so much!

    1. Without knowing your exact setup, here are some things to check. When you say “ratio of voltages”, where is this coming from? Are you measuring the output of a walkie-talkie/radio or some other circuit? If you go to my Homing Robot DIY page and scroll down to the “troubleshooting” section, you’ll find some oscilloscope waveforms of the output of the radio and the input antenna switching waveform. As the output from the radio is sound, it is AC. You’ll notice the circled area I’m checking with my code is right at the end of the switching waveform. Don’t simply compare voltage continually.
      Another thing to check is tolerance, make sure your code can accept +- around your desired center value. On my robot, I have to calibrate it to know what voltage level is “center”.
      The best tool for you is a an oscilloscope, attach one probe to the output of the radio, and the other to your antenna switching waveform. Watch and make sure the waveforms are doing what you expect.
      Best of luck, feel free to keep asking questions!

  6. What is the purpose of the push buttons on the receiver? In what instance should they be pressed? What instances should they not be pressed? How can we insulate the can to prevent shorts regarding the electronics on the inside? what did you use to insulate the can of the receiver?

    1. I assume you are talking about the buttons in this picture? http://robowarner.com/wp-content/uploads/2016/02/walkietalkie_control.jpg
      In that case, they are just extensions to the original walkie talkie buttons, so you can change the channel and volume and such, as the receiver is stuffed inside the can.
      See the full build page for more info http://robowarner.com/portfolio/radio-homing-robot-diy/ The buttons depend on your walkie talkie, your model might do something different. On mine I just use them for maxing out the volume and changing the channel to match the transmitter. The project works better if the receiving walkie talkie has the volume at 100%.
      For insulation I just stuffed a plastic bag between the circuit and the can. You can use anything here, paper, plastic, it doesn’t matter.

  7. Hi! I notice you said the radio freq can’t be too high. Is that because the arduino can’t switch fast enough?
    I was going to try a 915mhz ISM band transmitter.
    Thanks, cool project!

    1. If I remember correctly, that is because the higher the frequency, the shorter the distance between the antennas, which would likely need much more precise circuitry to work. With the right code, the Arduino should be fast enough.

    1. Feel free to leave a comment on this site if it about one of my projects, and I will answer it at some point. I don’t provide help or consulting for other projects.

Leave a Reply

Your email address will not be published. Required fields are marked *