wiki:ControlSystems/SoftwareTeam/Training/GettingStarted/UltrasonicRangefinder

Ultrasonic Rangefinder

Robots need to sense the environment around them, particularly when driving autonomously. Ultrasonic sensors are like the sonar used by bats. Ultrasonic Sensor They emit a chirp of sound and measure the time it takes to hear an echo of that chirp. The longer the time, the further the sound traveled. Since sound travels at a particular speed (about 1125 ft/s) through air, we can use the echo delay to calculate distance to the object was that reflected the sound. You can read more about ultrasonic sensors on ScreenStepsLive

Ultrasonic sensors are connected to the RoboRIO using DIO ports. In the example below, a sensor's Ping/Trig and Echo wires are connected to DIO8 and DIO9 respectively.

Create another program using the TimedRobot java template and name it UltrasonicTest. Modify the auto-generated template code in Robot.java as follows:

  • import the Ultrasonic class
       import edu.wpi.first.wpilibj.Ultrasonic; 
    
  • declare a ultrasonic variable in the Robot class
       private Ultrasonic f_ultrasonic;
    
  • in robotInit() instantiate an ultrasonic object and set it to start automatically ranging
        // Sensor is connected to DIO8 (trig), DIO9 (echo)
        f_ultrasonic = new Ultrasonic(8,9);
        // Start sensor continuously pinging
        Ultrasonic.setAutomaticMode(true);
    
  • in robotPeriodic() read and display the range
        if (f_ultrasonic.isRangeValid()) {
           SmartDashboard.putNumber("Front range", f_ultrasonic.getRangeInches());
        }
    

Build and Deploy the program to your robot as you did in the previous example and observe the "Front range" value in the Smart Dashboard as you move the robot towards and away from the wall.

Notice that the measurements aren't always perfect; the sensor may receive echos from multiple surfaces.

Extra Credit

Explore more advanced ultrasonic sample program here. This program shows how to use two ultrasonic sensors (front and rear). The page also contains a corrected Ultrasonic class since the default class provided in WPILib only supports one sensor.

Last modified 2 months ago Last modified on Mar 17, 2021, 12:42:08 PM

Attachments (1)

Download all attachments as: .zip