Starting from:

$30

ECSE211-Lab 3 Navigation & Obstacle Avoidance Solved

1.     Design a system that allows the robot to drive to a specified set of coordinates, known as waypoints, while avoiding any obstacles in its path.

2.     Implement the design using previous implementations of the Odometer.

3.     Evaluate the design and ensure it can navigate effectively around a field.

Design requirements 
The following design requirements must be met:

•        The robot must navigate through a series of specified points using the minimal distance.  

•        A list of waypoints must be provided in one location in the code.

•        The robot must use the grid system found on the play floor, where the origin is the starting corner of a tile.  

•        Waypoints will be given with respect to the tile grid system. For example, (1, 0) will be located 30.48 cm to the right of the origin (0, 0). Note: waypoints can contain negative integers.

•        When turning to a waypoint, the robot must use the minimal angle needed to turn to it.

•        In encountering an obstacle, the robot must avoid it and resume driving to the next waypoint.

•        In avoiding an obstacle, the robot must continue to detect if there is another obstacle along its way and react accordingly.  

             

Demonstration  
The design must satisfy the requirements by completing the demonstration outlined below.

Design presentation  
Before demoing the design, your group will be asked some questions for less than 5 minutes. You will present your design and answer questions designed to test your individual understanding of the lab concepts. Each person will be graded individually.

You must present your workflow, an overview of the hardware design, and an overview of the software functionality. Visualizing software with graphics such as flow charts is valuable.  

Simple Navigation  
Starting from the (1, 1) point on the 4x4 tile grid, the robot must travel through 5 waypoints. The TA will specify the waypoints during the demo (see FAQ). You will add them to your code and upload your solution to the robot. An example is shown below in Figure 1 using a minimal angle needed to turn at each waypoint. A maximal angle turn must be avoided (see FAQ).

 

•        are given for turning using a minimal angle at all the waypoints. 0 points are given if the robot turns using a maximal (not minimal) angle at one or more waypoints.  

•        are given for reaching the last waypoint within an error tolerance of 2 cm using a Euclidean distance measure. The Euclidean distance error ϵ is defined by the formula shown below, where XD and YD represent the destination waypoint, and XF and YF represent the final position of the robot. Penalties are defined below.

 

 

𝛜=√(𝐗𝐃−𝐗𝐅)𝟐+(𝐘𝐃−𝐘𝐅)𝟐 

 

 Hence, the following point grid is used:

▪  [0, 2] cm       →         

▪  (2, 4] cm       →        

▪  (4, ∞) cm       →        

 

Figure 1.  Example robot path 1 (labelled). 

Navigation with Obstacle Avoidance  
Starting from the (1, 1) point on the 4x4 tile grid, the robot must travel through the provided waypoints from the previous section. Note that you are not allowed to reupload your code between the two demos! At most two obstacles will be placed ANYWHERE along the robot’s trajectory, but not on a waypoint. The robot must avoid the obstacle during navigation without touching it.

 

•        are awarded for completely avoiding obstacle(s).

•         are awarded for reaching the final waypoint within an error tolerance of 2 cm using a Euclidean distance measure as in the previous demo. Hence, the following table is used:

▪ 
[0, 2] cm  

 
▪ 
(2, 4] cm  
→  
 
▪ 
(4, ∞) cm  

 
Provided materials 
Sample code
No sample code is provided for this lab. Instead, follow the guidelines given below. Create a Navigation class that has at least the following methods:

•        void travelTo(double x, double y) 

This method causes the robot to travel to the absolute field location (x, y), specified in tile points. This method should continuously call turnTo(double theta) and then set the motor speed to forward (straight). This will make sure that your heading is updated until you reach your exact goal. This method will poll the odometer for information.

 

•        void turnTo(double theta) 

This method causes the robot to turn (on point) to the absolute heading theta. This method should turn a MINIMAL angle to its target.

 

•        boolean isNavigating() 

This method returns true if another thread has called travelTo() or turnTo() and the method has yet to return; false otherwise.

Physical material 

In the lab, there will be floors with the grid available, and blocks that will make up the obstacles.  

Implementation instructions 
1.     Adjust the parameters of your controller, if any, to minimize the distance between the desired destination and the final position of the robot. Simultaneously, you should aim to minimize the number of oscillations made by the robot around its destination before stopping.

2.     Write a program to travel through a set of waypoints. For example, Figure 2 shown below follows (3, 2), (2, 2), (2, 3), and (3, 1) in order.  

3.     Modify your code to use the ultrasonic sensor to detect an obstacle (i.e. a block) and avoid collisions with it. You may mount the ultrasonic sensor as you wish, and may use the wall follower code if desired. Additionally, you may create another class to perform this function.

4.     Modify the program to avoid any obstacles encountered along the robot’s path. For example, if the robot was travelling from (1, 3) to (3, 1), it should avoid the obstacle along the path and still reach (3, 1) as shown in Figure 3 below.

 

 

                  Figure 2.  Example robot path 1.                                Figure 3.  Example robot path 2. 

 

 

 

 

             

Report Requirements 
The following sections must be included in your report. Answer all questions in the lab report and copy them into your report. For more information, refer to ECSE211SubmissionInstructions.pdf. Always provide justifications and explanations for all your answers. 

Section 1: Design Evaluation
You should concisely explain the overall design of your software and hardware. You must present your workflow, an overview of the hardware design, and an overview of the software functionality. You must briefly talk about your design choices before arriving at your final design. Visualizing hardware and software with graphics (i.e. flowcharts, class diagrams) must be shown.  

Section 2: Test Data
This section describes what data must be collected to evaluate your design requirements. Collect the data using the methodology described below and present it in your report in a formatted table.

Navigation test (10 independent trials)

1.     Program the robot to travel to waypoints (3, 2), (2, 2), (2, 3), and (3, 1) as in Figure 2.

2.     Note down the destination waypoint (XD,YD) in cm.

3.     Place the robot on the origin of a grid tile.

4.     Ensure there are no obstacles in the robot’s path.

5.     Run the program to drive the robot through the waypoints specified in Step 1.

6.     Record (XF,YF) which is the final position of the robot.

Section 3: Test Analysis
•        Compute the Euclidean error distance ϵ between (XF,YF) and (XD,YD) for each trial in a table.

•        Compute the mean and sample standard deviation for error ϵ computed in the Navigation test. Be sure to use the show general formulas and sample calculations.

Section 4: Observations and Conclusions
Answer the following questions:

•        Are the errors you observed due to the odometer or navigator? What are the main sources?

•        How accurately does the navigation controller move the robot to its destination?  

•        How quickly does it settle (i.e. stop oscillating) on its destination?

•        How would increasing the speed of the robot affect the accuracy of your navigation?

Section 5: Further Improvements
What steps can be taken to reduce the errors you discussed above? Identify at least one hardware

and one software solution. Provide explanations as to why they would work.                 

Frequently asked questions (FAQ) 
 

1.     What is a minimal angle? 

Referring to the (1, 1) waypoint in Figure 1, its minimal turning angle is approximately 60° clockwise, as opposed to a maximal turning angle of 300° counterclockwise. 

 

2.     What is meant by “design presentation”? 

Before a lab demo, you and your partner will briefly present your design. This can include a basic visualization of how your code functions, such as a flow chart. You will then be asked a series of questions. These could be related to the lab tutorial or relevant lectures. For this part, a grade of 10 signifies full understanding, 5 signifies satisfactory understanding, while 0 shows no understanding at all. Note that memorized answers are discouraged and both partners should be responsible for understanding the design and their associated code, even if one of them did not write all of it.

 

3.     Which maps will be used for this lab’s demo? 

Your robot must navigate using one of the following maps starting from the point (1, 1):

Map 1: (1, 3), (2 ,2), (3, 3), (3, 2), (2, 1)

Map 2: (2, 2), (1, 3), (3, 3), (3, 2), (2, 1)

Map 3: (2, 1), (3, 2), (3, 3), (1, 3), (2, 2)

Map 4: (1, 2), (2, 3), (2, 1), (3, 2), (3, 3)

More products