# Webots

Each distance sensor has a lookupTable field that indicates min and max readings. For the lab, the distance readings are between 0 and 1.27 meters (50 inches).

C.1 Task 1 – MotionwithPID (Task Plot)Implement a controller called “Lab2_Task1.py”. The robot should use proportional control to move towards the end wall while also keeping its distance from the side walls, as shown in Figure 2. You will apply the “P” component of the PID controller to all 3 distance sensors. Robot should stop at the exact 10-inch mark from the end wall, while keeping a distance between 2.5 and 5.5 inches from side walls. You need to continuously print all three distance measurements on the screen. Robot should never hit a wall, and if gets too close, it should adjust its distance and orientation as necessary. You need to use only proportional gain control. Test the 𝐾𝑝program using 6 different values of (0.1, 0.5, 1.0, 2.0, 2.5, 5.0). Apply the same control values 𝐾𝑝to all three sensors at the same time. Find the one value that you think works best. Provide a 𝐾𝑝single plot for each value, showing “Distance from Wall” (front, left, right) vs. “Time”, 𝐾𝑝comparing the results for the 6 . Note that tile size is set to 0.508×0.508m (20x20inches), 𝐾𝑝corresponding to 2×2 squares, i.e. each square in Figure 2 measures 0.254×0.254m (10x10inches). Task should run for 30 sec. NOTE: Implement your own PID equations. Do not use Webots prebuilt PID controller. During evaluation, the TA will start the robot at different distances and orientations varying less than 30 degrees in either orientation from the straight line towards the end wall.
C.2 Task 2 – Motion to Goal (Task Plot)Implement a program called “Lab2_Task2.py”. The robot will start from the corner opposite the yellow cylinder, i.e. the “goal”, with any orientation, as shown in Figure 3. The robot should move towards the goal and must stop at 10 inches from the cylinder. There are no obstacles between the robot and the cylinder. Apply PID control to front distance sensor and use side control to realign the robot with the center of the cylinder. Provide a single plot, showing (a) “Distance from Goal” vs. “Time”, (b) “Alignment with Goal” vs. “Time”, (c) “Blob Size” vs “Time”.Task should run for 30 sec. During evaluation, the TA will start the robot at different distances and orientations from the yellow cylinder.
C.3 Task 3 – Wall FollowingImplement four wall following algorithms while applying the PID controller from Task 1:
Implement “Lab2_Task3_CorridorLeftTurns.py” (Figure 4 – left).Implement “Lab2_Task3_CorridorRightTurns.py” (Figure 4 – left).Implement “Lab2_Task3_MazeLeftTurns.py” (Figure 4 – right).Implement “Lab2_Task3_MazeRightTurns.py” (Figure 4 – right).If the robot reaches 7 inches from any end wall it should make a 90-degree. If no 90-degree turns are possible, it should make a 180-degree turn, and continue wall following in the opposite direction. The robot should navigate no further away than 7 inches from the wall it is following. The robot can start at any grid cell with any orientation and should stop when completing a full path by calculating the time it takes. Depending on the original orientation the robot my follow a different path. Task should be completed in less than 3 minutes. During evaluation, the TA will start the robot at different initial positions and orientations in the corridor or maze.
C.4 Task 4 –Bug Zero AlgorithmImplement a program called “Lab2_Task4.py”. The robot should follow the Bug Zero algorithm, using the world shown in Figure 5. The goal is represented by the yellow-colored cylinder. The robot should follow walls no further than 8.4 inches away from them. The robot may use any of its sensors, including camera. Task should be completed in less than 3 minutes. During evaluation, the TA will start the robot at different initial positions and orientations.
C.5 Task 5 – Tangent Bug Algorithm (Task Plot) (Extra Credit)Implement three different controllers for the Tangent Bug Algorithm using the Figure 5 world: Implement “Lab2_Task5_ZeroRangeSensor.py” using a sensor range of no further than 7 inches.Implement “Lab2_Task5_FiniteRangeSensor.py” using a sensor range of 15 inches.Implement “Lab2_Task5_InfiniteRangeSensor.py” using an “infinite” sensor range.The algorithm should be based on the Tangent Bug Finite Range Sensor, using the world shown in Figure 5. Provide a diagram showing all hit, leave, and min points for each of the 3 subtasks. Note that you can modify the distance sensor range by: (a) modifying the distance sensor range in Webots corresponding sensor lookup table, or (b) comparing distance ranges directly in your Python code. You should get sensor readings as often as possible, and you may choose to add a Lidar range sensor or rotate your robot in order to get multiple readings of your front distance sensor to obtain endpoints for the intervals of continuity. Task should be completed in less than 3 minutes. During evaluation, the TA will start the robot at different initial positions and orientations.