$30.99
Design objectives
Design and implement an Odometry system that provides a robot’s position and orientation, allowing it to autonomously navigate a field.
Evaluate the design and determine the accuracy of the implemented Odometry system.
Design requirements
The following design requirements must be met by your robot:
Odometer:
Must determine the robot's X , Y and θ
Must display the X , Y and θ on the LCD display.
X and Y must be in cm.
X and Y can be negative.
θ must be in degrees.
θ must range from [0 ⁰, 359.9⁰]:
○ When the value increases past 360⁰, it should return to 0⁰.
○ When the value decreases past 0⁰, it should wrap to 359.9⁰
The zero values for (X , Y ), i.e. (0,0), must respect the convention shown in Figure 3.
Demonstration
The design must satisfy the requirements by completing the demonstration outlined below.
Note: For this lab, you will only have 3 chances to demonstrate your work to the TA.
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.
Float Motors
The TA will check whether the X , Y and θ values are updated correctly on the robot’s LCD screen by floating the robot’s motors/wheels.
All three axes (X , Y, θ) are checked:
X & Y values work → 5 points
θ values work → 5 points
E.g. if the (X, Y, θ) convention is set as in Figure 1, then:
Moving both wheels forward should increase Y .
Moving both wheels backward should decrease Y .
Moving the right wheel backward and the left wheel forward simultaneously should increase θ.
Moving the right wheel forward and the left wheel backward simultaneously should decrease θ.
Figure 1: Robot faces north at 0o.
E.g. if the (X, Y, θ) convention is set as in Figure 2, then:
Moving both wheels forward should increase X .
Moving both wheels backward should decrease X .
Moving the right wheel backward and the left wheel forward simultaneously should increase θ .
Moving the right wheel forward and the left wheel backward simultaneously should decrease θ.
Figure 2: Robot faces east at 90o.
The TA will ask you to run your robot off the center of a tile, as shown by S in Figure 3. The robot should then follow the 3-by-3 tile square trajectory using SquareDriver . The robot should work using odometry. Throughout the demo, the TA will observe the reported (X , Y , θ ) values on the robot’s LCD screen. When the robot stops at the final position (X F , Y F ) near S , the final readings on the LCD screen (X , Y , θ) are used to evaluate the odometer’s accuracy and calculate the error distance ϵ as:
ϵ = √(X − XF)2 + (Y − YF)2
Note that the error ϵ is calculated as the Euclidean distance between:
The odometer’s readings (X ,Y ) , which signifies where the robot thinks it is with respect to
the origin (0,0), and
The final actual position (X F , Y F ) , which ideally should be the point S where the robot started the 3-by-3 tile square trajectory.
This means that it is not an issue if your robot does not return to the exact starting point S , as long as the odometer reports a position that matches its real-world location.
Point grid based on error ϵ:
[0, 3] cm → 5 points
(3, 6] cm → 2.5 points
(6, ∞) cm → 0 points
Point grid based on the difference between the displayed θ and actual θ :
[0, 15] ° → 5 points
(15, 30] ° → 2.5 points
(30, ∞) ° → 0 points
(0, 0)
Figure 3. 3-by-3 tile trajectory using SquareDriver.