From The Robotics Primer Workbook
This exercise requires the use of a sonar sensor. There are many sonar sensors to choose from, and we have chosen to use the Devantech SRF05. This is a relatively simple sonar sensor, compact, and low cost. It has a range of 3cm to 4m, operates at 40kHz, and easily plugs into the Robostix or Create.
You will need to create a cable to connect the SRF05 to the robot.
Once you have a cable attached to the sonar device, plug it into PortC, Pin 1 of the robostix.
This sonar returns a distance measure in the form of a pulse width. A pulse consists of two transition on a binary line: low->high : high->low or high->low : low->high. In the case of the SRF05, the pulse is low->high : high->low. The time between the two transition points correlates to the range reading. The only calibration necessary is to convert the pluse width reading into a distance measurement.
|1||Place the sonar on a flat surface and position a flat obstacle 20cm directly in front of it.|
|2||Fill in the exercise Update function with
std::cout << client->GetRobostixSRF05Value() << std::endl;Compile
|3||Run the exercise, and take an average value of the printouts.|
|4||Use this average to solve this equation <tex>factor=avg/0.2</tex>.|
|5||Use this factor to compute any range with the equation <tex>Range=sonar value/factor</tex>|
|6||Test your solution by changing the exercise Update function to std::cout << client->GetRobostixSRF05Value() / factor << std::endl;|
For this part you will implement obstacle avoidance. If you have completed the obstacle avoidance part of Sensors:Exercise2:Infra-red Sensor, then this part should be easy. The only difference is the type of sensor being used. Once, again mount the sonar on the front of the robot, and write control code to stop the robot before hitting an obstacle. The robot should also turn 90 degrees and continue on. This is a very simplistic approach to obstacle avoidance, but you also have only one range sensor available.
The sonar sensor has a much greater range than an IR. If the first approach to obstacle avoidance is too easy, try using more fluid motion. When the robot detects an obstacle, adjust the angular speed of the robot so that it continues moving forward while still avoiding the obstacle.
This solution rotates the robot when it moves within 0.2 meters of an object.