Robotic BioSonar
When I built my first binocular sonar system, I was amazed at how much it improved the sonar’s resolution compared to a single-receiver system. The receivers I was using had a beam width of +/-30°; when I AND (logic AND) the signals together from two receivers, the beam width was decreased to about +/-5°. The sonar transmitter and the two receivers were mounted on the head of my first robot, with the transmitter in the center and the two receivers on either side separated by 12â€. The head was driven by a stepper motor and could be rotated in 1° increments. After each step, the sonar was pulsed and the echo data for the step was saved. After a full rotation of the head, the data from each step was combined into an image of the room. When I did this with a single receiver the images were very poor. Corners were round, door openings were completely gone and furniture looked like large blobs. But when I used two receivers the corners were almost square, door openings were smaller than they should be but they were there, and furniture kind of resembled furniture. A huge improvement.
Twenty years later when I started working with sonar again, I was planning on using a rotating head again and improve upon the old system’s electronics. But as I worked with it I realized scanning the room was very slow, and I didn’t want to stop my robot for minutes while the sonar scanned the room. While working with the binocular system I started to realize that there was a lot more information in the echoes from two receivers than just distance to an object. With a little trigonometry, I was able to combine the echo data from the two receivers and calculate the X and Y coordinates for most of the objects in front of the sonar. Initially this looked very promising, however it turned out to be more difficult than it appeared. The binocular system was good at identifying the location and estimating the size of most objects in an area ten to fifteen feet in front of the sonar within an angle of about +/-20°. That was very encouraging, but it still had limitations. One of my goals was to identify an open door from ten feet away, and this turned out to be more difficult than I expected. But I don’t think it is impossible and I am still working on it.
I ran a lot of tests with the binocular sonar aimed at an open and closed door to see if I could reliably determine if the door was open or closed. Between four and six feet away I could easily identify the door jambs and walls on either side of an open door and determine if the door was open or closed. But at eight feet things started becoming fuzzier. The main problem is the width of the returned echo and delays within the receiver circuit. When the transmitter is pulsed with a single 40KHz cycle, the returned echo is usually much greater than a single cycle.
One reason for this is because the returned echo is from the entire surface of the object, not just from the surface directly in front of the transmitter: it is from the surface above, below and on each side of the center. The rising edge of the echo is from the surface directly in front of the transmitter, echoes from the surface further away from the center of the beam take longer to return, which increases the width of the returned echo. The echo from the surface directly in front of the transmitter is the highest amplitude and the echoes from the surfaces moving away from the center are lower amplitudes.
The other reason is the ultrasonic transducer is a resonate device and like all all resonate devices it rings. If a single cycle of 40KHz sine was is sent out the transmitter, the received signal will be more than twenty cycles or or about 500uS wide. Surprisingly I was actually able to solve this problem. A single 40KHz cycle is first sent to the transmitter then a second 40KHz cycle with a delay of 12.5uS (half a cycle) between the two cycles. Since the second cycle is exactly 180 degrees out of phase from the first it very quickly stops the receiver transducer ringing. After adjusting the delay between the two cycles I was able to reduce the receiver’s pulse with to about 50uS when the echo was from a small object. This did help resolving two close objects, but didn’t help much with determining if a door is open or closed.
After spending a year developing a two wheel balancing Robot I decided to go back to casters in the front and back and remove the balancing algorithms. The balancing Robot was fascinating to watch and I learned a lot about gyroscopes (actually an IMU), but the balancing required a lot of overhead and made it very difficult to maintain balance and communicate coordinates and sonar data between three processors. I have spent many hours watching my Robot run around from room to room collecting a lot data and have made improvements to detecting openings. This Robot has nine different sonar systems, but only one binocular system. The output of the binocular system is the X & Y coordinates of the object, the amplitude of the two received signals, the pulse width of the combined signal and the rise time of the combined signal. Using the amplitude, the pulse width and especially the rise time of the echoes I have had a lot more success identifying opening. After the Robot runs around a room for a couple minutes I am able to create a fairly accurate image of the room from the sonar data and can certainly identify an open door. But I still have a long ways to go.
The document “Sonar Equations.DOC†describes the equations I used to calculate the X and Y coordinates of objects from the echo time of two receivers and one transmitter in my Sonar 2 system.
Picture 1
Trace 2 in picture 1 is the raw echo signal from the left receiver aimed at an open door 11 feet away. Trace 1 is the signal from the detector. The pulse at 20mS is the echo from both door jambs. The width of the echo from the left door jamb is so wide it overlaps the echo from the right door jamb which creates one very wide pulse. This makes it impossible to detect the two door jambs at distances greater than about eight feet.
Graphs 1 & 2
Graphs 1 & 2 are signals recorded from a prototype of my sonar 3 system. The detector in this system is much faster and adds very little to the width of the received signal. This system is also using a high-speed ADC to capture the signal. Picture 1 is the raw data digitized by the ADC and picture 2 is after that data is cleaned up in firmware. It is still difficult to separate the echoes from the two door jambs, but this is a lot better than my Rev. 2 sonar system.
Picture 1 – Rev. 1 Receiver
Graph 1 –Sonar Rev 3 Prototype
Graph 2 – Sonar Rev 3 Prototype